﻿var theFormSubmitted = false;
var OPTION_PREFIX = "o_";
var bEventAttached=false;
var bSubmitClicked=false;
var bLiveMode=false;
var RootFolder;
var bDivVisible=false;

var chkResidentialId,chkCommercialId,txtBusNameId,txtFNameId,txtLNameId,
    txtAdd1Id,txtAdd2Id,txtCityId,cboStateId,txtAppZipCodeId,txtDayPhoneAreaId,txtDayPhoneExchId,txtDayPhoneNumId,
    txtEvePhoneAreaId,txtEvePhoneExchId,txtEvePhoneNumId,txtEmailId,txtPromocodeId,chkReceiveOffersId,
    rdlServiceListId,txtServiceTypeId,txtPromocode,AppCurrentSiteName,txtuserTimeZoneId,lblErrorInfoId;

function onServiceClick(ctl)
{
    if(!bSubmitClicked) return;
    document.getElementById('lblError').innerHTML=GetErrors(false);
}
function onReceiveOffersLableClick(){
    if(!bLiveMode) return;
    var CheckCtl=document.getElementById(chkReceiveOffersId);
    CheckCtl.checked=CheckCtl.checked ? false : true;
}
function CheckLableClick(ctlType){
    if(!bLiveMode) return ;
    var CheckCtl;
    if(ctlType=='C'){
        CheckCtl=document.getElementById(chkCommercialId);
        CheckCtl.checked=CheckCtl.checked ? false :true;
    }
    else{
        CheckCtl=document.getElementById(chkResidentialId);
        CheckCtl.checked=CheckCtl.checked ? false :true;
    }
    onCustomerTypeChange(CheckCtl);
}
function onCustomerTypeChange(ctl){
    if(!bLiveMode) return ;
    if(ctl.id==chkResidentialId)
        if(ctl.checked){
            document.getElementById(chkCommercialId).checked=false;
            document.getElementById('spanBusinessName').innerHTML='Business Name';
        }
        else{
            document.getElementById(chkCommercialId).checked=true;
            document.getElementById('spanBusinessName').innerHTML='<font class="Sharequired">*</font>Business Name';
        }
    else{
        if(ctl.checked){
            document.getElementById(chkResidentialId).checked=false;
            document.getElementById('spanBusinessName').innerHTML='<font class="Sharequired">*</font>Business Name';
        }
        else{
            document.getElementById(chkResidentialId).checked=true;
            document.getElementById('spanBusinessName').innerHTML='Business Name';
        }
    }
}
function removeDoubleLine(value) {
   var str = value;
   while(str.indexOf("\r\n\r\n") >= 0) {
      str = str.replace(/\r\n\r\n/g, "\r\n")      
   }
   return str;
}

function setTimeZone()
{
	var now = new Date();
    var gmtoffset = now.getTimezoneOffset();
    document.getElementById(txtuserTimeZoneId).value = gmtoffset;     
}

function onTimeSelected(oSrc)
{
    if (oSrc.selectedIndex == (oSrc.length - 1))
        document.getElementById('callMessage').style.display = "block";
    else
        document.getElementById('callMessage').style.display = "none";
}

