//	@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//	@		Description			: This function will be called when user checks any customer survey radio buttons
//  @                             is clicked.
//	@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

function SetRadioControls(sCurrentRadioID, iSurveyPos)
{
    var arrSurvey, arrRadioIds, iItem, iSurvey;
    var objRadio; 
    //Get sRadioIDs from server side 
    if(sRadioIDs != "")
    {
        arrSurvey = sRadioIDs.split('^');
        if (arrSurvey.length > 0)
        {
            //for(iSurvey=0; iSurvey < arrSurvey.length-1; iSurvey++)
            //{
                arrRadioIds = arrSurvey[iSurveyPos].split(',');
                for(iItem=0; iItem < arrRadioIds.length-1; iItem++)
                {
                    objRadio = eval('document.aspnetForm.' + arrRadioIds[iItem]);
                    if(arrRadioIds[iItem] == sCurrentRadioID)
                        objRadio.checked = true; 
                    else
                        objRadio.checked = false; 
                }
            //}
        }
    }   
}
//	@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//	@		Description			: This function will be called when user selects edit shipping or 
//  @ 				            edit billing or edit contact or new shipping or new contact address
//  @                     is clicked.
//  @   Pages Affected  : AccInfo
//  @		Function Name		: editaddress(action)									
//	@		Input Parameters: action = B (edit billing address)
//  @ 				            action = S (edit shipping address)
//  @ 				            action = N (new shipping address)
//  @ 				            action = C (new Contact address)
//  @ 				            action = EC (edit Contact address)
//	@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

var sNonEditableAddrCodes;
var sAddrSeperator;
function editaddress(action){
	var sSelectedShipAddress = " ";
	if(action=="S")
	{							
			if((document.frmAccinfo.iShipCode.length)>1)
			{
				for(var intTemp=0;intTemp<document.frmAccinfo.iShipCode.length;intTemp++)
				{
					if(document.frmAccinfo.iShipCode[intTemp].checked)
					{
						sSelectedShipAddress = document.frmAccinfo.iShipCode[intTemp].value;
						break;
					}
				}
			}
			else
				sSelectedShipAddress = document.frmAccinfo.iShipCode.value;				
			
			if(sNonEditableAddrCodes.indexOf(sAddrSeperator + sSelectedShipAddress + sAddrSeperator)>=0)
			{
				alert(getMessage("iNonEditableAddresses"));
				return;
			}			
	}
	else if(action=="B")
	{
		if(sNonEditableAddrCodes.indexOf(sAddrSeperator + document.frmAccinfo.iBillCode.value + sAddrSeperator)>=0)
		{
			alert(getMessage("iNonEditableAddresses"));
			return;
		}
	}
	
	document.frmAccinfo.todo.value = action;
	if((action == "C") || (action == "EC"))
		document.aspnetForm.action = "contactaddress.asp"; //sNonSecurePath
	else 
		document.aspnetForm.action = "ManageAddress.asp?Source=AC";	//sNonSecurePath
	document.aspnetForm.submit();
	return;
}

// End of the function editaddress(action)


//	@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//	@		Description			: This function calls the ReloadStates() after the form has been reset
//  @       Pages Affected      : ManageAddress.asp
//  @		Function Name		: ResetFormAndState()									
//	@		Input Parameters    : None						
//	@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
function ResetFormAndState()
{
  for (i=0; i<document.forms[0].length; i++)
  {
        doc = document.forms[0].elements[i];    
        switch (doc.type) 
        {
              case "textarea" :
                    doc.value = "";
                    break;
              case "text" :
                    doc.value = "";
                    break;
              case "checkbox" :
                    doc.checked = false;
                    break;    
              case "radio" :
                    doc.checked = false;
                    break;                
              case "select-one" :
                    doc.selectedIndex=0;
                    //doc.options[doc.selectedIndex].selected = false;
                    break;                      
              case "select-multiple" :
                    while (doc.selectedIndex != -1) 
                    {
                          indx = doc.selectedIndex;
                          doc.options[indx].selected = false;
                    }
                    doc.selected = false;
                    break;
              default :
                    break;
        }
  }
}

