﻿// JScript File by Steve Welborn of Bitwise Solutions Inc.
 
function AddState(obj)
{
    var statelist = obj.value;
    var stateindex = obj.selectedIndex;
    
    if(statelist != "")
    {
        var hidSt = document.getElementById("ctl00_ContentPlaceHolder1_hidState");
        hidSt.value = statelist;       
        
        var hidSI = document.getElementById("ctl00_ContentPlaceHolder1_hidStateIndex");
        hidSI.value = stateindex;
    }
    
}  

function AddBillingState(obj)
{
    var statelist = obj.value;
     var stateindex = obj.selectedIndex;
    if(statelist != "")
    {
        var hidSt = document.getElementById("ctl00_ContentPlaceHolder1_hidBillingState");
        hidSt.value = statelist;       
        
         var hidSI = document.getElementById("ctl00_ContentPlaceHolder1_hidBillingStateIndex");
        hidSI.value = stateindex;
    }        
    
}  

function onCreditCardChange(obj)
{
    var cctype = obj.value;
    var cctypeIndex = obj.selectedIndex;
    
    if(cctype != "")
    {
        var hidCC = document.getElementById("ctl00_ContentPlaceHolder1_hidCCType");
        hidCC.value = cctype;    
        
        var hidCCI = document.getElementById("ctl00_ContentPlaceHolder1_hidCCTypeIndex");
        hidCCI.value = cctypeIndex; 
        
         var spAlert = document.getElementById("spAlert");
        if(spAlert != null)
        {
            spAlert.innerHTML = ""; 
        }
        
        var txtCC = document.getElementById("ctl00_ContentPlaceHolder1_txtCCNum");
        txtCC.disabled = false; 
        
        var ExpMo = document.getElementById("ctl00_ContentPlaceHolder1_drpExpMonth");
         ExpMo.disabled = false;
         
        var ExpYr = document.getElementById("ctl00_ContentPlaceHolder1_drpExpYear");
         ExpYr.disabled = false;
         
         var txtCID = document.getElementById("ctl00_ContentPlaceHolder1_txtCID");
         txtCID.disabled = false;
         
         
         var reqExpCC = document.getElementById("ctl00_ContentPlaceHolder1_reqExpCC");
         ValidatorEnable(reqExpCC, true);
    }
    
    if ((cctype == "KnowledgeBank") || (cctype == "Other"))
    {
        var txtCC = document.getElementById("ctl00_ContentPlaceHolder1_txtCCNum");        
        txtCC.disabled = true;
        
        if (cctype == "KnowledgeBank")
        {
        var spAlert = document.getElementById("spAlert");
        spAlert.innerHTML = "<font size='1' color='red'><b>If you are paying with Knowledge Bank points, please enter your billing information in addition to your contact information.</b></font>";
        }
        
         var ExpMo = document.getElementById("ctl00_ContentPlaceHolder1_drpExpMonth");
         ExpMo.disabled = true;
         
         var ExpYr = document.getElementById("ctl00_ContentPlaceHolder1_drpExpYear");
         ExpYr.disabled = true;
         
         var txtCID = document.getElementById("ctl00_ContentPlaceHolder1_txtCID");
         txtCID.disabled = true;
         
         var reqExpCC = document.getElementById("ctl00_ContentPlaceHolder1_reqExpCC");
         ValidatorEnable(reqExpCC, false);
     }        
}

function CV_ClientValidateCCNum(source, args)
{
    var isValid = true;
    
    var ccn = document.getElementById("ctl00_ContentPlaceHolder1_txtCCNum");
     var cctype = document.getElementById("ctl00_ContentPlaceHolder1_drpCCType").value;
   
    if((cctype != "KnowledgeBank") && (cctype != "Other"))
    {
        if(ccn.value != "")
        {
            isValid = true;
        }
        else
        {
            isValid = false;
        }
    }
    else
    {
        isValid = true;
    }
    args.IsValid = isValid;
}

function CV_ClientValidateExpMonth(source, args)
{
    var isValid = true;
    var expmo = document.getElementById("ctl00_ContentPlaceHolder1_drpExpMonth");;
    var cctype = document.getElementById("ctl00_ContentPlaceHolder1_drpCCType").value;
   
    if((cctype != "KnowledgeBank") && (cctype != "Other"))
    {
        if(expmo.selectedIndex == 0)
        {
           isValid = false;
        }
        else
        {            
            isValid = true;
        }
    }
    else
    {
        isValid = true;
    }
     args.IsValid = isValid;
    
}

