var ns4 = (document.layers)?true:false;
var ns6 = (document.getElementById)?true:false;
var ie4 = (document.all)?true:false;
var dealerInfo="notInitialized";
var jsoncall_waits=0;
var ie5 = false;
var searchHit= "false";
var dom_included="false";
if (ie4) {
 if ((navigator.userAgent.indexOf('MSIE 5') > 0) || (navigator.userAgent.indexOf('MSIE 6') > 0)) {
  ie5 = true;
 }
 if (ns6) {
  ns6 = false;
 }
}

function callPopup(myLocation, sScroll, nWidth, nHeight)
{
    var sOptions;
    sOptions = "menubar=0,toolbar=0,location=0,directories=0,status=0,scrollbars=" + sScroll + ",resizable=0,width=" + nWidth + ",height=" + nHeight;
    window.open(myLocation, 'popupWndow', sOptions);
}

function callPopupWithName(myLocation, sName, sScroll, nWidth, nHeight)
{
    var sOptions;
    sOptions = "menubar=0,toolbar=0,location=0,directories=0,status=0,scrollbars=" + sScroll + ",resizable=0,width=" + nWidth + ",height=" + nHeight;
    window.open(myLocation, sName, sOptions);
}

function waitCursor() {
    if ((document.body) && (document.body.style)) {
        document.body.style.cursor = 'wait';
    }
}

function initCursor() {
    if ((document.body) && (document.body.style)) {
        document.body.style.cursor = 'arrow';
    }
}

function setAction2(action, value) {
  document.mainform.elements[1].value = value;
  document.mainform.elements[1].name = action;
}

function setAction3(action, value) {
  document.mainform.elements[2].value = value;
  document.mainform.elements[2].name = action;
}

function setAction4(action, value) {
  document.mainform.elements[3].value = value;
  document.mainform.elements[3].name = action;
}

function setAction5(action, value) {
  document.mainform.elements[4].value = value;
  document.mainform.elements[4].name = action;
}

function setAction6(action, value) {
  document.mainform.elements[5].value = value;
  document.mainform.elements[5].name = action;
}

function configClick(action, value) {
  var offset = getScrollPos();

  if (offset > 0) {
    setAction2("_scrollPos",offset);
  }

  doAction2(action,value);
}

function getScrollPos() {
  var offset = 0;
  if ((ns4)||(ns6)) {
    offset = window.pageYOffset;
  } else {
    offset = self.document.body.scrollTop;
  }

  return offset;
}

function scrollRestore(value) {
  setTimeout('window.scrollTo(0,' + value + ');', 0);
}

function doAction2(action, value) {

    document.mainform.elements[0].value = value;
    document.mainform.elements[0].name = action;
    waitCursor();
    document.mainform.submit();
}

function selectDealerAction(action,value) {
		var str="var dealer=dealerInfo.dealer"+value;
	eval(str);
	document.getElementById("sdealerName").value=dealer[6].value;
	var radius = document.getElementById("sdealerRadius");
	radius.value=dealer[16].value;
	var state = document.getElementById("sdealerState");
	state.value=dealer[9].value;
	var city = document.getElementById("sdealerCity");
	city.value=dealer[8].value;
	var address = document.getElementById("sdealerAddress");
	address.value=dealer[7].value;
	var zip = document.getElementById("sdealerZip");
	zip.value=dealer[10].value;
	var tel = document.getElementById("sdealerTel");
	tel.value=dealer[12].value;
 	var fax = document.getElementById("sdealerFax");
	fax.value=dealer[13].value;
  	document.getElementById("sdealerContactable").value=dealer[22].value;
  	var id = document.getElementById("sdealerID");
	id.value=dealer[3].value;
    document.mainform.elements[0].value = value;
    document.mainform.elements[0].name = action;
    waitCursor();
    document.mainform.submit();
 
}

function gotoPage(page) {
    document.mainform.elements[0].name = 'x'; // clear any action item
    document.mainform.elements['page'].value = page-1;
    document.mainform.submit();
}

