var MakeModelSelect =
{
	SHOW_ME_ALL_TXT : new String('Show me all'),
	SHOW_ME_ALL_VAL : new String('show all'),
	MASTER_ID   : new String('makeModelSelect'),
	MASTER_LABEL: new String('labelForMakeModelSelect'),
	DIV_ID      : new String('makeModelSelects'),
	MODEL_ID    : new String('modelSelect'),
	MODEL_NAME  : new String('model'),
	MAKE_ID     : new String('makeSelect'),
	MAKE_NAME   : new String('make'),
	FORM_ID     : new String('pageForm'),
	MODEL_LABEL : new String('Model:'),
	MAKE_LABEL  : new String('Make:'),
	models      : new Array,

	init : function()
	{
		
	    if (!document.getElementById || !document.getElementsByTagName || !document.createElement) {
			return;
		}
		if ($('btn_SearchByMetro')) {
			Event.observe('btn_SearchByMetro', 'click', function(event) {
				$('zipSearchTable').style.display = 'none';
				$('metroSearchTable').style.display = '';
				$('searchType').value = 'metro';
				Event.stop(event);
			});
		}
		if ($('btn_SearchByZip')) {

			Event.observe('btn_SearchByZip', 'click', function(event) {
				$('zipSearchTable').style.display = '';
				$('metroSearchTable').style.display = 'none';
				$('searchType').value = 'zip';
				Event.stop(event);
			});
		}

		var masterSelect = document.getElementById(MakeModelSelect.MASTER_ID);

		if (!masterSelect) {
			return;
		}

		var labelForMaster = document.getElementById(MakeModelSelect.MASTER_LABEL);

		var makeGroups = masterSelect.getElementsByTagName('optgroup');
		var makeGroupsDim = makeGroups.length;

		var newMakeSelect = document.createElement('select');
		newMakeSelect.setAttribute('id', MakeModelSelect.MAKE_ID);
		newMakeSelect.setAttribute('name', MakeModelSelect.MAKE_NAME);

		var newMakeLabel = document.createElement('label');
		newMakeLabel.htmlFor = MakeModelSelect.MAKE_ID;
		newMakeLabel.appendChild(document.createTextNode(MakeModelSelect.MAKE_LABEL));

		var newModelSelect = document.createElement('select');
		newModelSelect.setAttribute('id', MakeModelSelect.MODEL_ID);
		newModelSelect.setAttribute('name', MakeModelSelect.MODEL_NAME);

		var newModelLabel = document.createElement('label');
		newModelLabel.htmlFor = MakeModelSelect.MODEL_ID;
		newModelLabel.appendChild(document.createTextNode(MakeModelSelect.MODEL_LABEL));

		var option = null;
		var form = document.getElementById(MakeModelSelect.FORM_ID);
		var parts = null;
		var theLabel = "";
		var val = "";
		var txt = "";

		var makeHidden = document.getElementById('makeHidden').value;
		var modelHidden = document.getElementById('modelHidden').value;
		var doDisable = true;

		var i = 0;
		var j = 0;
		var optionsDim = 0;
		var optionsInGroup = null;

		option = new Option(MakeModelSelect.SHOW_ME_ALL_TXT, MakeModelSelect.SHOW_ME_ALL_VAL);
		newMakeSelect.options.add(option);

		newMakeSelect.onchange = MakeModelSelect.handleMakeChange;

		MakeModelSelect.models[MakeModelSelect.SHOW_ME_ALL_VAL] = newModelSelect;
		option = new Option(MakeModelSelect.SHOW_ME_ALL_TXT, MakeModelSelect.SHOW_ME_ALL_VAL);
		newModelSelect.options.add(option);

		/* skip the first optgroup */
		for (i = 1; i < makeGroupsDim; i++) {
			/*
      theLabel = makeGroups[i].label;
			parts = theLabel.split("^");
			txt = parts[0];
			val = parts[1];
      */
      txt = makeGroups[i].label;
      val = makeGroups[i].title;

			option = new Option(txt, val);
			newMakeSelect.options.add(option);

			newModelSelect = document.createElement('select');
			if (makeHidden == val) {
				option.selected = true;
			} else {
				option.selected = false;
			}

			optionsInGroup = makeGroups[i].getElementsByTagName('option');
			optionsDim = optionsInGroup.length;

			newModelSelect.setAttribute('id', MakeModelSelect.MODEL_ID);
			newModelSelect.setAttribute('name', MakeModelSelect.MODEL_NAME);

			var modelHidden = document.getElementById("modelHidden").value;

			MakeModelSelect.models[val] = newModelSelect;

			for (j = 0; j < optionsDim; j++) {
				val = optionsInGroup[j].value;
				txt = optionsInGroup[j].text;
				option = new Option(txt, val);

				newModelSelect.options.add(option);
			}
		}

		masterSelect.style.display = 'none';
		labelForMaster.style.display = 'none';
		var div = document.getElementById(MakeModelSelect.DIV_ID);
		var childNodesDim = div.childNodes.length;

		for (i = 0; i < childNodesDim; i++) {
			div.removeChild(div.firstChild);
		}

		div.appendChild(newMakeLabel);
		div.appendChild(newMakeSelect);
		div.appendChild(newModelLabel);
		div.appendChild(MakeModelSelect.models[MakeModelSelect.SHOW_ME_ALL_VAL]);
		MakeModelSelect.realMakeChange(newMakeSelect);
		
	},
	
	realMakeChange : function(obj)
	{
		var make = obj.options[obj.selectedIndex].value;

		var div = document.getElementById(MakeModelSelect.DIV_ID);
		var modelHidden = document.getElementById('modelHidden').value;
		var i = 0;
		var optionsDim = 0;

		div.removeChild(div.childNodes[3]);
		o = MakeModelSelect.models[make];
		if (obj.selectedIndex == 0) {
			o.disabled = true;
		} else {
			o.disabled = false;
			optionsDim = o.options.length;
			var parts = null;

			for (i = 0; i < optionsDim; i++) {
				parts = o.options[i].value.split("^");
				if (modelHidden == parts[1]) {
					o.options[i].selected = true;
				}
			}
		}

		div.appendChild(o);
	},

	handleMakeChange : function()
	{
		MakeModelSelect.realMakeChange(this);
	}
}