function ProductCheck(source, args)
{
    var isValid = false;
    var PC1 = document.getElementById("PC1").checked;
    var PC2 = document.getElementById("PC2").checked;
    var PC3 = document.getElementById("PC3").checked;
    var PC4 = document.getElementById("PC4").checked;
    var PC5 = document.getElementById("PC5").checked;
    var PC6 = document.getElementById("PC6").checked;
    
    
    if(PC1 != false)
    {
        isValid = true;
    
    }
    
    if(PC2 != false)
    {
        isValid = true;
    
    }
    if(PC3 != false)
    {
        isValid = true;
    
    }
    if(PC4 != false)
    {
        isValid = true;
    
    }
    if(PC5 != false)
    {
        isValid = true;
    
    }
    if(PC6 != false)
    {
        isValid = true;
    
    }
    
    //<asp:CustomValidator ID="custProdcheck" runat="server" ClientValidationFunction="ProductCheck();" ErrorMessage="Please choose a package" EnableClientScript="false"></asp:CustomValidator>
    
    args.IsValid = isValid;    
}

function CheckProd()
{
    if(!ProductCheck)
    {
            var spCustMsg = document.getElementById("spCustMsg");
        if(isValid == false)
        {
            spCustMsg.innerHTML = "<b>Please select a product!</b>";
        }
    }
}

function CV_ClientValidateExpYear(source, args)
{
    var isValid = true;
    var expyr = document.getElementById("ctl00_ContentPlaceHolder1_drpExpYear");
    var cctype = document.getElementById("ctl00_ContentPlaceHolder1_drpCCType").value;
    var expmo = document.getElementById("ctl00_ContentPlaceHolder1_drpExpMonth");;
    
    if((cctype != "KnowledgeBank") && (cctype != "Other"))
    {
        if(expyr.selectedIndex == 0)
        {
            isValid = false;
        }
        else
        {
            var chsn_yr = expyr.value;
            var dt = new Date();
            var cur_yr = dt.getFullYear();
            
            if(chsn_yr == cur_yr)
            {
                //year matches
                //check to see if the month is old
                if(expmo.value != "")
                {
                    var chsn_mo = expmo.value;
                    var dtm = new Date();
                    var cur_mo = dt.getMonth();
                    
                    if(chsn_mo < cur_mo)
                    {
                        isValid = false;
                    }
                    else
                    {
                        isValid = true;
                    }                
                }
                else
                {
                    isValid = false;
                }               
            }
            else
            {
                if(chsn_yr < cur_yr)
                {
                    isValid = false;
                }
                else
                {
                    isValid = true;
                }            
            }
            
        }    
    }
    else
    {
        isValid = true;
    }
    
    args.IsValid = isValid;
}

function CV_ClientValidateCID(source, args)
{
    var isValid = true;
    var cid = document.getElementById("ctl00_ContentPlaceHolder1_txtCID");
    var cctype = document.getElementById("ctl00_ContentPlaceHolder1_drpCCType").value;
   
    if((cctype != "KnowledgeBank") && (cctype != "Other"))
    {
        if(cid.value == "")
        {
            isValid = false;
        }
        else
        {
            isValid = true;
        }
        
    }
    else
    {
        isValid = true;
    }    
    args.IsValid = isValid;
}


function AddExMo(obj)
{
    var cctype = obj.value;
    var cctypeIndex = obj.selectedIndex;
    
    if(cctype != "")
    {
        var hidCC = document.getElementById("ctl00_ContentPlaceHolder1_hidExMo");
        hidCC.value = cctype;       
        
        var hidCCI = document.getElementById("ctl00_ContentPlaceHolder1_hidExMoIndex");
        hidCCI.value = cctypeIndex;
    }  
}

