//This function creates xmlHTTP Object for ajax GET,POST request according to the browser
function GetXmlHttpObject()
{
var xmlHttp=null;

try
 {
 // Firefox, Opera 8.0+, Safari
 xmlHttp=new XMLHttpRequest();
 }
catch (e)
 {
 // Internet Explorer
 try
  {
  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  }
 catch (e)
  {
  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
 }
 return xmlHttp;
}
//This function is used to make an ajax request to the filter_func.inc according to the parameter
function callSort(sortby,type,order)
{
	var curtain=getObj("pleasewaitScreen");//div used to show please wait message
	curtain.style.visibility='visible';
	var xmlHttp=GetXmlHttpObject();//get xmlHttp object
	if (xmlHttp==null)
		{
		  alert ("Your browser does not support AJAX!");
		  return;
		}
		
		if(getObj('orderHid').value==sortby && getObj('orderType').value=='asc')
			order='desc';
		if(sortby=='')
			sortby=2;
		if(getObj('orderType').value=='')
			order='asc';
		getObj('orderHid').value=sortby;
		getObj('orderType').value=order;
		var url="../comparebroadband/AJAX_Sorter.php?sort=yes&sortby="+sortby+"&type="+type+"&order="+order;
		var fieldSetObj=getObj('fieldSet');
		if(fieldSetObj!=null && fieldSetObj.display!='none')
			url+=getFilters();
		url=url+"&sid="+Math.random();
		//window.open(url);
		xmlHttp.open("GET",url,true);//make ajax call
		xmlHttp.onreadystatechange=function(){
		
		if(xmlHttp.readyState==4){
				getObj('orderType').value=order;//set order by
				getObj('orderHid').value=sortby;//set sort by
				var headerString=getTableHeader();//get header row
				//alert("*"+xmlHttp.responseText+"*");
				if(xmlHttp.responseText=="NA")
					getObj('broadbandDiv').innerHTML='<table id="broadbandTable" width="95%" border="0" align="center" cellpadding="6" cellspacing="0"><tbody><tr id="headerRow">'+headerString+'</tr><td colspan="8"><div align="center"><a class="contract" href="../comparebroadband/">Sorry. No packages found for selected criteria.</a></div></td></tbody></table>';
				else
				//update div according to the response
					getObj('broadbandDiv').innerHTML='<table id="broadbandTable" width="95%" border="0" align="center" cellpadding="6" cellspacing="0"><tbody><tr id="headerRow">'+headerString+'</tr>'+xmlHttp.responseText+"</tbody></table>";
				curtain.style.visibility='hidden';//hide div
				}
		}
		xmlHttp.send(null);
}
//This function returns header row's content as text
function getTableHeader()
{
	return (getObj('headerRow').innerHTML);//returns header row's content as text
}
//This function used to show and hide images : Not used in code
function showDetails(imgElem,spanElem)
{
	
	if(spanElem.style.display=='none')
		{
		spanElem.style.display='block';
		imgElem.src="./images/trans_minus.gif";
		imgElem.height='7';
		}
	else if(spanElem.style.display=='block')
		{
		imgElem.src="./images/trans_plus.gif";
		imgElem.height='10';
		spanElem.style.display='none';
		}
}
//This function calls function in filter_func.inc according to the sortby, merchant name and order
function callMerchantSort(sortby,merchant,order)
{
	//for other comments please see callSort function
	var curtain=getObj("pleasewaitScreen");
	var listProducts='';
	if(curtain.innerHTML=='')
		curtain.innerHTML=getObj('htmlHid').value
	curtain.style.visibility='visible';
	var xmlHttp=GetXmlHttpObject();
	if (xmlHttp==null)
		{
		  alert ("Your browser does not support AJAX!");
		  return;
		} 
		listProducts=getObj('broadbandDiv').innerHTML;
		getObj('broadbandDiv').innerHTML='';
		if(getObj('orderHid').value==sortby && getObj('orderType').value=='asc')
			order='desc';
		if(sortby=='')
			sortby=2;
		if(getObj('orderType').value=='')
			order='asc';
		var url="../comparebroadband/AJAX_Sorter.php?sortMerchant=yes&sortby="+sortby+"&merchant="+merchant+"&order="+order;
		var fieldSetObj=getObj('fieldSet');
		if(fieldSetObj!=null && fieldSetObj.display!='none')
			url+=getFilters();
		url=url+"&sid="+Math.random();
		xmlHttp.open("GET",url,true);
		//window.open(url);
		xmlHttp.onreadystatechange=function(){
		//alert(xmlHttp.responseText);
		if(xmlHttp.readyState==4 && xmlHttp.responseText!=''){
				var divElem=getObj('broadbandDiv');
				getObj('orderType').value=order;
				getObj('orderHid').value=sortby;
				if(xmlHttp.responseText=="NA")
					{
						if(listProducts.replace(/^\s+|\s+$/g,"")=='')
							getObj('textSpan').style.display='none';
						else
							alert("No Records found for the current criteria. Please try again with different selections.");
						getObj('broadbandDiv').innerHTML=listProducts;
						//divElem.innerHTML="<a class='contract' href='../comparebroadband/'>Sorry. We do not currently have any packages for this provider at the moment.</a>";
						var filterDiv=getObj('filterDiv');
						//if(filterDiv!=null && getObj('textSpan').style.display!='none')
						//	filterDiv.style.display='none';
					}
				else
					divElem.innerHTML=xmlHttp.responseText;
				getObj('htmlHid').value=curtain.innerHTML;
				curtain.innerHTML='';
				curtain.style.visibility='hidden';
				var aArray=divElem.getElementsByTagName("a");
				for(i=0;i<aArray.length;i++)
					{
						if(aArray[i].name=='link_url')
						{
							aArray[i].href=aArray[i].href+gup('userid');
						}
					}
				
				}
		}
		xmlHttp.send(null);
}
function gup( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}
function getObj(id){
	return document.getElementById(id);
}
function isGreaterThan(elemId1,elemId2){
var elem1=getObj(elemId1);
var elem2=getObj(elemId2);

	//alert(elem1.options[elem1.selectedIndex].value);
	//alert(elem2.options[elem2.selectedIndex].value);
	var value1=0.0;
	var value2=0.0;
	value1=Math.ceil(elem1.options[elem1.selectedIndex].value);
	value2=Math.ceil(elem2.options[elem2.selectedIndex].value);
	if(value1==0 || value1==0.0 )
		return true;
	//alert(value1 >= value2);
return value1 >= value2;
	
}
function getFilters(sortby,merchant,order){
	
	var minSpeed=getObj('MINSPEEDHIDDEN').value;
	var maxSpeed=getObj('MAXSPEEDHIDDEN').value;
	var minLimit=getObj('MINLIMITHIDDEN').value;
	var maxLimit=getObj('MAXLIMITHIDDEN').value;
	var contract=getObj('CONTRACTHIDDEN').value;
	var minCost=getObj('MINCOSTHIDDEN').value;
	var maxCost=getObj('MAXCOSTHIDDEN').value;
	var filters='';
	filters+='&minSpeed='+minSpeed+'&maxSpeed='+maxSpeed;
	filters+='&minLimit='+minLimit+'&maxLimit='+maxLimit;
	filters+='&minCost='+minCost+'&maxCost='+maxCost;
	filters+='&contract='+contract;
	return filters;
}
function resetFilters(){
	var elem=getObj('fieldSet');
	var elemArr=elem.getElementsByTagName('select');
	for(i=0;i<elemArr.length;i++)
		elemArr[i].selectedIndex=0;
	getObj('MINSPEEDHIDDEN').value=0;
	getObj('MAXSPEEDHIDDEN').value=0;
	getObj('MINLIMITHIDDEN').value=0;
	getObj('MAXLIMITHIDDEN').value=0;
	getObj('CONTRACTHIDDEN').value=0;
	getObj('MINCOSTHIDDEN').value=0;
	getObj('MAXCOSTHIDDEN').value=0;
}
//This function is used to make an ajax request to get the advance filters
function createFilters(elem,type,merchant)
{
	var xmlHttp=GetXmlHttpObject();//get xmlHttp object
	if (xmlHttp==null)
		{
		  alert ("Your browser does not support AJAX!");
		  return;
		}
		
		var url="../comparebroadband/AJAX_Sorter.php?createFilters=true"+"&type="+type+"&merchant="+merchant;
		url=url+"&sid="+Math.random();
		//window.open(url);
		xmlHttp.open("GET",url,true);//make ajax call
		xmlHttp.onreadystatechange=function(){
		
		if(xmlHttp.readyState==4){
				if(xmlHttp.responseText=="NA")
					elem.innerHTML='Unable to load Advance Filters.';
				else
				//update div according to the response
					elem.innerHTML=xmlHttp.responseText;
				}
		}
		xmlHttp.send(null);
}