var aCityStates = sCityStates.split('|');

var aBadWords = decodeWords(sBadWords).split(",");

var Auto_Models = arrAutoMM.split('|');
var aCountries = sCountries.split('|');
var aProvinces = sProvinces.split('|');
SubmitCounter = 0;
window.onError = handleError;

function handleError(sError, sURL, nLineNum) {
    alert("Error:" + sError + " at line " + nLineNum);
    return false;
}

function decodeWords(sWords) {
    var i;
    var nCharCode;
    var sReturn = "";

    for (i=0; i<sWords.length; ++i)
    {    if (sWords.charAt(i) != ",") {
            nCharCode = sWords.charCodeAt(i) - 1;
            sReturn += unescape('%' + nCharCode.toString(16));
        }
        else
            sReturn += sWords.charAt(i);
    }

    return sReturn;
}

function addDays(myDate,days) {
    return new Date(myDate.getTime() + days*24*60*60*1000);
}

function setfutureDate() {
    var futureDate = addDays(new Date(),14);
    document.formContact.MoveMonth.selectedIndex = futureDate.getMonth();
    document.formContact.MoveDay.selectedIndex = futureDate.getDate() -1;
    document.formContact.MoveYear.options[document.formContact.MoveYear.selectedIndex].value = futureDate.getFullYear();
}

function setMoveType()
{

    var nMoveType = document.formContact.MoveType.value;

    {

        //Blank out from and To geo fields that are needed for other movetypes
        document.formContact.elements["FromIntZip"].value = '';
        document.formContact.elements["ToIntCity"].value= '';

        var nToCountry = document.formContact.elements["ToCountry"].value;

        SetUSCanadaSettings("", nToCountry);
    }

}

function SetUSCanadaSettings(nFromCountry,nToCountry)
{
        document.getElementById("idFromCountryProvince").style.display="none";
        document.getElementById("idFromCountryProvince").style.visibility="hidden";
    if (nToCountry == "1")
    {
        document.getElementById("idIntZipTo").style.display="block";
        document.getElementById("idIntZipTo").style.visibility="visible";
           document.getElementById("idToCountryProvince").style.display="none";
           document.getElementById("idToCountryProvince").style.visibility="hidden";
           document.getElementById("idIntCityTo").style.display="none";
           document.getElementById("idIntCityTo").style.visibility="hidden";
    }
    else if (nToCountry == "2078")
    {
           document.getElementById("idIntZipTo").style.display="none";
           document.getElementById("idIntZipTo").style.visibility="hidden";
           document.getElementById("idToCountryProvince").style.display="block";
           document.getElementById("idToCountryProvince").style.visibility="visible";
           document.getElementById("idIntCityTo").style.display="none";
           document.getElementById("idIntCityTo").style.visibility="hidden";
    }
    else
    {
           document.getElementById("idIntZipTo").style.display="none";
           document.getElementById("idIntZipTo").style.visibility="hidden";
           document.getElementById("idToCountryProvince").style.display="none";
           document.getElementById("idToCountryProvince").style.visibility="hidden";
           document.getElementById("idIntCityTo").style.display="block";
           document.getElementById("idIntCityTo").style.visibility="visible";
    }
}

function setFromZipStateProvince(strName)
{
    var nFromCountry = document.formContact.elements["FromCountry"].value;
    var nToCountry = document.formContact.elements["ToCountry"].value;

    if (strName == "ToCountry" )
    {
        if (nToCountry == "1")
        {
            document.getElementById("idIntZipTo").style.display="block";
            document.getElementById("idIntZipTo").style.visibility="visible";
               document.getElementById("idToCountryProvince").style.display="none";
               document.getElementById("idToCountryProvince").style.visibility="hidden";
               document.getElementById("ToCountryProvince").value = 0;
               document.getElementById("idIntCityTo").style.display="none";
               document.getElementById("idIntCityTo").style.visibility="hidden";
        }
        else if (nToCountry == "2078")
        {
            document.getElementById("idIntZipTo").style.display="none";
               document.getElementById("idIntZipTo").style.visibility="hidden";
               document.getElementById("idToCountryProvince").style.display="block";
               document.getElementById("idToCountryProvince").style.visibility="visible";
               document.getElementById("idIntCityTo").style.display="none";
               document.getElementById("idIntCityTo").style.visibility="hidden";
        }
        else
        {
            document.getElementById("idIntZipTo").style.display="none";
               document.getElementById("idIntZipTo").style.visibility="hidden";
               document.getElementById("idToCountryProvince").style.display="none";
               document.getElementById("idToCountryProvince").style.visibility="hidden";
               document.getElementById("ToCountryProvince").value = 0;
               document.getElementById("idIntCityTo").style.display="block";
               document.getElementById("idIntCityTo").style.visibility="visible";
        }
    }
}