function AddExYr(obj)
{
   var cctype = obj.value;
   var cctypeIndex = obj.selectedIndex;
    if(cctype != "")
    {
        var thisdate = new Date();
        var thisyear = thisdate.getFullYear();
        var amonth = "";
        if(cctype < thisyear)
        {
            alert("The credit card you provided has expired!");
            return;
        }
            
        if(cctype == thisyear)
        {
            var month = document.getElementById("ctl00_ContentPlaceHolder1_hidExMo");
            var thismonth = thisdate.getMonth();
            
            switch(month.value)
            {
                case "01":
                 amonth = "1";
                 break;
                case "02":
                 amonth = "2";
                 break;
                case "03":
                 amonth = "3";
                 break;
                case "04":
                 amonth = "4";
                 break;
                case "05":
                 amonth = "5";
                 break;
                case "06":
                 amonth = "6";
                 break;
                case "07":
                amonth = "7";
                 break;
                case "08":
                 amonth = "8";
                 break;
                case "09":
                 amonth = "9";
                 break;
           }
            
            amonth = amonth - 1;
            if(amonth < thismonth)
            {
                alert("The credit card you provided has expired!");
                return;
            }
        }    
            
        var hidCC = document.getElementById("ctl00_ContentPlaceHolder1_hidExYr");
        hidCC.value = cctype;   
        
        var hidCCI = document.getElementById("ctl00_ContentPlaceHolder1_hidExYrIndex");
        hidCCI.value = cctypeIndex;    
    }  
}

function switchsoftware(obj)
{
    var software = obj.value;
    var divContractor = document.getElementById("ctl00_ContentPlaceHolder1_divContractor");
    var divCD = document.getElementById("ctl00_ContentPlaceHolder1_divContractorDeluxe");
    //hidPackageName
    var packagename = document.getElementById("hidPackageName");
    switch(software)
    {
        case "Contractor":
        divContractor.visible = "true";
        divCD.visible = "false";
        packagename.value = "Contractor";
        break;
        
        case "Contractor_Deluxe":
        divContractor.visible = "false";
        divCD.visible = "true";
        packagename.value = "Contractor Deluxe";
        break;
    }
}

function AddPackagePrice(obj1,obj2,obj3)
{
    //alert("Im hit!");
    var values = obj1.value;
    var pprice = obj2;
    var pbase = obj3;
    
    if(values != "")
    {
        var hidPP = document.getElementById("ctl00_ContentPlaceHolder1_hidPackageName");
        hidPP.value = values;
    }
    
    if(pprice != "")
    {        
        var hidPP = document.getElementById("ctl00_ContentPlaceHolder1_hidPackagePrice");
        hidPP.value = pprice;       
    }  
    if(pbase != "")
    {        
        var hidPP = document.getElementById("ctl00_ContentPlaceHolder1_hidBasePrice");
        hidPP.value = pbase;       
    }  
}

 function AddSupportType(obj)
 {
    var hidST = document.getElementById("ctl00_ContentPlaceHolder1_hidSupportType");
        hidST.value = obj;     
 }
 
 function AddSupportIndex(obj)
 {
    var hidPC = document.getElementById("ctl00_ContentPlaceHolder1_hidPC");
        hidPC.value = obj;     
 }

function AddShipMethod(obj)
{
    var shipmethod = obj.value;
    var shipmethodIndex = obj.selectedIndex;
    
    if(shipmethod != "")
    {
        var hidSM = document.getElementById("ctl00_ContentPlaceHolder1_hidShipMethod");
        hidSM.value = shipmethod;
        
        var hidSMI = document.getElementById("ctl00_ContentPlaceHolder1_hidShipMethodIndex");
        hidSMI.value = shipmethodIndex;
    }  
    
    var hidSP = document.getElementById("ctl00_ContentPlaceHolder1_hidShipPrice");
    switch(shipmethod)
    {
        case "1":
            hidSP.value = "15";
            break;
        case "2":
             hidSP.value = "25";
             break;
        case "3":
             hidSP.value = "45";
             break;
        case "4":
             hidSP.value = "60";
             break;
    }
}

function AddShipState(obj)
{
    var statelist = obj.value;
    var stateindex = obj.selectedIndex;
    if(statelist != "")
    {
        var hidSt = document.getElementById("ctl00_ContentPlaceHolder1_hidShipState");
        hidSt.value = statelist;       
        
        var hidSI = document.getElementById("ctl00_ContentPlaceHolder1_hidShipStateIndex");
        hidSI.value = stateindex;
    }        
    
}  