var MetroGeoSelect =
{
	SHOW_ME_ALL_TXT : new String('Show me all'),
	SHOW_ME_ALL_VAL : new String('show all'),
	MASTER_ID   : new String('metroAreaSelect'),
	MASTER_LABEL: new String('labelForMetroAreaSelect'),
	DIV_ID      : new String('metroGeoSelects'),
	GEO_ID    : new String('geoSelect'),
	GEO_NAME  : new String('geoLocation'),
	METRO_ID     : new String('metroSelect'),
	METRO_NAME   : new String('metroLocation'),
	FORM_ID     : new String('pageForm'),
	GEO_LABEL : new String('Choose your nearest location:'),
	METRO_LABEL  : new String('City:'),
	geos      : new Array,

	init : function()
	{
	    
	  
	    if($('zipSearchTable') && $('metroSearchTable') && $$('.dealsZipError').length==0)  checkCookie();
	  
	    if (!document.getElementById || !document.getElementsByTagName || !document.createElement) {
			return;
		}

		var masterSelect = document.getElementById(MetroGeoSelect.MASTER_ID);

		if (!masterSelect) {
			return;
		}
		
		var labelForMaster = document.getElementById(MetroGeoSelect.MASTER_LABEL);

		var metroGroups = masterSelect.getElementsByTagName('optgroup');
		var metroGroupsDim = metroGroups.length;

		var newMetroSelect = document.createElement('select');
		newMetroSelect.setAttribute('id', MetroGeoSelect.METRO_ID);
		newMetroSelect.setAttribute('name', MetroGeoSelect.METRO_NAME);

		var newMetroLabel = document.createElement('label');
		newMetroLabel.htmlFor = MetroGeoSelect.METRO_ID;
		newMetroLabel.appendChild(document.createTextNode(MetroGeoSelect.METRO_LABEL));

		var newGeoSelect = document.createElement('select');
		newGeoSelect.setAttribute('id', MetroGeoSelect.GEO_ID);
		newGeoSelect.setAttribute('name', MetroGeoSelect.GEO_NAME);
		newGeoSelect.style.cursor = masterSelect.style.cursor;
		newGeoSelect.title = masterSelect.title;

		var newGeoLabel = document.createElement('label');
		newGeoLabel.htmlFor = MetroGeoSelect.GEO_ID;
		newGeoLabel.style.whiteSpace = "nowrap";
		newGeoLabel.appendChild(document.createTextNode(MetroGeoSelect.GEO_LABEL));

		var option = null;
		var form = document.getElementById(MetroGeoSelect.FORM_ID);
		var parts = null;
		var theLabel = "";
		var val = "";
		var txt = "";

		var metroHidden = $('metroHidden')? $('metroHidden').value:'';
		var geoHidden =  $('geoHidden')?$('geoHidden').value:'';
		var doDisable = true;

		var i = 0;
		var j = 0;
		var optionsDim = 0;
		var optionsInGroup = null;

		newMetroSelect.onchange = MetroGeoSelect.handleMetroChange;

		for (i = 0; i < metroGroupsDim; i++) {
                        txt = metroGroups[i].label;
                        val = metroGroups[i].title;

			option = new Option(txt, val);
			newMetroSelect.options.add(option);

			newGeoSelect = document.createElement('select');
			if (metroHidden.strip() == val.strip()) {
				option.selected = true;
			} else {
				option.selected = false;
			}

			optionsInGroup = metroGroups[i].getElementsByTagName('option');
			optionsDim = optionsInGroup.length;

			newGeoSelect.setAttribute('id', MetroGeoSelect.GEO_ID);
			newGeoSelect.setAttribute('name', MetroGeoSelect.GEO_NAME);
			newGeoSelect.style.cursor = masterSelect.style.cursor;
		    newGeoSelect.title = masterSelect.title;

			MetroGeoSelect.geos[val] = newGeoSelect;

			for (j = 0; j < optionsDim; j++) {
				val = optionsInGroup[j].value;
				txt = optionsInGroup[j].text;
				option = new Option(txt, val);

				newGeoSelect.options.add(option);
				
				if (geoHidden.strip() == val.strip()) {
    				option.selected = true;
	     		} else {
				option.selected = false;
		     	}				
			}
		}

		masterSelect.style.display = 'none';
		labelForMaster.style.display = 'none';
		var zipDiv = document.getElementById('zipSearchDiv');
		var div = document.getElementById(MetroGeoSelect.DIV_ID);
		var childNodesDim = div.childNodes.length;

		for (i = 0; i < childNodesDim; i++) {
			div.removeChild(div.firstChild);
		}

		div.appendChild(newMetroLabel);
		div.appendChild(newMetroSelect);
		div.appendChild(newGeoLabel);
		div.appendChild(MetroGeoSelect.geos[newMetroSelect.options[newMetroSelect.selectedIndex].value]);
		MetroGeoSelect.realMetroChange(newMetroSelect);
		
	},

	realMetroChange : function(obj)
	{
		var metro = obj.options[obj.selectedIndex].value;

		var div = document.getElementById(MetroGeoSelect.DIV_ID);
		var i = 0;
		var optionsDim = 0;

		div.removeChild(div.childNodes[3]);
		o = MetroGeoSelect.geos[metro];
		o.disabled = false;
		optionsDim = o.options.length;

		div.appendChild(o);
	},

	handleMetroChange : function()
	{
		MetroGeoSelect.realMetroChange(this);
	}	
	
}

