﻿/****************************************
* Written by Febird,2009,TP-LINK Co.Ltd.
****************************************/
var request=
{
	queryString:function(str)
	{
		var uri = window.location.href;
		var re = RegExp(""+ str+"=([^&?]*)","ig");
		return (uri.match(re))?(uri.match(re)[0].substr(str.length+1)):null;
	}
};

(function ()
{	
	var menu=request.queryString("tab");	

	req_list("ap");
	req_list("cab");
	req_list("ant");	
	
	change_link_con($("link_con"));
	
	var obj=$("menu_"+menu);
	if(obj != null){
		tab(obj,0);
	}else{
		tab($("menu_help"),0);
	}


})();

function $(id)
{
	return document.getElementById(id);
}

function hide2(o)
{
	o.style.display="none";
}
function show2(o)
{
	o.style.display="";
}

function fold(o,up)
{
	if(up ==1)
	{
		o = o.parentNode;
	}
	if(o.className=="fold_on")
	{
		o.className="fold_off";
	}
	else{
		o.className="fold_on";
	}
}

function change_link_con(o)
{
	var excellent_str="Excellent: Link should work with high reliability, ideal for applications demanding high link quality. Fade Margin level is more than 22dB.";
	var good_str="Good: Link should give you a good surfing experience. Fade Margin level is 14~22dB.";
	var normal_str="Normal: Link would not be stable all the time, but should work properly. Fade Margin level is 14dB or lower.";
		
	switch(parseInt(o.value))
	{	
		case 3:$("link_detail").innerHTML=excellent_str;return;
		case 2:$("link_detail").innerHTML=good_str;return;
		case 1:$("link_detail").innerHTML=normal_str;return;
		default:$("link_detail").innerHTML="";
	}	
}

function help_show(name)
{
	hide2($("help_intro"));
	hide2($("help_dis"));
	hide2($("help_link"));
	hide2($("help_ant"));
	
	if(name=="dis")
	{
		show2($("help_dis"));
	}
	else if(name=="link")
	{
		show2($("help_link"));	
	}
	else if(name=="ant")
	{
		show2($("help_ant"));
		
	}else
	{	
		show2($("help_intro"));
	}	
}

function find_this_show(s)
{
	if(s==0){
		$("tx_ant").selectedIndex=0;		
		$("rx_ant").selectedIndex=0;	
		
		$("tx_ant").options[1].text="-";		
		$("tx_ant").options[1].disabled=true;
		$("rx_ant").options[1].text="-";		
		$("rx_ant").options[1].disabled=true;	
	}else{	
		$("tx_ant").selectedIndex=1;		
		$("rx_ant").selectedIndex=1;	
		$("tx_ant").options[1].disabled=false;
		$("tx_ant").options[1].text="Find This";		
		$("rx_ant").options[1].disabled=false;		
		$("rx_ant").options[1].text="Find This";		
	
	}
}

function tab(o,up)
{	
	if( 1 == up ){
	o=o.parentNode;
	}
	
	$("menu_dis").className="";
	$("menu_link").className="";
	$("menu_ant").className="";
	$("menu_help").className="";
	o.className="current";	
	
	$("panel_result").innerHTML="";
	
	if(o.id=="menu_dis")
	{	
		help_show("dis");
		show2($("panel_ap"));
		show2($("panel_action"));
		show2($("panel_result"));
		
		show2($("link_detail"));
		
		show2($("label_link_con"));
		hide2($("label_distance"));	

		$("calc").onclick=req_dis;
		$("calc").value="Calculate";
		find_this_show(0);
		
		
		
		
	}else if(o.id=="menu_link")
	{
		help_show("link");
		show2($("panel_ap"));
		show2($("panel_action"));
		show2($("panel_result"));
		hide2($("link_detail"));
		
		hide2($("label_link_con"));
		show2($("label_distance"));	
		$("calc").onclick=req_link;
		$("calc").value="Calculate";		
		find_this_show(0);
		
		
	}
	else if(o.id=="menu_ant")
	{
		help_show("ant");
		show2($("panel_ap"));
		show2($("panel_action"));
		show2($("panel_result"));	
		show2($("link_detail"));
		
		show2($("label_link_con"));
		show2($("label_distance"));
		$("calc").onclick=req_ant;
		$("calc").value="Find";	
		find_this_show(1);	
				
	}
	else /*if(o.id=="menu_help") default */
	{
		help_show("intro");	
		hide2($("panel_ap"));
		hide2($("panel_action"));
		hide2($("panel_result"));	
		show2($("panel_help"));
				
	}
	
}

function req_dis()
{
	  ck=["tx_ap","tx_cab","tx_ant","rx_ap","rx_cab","rx_ant","link_con"];
	  pars="";
	  for(var i in ck){			      
		  if($(ck[i]).selectedIndex == -1 || $(ck[i]).value =="" || $(ck[i]).value == -1) /**/
		  {
			alert("Please Input "+ck[i].toUpperCase()+".");
			$(ck[i]).focus();
			return;
		  }	
		  else{
			pars += ("&"+ck[i]+"="+$(ck[i]).value);
		  }
	  }  

	  var url="calculator.asp"; 
	  url += "?t=dis"+pars;
	  
	  //url += (url.indexOf("?")==-1?"?":"&") + "timestamp=" + new Date().getTime();           
	  var xhr=new XMLHttpRequest();			  		  	  
	  xhr.onreadystatechange=update_result(xhr); 
	  //xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 		  
	  xhr.open("GET",url,true); 		  		 	  		   
	  xhr.send(null);  
}