function populateShipping()
{
	var add = document.getElementById("ctl00_ContentPlaceHolder1_txtAddress").value;
	var add2 = document.getElementById("ctl00_ContentPlaceHolder1_txtAddress2").value;
	var city = document.getElementById("ctl00_ContentPlaceHolder1_txtCity").value;
	var state = document.getElementById("ctl00_ContentPlaceHolder1_drpState").selectedIndex;
	var zip = document.getElementById("ctl00_ContentPlaceHolder1_txtZip").value;
	var email = document.getElementById("ctl00_ContentPlaceHolder1_txtEmail1").value;
	
	
	//be sure to check for nulls here
	document.getElementById("ctl00_ContentPlaceHolder1_txtShipAdd").value = add;
	document.getElementById("ctl00_ContentPlaceHolder1_txtShipAdd2").value = add2;
	document.getElementById("ctl00_ContentPlaceHolder1_txtShipCity").value = city;
	document.getElementById("ctl00_ContentPlaceHolder1_hidShipState").value = state;
	document.getElementById("ctl00_ContentPlaceHolder1_txtShippingZip").value = zip;
	document.getElementById("ctl00_ContentPlaceHolder1_txtDeliveryEmail").value = email;
	
	var hidSI = document.getElementById("ctl00_ContentPlaceHolder1_hidStateIndex");
	document.getElementById("ctl00_ContentPlaceHolder1_drpShipState").selectedIndex = document.getElementById("ctl00_ContentPlaceHolder1_drpState").selectedIndex;//hidSI.value;
	
}

function populateBilling()
{
	var fname = document.getElementById("ctl00_ContentPlaceHolder1_txtFirstName").value;
	var lname = document.getElementById("ctl00_ContentPlaceHolder1_txtLastName").value;
	var add = document.getElementById("ctl00_ContentPlaceHolder1_txtAddress").value;
	var add2 = document.getElementById("ctl00_ContentPlaceHolder1_txtAddress2").value;
	var city = document.getElementById("ctl00_ContentPlaceHolder1_txtCity").value;
	var state = document.getElementById("ctl00_ContentPlaceHolder1_drpState").selectedIndex;
	var zip = document.getElementById("ctl00_ContentPlaceHolder1_txtZip").value;
	
	
	//be sure to check for nulls here
	document.getElementById("ctl00_ContentPlaceHolder1_txtCardholderName").value = fname;
	document.getElementById("ctl00_ContentPlaceHolder1_txtCardHolderLastName").value = lname;
	
	document.getElementById("ctl00_ContentPlaceHolder1_txtCardBillingAddress").value = add;
	document.getElementById("ctl00_ContentPlaceHolder1_txtBillingCity").value = city;
	document.getElementById("ctl00_ContentPlaceHolder1_hidBillingState").value = state;
	document.getElementById("ctl00_ContentPlaceHolder1_txtBillingZip").value = zip;
	
	var hidSI = document.getElementById("ctl00_ContentPlaceHolder1_hidStateIndex");
	document.getElementById("ctl00_ContentPlaceHolder1_drpBillingState").selectedIndex = document.getElementById("ctl00_ContentPlaceHolder1_drpState").selectedIndex;//hidSI.value;
	document.getElementById("ctl00_ContentPlaceHolder1_hidBillingStateIndex").value = document.getElementById("ctl00_ContentPlaceHolder1_drpState").selectedIndex;//hidSI.value;
	
	
}


function AddClass(obj1)
{
    var hidClass = document.getElementById('ctl00_ContentPlaceHolder1_hidClass');
    var hidCost = document.getElementById('ctl00_ContentPlaceHolder1_hidCost');
    
    var obj = obj1.split(':');
    
    hidClass.value = obj[0];
    hidCost.value = obj[1];
    
}

