var timerid     = null;
var matchString = "";
var mseconds    = 1000;	// Length of time before search string is reset


function shiftHighlight(keyCode,targ)
{

    keyVal      = String.fromCharCode(keyCode); // Convert ASCII Code to a string
    matchString = matchString + keyVal; // Add to previously typed characters

    elementCnt  = targ.length - 1;	// Calculate length of array -1

    for (i = elementCnt; i > 0; i--)
    {
        selectText = targ.options[i].text.toLowerCase(); // convert text in SELECT to lower case

        if (selectText.substr(0,matchString.length) == 	matchString.toLowerCase())
        {
            targ.options[i].selected = true; // Make the relevant OPTION selected
        }
    }

    clearTimeout(timerid); // Clear the timeout
    timerid = setTimeout('matchString = ""',mseconds); // Set a new timeout to reset the key press string
    return false; // to prevent IE from doing its own highlight switching
}

function autotab(cur_field, char_max, next_field) {
    if (cur_field.value.length == char_max) {
        next_field.focus();
    }
}

function setVehicleYear(form)
{
    with (form) {
        switch (vyear.value.length)
        {
            case 1:
                vyear.value = null;
                break;
            case 2:
                if (vyear.value >= 20) {
                    vyear.value = "19" + vyear.value;
                } else if (vyear.value < 20) {
                    vyear.value = "20" + vyear.value;
                }
                break;
            case 3:
                vyear.value = null;
                break;
        }
    }
}

function addbookmark(){
var bookmarkurl="http://www.donate-car-for-charity.com"
var bookmarktitle="Donate Car for Charity"
if (document.all)
window.external.AddFavorite(bookmarkurl,bookmarktitle)
}

/* Form Verification */

function checkform(of)
{
	// Test if DOM is available and there is an element called required
	if(!document.getElementById || !document.createTextNode){return;}
	if(!document.getElementById('required')){return;}

	// Define error messages and split the required fields
	var errorID='infomsg';
	var errorClass='requiredEmpty'
	var errorMsg='Please fill in all required fields. Missing fields are highlighted in red.';
	var missingFields = false;
	
	var cleanreqfields=document.getElementById('vAddRequired').value.split(','); // Still need to clean
	
	if(document.getElementById('vAddressSameNot').checked == false) {
		var reqfields=document.getElementById('required').value.split(',');
	} else {
		var reqfields=document.getElementById('vAddRequired').value.split(',');
	}

	// Cleanup old error from last submission
	// if there is an old errormessage field, delete it
	if(document.getElementById(errorID))
	{
		var em=document.getElementById(errorID);
		em.parentNode.removeChild(em);
	}
	// remove old images and classes from the required fields
	for(var i=0;i<cleanreqfields.length;i++)
	{
		var f=document.getElementById(cleanreqfields[i]);
		f.parentNode.className='required';
	}
	
	// Loop through required fields and validate
	for(var i=0;i<reqfields.length;i++)
	{
		// check if required field is there
		var f=document.getElementById(reqfields[i]);
		if(!f){continue;}
		// test if the required field has an error,
		// according to its type
		switch(f.type.toLowerCase())
		{
			case 'text':
				if(f.value=='' && f.id!='email'){cf_adderr(f)}
				// email is a special field and needs checking
				if(f.id=='email' && !cf_isEmailAddr(f.value)){cf_adderr(f)}
			break;
			case 'radio':
				// Negative radio ID are identical to positive but contatenated with "Not"
				var noRadio=document.getElementById(f.id + 'Not');
				if(f.checked == false && noRadio.checked == false){cf_adderr(f)}
			break;
			case 'textarea':
				if(f.value==''){cf_adderr(f)}
			break;
			case 'checkbox':
				if(!f.checked){cf_adderr(f)}
			break;
			case 'select-one':
				if(!f.selectedIndex && f.selectedIndex==0){cf_adderr(f)}
			break;
		}
	}
	
	if(missingFields && document.getElementById('alert')) alert(errorMsg);
	return !document.getElementById(errorID);

    /* Tool methods */
    function cf_adderr(o)
    {
    	// Change the class on the missing required error fields
	o.parentNode.className=errorClass;

	// For JS alert
	missingFields = true;
    
	// Check if there is no error message
    	if(!document.getElementById(errorID))
    	{
    	// create errormessage and insert before submit button
    		var em=document.createElement('div');
    		em.id=errorID;
    		var newp=document.createElement('p');
    		newp.appendChild(document.createTextNode(errorMsg));
    		// clone and insert the error image
    		em.appendChild(newp);
    		var sb = of;
    		if(sb)
    		{
    			sb.parentNode.insertBefore(em,sb);
    		}
    	}
    }
    
    function cf_isEmailAddr(str)
    {
        return str.match(/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/);
    }
}

/*----------motionpack.js-----------*/

function init() {
	document.getElementById('formVehicleAddress').style.display = "none";	
	document.getElementById('formVehicleAddress').style.overflow = "hidden";	
	document.getElementById('formVehicleAddress').style.height = "185px";	
	document.getElementById('cFname').focus();
}

window.onload = init; 

var timerlen = 5;
var slideAniLen = 250;
var timerID = new Array();
var startTime = new Array();
var obj = new Array();
var endHeight = new Array();
var moving = new Array();
var dir = new Array();

function slidedown(objname){

        if(moving[objname])
                return;

        if(document.getElementById(objname).style.display != "none")
                return; // cannot slide down something that is already visible

        moving[objname] = true;
        dir[objname] = "down";
        startslide(objname);
}

function slideup(objname){
        if(moving[objname])
                return;

        if(document.getElementById(objname).style.display == "none")
                return; // cannot slide up something that is already hidden

        moving[objname] = true;
        dir[objname] = "up";
        startslide(objname);
}

function startslide(objname){

        obj[objname] = document.getElementById(objname);
        endHeight[objname] = parseInt(obj[objname].style.height);
        startTime[objname] = (new Date()).getTime();

        if(dir[objname] == "down"){
                obj[objname].style.height = "1px";
        }

        obj[objname].style.display = "block";

        timerID[objname] = setInterval('slidetick(\'' + objname + '\');',timerlen);
}

function slidetick(objname){
        var elapsed = (new Date()).getTime() - startTime[objname];

        if (elapsed > slideAniLen)
                endSlide(objname)
        else {
                var d =Math.round(elapsed / slideAniLen * endHeight[objname]);
                if(dir[objname] == "up")
                        d = endHeight[objname] - d;
                obj[objname].style.height = d + "px";
        }
        return;
}

function endSlide(objname){
        clearInterval(timerID[objname]);

        if(dir[objname] == "up")
                obj[objname].style.display = "none";

        obj[objname].style.height = endHeight[objname] + "px";

        delete(moving[objname]);
        delete(timerID[objname]);
        delete(startTime[objname]);
        delete(endHeight[objname]);
        delete(obj[objname]);
        delete(dir[objname]);

        return;
}

function toggleSlide(objname){

  if(document.getElementById(objname).style.display == "none"){
    // div is hidden, so let's slide down
    slidedown(objname);
  }else{
    // div is not hidden, so slide up
    slideup(objname);
  }
}