//	@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//	@		Description			: This function is called to assign City from list to city textbox
//  @       Pages Affected      : accRegister.asp
//  @		Function Name		: GetCityFromList()									
//	@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

function GetCityFromList(listctrl, cityctrl)
{
	//If the user selects no city ,it alerts to select the  city
    if(listctrl.options[listctrl.selectedIndex].value==0)
    {
	    alert(getMessage("iSelectCity"));
	    return false;
    }
    cityctrl.value = listctrl.options[listctrl.selectedIndex].value; 
}

//	@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//	@		Description			: This function is called to reload the states based on the Country Selection
//  @       Pages Affected      : accRegister.asp
//  @		Function Name		: ReloadStates()									
//	@		Input Parameters    : Selected country							
//	@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
function ReloadStates()
{
    var nSelList, ncount, sctrlname, selindex, selvalue, sstate;
    var selcountry, selstate; 

    //get list of <select> tags from the form
    nSelList = document.getElementsByTagName("select").length;
    for(ncount=0; ncount<nSelList; ncount++)
    {
        sctrlname = document.getElementsByTagName("select")[ncount].name;
        if(sctrlname.indexOf("cboCountry") > -1)
        {
            selindex = document.getElementsByTagName("select")[ncount].selectedIndex;            
            selcountry = document.getElementsByTagName("select")[ncount].options[selindex].value;
        }

        if(sctrlname.indexOf("cboStates") > -1)
        {
            selindex = document.getElementsByTagName("select")[ncount].selectedIndex;            
            selstate = document.getElementsByTagName("select")[ncount].options[selindex].value;
        }
    }

  if ((selcountry != null) || (selcountry != ""))
  {
    var browserType;
	var sdc, sd, sdc2, sd2;

    if (document.layers) {browserType = "nn4";}
    if (document.all) {browserType = "ie";}
    if (window.navigator.userAgent.toLowerCase().match("gecko")) {browserType= "gecko";}

    if (browserType == "gecko" ){
       sdc  = eval('document.getElementById(\'statedivcaption\')');
       sd   = eval('document.getElementById(\'statediv\')');
       sdc2 = eval('document.getElementById(\'statedivcaption2\')');
       sd2  = eval('document.getElementById(\'statediv2\')');}
    else if (browserType == "ie"){
       sdc  = eval('document.all[\'statedivcaption\']');
       sd   = eval('document.all[\'statediv\']');
       sdc2 = eval('document.all[\'statedivcaption2\']');
       sd2  = eval('document.all[\'statediv2\']');}
    else{
	   sdc  = eval('document.layers[\'`statediv\']');
       sd   = eval('document.layers[\'`statedivcaption\']');
       sdc2 = eval('document.layers[\'`statedivcaption2\']');
       sd2  = eval('document.layers[\'`statediv2\']');}

    if(selcountry == "UNITED STATES" )
    {
	  sdc.style.display="block";
      sd.style.display="block";
      sdc2.style.display="none";
      sd2.style.display="none"; 
    }
    else
    {
	  sdc.style.display="none";
      sd.style.display="none";
      sdc2.style.display="block";
      sd2.style.display="block"; 
    }
  }
}
// End of the function ReloadStates()

//	@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//	@		Description			: Function is to validate the street address if tags are entered 
//  @   Pages Affected  : accregister							
//  @		Function Name		: StreetVal(strval)
//	@		Input Parameters: strval = street field
//	@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

//Function for street address field which should accept tags like<xml> as normal text

function StreetVal(strval)
{
var cLt = /</g;
var cGt = />/g;

strval = strval.replace(cLt,"&lt;");
sAdd = strval.replace(cGt,"&gt;");

return sAdd
}
// End of the function StreetVal(strval)

//	@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//	@		Description		  	: Validation for Telephone fields  
//  @                       ( Allowed values are +,-,(,),# and from 0 to 9 )
//  @		Function Name		  : IsTelephone(value)								
//	@		Input Parameters	: Value to be tested							
//	@		Return Value		  : 0 - Success											
//	@											  1 - Failure											
//	@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