function AddName()
{
    var obj1 = document.getElementById("txtMultiFirst");
    var obj2 = document.getElementById('txtMultiLast');
    var obj3 = document.getElementById('txtStudentPhone');
    var obj4 = document.getElementById('txtStudentEmail');
    var stu_count = document.getElementById('spStudentCount');
    var cost = document.getElementById('spCurCost');
    
    
    
    //get ref to listbox
    var optMultiNames = document.getElementById("optMultiNames");
    
    //get ref to hidStudents
    var hidStudents = document.getElementById("ctl00_ContentPlaceHolder1_hidStudents");
    
    if(obj1.value == "")
    {
        alert("Please fill in the first name of the student you wish to register");
        return;
    }
    
    if(obj2.value == "")
    {
        alert("Please fill in the Last name of the student you wish to register");
        return;
    }
    if(obj3.value == "")
    {
        alert("Please fill in the phone number of the student you wish to register");
        return;
    }
    if(obj4.value == "")
    {
        alert("Please fill in the email address of the student you wish to register");
        return;
    }
    var str = obj4.value;
    //validate the email address before continuing
    var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)
	if (str.indexOf(at)==-1){
	   alert("Invalid E-mail ID")
	   return false
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   alert("Invalid E-mail ID")
	   return false
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
	    alert("Invalid E-mail ID")
	    return false
	}

	 if (str.indexOf(at,(lat+1))!=-1){
	    alert("Invalid E-mail ID")
	    return false
	 }

	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
	    alert("Invalid E-mail ID")
	    return false
	 }

	 if (str.indexOf(dot,(lat+2))==-1){
	    alert("Invalid E-mail ID")
	    return false
	 }
	
	 if (str.indexOf(" ")!=-1){
	    alert("Invalid E-mail ID")
	    return false
	 }

	 
    
    //try and populate the listbox "optQ" with item
    var newOpt = new Option(obj1.value + "," + obj2.value + "," + obj3.value + "," + obj4.value, obj1.value + "," + obj2.value + "," + obj3.value + "," + obj4.value);
    var selLength = optMultiNames.length;
    optMultiNames.options[selLength] = newOpt;
    
    if(hidStudents.value == "")
    {
        hidStudents.value = obj1.value + "," + obj2.value + "," + obj3.value + "," + obj4.value;
    }
    else
    {
        hidStudents.value = hidStudents.value + ";" + obj1.value + "," + obj2.value + "," + obj3.value + "," + obj4.value;
    }
    
    var hidCost = document.getElementById("ctl00_ContentPlaceHolder1_hidCost");
    var hidCurrentCost = document.getElementById("ctl00_ContentPlaceHolder1_hidCurrentCost");
    
    var hidMenuCost = document.getElementById("spMenuCurCost");
    var hidMenuStuCount = document.getElementById("spMenuStuCount");
    var hidStuCount = document.getElementById("ctl00_ContentPlaceHolder1_hidStuCount");
    
    
    selLength++;
    
    var total_sofar = hidCost.value * selLength;
    hidCurrentCost.value = total_sofar
    
    stu_count.innerHTML = selLength;
    hidMenuStuCount.innerHTML = selLength;
    hidStuCount.value = selLength;
    
    cost.innerHTML = "$" + total_sofar + ".00";
    hidMenuCost.innerHTML = "$" + total_sofar + ".00";
    
    
    obj1.value = "";
    obj2.value = "";
    obj3.value = "";
    obj4.value = "";
}

function RemoveStudent(obj)
{
//we have to remove it from the hidden field
    //get ref to hidItems
    var hidStudents = document.getElementById("ctl00_ContentPlaceHolder1_hidStudents");
    var stu_count = document.getElementById('spStudentCount');
    var cost = document.getElementById('spCurCost');
    var optMultiNames = obj;//document.getElementById("optMultiNames");
    var hidCost = document.getElementById("ctl00_ContentPlaceHolder1_hidCost");
    var hidCurrentCost = document.getElementById("ctl00_ContentPlaceHolder1_hidCurrentCost");
    var hidMenuCost = document.getElementById("spMenuCurCost");
    var hidMenuStuCount = document.getElementById("spMenuStuCount");
    var hidStuCount = document.getElementById("ctl00_ContentPlaceHolder1_hidStuCount");
    
    
    if(hidCurrentCost.value > 0)
    {
        hidCurrentCost.value = hidCurrentCost.value - hidCost.value;
    }
    
    
    
    
    
    var item = obj.value;
    if(obj.value != "")
    {
        hidStudents.value = replaceAll(hidStudents.value, obj.value, "");
    }
    
    obj.remove(obj.selectedIndex);
    var selLength = optMultiNames.length;
    stu_count.innerHTML = selLength;
    hidMenuStuCount.innerHTML = selLength;
    hidStuCount.value = selLength;
     
    cost.innerHTML = "$" + hidCurrentCost.value + ".00";
    hidMenuCost.innerHTML = "$" + hidCurrentCost.value + ".00";
    
    
}