function setLocate(){
    setAction3('locateConfig', 'true');
}

function doLocate(action,value){
    var offset = getScrollPos();

    if (offset > 0) {
        setAction2("_scrollPos",offset);
    }

    setLocate();
    doAction2(action,value);
}

function noPreferenceConfigClick(action, value, noPrefGroup) {
  if ("setNoPreference" != value) {
    configClick(action,value);
  } else {
    var offset = getScrollPos();

    if (offset > 0) {
        setAction2("_scrollPos",offset);
    }

    doAction2("noPreferenceGroup",noPrefGroup);
  }
}

function JSONCall(page) {
	var i=0;
	var x=document.getElementById("dealer-content");
	var string="";
	var length=findSize(dealerInfo);
	start=(page-1)*12;
	size=length-start;
	if(size>12)
	{
		size=12;
	}
	for(i=start;i<size+start;i++)
	{
		var str="var obj=dealerInfo.dealer"+i;
		eval(str);
		if(i-start==0)
		{
			string+="<div class=\"container\">";
		}
		if(i-start==4)
		{
			string+="</div><div class=\"alternate-row\">";
		}
		if(i-start==8)
		{
				string+="</div><div class=\"container\">";
		}
		if(obj!=null)
		{
			string+="<a href=\"javascript:selectDealerAction('selectDealer','"+i+"')\" class=\"BlackLink\"><div class=\"field\" onmouseover=\"displayClick(this, 1);\" onmouseout=\"displayClick(this, 0);\" onclick=\"javascript:selectDealerAction('selectDealer','"+i+"');\">";
			string+="<div class=\"dealer-name-underline\" style=\"padding-left:20px;\" onMouseOver=\"style.cursor='hand';\">";
			string+=obj[6].value+"</div>";
			string+="<div class=\"dealer-address\" style=\"padding-left:20px;\" onMouseOver=\"style.cursor='hand';\">";
			string+="("+trimVal(obj[16].value)+" miles) </div>";
			string+="<div class=\"dealer-address\" style=\"padding-left:20px;\" onMouseOver=\"style.cursor='hand';\">";
			string+=obj[7].value+"</div>";
			string+="<div class=\"dealer-address\" style=\"padding-left:20px;\" onMouseOver=\"style.cursor='hand';\"></div>";
			string+="<div class=\"dealer-address\" style=\"padding-left:20px;\" onMouseOver=\"style.cursor='hand';\">";
			string+=obj[8].value+", "+obj[9].value+" "+obj[10].value+"</div>";
			string+="<div class=\"dealer-address\" style=\"padding-left:20px;\" onMouseOver=\"style.cursor='hand';\">";
			string+="Tel. "+obj[12].value+"</div>";
			string+="<div class=\"dealer-address\" style=\"padding-left:20px;\" onMouseOver=\"style.cursor='hand';\">";
			string+="Fax "+obj[13].value+"</div>";
			string+="<a href=\"javascript:selectDealerAction('selectDealer','"+i+"')\" class=\"RedLink\"><span class=\"dealer-link\" style=\"padding-left:20px;visibility:hidden;color:#c71444;\" onMouseOver=\"style.cursor='hand';\">Click to Select</span> </a>";
			if(obj[19].value=="true")
			{
				string+="<div class=\"awards\" style=\"padding-left:20px;\" onMouseOver=\"style.cursor='hand';\">";
				string+="<a class=\"TrilLink\" href=\"javascript:popGlossary('/GlossaryLink.jsp?url="+bsu+"/package_glossary&term=NOFA');\"><img width=\"53\" height=\"58\" alt=\"\" src=\"/img/tril/uiref/award.gif\"/></a></div>"
			}
			string+="</div>";
		}
	}
	x.innerHTML=string;	
}

function trimVal(str)
{
	var ret= str.substr(0,str.indexOf(".")+3);
	return ret;
}