function ShowCalender(cllerId)
{   
    
    setTimeZone();
    //var oTarget=event.srcElement;
    var evnt=null;
    if(window.event)
        evnt= window.event;
    else{
        evnt=Event;
    }
    var oTarget = evnt.srcElement? evnt.srcElement : evnt.target; 
    if(cllerId==undefined){
        document.getElementById('divCalendar').style.display = "none";
        return;
    }
    else if(cllerId.id=="ImgCalender"){
        setEventListener();
        if(document.getElementById('divCalendar').style.display == "none")
        {
            document.getElementById('divCalendar').style.display = "block";
        }      
        else
            document.getElementById('divCalendar').style.display = "none";
    }
    else if(oTarget.nodeName=="A"){
        document.getElementById('divCalendar').style.display = "block";        
        return true;
    }
    else{
        document.getElementById('divCalendar').style.display = "none";
    } 
}
function setEventListener() {

  if (document.addEventListener) {
    document.addEventListener('keypress', ShowCalender, false);
    //document.addEventListener('onkeydown', ShowCalender, true);
    document.addEventListener('onmousedown', ShowCalender, false);
  }
  else if (document.attachEvent  && bEventAttached==false) {
    bEventAttached=true;
    document.attachEvent('onkeydown', ShowCalender);
    document.attachEvent('onmousedown', ShowCalender);
  }
  else document.onkeydown = ShowCalender;

}
function onControlChange(control){
    if(!bSubmitClicked) return;
    if(control.value==''){
        document.getElementById('lblError').innerHTML=control.ErrorText;        
    }
    else{
        var bac=document.getElementById('lblError').innerHTML.replace(control.ErrorText,'');
        document.getElementById('lblError').innerHTML.replace(control.ErrorText,'');
    }
}
function onEmailBlur(control){
    if(!bSubmitClicked) return;
    document.getElementById('lblError').innerHTML=GetErrors(false);
}
function onFoucsOut(control){
    if(!bSubmitClicked) return;
    if(document.getElementById('lblError').innerHTML!=''){
        if(control.value!=''){
            document.getElementById('lblError').innerHTML=GetErrors(false);
        }
    }
}
function ValidateForm(theForm1){
    if(!bLiveMode) return false;
    if (theFormSubmitted) {
        alert("This form has already been submitted.");
	    return false;    
	}
	setTimeZone();
	bSubmitClicked=true;
	var errorMsg=GetErrors(true);
	if (errorMsg.length > 0) {
	    document.getElementById('lblError').innerHTML=errorMsg;
	    theFormSubmitted=false;
	    bSubmitClicked=false;
		return false;
	}
	else {
		var bHasService=checkAppServiceByZipCode(document.getElementById(txtAppZipCodeId).value);
	    if(bHasService){
		    theFormSubmitted = true;
		    bSubmitClicked=false;
		    theForm1.parentElement.style.display='none';
		    return true;
		}
		else{
		    document.getElementById('lblError').innerHTML='We do not currently offer service in your area.';
		    theFormSubmitted=false;
		    bSubmitClicked=false;
		    return false;
		}
	}
	theForm1.parentElement.style.display='none';
	return true;
}
function GetErrors(showFoucs)
{
    var bSetFocus=true;
	var errorCount = 0;
	var errorArray = new Array();

	var errorMessage = "";
	
	var dayPhoneSectionError = false;
	var evePhoneSectionError = false;
    var ControlToFoucs=new Array();
    
    // Clean and validate the name.       
	if (document.getElementById(txtFNameId).value != null) {
		document.getElementById(txtFNameId).value = document.getElementById(txtFNameId).value.replace(/\"/g,"");
	}
                      
	errorMessage = requiredField(document.getElementById(txtFNameId), "First Name", false);//errorCount==0
	if (errorMessage.length > 0) {
		errorArray[errorCount++] = errorMessage;
		ControlToFoucs[errorCount]=document.getElementById(txtFNameId);
	}

    if (document.getElementById(txtLNameId).value != null) {
		document.getElementById(txtLNameId).value = document.getElementById(txtLNameId).value.replace(/\"/g,"");
	}

	errorMessage = requiredField(document.getElementById(txtLNameId), "Last Name", false);
	if (errorMessage.length > 0) {
		errorArray[errorCount++] = errorMessage;
		ControlToFoucs[errorCount]=document.getElementById(txtLNameId);
	}

	// Clean and validate the address.
	if (document.getElementById(txtAdd1Id).value != null) {
		document.getElementById(txtAdd1Id).value = document.getElementById(txtAdd1Id).value.replace(/\"/g,"");
	}

	errorMessage = requiredField(document.getElementById(txtAdd1Id), "Address 1", false);
	if (errorMessage.length > 0) {
		errorArray[errorCount++] = errorMessage;
		ControlToFoucs[errorCount]=document.getElementById(txtAdd1Id);
	}

	if (document.getElementById(txtAdd2Id).value != null) {
		document.getElementById(txtAdd2Id).value = document.getElementById(txtAdd2Id).value.replace(/\"/g,"");
	}

	if (document.getElementById(txtCityId).value != null) {
		document.getElementById(txtCityId).value = document.getElementById(txtCityId).value.replace(/\"/g,"");
	}

	errorMessage = requiredField(document.getElementById(txtCityId), "City", false);
	if (errorMessage.length > 0) {
		errorArray[errorCount++] = errorMessage;
		ControlToFoucs[errorCount]=document.getElementById(txtCityId);
	}

	if (!validSelect(document.getElementById(cboStateId))) {
		errorArray[errorCount++] = "State";
		if (errorCount == 1) {
			document.getElementById(cboStateId).focus();
			ControlToFoucs[errorCount]=document.getElementById(cboStateId);
		}
	}
	
	if (document.getElementById(txtAppZipCodeId).value != null) {
		document.getElementById(txtAppZipCodeId).value = document.getElementById(txtAppZipCodeId).value.replace(/ /g,"");
	}

	errorMessage = requiredField(document.getElementById(txtAppZipCodeId), "ZIP Code", false);
	if (errorMessage.length == 0) {
		errorMessage = isZip(document.getElementById(txtAppZipCodeId), "ZIP Code", false)		
	}
	
	if (errorMessage.length > 0) {
		errorArray[errorCount++] = errorMessage;
		ControlToFoucs[errorCount]=document.getElementById(txtAppZipCodeId);
	}

	// Validate the phone numbers.
	errorMessage = requiredField(document.getElementById(txtDayPhoneAreaId), "Day Phone Area Code", false);
	if (errorMessage.length == 0) {
		errorMessage = isNumber(document.getElementById(txtDayPhoneAreaId), "Day Phone Area Code", 3, false); 
	}
	if (errorMessage.length > 0) {
		dayPhoneSectionError = true;
		errorArray[errorCount++] = errorMessage;
		ControlToFoucs[errorCount]=document.getElementById(txtDayPhoneAreaId);
	}

	errorMessage = requiredField(document.getElementById(txtDayPhoneExchId), "Day Phone Exchange", false);
	if (errorMessage.length == 0) {
		errorMessage = isNumber(document.getElementById(txtDayPhoneExchId), "Day Phone Exchange", 3, false); 		
	}
	if (errorMessage.length > 0) {
		dayPhoneSectionError = true;
		errorArray[errorCount++] = errorMessage;
		ControlToFoucs[errorCount]=document.getElementById(txtDayPhoneExchId);
	}

	errorMessage = requiredField(document.getElementById(txtDayPhoneNumId), "Day Phone Suffix", false);
	if (errorMessage.length == 0) {
		errorMessage = isNumber(document.getElementById(txtDayPhoneNumId), "Day Phone Suffix", 4, false); 
	}
	if (errorMessage.length > 0) {
		dayPhoneSectionError = true;
		errorArray[errorCount++] = errorMessage;
		ControlToFoucs[errorCount]=document.getElementById(txtDayPhoneNumId);
	}

	//errorMessage = isNumber(theForm.dayPhoneExt, "Day Phone Extension", 0, false);
	//if (errorMessage.length > 0) {
	//	errorArray[errorCount++] = errorMessage;
	//}

   	//if ((theForm.dayPhoneArea.value != "" && theForm.dayPhoneExch.value != "" && theForm.dayPhoneNum.value != "")
    if ((document.getElementById(txtDayPhoneAreaId).value != "" && document.getElementById(txtDayPhoneExchId).value != "" && document.getElementById(txtDayPhoneNumId).value != "")
   	&& (!dayPhoneSectionError))
 
   	{
		errorMessage = customPhoneValidations(document.getElementById(txtDayPhoneAreaId), document.getElementById(txtDayPhoneExchId), document.getElementById(txtDayPhoneNumId), "Day phone", false);
		if (errorMessage.length > 0) {
			errorArray[errorCount++] = errorMessage;
			ControlToFoucs[errorCount]=document.getElementById(txtDayPhoneExchId);
		}
	}

    //errorMessage = requiredField(document.getElementById(txtEvePhoneAreaId), "Evening Phone Area Code", false);
    if (document.getElementById(txtEvePhoneAreaId).value != "" || document.getElementById(txtEvePhoneExchId).value != "" || document.getElementById(txtEvePhoneNumId).value != ""){
		errorMessage = requiredField(document.getElementById(txtEvePhoneAreaId), "Evening Phone Area Code", false);
		if (errorMessage.length == 0) {
			errorMessage = isNumber(document.getElementById(txtEvePhoneAreaId), "Evening Phone Area Code", 3, false); 
		}
		if (errorMessage.length > 0) {
			evePhoneSectionError = true;
			errorArray[errorCount++] = errorMessage;
			ControlToFoucs[errorCount]=document.getElementById(txtEvePhoneAreaId);
		}
	}
	
	//errorMessage = requiredField(document.getElementById(txtEvePhoneExchId), "Evening Phone Exchange", false);
   	if (document.getElementById(txtEvePhoneAreaId).value != "" || document.getElementById(txtEvePhoneExchId).value != "" || document.getElementById(txtEvePhoneNumId).value != "") {
		errorMessage = requiredField(document.getElementById(txtEvePhoneExchId), "Evening Phone Exchange", false);
		if (errorMessage.length == 0) {
			errorMessage = isNumber(document.getElementById(txtEvePhoneExchId), "Evening Phone Exchange", 3, false); 
		}
		if (errorMessage.length > 0) {
			evePhoneSectionError = true;
			errorArray[errorCount++] = errorMessage;
			ControlToFoucs[errorCount]=document.getElementById(txtEvePhoneExchId);
		}
	}
	
	//errorMessage = requiredField(document.getElementById(txtEvePhoneNumId),  "Evening Phone Suffix", false);
   	if (document.getElementById(txtEvePhoneAreaId).value != "" || document.getElementById(txtEvePhoneExchId).value != "" || document.getElementById(txtEvePhoneNumId).value != "") {
		errorMessage = requiredField(document.getElementById(txtEvePhoneNumId), "Evening Phone Suffix", false);
		if (errorMessage.length == 0) {
			errorMessage = isNumber(document.getElementById(txtEvePhoneNumId), "Evening Phone Suffix", 4, false);
		} 
		if (errorMessage.length > 0) {
			evePhoneSectionError = true;
			errorArray[errorCount++] = errorMessage;
			ControlToFoucs[errorCount]=document.getElementById(txtEvePhoneNumId);
		}
	}
	
	//errorMessage = isNumber(theForm.evePhoneExt, "Evening Phone Extension", 0, false);
	//if (errorMessage.length > 0) {
	//	errorArray[errorCount++] = errorMessage;
	//}
	

   	if ((document.getElementById(txtEvePhoneAreaId).value != "" && document.getElementById(txtEvePhoneExchId).value != "" && document.getElementById(txtEvePhoneNumId).value != "") 
   	&& (!evePhoneSectionError))
   	{
		errorMessage = customPhoneValidations(document.getElementById(txtEvePhoneAreaId), document.getElementById(txtEvePhoneExchId), document.getElementById(txtEvePhoneNumId), "Evening phone", false);
		if (errorMessage.length > 0) {
			errorArray[errorCount++] = errorMessage;     
			ControlToFoucs[errorCount]=document.getElementById(txtEvePhoneAreaId);   
		}
	}
	
	// Check the email
	errorMessage = requiredField(document.getElementById(txtEmailId), "E-mail Address", false);
	if (errorMessage.length == 0) {
		errorMessage = isEmail(document.getElementById(txtEmailId), false);
	}
	if (errorMessage.length > 0) {
		errorArray[errorCount++] = "E-mail Address"; 
		ControlToFoucs[errorCount]=document.getElementById(txtEmailId);
	}

	// Check the Type of Service
	if(!IsServiceSelected()){
	    errorArray[errorCount++] = "Type of service";
	    if (errorCount == 1) {
		    document.getElementById(rdlServiceListId).focus();
		    ControlToFoucs[errorCount]=document.getElementById(rdlServiceListId);
	    }
	}
	
	errorMessage = "";
    
    if(document.getElementById(chkCommercialId).checked && trim(document.getElementById(txtBusNameId).value)=="")
    {
        errorArray[errorCount++] = "Business Name";
	    if (errorCount == 1) {
		    document.getElementById(txtBusNameId).focus();
		    ControlToFoucs[errorCount]=document.getElementById(txtBusNameId);
	    }
    }
	// handle errors
	var errorMsg = "";

	// multiple standard errors
	if (errorCount > 1) {
		errorMsg = "Please specify a valid value for each of the following:</br>";
		for (idx = 0; idx < errorCount; idx++) {
			errorMsg += "- " + errorArray[idx] + "</br>";
		}
	}
	// single standard error
	else { 
		if (errorCount == 1) {
			errorMsg = "Please specify a valid value for </br> - " + errorArray[0];
		}
	}

	if(showFoucs && errorMsg!=""){
        for(var iIndex=0;iIndex<ControlToFoucs.length;iIndex++){
            try{
                ControlToFoucs[iIndex].focus();
                break;
            }
            catch(e) {}
        }
    }
	return errorMsg;
}
function IsServiceSelected(){
    var OptionsList= document.getElementById(rdlServiceListId).getElementsByTagName("INPUT");
    var iCount=OptionsList.length;
    var bChecked=false;
    if(OptionsList!=null){
        for(var iIndex=0;iIndex<iCount;iIndex++)
        {
            var oTag=OptionsList[iIndex];
            if(oTag.type=="radio")
            {
                if(oTag.checked){
                    bChecked=true;
                    break;
                }
            }
        }
    }
    return bChecked;
}

//Call WS to get the available services for the enterd zip code
function checkAppServiceByZipCode(zipCode){
    if(zipCode!="" && zipCode!=undefined){
        var SelectedService='';
        var OptionsList= document.getElementById(rdlServiceListId).getElementsByTagName("INPUT");
        var iCount=OptionsList.length;
        var bShowError=false;
        if(OptionsList!=null){                
            for(var iIndex=0;iIndex<iCount;iIndex++)
            {
                var oTag=OptionsList[iIndex];
                if(oTag.type=="radio")
                {
                    if(oTag.checked){
                        SelectedService=oTag.value;
                        break;
                    }
                }
            }
            if(SelectedService!=''){
                var bIsOK=checkIsServiceInZip(zipCode,AppCurrentSiteName,SelectedService);
                return bIsOK;
            }
        }
        else{
            return false;
        }        
    }
    return false;
}