function AddDummyData(obj)
    {
    
        if(obj == "single")
        {
            var s_fname = document.getElementById("ctl00_ContentPlaceHolder1_txtFirstName");
            var s_lname = document.getElementById("ctl00_ContentPlaceHolder1_txtLastName");
            var s_phone = document.getElementById("ctl00_ContentPlaceHolder1_txtStudentPhone1");
            var s_email = document.getElementById("ctl00_ContentPlaceHolder1_txtEmail1");
            
            s_fname.value = "Na";
            s_lname.value = "Na";
            s_phone.value = "Na";
            s_email.value = "me@home.com";
            
            //get multiple controls and take OFF dummy data
            
            var s_mfname = document.getElementById("ctl00_ContentPlaceHolder1_txtMultiFirst");
            var s_mlname = document.getElementById("ctl00_ContentPlaceHolder1_txtMultiLast");
            var s_mphone = document.getElementById("ctl00_ContentPlaceHolder1_txtStudentPhone");
            var s_memail = document.getElementById("ctl00_ContentPlaceHolder1_txtStudentEmail");
            
            s_mfname.value = "";
            s_mlname.value = "";
            s_mphone.value = "";
            s_memail.value = "";
            
        }
        
        if(obj == "multiple")
        {
            var s_mfname = document.getElementById("ctl00_ContentPlaceHolder1_txtMultiFirst");
            var s_mlname = document.getElementById("ctl00_ContentPlaceHolder1_txtMultiLast");
            var s_mphone = document.getElementById("ctl00_ContentPlaceHolder1_txtStudentPhone");
            var s_memail = document.getElementById("ctl00_ContentPlaceHolder1_txtStudentEmail");
           
                        
            s_mfname.value = "Na";
            s_mlname.value = "Na";
            s_mphone.value = "Na";
            s_memail.value = "me@home.com";
            
            //get single controls and take OFF dummy data
            
            var s_fname = document.getElementById("ctl00_ContentPlaceHolder1_txtFirstName");
            var s_lname = document.getElementById("ctl00_ContentPlaceHolder1_txtLastName");
            var s_phone = document.getElementById("ctl00_ContentPlaceHolder1_txtStudentPhone1");
            var s_email = document.getElementById("ctl00_ContentPlaceHolder1_txtEmail1");
            
            s_fname.value = "";
            s_lname.value = "";
            s_phone.value = "";
            s_email.value = "";
            
            //alert(s_memail.Text);
        
        }
        
    
    
    
    }
    
    

function RepopulatePackage()
{ 
    //try to run this everytime
    var hidPC = document.getElementById("ctl00_ContentPlaceHolder1_hidPC");
    if(hidPC != null)
    {        
      if(hidPC.value != "")
      {
        switch(hidPC.value)
        {
            case "1":
              var PC1 = document.getElementById("PC1");
              PC1.checked = true;
              break;
            case "2":
              var PC2 = document.getElementById("PC2");
              PC2.checked = true;
              break;
            case "3":
              var PC3 = document.getElementById("PC3");
              PC3.checked = true;
              break;
            case "4":
              var PC4 = document.getElementById("PC4");
              PC4.checked = true;
              break;
            case "5":
              var PC5 = document.getElementById("PC5");
              PC5.checked = true;
              break;
            case "6":
              var PC6 = document.getElementById("PC6");
              PC6.checked = true;
              break;
        }
      } 
    }
    
    //populate State Dropdown
    var hidSI = document.getElementById("ctl00_ContentPlaceHolder1_hidStateIndex");
    
    if(hidSI != null)
    {
        if(hidSI.value != "")
        {            
	        document.getElementById("DrpState").selectedIndex = hidSI.value;
	    }
	}
	
	//populate Shipping State Dropdown
	var hidSSI = document.getElementById("ctl00_ContentPlaceHolder1_hidShipStateIndex");
    
    if(hidSSI != null)
    {
        if(hidSSI.value != "")
        {            
	        document.getElementById("DrpShipState").selectedIndex = hidSSI.value;
	    }
	    else
	    {
	        if(hidSI.value != "")
	        {
	            //just use the state index instead
	            //99% of the time it will be the same
	            if(document.getElementById("DrpShipState") != null)
	            {
	                document.getElementById("DrpShipState").selectedIndex = hidSI.value;
	            }
	        }
	    }
	}
	
	//populate Billing State Dropdown
	var hidBSI = document.getElementById("ctl00_ContentPlaceHolder1_hidBillingStateIndex");
    
    if(hidBSI != null)
    {
        if(hidBSI.value != "")
        {            
            try
            {
	            document.getElementById("DrpBillingState").selectedIndex = hidBSI.value;
	        }
	        catch(err)
	        {}
	    }
	}
	
	//populate CCType dropdown
	var hidCC = document.getElementById("ctl00_ContentPlaceHolder1_hidCCTypeIndex");
    if(hidCC != null)
    {
        if(hidCC.value != "")
        {   
            //document.getElementById("drpCCType").selectedIndex = hidCC.value;
	    }
	}
	
	//populate ship method dropdown
	var hidSMI = document.getElementById("ctl00_ContentPlaceHolder1_hidShipMethodIndex");
	if(hidSMI != null)
	{
	    if(hidSMI.value != "")
	    {
	        document.getElementById("ShippingMethod").selectedIndex = hidSMI.value;
	    }
	}
	
	//populate expiration month
	var hidExMoI = document.getElementById("ctl00_ContentPlaceHolder1_hidExMoIndex");
	if(hidExMoI != null)
	{
	    if(hidExMoI.value != "")
	    {
	        document.getElementById("expirationMonth").selectedIndex = hidExMoI.value;
	    }
	}
	
	//populate expiration year
	var hidExYrI = document.getElementById("ctl00_ContentPlaceHolder1_hidExYrIndex");
	if(hidExYrI != null)
	{
	    if(hidExYrI.value != "")
	    {
	        document.getElementById("expirationYear").selectedIndex = hidExYrI.value;
	    }
	}
	
}