function trimRadius(str)
{
	return str.substr(0,str.indexOf("m")-1);
}

function displayClick(obj, number) {
if(number==1){
obj.className='results-rollover';
obj.getElementsByTagName("span")[0].style.visibility = "visible";
}else{
obj.className='field';
obj.getElementsByTagName("span")[0].style.visibility = "hidden";
}
}

function include_dom(zip,city,state,dealerID,radius) {
	script_filename=bsu+"apps/dealerlocator/closestdealer?";
	var dealer=null;
	 var city = city.toLowerCase();
	if(dealerInfo!=null)
	{
		var str="dealer=dealerInfo.dealer0";
		eval(str);
	}
	if(dealer!=null)
		return;
	var flag="false";
	//alert("zip = "+zip+" city = "+city+" state = "+state+" radius = "+radius);
	if(zip!=null&&zip!=""&&zip!="null")
	{
		if(flag=="true")
			script_filename+="&";
		else
			flag="true";
		script_filename+="zipCode=";
		script_filename+=zip;
	
	}
	if(city!=null&&city!=""&&city!="null")
	{
		
		if(flag=="true")
			script_filename+="&";
		else
			flag="true";
		script_filename+="city=";
		script_filename+=city;
	}
	if(state!=null&&state!=""&&state!="0"&&state!="null")
	{
		if(flag=="true")
			script_filename+="&";
		else
			flag="true";
		script_filename+="state=";
		script_filename+=state;
	}
	if(radius!=null&&radius!=""&&radius!="null")
	{
		if(flag=="true")
			script_filename+="&";
		else
			flag="true";
		script_filename+="radius=";
		script_filename+=radius;
	}
	if(dealerID!=null&&dealerID!=""&&dealerID!="null")
	{
		if(flag=="true")
			script_filename+="&";
		else
			flag="true";
		script_filename+="dealerId=";
		script_filename+=dealerID;
	}
	if(flag=="false")
	{
		return;
	}
	dom_included="true";
	//alert("including file = "+script_filename);
    var html_doc = document.getElementsByTagName('head').item(0);
    var js = document.createElement('script');
    js.setAttribute('language', 'javascript');
    js.setAttribute('type', 'text/javascript');
    js.setAttribute('src', script_filename);
    html_doc.appendChild(js);
}

function findSize(obj)
{
	for(i=0;;i++)
	{
		var str="var subObj=dealerInfo.dealer"+i;
		eval(str);
		if(subObj!=null)
			continue;
		else
			break;
	}		
	//alert("Returing length = "+i);
	return i;
}


function doAction(action) {
	//alert("Submitting page");
    var result = true;
	//alert("Action = "+action);
    document.mainform.elements[0].name = action;
    waitCursor();
    if (document.mainform.onsubmit)
    {
      result = document.mainform.onsubmit();
    }
    if (result)
      document.mainform.submit();
    else
      initCursor();
}


function doSearchAction(action) {
	//alert("Action = "+action);
	var zip=document.getElementById('zip').value;
	var city=document.getElementById('city').value;
	var stateDropDown=document.getElementById('state');
	var state=stateDropDown.options[stateDropDown.selectedIndex].value;
	var radiusDropDown=document.getElementById('searchRadius');
	var radius=radiusDropDown.options[radiusDropDown.selectedIndex].value;
	//alert("before validation");
	var validationResult=validate(zip,city,state);
	if(validationResult=="false")
	{
		return;
	}
	include_dom(zip,city,state,"",radius);
	submitSearchForm(action);
	//doAction(action);
}