function IsTelephone(value)
{
var sPhone = /^(((\d*)[\s#+\-\(\)]*(\d+))+)$/
   
  if (!(sPhone.test(value)))
		return 1;
  else
		return 0;	
}
//End of the function IsTelephone(Value)


//	@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//	@		Description			: Validation for EMail									@
//  @		Function Name		: IsEmail()												@
//	@		Input Parameters	: Value to be tested									@
//	@		Return Value		: 0 - Success											@
//	@							  1 - Failure											@
//	@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
function IsEmail(strEmail)
{
//for multiple mail ids seperated by commas
var strMultiEmails=new Array();
strMultiEmails = strEmail.split(";");
var intReturn =1;
var emailPat=/^(.+)@(.+)$/
var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]'"
var validChars="\[^\\s" + specialChars + "\]"
var quotedUser="(\"[^\"]*\")"
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
var atom=validChars + '+'
var word="(" + atom + "|" + quotedUser + ")"
var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
	for(var i =0;i<strMultiEmails.length;i++)
	{
	var matchArray=strMultiEmails[i].match(emailPat)
	if (matchArray==null) {
		alert(getMessage("iValidEmail"));
		return intReturn;
	}
	}
var user=matchArray[1]
var domain=matchArray[2]
if (user.match(userPat)==null) {
    alert(getMessage("iValidEmail"));
    return intReturn;
}
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) {
		// this is an IP address
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				alert(getMessage("iValidEmail"));
			return intReturn;
			}
		}
		intReturn=0;
		return intReturn;
	}
var domainArray=domain.match(domainPat)
if (domainArray==null) {
	alert(getMessage("iValidEmail"));
    return intReturn;
}
	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	if (domArr[domArr.length-1].length<2 || 
		domArr[domArr.length-1].length>4) {
	alert(getMessage("iValidEmail"));
	return intReturn;
	}
var len=domArr.length	
if (len<2) {
   var errStr = getMessage("iValidEmail");
   alert(errStr)
   return intReturn;
}
intReturn=0;
return intReturn;
}
//	End of the function IsEmail(strEmail)

//	@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//	@		Description			: Function IsNumeric checks whether the entered value is a 
//	@											numeric and greater than Zero
//  @		Function Name		: IsNumeric(value)									
//	@		Input Parameters: value to be tested
//	@		Return Value		: 0 - Success	  1 - Failure			
//	@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

function IsNumeric(value)
{
	var validate=/(^\d+$)/
	if ((validate.test(value)) && (value > 0))
		return 0; 
	else
		return 1; 
}
// End of the function IsNumeric(value)

//	@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//	@		Description			: Function is to validate the zip code. 
//  @       Pages Affected  : accregister									
//  @		Function Name		: zip_validate(form)									
//	@		Input Parameters: formname = name of the form
//	@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

function zip_validate(formname){
	// ### Validating Zipcode	
	var selvalue, selindex, szipcode, sstate, sctrlname; 
    var nSelList, ncount; 
    //get list of <select> tags from the form
    nSelList = document.getElementsByTagName("select").length;
    for(ncount=0; ncount<nSelList; ncount++)
    {
        sctrlname = document.getElementsByTagName("select")[ncount].name;
        if(sctrlname.indexOf("cboCountry") > -1)
        {
            selindex = document.getElementsByTagName("select")[ncount].selectedIndex;            
            selvalue = document.getElementsByTagName("select")[ncount].options[selindex].value;
        }

        if(sctrlname.indexOf("cboStates") > -1)
        {
            selindex = document.getElementsByTagName("select")[ncount].selectedIndex;            
            sstate = document.getElementsByTagName("select")[ncount].options[selindex].value;
        }
    }
    
    szipcode = document.aspnetForm.txtZip.value;

	if(selvalue == "null"){
		alert(getMessage("iSelectCountry"));
		return false;
	}
	if((selvalue == "USA")||(selvalue.toLowerCase() == "united states")){
		retval=IsNumeric(szipcode);
		
        if((retval == 1)||(szipcode.length != 5)){
			alert(getMessage("iValidZipCode"));
			return false;
		}
		if((sstate.length > 2) || (sstate == "") || (sstate.indexOf(" ")>-1)){
			alert(getMessage("iValidStateCode"));
			return false;
		}
	}	
	return true;
}
// End of the function zip_validate(formname)