function shippingMethod()
{
    var sindex = document.getElementById("ctl00_ContentPlaceHolder1_drpShipMethod").selectedIndex;
    var v1 = document.getElementById("ctl00_ContentPlaceHolder1_reqShipAdd");
        var v2 = document.getElementById("ctl00_ContentPlaceHolder1_reqShipCity");
        var v3 = document.getElementById("ctl00_ContentPlaceHolder1_reqShipState");
        var v4 = document.getElementById("ctl00_ContentPlaceHolder1_reqShipZip");
        var v5 = document.getElementById("ctl00_ContentPlaceHolder1_reqShipZip2");
        var v6 = document.getElementById("ctl00_ContentPlaceHolder1_reqShipEmail");
        var v7 = document.getElementById("ctl00_ContentPlaceHolder1_reqShipEmail2");
    
    if(sindex == 1)
    { 
        v1.enabled = false;
        v2.enabled = false;
        v3.enabled = false;
        v4.enabled = false;
        v5.enabled = false;
        v6.enabled = true;
        v7.enabled = true;
    }
    else
    {
        v1.enabled = true;
        v2.enabled = true;
        v3.enabled = true;
        v4.enabled = true;
        v5.enabled = true;
        v6.enabled = false;
        v7.enabled = false;
    }
}





//CREDIT CARD VALIDATION
var ccErrorNo = 0;
var ccErrors = new Array ()

ccErrors [0] = "Unknown card type";
ccErrors [1] = "No card number provided";
ccErrors [2] = "Credit card number is in invalid format";
ccErrors [3] = "Credit card number is invalid";
ccErrors [4] = "Credit card number has an inappropriate number of digits";


function testCreditCard () {
      if (checkCreditCard (document.getElementById('ctl00_ContentPlaceHolder1_txtCCNum').value,document.getElementById('drpCCType').value)) {
        return true;
      } 
      else {alert (ccErrors[ccErrorNo])};
    }