function setDefaults()
{
  setMoveType();
  setfutureDate();
}


var dtCh= "/";
var minYear=1900;
var maxYear=3000;

function isInteger(s){
    var i;
    for (i = 0; i < s.length; i++){
        // Check that current character is number.
        var c = s.charAt(i);
        if ((c < "0") || (c > "9")) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
    var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}



// Validate a phone number
// Expects a phone number. Makes sure the user doesn't just enter sequential numbers or identical characters
function checkPhone(phonenumber, lblPhone){
    var lastpart=phonenumber.substring(0,10);
    var sample=lastpart.substring(0,1);
    var sPhone = stripCharsInBag(phonenumber, "-");


    if (sPhone.length == 0)
        return true;

    if (sPhone.length < 10)
    {    alert("Please enter a valid 10 digit " + lblPhone + " Phone Number.");
        return false;
    }

    if ((sPhone=="0123456789") || (sPhone=="1234567890"))
    {
        alert("Please enter valid "+ lblPhone +" Phone Number.0123456789 and 1234567890 not allowed");
        return false;
    }
    else if (!isInteger(sPhone)) {
        alert("Please use only numbers in " + lblPhone + " Phone");
        return false;
    }
    else if (sAreaCodes.indexOf(phonenumber.substring(0,3)) < 1) {
        alert("Please enter valid "+ lblPhone +" Phone Area code.");
        return false;
    }
    else if (phonenumber.substring(3,6) == "555") {
        alert("Please enter valid "+ lblPhone +" Phone Number. Invalid Due To The 555 Exchange");
        return false;
    }
    else {
        for(i=1;i<lastpart.length;i++)
        {
            if ((lastpart.substring(i,i+1))!=sample) return true;
        }
        alert("Please enter valid "+ lblPhone +" Phone Number")
        return false;
    }
    return true;
}

function isValidEmail (strEmail) {
    return (strEmail.match(/^[^\/\#\,\^\*\\]+\@([A-Za-z0-9\-]{1,}\.)+([A-Za-z]{2,3})$/) ? true:false);
}

function setMonthDays()
{
    var optDay = document.formContact.MoveDay.options;
    var nMonth = document.formContact.MoveMonth.options[document.formContact.MoveMonth.selectedIndex].value;
    var nYear = document.formContact.MoveYear.options[document.formContact.MoveYear.selectedIndex].value;
    var nMaxDay;
    var i;
    var nCurrentDay = optDay.selectedIndex + 1;

    if (nMonth == 2)
    {    if (((nYear % 4 == 0) && (nYear % 100 != 0)) || (nYear % 400 == 0))
            nMaxDay = 29;
        else
            nMaxDay = 28;
    }
    else if (nMonth == 4 || nMonth == 30 || nMonth == 9 || nMonth == 11)
        nMaxDay = 30
    else
        nMaxDay = 31;

    if (nCurrentDay > nMaxDay)
        nCurrentDay = nMaxDay;

    optDay.length = 0;
    for (i=1; i<=nMaxDay; ++i)
    {    optDay[i-1] = new Option;
        optDay[i-1].text = i;
        optDay[i-1].value = i;
    }
    optDay.selectedIndex = nCurrentDay - 1;
}
//-->

function getMoveDate()
{
    var dMoveDate;
    var objForm;
    var nMonth;
    var nDay;
    var nYear;

    objForm = document.formContact;
    nYear = objForm.MoveYear.options[objForm.MoveYear.selectedIndex].value;
    if (nYear < 1900)
    nYear = parseInt(nYear) + 1900;

    nMonth = objForm.MoveMonth.options[objForm.MoveMonth.selectedIndex].value;
    nDay = objForm.MoveDay.options[objForm.MoveDay.selectedIndex].value;
    dMoveDate = new Date(nYear, nMonth - 1, nDay);


    return dMoveDate;
}

// Verify required fields
function validate(objForm) {
    var nOpt;
    var isSelected = ""
    var objForm = document.formContact;
    var sErrorMsg = "";

    // Prevent multiple submissions
/*    if (countSubmit() == false) {
        return false
    }
*/
    if (!isFieldValid(objForm.MoveType, 1, "Move Type"))
        return false;

    var now = new Date();
    var currDate = new Date(now.getFullYear(), now.getMonth(), now.getDate());
    var moveDate = getMoveDate();
    objForm.MoveDate.value = objForm.MoveMonth.options[objForm.MoveMonth.selectedIndex].value + '/' + objForm.MoveDay.options[objForm.MoveDay.selectedIndex].value + '/' + objForm.MoveYear.options[objForm.MoveYear.selectedIndex].value;
    if (moveDate - currDate < 0)
     {
        alert ("Sorry we can't accept move dates earlier than current date. Please try again.");
        return false;
	}

	if (moveDate.getTime()/(1000*60*60*24) - currDate.getTime()/(1000*60*60*24) > 6*31)
	 {
		alert ("Sorry we can't accept move dates older than 6 months after current date. Please try again.");
		SubmitCounter = 0
            return false;
    }
        if (!isFieldValid(objForm.ApproxWeight, 1, "Move Size"))
            return false;

            if (!isFieldValid(objForm.FromIntZip, 5, "From Zip"))
            {
                return false;
            }

      if (!isFieldValid(objForm.ToCountry, 1, "To Country"))
            return false;
            //if (!validateField("FromZ", "From Zip"))
        //if (validateField("ToCountry", "To Country") & (document.formContact.elements["ToCountry"].value == "1"))
        if ((isFieldValid(objForm.ToCountry, 1, "To Country")) & (document.formContact.elements["ToCountry"].value == "1"))
        {
            //if (!validateField("ToZ", "To Zip"))
            if (!isFieldValid(objForm.ToIntZip, 5, "To Zip"))
            {
                return false;
            }
        }
        //if (validateField("ToCountry", "To Country") & (document.formContact.elements["ToCountry"].value == "2078"))
        else if ((isFieldValid(objForm.ToCountry, 1, "To Country")) & (document.formContact.elements["ToCountry"].value == "2078"))
        {
            //if (!validateField("ToCountryProvince", "To Country Province"))
            if (!isFieldValid(objForm.ToCountryProvince, 1, "To Country Province"))
            {
                return false;
            }
        }
        else if ((isFieldValid(objForm.ToCountry, 1, "To Country")))
        {
            if (!isFieldValid(objForm.ToIntCity, 1, "To City"))
            {
                return false;
            }
        }

    if (!isFieldValid(objForm.FirstName, 1, "First Name"))
        return false;

    if (!isFieldValid(objForm.LastName, 1, "Last Name"))
        return false;

    if(isValidEmail(objForm.EmailAddr.value) == false) {
        objForm.EmailAddr.focus();
        alert ("Please enter a valid Email address.")
        SubmitCounter = 0
        return false;
    }

        var strWorkPhone = objForm.txtWorkPhone.value;
        var strHomePhone = objForm.txtHomePhone.value;
        var strMobilePhone = objForm.txtMobPhone.value;

        if ((strWorkPhone.length == 0) && (strHomePhone.length == 0)&& (strMobilePhone.length == 0)) {
            objForm.txtWorkPhone.focus();
            alert ("Please enter at least one phone number.")
            SubmitCounter = 0
            return false;
        }
        //if (!isFieldValid(objForm.txtWorkPhone, 1, "Work Phone"))
        //return false;

        //if (!isFieldValid(objForm.txtHomePhone, 1, "Home Phone"))
        //return false;

        //if (!isFieldValid(objForm.txtMobPhone, 1, "Mobile Phone"))
        //return false;

    if (!isFieldValid(objForm.BestCallTime, 1, "Best Time To Call"))
        return false

    if (findBadWord(objForm.txtComment.value)) {
        alert("The contents of 'Additional Requests' cannot be accepted");
        objForm.txtComment.focus();
        SubmitCounter = 0;
        return false;
    }
    if (objForm.txtComment.value.length > 255) {

        alert ("Please enter less than 255 characters in 'Additional Requirements'. Please remove " + (document.formContact.txtComment.value.length - 255) + " characters.")
        objForm.txtComment.focus();
        SubmitCounter = 0;
        return false;
    }



   return true;
}

function isFieldValid(objField, nMinLen, sFieldName) {
    var bSelectField = false

    if (objField.type == 'select-one')
        bSelectField = true;

    if ((bSelectField && objField.value < 1)
         || objField.value.length < nMinLen) {
        objField.focus();
        if (bSelectField)
            alert("Please select a '" + sFieldName + "'");
        else
            alert("Please enter '" + sFieldName + "'");

        SubmitCounter = 0;
        return false;
    }

    if (!bSelectField && findBadWord(objField.value)) {
        alert("Contents of '" + sFieldName + "' cannot be accepted");
        objField.focus();
        SubmitCounter = 0;
        return false;
    }
    return true;
}

function findBadWord(sText) {
    var nIndex;

    sText = sText.toLowerCase();
    for (nIndex=0; nIndex<aBadWords.length; ++nIndex) {
        if (sText.indexOf(aBadWords[nIndex]) >= 0)
            return true;
    }

    return false;
}



function isValidAutoYear(objField, sErrorMsg) {
    if (objField.value.length != 4 || !isInteger(objField.value)
        || objField.value < 1900 || objField.value > 2100) {
        objField.focus();
        alert(sErrorMsg);
        SubmitCounter = 0;
        return false;
    }
    return true;
}

function countSubmit() {
    SubmitCounter++;
    if(SubmitCounter > 1) {
      return false;
    }
  return true;
}

function initState( formName, stateDropName, cityDropName, initialStateCode, initialCityId )
{
        var objForm = document.forms[formName];
}

function initCountry( formName, CountryDropName)
{
        var objForm = document.forms[formName];
        var CountryDrop = objForm.elements[CountryDropName];
        var selCountry;
        CountryDrop.options[0]=new Option('-- Select a Country --','');
        CountryDrop.options[1]=new Option('-----------------','');
        for (i=0;i<aCountries.length/2;i++)
        {
            var CountryName = aCountries[i*2];
            var CountryCode = aCountries[i*2+1];
            CountryDrop.options[i+2]=new Option(CountryName,CountryCode);
        }
        CountryDrop.selectedIndex=selCountry;
}

function initProvince( formName, ProvinceDropName)
{
        var objForm = document.forms[formName];
        var ProvinceDrop = objForm.elements[ProvinceDropName];
        var selProvince;
        ProvinceDrop.options[0]=new Option('-- Select a Province --','');
        ProvinceDrop.options[1]=new Option('-----------------','');
        for (i=0;i<aProvinces.length/2;i++)
        {
            var ProvinceName = aProvinces[i*2];
            var ProvinceCode = aProvinces[i*2+1];
            ProvinceDrop.options[i+2]=new Option(ProvinceName,ProvinceCode);
        }
        ProvinceDrop.selectedIndex=selProvince;
}

function changedState( formName, stateDropName, cityDropName, selCity, initialCityId )
{
}

function initSelect( formName, MakeDropName, ModelDropName)
{

}

function changedMake( formName, MakeDropName, ModelDropName)
{
}

    // Noam's function for dynamic year; intiated in script below
    function addYears(num) {
        var currentTime = new Date();
        var thisyear = currentTime.getFullYear();
        var fyear = new Date(currentTime.getTime() + 14*24*60*60*1000);
        var curyear = fyear.getFullYear();
        for (i=0;i<num;i++){
        var optn = document.createElement("OPTION");
        optn.text = thisyear + i;
        optn.value = thisyear + i;
        if (curyear == thisyear + i)
        optn.selected = true;
        document.getElementById('MoveYear').options.add(optn);
        }
    }