function req_link()
{
	  ck=["tx_ap","tx_cab","tx_ant","rx_ap","rx_cab","rx_ant","distance"];
	  pars="";
	  for(var i in ck){			     
		  if($(ck[i]).selectedIndex == -1 ||$(ck[i]).value =="" || $(ck[i]).value == -1) 
		  {
			alert("Please Input "+ck[i].toUpperCase()+".");
			$(ck[i]).focus();
			return;
		  }	
		  else{
			pars += ("&"+ck[i]+"="+$(ck[i]).value);
		  }
	  }  

	  var url="calculator.asp"; 
	  url += "?t=link"+pars;
	  
	  //url += (url.indexOf("?")==-1?"?":"&") + "timestamp=" + new Date().getTime();           
	  var xhr=new XMLHttpRequest();			  		  	  
	  xhr.onreadystatechange=update_result(xhr); 
	  //xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 		  
	  xhr.open("GET",url,true); 		  		 	  		   
	  xhr.send(null);  
}

function req_ant()
{
	  ck=["tx_ap","tx_cab","tx_ant","rx_ap","rx_cab","rx_ant","link_con","distance"];
	  pars="";
	  for(var i in ck){			     
		  if($(ck[i]).selectedIndex == -1 || $(ck[i]).value =="") 
		  {
			alert("Please Input "+ck[i].toUpperCase()+".");
			$(ck[i]).focus();
			return;
		  }	
		  else{
			pars += ("&"+ck[i]+"="+$(ck[i]).value);
		  }
	  }  

	  var url="calculator.asp"; 
	  url += "?t=ant"+pars;
	  
	  //url += (url.indexOf("?")==-1?"?":"&") + "timestamp=" + new Date().getTime();           
	  var xhr=new XMLHttpRequest();			  		  	  
	  xhr.onreadystatechange=update_result(xhr); 
	  //xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 		  
	  xhr.open("GET",url,true); 		  		 	  		   
	  xhr.send(null);  
}

function req_list(cat)
 {           
          var url="calculator.asp"; 
		  url += "?t=list&cat="+cat;
		  //url += (url.indexOf("?")==-1?"?":"&") + "timestamp=" + new Date().getTime();           
		  var xhr=new XMLHttpRequest();			  		  	  
		  xhr.onreadystatechange=update_list(xhr,cat); 
		  //xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 		  
		  xhr.open("GET",url,true); 		  		 	  		   
		  xhr.send(null);                   
 }
 
 function update_list(_xhr,cat)
{
   return function()
   {
          if(_xhr.readyState!=4)
		  {
		     return false;
		  }
		  
		  if(_xhr.status!=200)
		  {
		    alert("Server Exception!");
			return;
		  }
		  
/*		  	
		  var htmltext=_xhr.responseText;	  

		  if(cat=="ap"){
			$("tx_ap").innerHTML=htmltext;
			$("rx_ap").innerHTML=htmltext;
		  }
		  else if(cat=="cable"){
			$("tx_cable").innerHTML=htmltext;
			$("rx_cable").innerHTML=htmltext;
		  }
		  else if(cat=="antenna"){
			$("tx_antenna").innerHTML=htmltext;
			$("rx_antenna").innerHTML=htmltext;
		  }		  
*/

		var options=eval(_xhr.responseText);		  
		for(var i in options)
		{
			if(options[i]==-1 ) /*Un Choose*/
			{	
				if(cat == "ant"){ /*Only Antenna*/
					$("tx_"+cat).options[$("tx_"+cat).options.length]=new Option("Find This",-1);
					$("rx_"+cat).options[$("rx_"+cat).options.length]=new Option("Find This",-1);
				}
			}
			else if(options[i]==-2 ) /*Default*/
			{	
				if(cat == "ant"){
					$("tx_"+cat).options[$("tx_"+cat).options.length]=new Option("Default",-2);
					$("rx_"+cat).options[$("rx_"+cat).options.length]=new Option("Default",-2);
				}else if(cat == "cab"){
					$("tx_"+cat).options[$("tx_"+cat).options.length]=new Option("No Cable",-2);
					$("rx_"+cat).options[$("rx_"+cat).options.length]=new Option("No Cable",-2);
				}				
			}
			else if(options[i]==-3) /*Custom*/
			{
				//$("tx_"+cat).options[$("tx_"+cat).options.length]=new Option('Costom',-3);
				//$("rx_"+cat).options[$("rx_"+cat).options.length]=new Option('Costom',-3);
				
			}else{
				$("tx_"+cat).options[$("tx_"+cat).options.length]=new Option(options[i],i-2);
				$("rx_"+cat).options[$("rx_"+cat).options.length]=new Option(options[i],i-2);
			}
			
		}
	}

}    

function update_result(_xhr)
{
   return function()
   {
          if(_xhr.readyState!=4)
		  {
		     return false;
		  }
		  
		  if(_xhr.status!=200)
		  {
		    alert("Server Exception!");
			return;
		  }
		  	
		  var htmltext=_xhr.responseText;
		  //alert(htmltext);

		  $("panel_result").innerHTML=htmltext;

     }    
}