function validate(zip,city,state)
{
	//alert("zip ="+zip+" State = "+state+" city = "+city);
	var error=document.getElementById('error');
	//error.innerHTML="";
	var zipStatus="false",cityStatus="false",stateStatus="false";
	if(zip!=""&&zip!=null&&zip!="null")
		zipStatus="true";
	if(city!=""&&city!=null&&city!="null")
		cityStatus="true";
	if(state!=null&&state!=""&&state!="0"&&state!="null")
		stateStatus="true";
	if((zipStatus=="false")&&(cityStatus=="false")&&(stateStatus=="false"))
	{
		error.innerHTML="Please enter your search criteria.";
		return "false";
	}
	if(zipStatus=="false")
	{
		if(cityStatus=="true"&&stateStatus=="false")
		{
			error.innerHTML="Please enter a state for this city.";
			return "false";
		}
		else if(cityStatus=="false"&&stateStatus=="true")
		{
			error.innerHTML="Please enter a city for this state.";
			return "false";
		}
		else
			return "true"
	}
	else
		return "true";
}

function submitSearchForm(action)
{
	if(dealerInfo=="notInitialized")
	{
		if(jsoncall_waits>20)
		{
				jsoncall_waits=0;
				dealerSearchNoResultsError(action);
		}
		jsoncall_waits+=1;
		//alert("dealerInfo "+dealerInfo);
		var fun="submitSearchForm('"+action+"')";
		setTimeout(fun,200);
		return;
	}
	else
	{
		var dealer=null;
		if(dealerInfo!=null)
		{
			var str="dealer=dealerInfo.dealer1";
			eval(str);
		}
		if(dealer==null||dealerInfo==null)
		{
			//alert("dealer is null");
			var noResults= document.getElementById("error_noResults");
			noResults.value="true";
			doAction(action);					
		}
		else
		{
			//alert("dealer is not null");
			doAction(action);	
		}
	}
}
function dealerSearchNoResultsError()
{
	var error=document.getElementById('error');
	error.innerHTML="";
}

function displayDealers()
{
	//alert("In display dealers");
	if(dealerInfo=="notInitialized")
	{
		if(jsoncall_waits>20)
		{
				jsoncall_waits=0;
		}
		jsoncall_waits+=1;
		//alert("dealerInfo "+dealerInfo);
		var fun="displayDealers()";
		setTimeout(fun,200);
		return;
	}
	else
	{
		var dealer=null;
		if(dealerInfo!=null)
		{
			var str="dealer=dealerInfo.dealer1";
			eval(str);
		}
		if(dealer==null||dealerInfo==null)
		{
			//alert("dealer is null");
		}
		else
		{
			//alert("dealer is not null");
			//alert("displaying dealer data");
			include_pagination('1');
			JSONCall('1');
		}
	}
}

function include_pagination(cur_page) {
	var x= document.getElementById("pagination-container");
	var length=findSize(dealerInfo);
	x.innerHTML="";
	var string="";
	if(length<=12)
		return;
	else
	{
		string+="<div style=\"padding-right: 20px;\" valign=\"top\" >Page ";
		var pages=Math.ceil(length/12);
		//alert("pages = "+pages);
		//alert("current page = "+cur_page);
		var left=cur_page-1;
		var right=cur_page-1+2;
		if(cur_page>1)
		{
			string+="<a href=\"javascript:shiftToPage("+left+");\"><< </a>";
		}
		for(i=1;i<=pages;i++)
		{
			if(cur_page!=i)
				string+="<a href=\"javascript:shiftToPage("+i+");\">"+i+" </a>";
			else
				string+="<b class=\"form-text\">"+i+" </b>";
		}
		if(cur_page<pages)
		{
				string+="<a href=\"javascript:shiftToPage("+right+");\"> >></a>";
		}
		string+="</div></div>";
	}
	x.innerHTML=string;

}

function shiftToPage(page)
{
	//alert("shifting to page"+page);
	if(dealerInfo!=null)
	{
		//alert("dealer info is not null");
		include_pagination(page);
		JSONCall(page);
	}
	else
	{
		//alert("dealer info is null");
		setTimeout("shiftToPage("+page+")",1000);
		return;
	}
}