//	@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//	@		Description			: Validation for Form									@
//  @		Function Name		: ValidateForm()										@
//	@		Input Parameters	: All form values to be tested							@
//	@		Return Value		: 0 - Success											@
//	@							  1 - Failure											@
//	@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
function ValidateForm(scontrol,textData)
{
    var ret_val, sEmail; 

    //### Validating First name
    if(scontrol=='fname'){
        var sfname;
        sfname = textData;
        if(sfname.length==0){
            alert('First name is mandatory.');
            return false; 
        }
    }

    //### Validating Last name
    if(scontrol=='lname'){
        var slname;
        slname = textData;
        if(slname.length==0){
            alert('Last name is mandatory.');
            return false; 
        }
    }

    //### Validating Phone no
    if(scontrol=='phno'){
        var sPhone;
        sPhone = textData;
        if(sPhone.length==0){
            alert('Phone number is mandatory.');
            return false; 
        }

	    ret_val=IsTelephone(sPhone)
	    if(ret_val == 1)
	    {
		    alert(getMessage("iValidPhoneNo"));
		    return false;
	    }
    }

	// ### Validating Fax
    if(scontrol=='fax')
    {
	    if (textData != "")	{
		    ret_faxval=IsTelephone(textData)
		    if(ret_faxval == 1)	{
			    alert(getMessage("iValidFaxNo"));
			    return false;
		    }
	    }
    }

    //Validate password only when expeditecheckout is disabled        
    if (ExpediteCheckout == 'False')
    {
	    // ### Validating password1
        if(scontrol=='pwd1'){
            var sPwd;
            sPwd = textData;
            if(sPwd.length==0){
                alert('Password is mandatory.');
                return false; 
            }
	        if(sPwd.length < 4){
		        alert(getMessage("iPass4Char"));
		        return;
	        }

	        if(sPwd.indexOf(" ") > -1){
		        alert(getMessage("iPassNoSpace"));
		        return;
    	    }
        }

	    // ### Validating password2
        if(scontrol=='pwd2'){
            var sPwd2;
            sPwd2 = textData;
            if(sPwd2.length==0){
                alert('Confirm Password is mandatory.');
                return false; 
            }

	        if(sPwd2.length < 4){
		        alert(getMessage("iPass4Char"));
		        return;
	        }

	        if(sPwd2.indexOf(" ") > -1){
		        alert(getMessage("iPassNoSpace"));
		        return;
    	    }
        }

        if ((document.aspnetForm.txtPwd1.value!='') && (document.aspnetForm.txtPwd2.value != '')){
	        if(document.aspnetForm.txtPwd1.value != document.aspnetForm.txtPwd2.value){
		        alert(getMessage("iPassCPassSame"));
		        return;
	        }
        }

        //### Validating Secret Answer
        if(scontrol=="secretAnswer")
        {
            if(textData.length==0)
            {
                alert("Secret answer is mandatory");
                return false;
            }
        }
    }
        
	// ### Validating Street address
    if(scontrol=='street'){
	    if(textData.length > 255){
		    alert(getMessage("iStAddrGT255"));
		    return false;
	    }
	    if(textData.charAt(0)==" "){
		    alert(getMessage("iStAddrStartSpace"));
		    return false;
	    }			
	    else
	    {
		    textData = StreetVal(textData);
	    }

        if (textData.length==0) 
        {
            alert("Street address is mandatory.");
            return false; 
        }
    }

	// ### Validating City
    if(scontrol=='city')
    {
	    if(textData=="")
        {	
			    alert("City is mandatory.");
			    return false;
	    }

	    if(textData.charAt(0)==" ")
        {	
			    alert(getMessage("iValidText"));
			    return false;
	    }
    }


	// ### Validating Zipcode
    if(scontrol=='zipcode'){
	    if(zip_validate("aspnetForm") == false) 
            return false;
    }

	// ### Validating email.
    if(scontrol=='email'){
        sEmail = textData;
        if(sEmail.length==0)
        {
            alert('Login Email is mandatory.');
            return false;             
        }
    	ret_val = IsEmail(sEmail);
	    if (ret_val == 1){
    		return false;
    	}
    }
}