function checkCreditCard (cardnumber, cardname) {
     
  // Array to hold the permitted card characteristics
  var cards = new Array();

  // Define the cards we support. You may add addtional card types.
  
  //  Name:      As in the selection box of the form - must be same as user's
  //  Length:    List of possible valid lengths of the card number for the card
  //  prefixes:  List of possible prefixes for the card
  //  checkdigit Boolean to say whether there is a check digit
  
  cards [0] = {name: "Visa", 
               length: "13,16", 
               prefixes: "4",
               checkdigit: true};
  cards [1] = {name: "MasterCard", 
               length: "16", 
               prefixes: "51,52,53,54,55",
               checkdigit: true};
  cards [2] = {name: "DinersClub", 
               length: "14,16", 
               prefixes: "300,301,302,303,304,305,36,38,55",
               checkdigit: true};
  cards [3] = {name: "CarteBlanche", 
               length: "14", 
               prefixes: "300,301,302,303,304,305,36,38",
               checkdigit: true};
  cards [4] = {name: "AmEx", 
               length: "15", 
               prefixes: "34,37",
               checkdigit: true};
  cards [5] = {name: "Discover", 
               length: "16", 
               prefixes: "6011,650",
               checkdigit: true};
  cards [6] = {name: "JCB", 
               length: "15,16", 
               prefixes: "3,1800,2131",
               checkdigit: true};
  cards [7] = {name: "enRoute", 
               length: "15", 
               prefixes: "2014,2149",
               checkdigit: true};
  cards [8] = {name: "Solo", 
               length: "16,18,19", 
               prefixes: "6334, 6767",
               checkdigit: true};
  cards [9] = {name: "Switch", 
               length: "16,18,19", 
               prefixes: "4903,4905,4911,4936,564182,633110,6333,6759",
               checkdigit: true};
  cards [10] = {name: "Maestro", 
               length: "16", 
               prefixes: "5020,6",
               checkdigit: true};
  cards [11] = {name: "VisaElectron", 
               length: "16", 
               prefixes: "417500,4917,4913",
               checkdigit: true};
               
  // Establish card type
  var cardType = -1;
  for (var i=0; i<cards.length; i++) {

    // See if it is this card (ignoring the case of the string)
    if (cardname.toLowerCase () == cards[i].name.toLowerCase()) {
      cardType = i;
      break;
    }
  }
  
  // If card type not found, report an error
  if (cardType == -1) {
     ccErrorNo = 0;
     return false; 
  }
   
  // Ensure that the user has provided a credit card number
  if (cardnumber.length == 0)  {
     ccErrorNo = 1;
     return false; 
  }
    
  // Now remove any spaces from the credit card number
  cardnumber = cardnumber.replace (/\s/g, "");
  
  // Check that the number is numeric
  var cardNo = cardnumber
  var cardexp = /^[0-9]{13,19}$/;
  if (!cardexp.exec(cardNo))  {
     ccErrorNo = 2;
     return false; 
  }
       
  // Now check the modulus 10 check digit - if required
  if (cards[cardType].checkdigit) {
    var checksum = 0;                                  // running checksum total
    var mychar = "";                                   // next char to process
    var j = 1;                                         // takes value of 1 or 2
  
    // Process each digit one by one starting at the right
    var calc;
    for (i = cardNo.length - 1; i >= 0; i--) {
    
      // Extract the next digit and multiply by 1 or 2 on alternative digits.
      calc = Number(cardNo.charAt(i)) * j;
    
      // If the result is in two digits add 1 to the checksum total
      if (calc > 9) {
        checksum = checksum + 1;
        calc = calc - 10;
      }
    
      // Add the units element to the checksum total
      checksum = checksum + calc;
    
      // Switch the value of j
      if (j ==1) {j = 2} else {j = 1};
    } 
  
    // All done - if checksum is divisible by 10, it is a valid modulus 10.
    // If not, report an error.
    if (checksum % 10 != 0)  {
     ccErrorNo = 3;
     return false; 
    }
  }  

  // The following are the card-specific checks we undertake.
  var LengthValid = false;
  var PrefixValid = false; 
  var undefined; 

  // We use these for holding the valid lengths and prefixes of a card type
  var prefix = new Array ();
  var lengths = new Array ();
    
  // Load an array with the valid prefixes for this card
  prefix = cards[cardType].prefixes.split(",");
      
  // Now see if any of them match what we have in the card number
  for (i=0; i<prefix.length; i++) {
    var exp = new RegExp ("^" + prefix[i]);
    if (exp.test (cardNo)) PrefixValid = true;
  }
      
  // If it isn't a valid prefix there's no point at looking at the length
  if (!PrefixValid) {
     ccErrorNo = 3;
     return false; 
  }
    
  // See if the length is valid for this card
  lengths = cards[cardType].length.split(",");
  for (j=0; j<lengths.length; j++) {
    if (cardNo.length == lengths[j]) LengthValid = true;
  }
  
  // See if all is OK by seeing if the length was valid. We only check the 
  // length if all else was hunky dory.
  if (!LengthValid) {
     ccErrorNo = 4;
     return false; 
  };   
  
  // The credit card is in the required format.
  return true;
}

/*============================================================================*/