function checkCookie(){

		cookieValue = getCookie('defaultZipCityLocation');
	
		if(cookieValue != null && cookieValue != ""){
			var existingSearchType = document.getElementById('searchType');		
					
			if(!isNaN(cookieValue) && $('zipSearchTable').style.display == 'none')
			{					
			    	$('zipSearchTable').style.display = '';
					$('metroSearchTable').style.display = 'none';
					$('searchType').value = 'zip';		
			
			}
		    else if(isNaN(cookieValue))
			{		
			 if($('metroSearchTable').style.display == 'none')	
			  {		
	    			$('zipSearchTable').style.display = 'none';
					$('metroSearchTable').style.display = '';
					$('searchType').value  = 'metro';	
			   }
			    
			    var metroGeo = cookieValue.split("^");

				if(metroGeo.length==2)
				 {
         			$('metroHidden').value = metroGeo[0];
         			$('geoHidden').value   = cookieValue;
         		}
			}
		}						
 }
	
	function getCookie(cookieName)
	{
	if (document.cookie.length>0)
	  {
	  cookieStart=document.cookie.indexOf(cookieName + "=");

	  if (cookieStart!=-1)
	    {
	    cookieStart=cookieStart + cookieName.length+1;
	    cookieEnd=document.cookie.indexOf(";",cookieStart);
	    if (cookieEnd==-1) cookieEnd=document.cookie.length;
	    return unescape(document.cookie.substring(cookieStart,cookieEnd));
	    }
	  }
	return "";
	}


addEvent(window, 'load', MakeModelSelect.init);
addEvent(window, 'load', MetroGeoSelect.init);
