
/* ThePittsburghChannel.com scripts */
// Begin national js scripts


var aCityStates = sCityStates.split('|');

var aBadWords = decodeWords(sBadWords).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 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 replace(string,text,by) {
// Replaces text with by in string
    var strLength = string.length, txtLength = text.length;
    if ((strLength == 0) || (txtLength == 0)) return string;

    var i = string.indexOf(text);
    if ((!i) && (text != string.substring(0,txtLength))) return string;
    if (i == -1) return string;

    var newstr = string.substring(0,i) + by;

    if (i+txtLength < strLength)
        newstr += replace(string.substring(i+txtLength,strLength),text,by);

    return newstr;
}

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") || (sPhone=="1111111111") || (sPhone=="2222222222") ||
    	(sPhone=="3333333333") || (sPhone=="4444444444") || (sPhone=="5555555555") || (sPhone=="6666666666") ||
    	(sPhone=="7777777777") || (sPhone=="8888888888") || (sPhone=="9999999999") || (sPhone=="0000000000"))
    {
        alert("Please enter valid "+ lblPhone);
        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(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{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 dMDate;
    var objForm;
    var nMonth;
    var nDay;
    var nYear;

    objForm = document.formContact;
    nYear = objForm.MoveYear.options[objForm.MoveYear.selectedIndex].value;
    nMonth = objForm.MoveMonth.options[objForm.MoveMonth.selectedIndex].value;
    nDay = objForm.MoveDay.options[objForm.MoveDay.selectedIndex].value;
    dMDate = new Date(nYear, nMonth - 1, nDay);

    return dMDate;
}

function isDefined(ckVar) {
	var DEFINED_V=true;

   	function handleError() {
   	DEFINED_V=false;
   	return true;
   	}
   	var oldOnError=window.onerror;
   	window.onerror=handleError;
   	try { 
   		eval(ckVar);
   	}catch (e) 
   	{ DEFINED_V=false;
   	}
   	window.onerror=oldOnError;
   	return DEFINED_V;
}

// Verify required fields
function validate(objForm) {

	/* Format Phone Numbers */
	objForm.PhoneWork.value = objForm.txtWorkPhone1.value + "-" + 
		objForm.txtWorkPhone2.value + "-" + 
		objForm.txtWorkPhone3.value + "x" + 
		objForm.txtWorkPhone4.value;
	objForm.PhoneHome.value = 
		objForm.txtHomePhone1.value + "-" + 
		objForm.txtHomePhone2.value + "-" + 
		objForm.txtHomePhone3.value + "x" + 
		objForm.txtHomePhone4.value;
	objForm.PhoneCell.value = 
		objForm.txtMobPhone1.value + "-" + 
		objForm.txtMobPhone2.value + "-" + 
		objForm.txtMobPhone3.value;
	/* End Format Phone Numbers */
	
	/* Format Vehicle Information */
	objForm.VehicleInfo.value = objForm.Make.value + ";" + 
		objForm.Model.value + ";" + 
		objForm.Year.value + ";" + 
		objForm.Runs.value;
	/* End Format Vehicle Information */

	window.location.href="http://ad.doubleclick.net/clk;30675558;8704162;o?#";
	document.getElementById("gate").value = siteinfo.sitekey.lc;
    var nOpt;
    var isSelected = ""
    var objForm = document.formContact;
    var sErrorMsg = "";
    
    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 full service or self service, require move size       
    if (objForm.MoveType.value == 'FSvc' || objForm.MoveType.value == 'SSvc') {

        if (!isFieldValid(objForm.MoveSize, 1,"Move Size")) {
        	document.getElementById('sizeMenu').style.display = "inline";
            document.getElementById('autoMenu').style.display = "none";
            showing = 1;
            document.getElementById('details').innerHTML = "&lt;&lt;Less";
            return false;
        }
    }
    
    if (!isFieldValid(objForm.ToState, 1, "To State"))
        return false;
        
    if (!isFieldValid(objForm.ToCity, 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.txtWorkPhone1.value + objForm.txtWorkPhone2.value + 
        objForm.txtWorkPhone3.value;
    var strHomePhone = objForm.txtHomePhone1.value + objForm.txtHomePhone2.value + 
        objForm.txtHomePhone3.value;
    var strMobilePhone = objForm.txtMobPhone1.value + objForm.txtMobPhone2.value + 
        objForm.txtMobPhone3.value;
    
    if ((strWorkPhone.length == 0) && (strHomePhone.length == 0)&& (strMobilePhone.length == 0)) {
        objForm.txtWorkPhone1.focus();
        alert ("Please enter at least one phone number.")
        SubmitCounter = 0
        return false;
    }   
    if (objForm.txtWorkPhone2.value+objForm.txtWorkPhone3.value=="0000000" ||
    	objForm.txtWorkPhone2.value+objForm.txtWorkPhone3.value=="1111111" ||
    	objForm.txtWorkPhone2.value+objForm.txtWorkPhone3.value=="2222222" ||
    	objForm.txtWorkPhone2.value+objForm.txtWorkPhone3.value=="3333333" ||
    	objForm.txtWorkPhone2.value+objForm.txtWorkPhone3.value=="4444444" ||
    	objForm.txtWorkPhone2.value+objForm.txtWorkPhone3.value=="5555555" ||
    	objForm.txtWorkPhone2.value+objForm.txtWorkPhone3.value=="6666666" ||
    	objForm.txtWorkPhone2.value+objForm.txtWorkPhone3.value=="7777777" ||
    	objForm.txtWorkPhone2.value+objForm.txtWorkPhone3.value=="8888888" ||
    	objForm.txtWorkPhone2.value+objForm.txtWorkPhone3.value=="9999999" ||
    	objForm.txtHomePhone2.value+objForm.txtHomePhone3.value=="0000000" ||
    	objForm.txtHomePhone2.value+objForm.txtHomePhone3.value=="1111111" ||
    	objForm.txtHomePhone2.value+objForm.txtHomePhone3.value=="2222222" ||
    	objForm.txtHomePhone2.value+objForm.txtHomePhone3.value=="3333333" ||
    	objForm.txtHomePhone2.value+objForm.txtHomePhone3.value=="4444444" ||
    	objForm.txtHomePhone2.value+objForm.txtHomePhone3.value=="5555555" ||
    	objForm.txtHomePhone2.value+objForm.txtHomePhone3.value=="6666666" ||
    	objForm.txtHomePhone2.value+objForm.txtHomePhone3.value=="7777777" ||
    	objForm.txtHomePhone2.value+objForm.txtHomePhone3.value=="8888888" ||
    	objForm.txtHomePhone2.value+objForm.txtHomePhone3.value=="9999999" ||
    	objForm.txtMobPhone2.value+objForm.txtMobPhone3.value=="0000000" ||
    	objForm.txtMobPhone2.value+objForm.txtMobPhone3.value=="1111111" ||
    	objForm.txtMobPhone2.value+objForm.txtMobPhone3.value=="2222222" ||
    	objForm.txtMobPhone2.value+objForm.txtMobPhone3.value=="3333333" ||
    	objForm.txtMobPhone2.value+objForm.txtMobPhone3.value=="4444444" ||
    	objForm.txtMobPhone2.value+objForm.txtMobPhone3.value=="5555555" ||
    	objForm.txtMobPhone2.value+objForm.txtMobPhone3.value=="6666666" ||
    	objForm.txtMobPhone2.value+objForm.txtMobPhone3.value=="7777777" ||
    	objForm.txtMobPhone2.value+objForm.txtMobPhone3.value=="8888888" ||
    	objForm.txtMobPhone2.value+objForm.txtMobPhone3.value=="9999999") {
    		alert ("Please enter a valid phone number.");
    		objForm.txtWorkPhone1.focus();
    		SubmitCounter = 0
    		return false;
    	}
    if (checkPhone(strWorkPhone, "Work")==false) {
        objForm.txtWorkPhone1.focus();
        SubmitCounter = 0
        return false;
    }
    if (checkPhone(strHomePhone, "Home")==false) {
        objForm.txtHomePhone1.focus();
        SubmitCounter = 0
        return false;
    }
    if (checkPhone(strMobilePhone, "Mobile")==false) {
        objForm.txtMobPhone1.focus();
        SubmitCounter = 0
        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;
    }
    
    if (objForm.MoveType.value == "Auto"){
        if (!isFieldValid(objForm.Make, 1, "Please enter vehicle make.")) {
        	document.getElementById('sizeMenu').style.display = "none";
            document.getElementById('autoMenu').style.display = "inline";
            showing = 1;
            document.getElementById('details').innerHTML = "&lt;&lt;Less";
            return false;
        }
        
        if (!isFieldValid(objForm.Model, 1, "Please enter vehicle model.")) {
       		document.getElementById('sizeMenu').style.display = "none";
            document.getElementById('autoMenu').style.display = "inline";
            showing = 1;
            document.getElementById('details').innerHTML = "&lt;&lt;Less";
            return false;
        }
        
        if (!isValidAutoYear(objForm.Year, "Please enter a valid four digit vehicle year.")) {
            document.getElementById('sizeMenu').style.display = "none";
            document.getElementById('autoMenu').style.display = "inline";
            showing = 1;
            document.getElementById('details').innerHTML = "&lt;&lt;Less";
            return false;
        }
    }
    
    if (objForm.FromZip.value.length != 5 || !isInteger(objForm.FromZip.value)) {
        alert("Please enter a valid zip code");
        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];
        var stateDrop = objForm.elements[stateDropName];
        var cityDrop = objForm.elements[cityDropName];
        var selState;
        
        if (initialStateCode > 0) 
        {
            selState = initialStateCode-1;
        }
        else 
        {
            selState = stateDrop.selectedIndex;
        }
        for (i=0;i<aCityStates.length/3;i++)
        {
            var stateName = aCityStates[i*3];
            var stateCode = aCityStates[i*3+1];
            stateDrop.options[i+1]=new Option(stateName,stateCode);
            if (stateCode == initialStateCode)
                {
                    selState = i + 1;
                }
        }
        stateDrop.selectedIndex=selState;
        if (selState>0) 
        {
            selCity = cityDrop.selectedIndex;
            changedState( formName, stateDropName, cityDropName, selCity, initialCityId );
        }
        else 
        {
            stateDrop.selectedIndex=0;
            cityDrop.selectedIndex=0;
        }
}

function changedState( formName, stateDropName, cityDropName, selCity, initialCityId )
{  
        var objForm = document.forms[formName];
        var aCities
        stateDrop = objForm.elements[stateDropName];
        cityDrop = objForm.elements[cityDropName];
        selState = stateDrop.selectedIndex;
        
        if(selState>0)
        {
            aCities=(aCityStates[(selState-1)*3+2]).split('/');
            cityDrop.options.length=0;
            cityDrop.options[0]=new Option('-- Select a City --','');
            cityDrop.options[1]=new Option('-----------------','');
            for (i=0;i<aCities.length/2;i++)
            {
                var cityName = aCities[i*2];
                var cityId = aCities[i*2+1];
                cityDrop.options[i+2]=new Option(cityName,cityId);
                if ( cityId == initialCityId )
                {
                    selCity = i+2;
                }
            }
        }
        cityDrop.selectedIndex=selCity;
}


    function typeSelect(type) {
        document.getElementById('sizeMenu').style.display = "none";
        document.getElementById('autoMenu').style.display = "none";
        showing = 0;
        document.getElementById('details').innerHTML = "More&gt;&gt;";
        if (type == "FSvc" || type == "SSvc") {
            document.getElementById('details').style.display = "inline";
            document.getElementById('details').setAttribute('action','sizeMenu');
        }
        else if (type == "Auto") {
            document.getElementById('details').style.display = "inline";
            document.getElementById('details').setAttribute('action','autoMenu');
        }
        else {
            document.getElementById('details').style.display = "none";
            document.getElementById('details').setAttribute('action','none');
        }   
    }
    var showing = 0;
    
    function show(anchor) {
        var whatToShow = anchor.getAttribute('action');
        if (whatToShow == 'sizeMenu' && showing == 0) {
            document.getElementById('sizeMenu').style.display = "inline";
            document.getElementById('autoMenu').style.display = "none";
            showing = 1;
            document.getElementById('details').innerHTML = "&lt;&lt;Less";
        }
        else if (whatToShow == 'autoMenu' && showing == 0) {
            document.getElementById('sizeMenu').style.display = "none";
            document.getElementById('autoMenu').style.display = "inline";
            showing = 1;
            document.getElementById('details').innerHTML = "&lt;&lt;Less";
        }
        else {
            document.getElementById('sizeMenu').style.display = "none";
            document.getElementById('autoMenu').style.display = "none";
            showing = 0;
            document.getElementById('details').innerHTML = "More&gt;&gt;";
        }
    }
    function close() {
        document.getElementById('sizeMenu').style.display = "none";
        document.getElementById('autoMenu').style.display = "none";
        showing = 0;
        document.getElementById('details').innerHTML = "More&gt;&gt;";
    }
    function initMoveDate(){
    	var thisDate = new Date();
    	var thisDay = thisDate.getDate();
    	var currentYear = thisDate.getFullYear();
    	thisDate.setDate(thisDay+14);
    	var thisYear = thisDate.getFullYear();
    	var thisMonth = thisDate.getMonth();
    	var thisDate = thisDate.getDate();
    	document.getElementById('moveMonth').selectedIndex = thisMonth;
    	document.getElementById('moveDay').selectedIndex = thisDate - 1;
    	var thisYearOption = document.createElement('option');
    	var nextYearOption = document.createElement('option');
    	thisYearOption.value = currentYear;
    	nextYearOption.value = currentYear+1;
    	thisYearOption.innerHTML = currentYear;
    	nextYearOption.innerHTML = currentYear+1;
    	if (currentYear != thisYear) {
    		nextYearOption.selected = 'selected';
    	}
    	document.getElementById('moveYear').appendChild(thisYearOption);
    	document.getElementById('moveYear').appendChild(nextYearOption);
    }



// End national_js scripts