function alterRadius(script_filename,zip,city,state)
{
	//alert("in alter radius");
	var dropdownIndex = document.getElementById('searchRadius').selectedIndex;
	var radius = document.getElementById('searchRadius')[dropdownIndex].value;	
	//alert(radius);
	var radius_value=radius.substr(0,3);
	dealerInfo=null;
	include_dom(zip,city,state,"",radius_value);
	shiftToPage("1");
}

function selectRadius(radius)
{
	if(radius==10)
	{
		document.getElementById('searchRadius')[1].selected=true;
	}
	if(radius==20)
	{
		document.getElementById('searchRadius')[2].selected=true;
	}
	if(radius==30)
	{
		document.getElementById('searchRadius')[3].selected=true;
	}
	if(radius==50)
	{
		document.getElementById('searchRadius')[4].selected=true;
	}
	if(radius==75)
	{
		document.getElementById('searchRadius')[5].selected=true;
	}
	if(radius==100)
	{
		document.getElementById('searchRadius')[6].selected=true;
	}
}

function showInventoryDealer()
{
	if(dom_included=="false")
		return;
	//alert("in show inventory dealers");
	if(dealerInfo=="notInitialized")
	{
		if(jsoncall_waits>20)
		{
			
				document.location.href='/Locate.jsp?flow=browse&lang=en';
				return;
		}
		jsoncall_waits+=1;
		//alert("dealerInfo "+dealerInfo);
		var fun="showInventoryDealer()";
		setTimeout(fun,200);
		return;
	}
	else
	{
		var dealer=null;
		if(dealerInfo!=null)
		{
			var str="dealer=dealerInfo.dealer0";
			eval(str);
		}
		if(dealer==null||dealerInfo==null)
		{
			// dealer is null - redirect to delaer search form
				document.location.href='/Locate.jsp?flow=browse&lang=en';
				return;
	
		}
		else
		{
			//alert("dealer is not null");
			//alert("displaying dealer data");
			showDealer();
		}
	}

}

function showDealer()
{
	if(dealerInfo==null)
		return;
	var str="dealer=dealerInfo.dealer0";
	eval(str);
	//alert("dealer name="+dealer[6].value);
	document.getElementById("sdealerName").value=dealer[6].value;
	document.getElementById("dealerName").innerHTML=dealer[6].value;
	var radius = document.getElementById("sdealerRadius");
	radius.value=dealer[16].value;
	var state = document.getElementById("sdealerState");
	state.value=dealer[9].value;
	var city = document.getElementById("sdealerCity");
	city.value=dealer[8].value;
	var address = document.getElementById("sdealerAddress");
	address.value=dealer[7].value;
	document.getElementById("dealerStreet").innerHTML=dealer[7].value;
	
	//city
	document.getElementById("dealerCity").innerHTML=dealer[8].value;
	//address
	var addr=dealer[9].value+" "+dealer[10].value;
	document.getElementById("dealerAddress").innerHTML=addr;
	var zip = document.getElementById("sdealerZip");
	zip.value=dealer[10].value;
	var tel = document.getElementById("sdealerTel");	
	tel.value=dealer[12].value;
	document.getElementById("dealerPhone").innerHTML="Tel. "+dealer[12].value;
 	var fax = document.getElementById("sdealerFax");
	fax.value=dealer[13].value;
  	document.getElementById("sdealerContactable").value=dealer[22].value;
  	var id = document.getElementById("sdealerID");
	id.value=dealer[3].value;
	document.getElementById("dealerHeading").innerHTML="Select from the following information to search inventory at "+dealer[6].value+" .";
	
	// removing the contact dealer buttons if the dealers are not contactable

}
function removeContactDealers()
{
	if(dealerInfo==null||dealerInfo=="notInitialized")
		return;
	var str="dealer=dealerInfo.dealer0";
	if(dealer==null)
		return;
	var contactable=dealer[22].value;
	if(contactable=="false")
	{
		var items=document.getElementsByName("contactDealer");
		for(i=0;i<items.length;i++)
			items[i].innerHTML="";
	}
}