function URLEncode(str) {
	var SAFECHARS = "0123456789" +					// Numeric
					"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +	// Alphabetic
					"abcdefghijklmnopqrstuvwxyz" +
					"-_.!~*'()";					// RFC2396 Mark characters
	var HEX = "0123456789ABCDEF";
	var plaintext = str;
	var encoded = "";
	for (var i = 0; i < plaintext.length; i++ ) {
		var ch = plaintext.charAt(i);
	    if (ch == " ") {
		    encoded += "+";	// x-www-urlencoded, rather than 
		} else if (SAFECHARS.indexOf(ch) != -1) {
		    encoded += ch;
		} else {
		    var charCode = ch.charCodeAt(0);
			if (charCode > 255) {
			    alert("Unicode Character '" 
                        + ch 
                        + "' cannot be encoded using standard URL encoding.\n" +
				          "(URL encoding only supports 8-bit characters.)\n" +
						  "A space (+) will be substituted.");
				encoded += "+";
			} else {
				encoded += "%";
				encoded += HEX.charAt((charCode >> 4) & 0xF);
				encoded += HEX.charAt(charCode & 0xF);
			}
		}
	}
	return encoded;
}

function rn() {
  return Math.floor(Math.random()*999999999);
}

function initMap() {
	var mapOver = function(elem) {
		$('map').addClass('off');
		$(elem).setStyle('display','block');
	};
	var mapOut = function() {
		$('map').removeClass('off');
		$('midwest').setStyle('display','none');
		$('southeast').setStyle('display','none');
		$('delta').setStyle('display','none');
	};
	$('midwestMask').addEvent('mouseover',function(){ mapOver('midwest'); });
	$('midwestMask').addEvent('mouseout',mapOut);
	$('deltaMask').addEvent('mouseover',function(){ mapOver('delta'); });
	$('deltaMask').addEvent('mouseout',mapOut);
	$('southeastMask').addEvent('mouseover',function(){ mapOver('southeast'); });
	$('southeastMask').addEvent('mouseout',mapOut);
}

function initSlider() {

  // declare local vars
  var sliderTimer = 8000; // ms
  var sliderFxA   = false;
  var sliderFxB   = false;
  var firstSlider = false;
  var slider_data = new Array();
  var elemId      = 0;
  var sliderAt	  = 0;
  var totalSliderElem = 0;
  var sliderRun	  = true;
  
  // local functions
  var loadSlider = function(elem) {
    thisId = elem.get('id').replace("slider","").toInt();
		// load txt data & btn click event
	$('sliderTitle').set('html',slider_data[thisId][0]);
	$('sliderContent').set('html',slider_data[thisId][3]);
	$('sliderLink').removeEvents('click');
	$('sliderLink').addEvent('click',function() {
	  window.location = slider_data[thisId][1];
	});
		// slide img to selected elem
	if (sliderFxA) { sliderFxA.cancel(); }
	gc = $('slider'+thisId+'_img').getCoordinates($('sliderImgs'));
	targetLeft = gc['left'];
	var sliderFxA = new Fx.Tween($('sliderImgs'), {duration: 500, transition:'quad:in:out', unit:'px'}).start('left','-'+targetLeft);
		// slide dot to selected control
	if (sliderFxB) { sliderFxB.cancel(); }
	gc = $('slider'+thisId).getCoordinates($('sliderCtl'));
    targetLeft = gc['left'];
	var sliderFxB = new Fx.Tween($('sliderDot'), {duration: 500, transition:'quad:in:out', unit:'px'}).start('left',targetLeft);
    sliderAt = thisId;
  };
  
  var startSlider = function() {
    if (sliderRun) {
	  loadSlider(slider_data[sliderAt][4]);
      sliderAt++;
      if (sliderAt >= totalSliderElem) sliderAt = 0;
    }
    (function(){ startSlider() }).delay(sliderTimer);
  };
	  // builder slider data array
  gc = $('sliderImg').getCoordinates();
  sliderWidth = gc['width']; // multiplier for slider img array
  $$('ul#sliderData li').each(function(item){
    if (!firstSlider) firstSlider = item;
	    // get data
    thisId		  = 'slider'+elemId;
	thisTitle     = item.get('title');
	thisLinkElem  = item.getElements('a');
	thisLink      = thisLinkElem[0].get('href');
	thisImgElem   = thisLinkElem[0].getElements('img');
	thisImg		  = thisImgElem[0].get('src');
	thisDivElem   = item.getElements('div');
	thisContent   = thisDivElem[0].get('html');
	slider_data[elemId] = new Array(
		thisTitle,   // 0
		thisLink,    // 1
		thisImg,     // 2
		thisContent, // 3
		item		 // 4 (parent control element)
	);
		// remove source LI content and apply ID
	item.set('id',thisId);
	item.set('html',''); // empty
	
	// add event handler
	item.addEvent('click',function(){
		loadSlider(this);
	});
	
    elemId++;
  });
	  // inject slider images
  totalSliderElem = elemId;
  seWidth = (totalSliderElem * sliderWidth).toInt();
  $('sliderImgs').setStyle('width',seWidth+'px');
  for (i=0; i<slider_data.length; i++) {
    thisLi = new Element('li').set('id','slider'+i+'_img');
    new Element('img').set('src',slider_data[i][2]).inject(thisLi);
    thisLi.inject($('sliderImgs'));
  }
      // add event handler for auto-slider pause
  $('slider').addEvent('mouseover',function(){ sliderRun = false; });
  $('slider').addEvent('mouseout',function(){  sliderRun = true; });
	  // load first slider element
  if (firstSlider) loadSlider(firstSlider);
	  // start auto-slider (after first delay)
  sliderAt++;
  (function(){ startSlider() }).delay(sliderTimer);
}

function initChildNavToggle() {
	var navEffect = false;
	var navTrg    = $('childNavContent');
	var navShow   = true;
	var curTxt	  = 'hide';
	gc = navTrg.getCoordinates();
	var navElemHeight = gc['height']; // get height before collapsing onInit
	var navCookie = Cookie.read('childNavShowing');
	if (!navCookie) {
	  navCookie   = Cookie.write('childNavShowing','true');
	}
	else {
	  if (navCookie == 'false') {
	    navTrg.setStyle('height',0);
    	var curTxt	  = 'show';
	    navShow = false;
	  }
	}
	$('childToggle').set('html','-'+curTxt+'-')
	.addEvent('click',function(){
		if (navEffect) { navEffect.cancel(); }
		if (navShow) {
		  this.set('html','-show-');
		  var navEffect = new Fx.Tween(navTrg, {duration: 500, transition:'quad:in:out', unit:'px'}).start('height',0);
		  navCookie = Cookie.write('childNavShowing','false');
		  navShow = false;
		}
		else {
		  this.set('html','-hide-');
		  var navEffect = new Fx.Tween(navTrg, {duration: 500, transition:'quad:in:out', unit:'px'}).start('height',navElemHeight);
		  navCookie = Cookie.write('childNavShowing','true');
		  navShow = true;
		}
	});
}

function chkPortalInfoForm() {
  ff = eval("document.myInfoForm");
  reqPass = false;
  if (ff.pass.value != "") {
    reqPass = true;
  }
  if (ff.first_name.value == "") {
    alert("Please enter your first name.");
    ff.first_name.focus();
    return false;
  }
  else if (ff.last_name.value == "") {
    alert("Please enter your last name.");
    ff.last_name.focus();
    return false;
  }
  else if (ff.email.value.indexOf('@') <= 0) {
    alert("Please enter your email address. This is your also your user name");
    ff.email.focus();
    ff.email.select();
    return false;
  }
  else if (ff.address1.value == "") {
    alert("Please enter your address.");
    ff.address1.focus();
    return false;
  }
  else if (ff.city.value == "") {
    alert("Please enter your city.");
    ff.city.focus();
    return false;
  }
  else if (ff.state.value == "") {
    alert("Please select your  state.");
    ff.state.focus();
    return false;
  }
  else if (ff.zip.value == "") {
    alert("Please enter yours zip. This is very important and must be accurate for the Dealer Locator to send you leads.");
    ff.zip.focus();
    return false;
  }
  /*
  else if (ff.phone.value == "") {
    alert("Please enter your phone.");
    ff.phone.focus();
    return false;
  }
  */
  else if ((reqPass) && (ff.pass.value == "")) {
    alert("Please enter a new password.");
    ff.pass.focus();
    return false;
  }
  else if ((reqPass) && (ff.pass_repeat.value == "")) {
    alert("Please repeat your new password.");
    ff.pass_repeat.focus();
    return false;
  }
  else if ((reqPass) && (ff.pass.value != ff.pass_repeat.value)) {
    alert("The passwords entered do not match. Please re-enter.");
    ff.pass_repeat.value = "";
    ff.pass.focus();
    ff.pass.select();
    return false;
  }
  else {
    ff.subtn.value = "SAVING";
    ff.subtn.disabled = true;
    return true;
  }
}
function initCalendarFilter() {
	new DatePicker('#filterDateStart', {
		allowEmpty: true,
		inputOutputFormat: 'n/j/Y'
	});
	new DatePicker('#filterDateEnd', {
		allowEmpty: true,
		inputOutputFormat: 'n/j/Y'
	});
}
function clearDateFilter() {
  $('filterDateStart').set('value','');
  $('filterDateEnd').set('value','');
  document.filterForm.submit();
}

