/* constants variables, try to be synchronized with the C code*/
var TRange=null;
var BROWSER_UNDEFINED=0;
var BROWSER_MICROSOFT=1;
var BROWSER_NETSCAPE=2;

var PAGE_WIDTH_STR ="900";  
var PAGE_WIDTH_SMALLER_STR="900";

var CGI_BIN="cgi-bin";
var CGI_PRI="cgi-pri";
var CGI_FILE="CGIhandler.cgi";
var CGI_PUBLIC_INPUT=CGI_BIN+"/"+CGI_FILE+"?";
var CGI_PRIVATE_INPUT=CGI_PRI+"/"+CGI_FILE+"?";


var link2_livesites="/"+CGI_PUBLIC_INPUT+"sort=site_name";
//var link2_livesites="site_list.html";
var iframe_livesites="<iframe id=\"ifrm\" name=\"ifrm\" src=\""+link2_livesites+"\" scrolling=\"auto\" width=940 height=540 frameborder=0>";

var ex_InvD_href="<a href=\"/examples/ExInvDirect.html\" target=\"_blank\">Click here for an example</a>";
var ex_RevG_href="<a href=\"/examples/ExRevGrade.html\" target=\"_blank\">Click here for an example</a>";
var ex_Solzone_href="<a href=\"/examples/ExSolzone.html\" target=\"_blank\">Click here for an example</a>";
var ex_Weather_href="<a href=\"/examples/ExWeather.html\" target=\"_blank\">Click here for an example</a>";




var dl_folder="downloads";  //downloads folder
var link2_brochure= "<a href=\""+dl_folder+"/SolRenView Monitoring Brochure.pdf\">SolrenView&trade; data sheet</a>";
var link2_manual=   "<a href=\""+dl_folder+"/Guide to SolrenView.pdf\">SolrenView&trade; installation manual</a>";
var link2_WeaManual="<a href=\""+dl_folder+"/Weather Station Installation Manual.pdf\">Weather Station installation manual</a>";
var link2_survey=   "<a href=\""+dl_folder+"/SolrenView order form.pdf\">SolrenView&trade; site survey</a>";
var link2_pc_sw=    "<a href=\""+dl_folder+"/PVIDAQ.zip\">Free Windows-based RS232 PV monitor</a>";
var link2_3000_sw=  "<a href=\""+dl_folder+"/SOLECTRIA MONITOR 1.04 for XP.zip\">Free RS232 data logging software (PVI3000-5300 only)</a>";


/****/


/*start global variables*/
var windowvar;  
var interval=900;
var testheight=0;


/*start functions*/
function Array2String(myArray)
{
  var i=0; var display="";
  i=0;for(i=0;i<myArray.length;i++)
  {
    display=(i==myArray.length-1)?(display+myArray[i]):(display+myArray[i]+',') ;
  }
  return display;
}
function SetObj_Value(obj,value)
{
  if(obj)
  {
    obj.value=value;
    return true;
  }
  return false;
}
function GetParamValue(param_value_str,param_str, bGetValueStr)
{
  var pos=param_value_str.indexOf('='); var value_str="";
  param_str="";value_str="";//initialize them, just in case
  if(pos>0)
  {
    param_str=param_value_str.substring(0,pos); 
    value_str=param_value_str.substring(pos+1,param_value_str.length); 
  }
  else
  {
    param_str=param_value_str; value_str="";
  }
  if(bGetValueStr)
    return value_str;
  else
    return param_str;
}
function GetWebParams() 
{
  var linkstr=location.href; 
  var pos=linkstr.indexOf('?');
  if(pos<0)
    return "";
  var params_start=linkstr.substring(linkstr.indexOf('?')+1, linkstr.length);
  return params_start;
}
function GetModeDescr(bMode)
{ 
  if(bMode>0) 
    return "On"; 
  else return "Off";
}//GetModeDescr
function GetFnNameFromCallee(callee_obj)
{
  var fn_name;
  fn_name=callee_obj.name;
  if(!fn_name)
  {//    alert('no');
    fn_name=callee_obj.toString();//"dunno";
    fn_name = fn_name.substr('function '.length);
    fn_name = fn_name.substr(0,fn_name.indexOf('('));

  } //!fn_name

  return fn_name;
}
function show(id, hide)
{
   document.getElementById(hide).style.display = 'none';
   document.getElementById(id).style.display = 'block';
} 
function UpdateClassName2(objID,OnRate,OffRate,Text2,Text1,Text0)
{
 var fn_str; var params; var format_txt; var next_update;
 var txtDisplay;
 var bToggle; var max_count=3;
// alert('in here');
// document.getElementById('txtTest').value='count='+this.count;

 if (typeof this.count=='undefined') //fake static var initialization, hehe
 {
//  alert(arguments.callee.name);
   this.count=0;
 }
// this.count^=1;
 if(this.count>=max_count)
   this.count=0;
 else
   this.count++;
 bToggle=this.count;

 params="'"+objID+"',"+OnRate+","+OffRate+",'"+Text2+"','"+Text1+"','"+Text0+"'"; 

// alert(format_txt);
 next_update=(bToggle)?OnRate:OffRate;

// fn_str="UpdateClassName"+"("+params+")";
 fn_str=GetFnNameFromCallee(arguments.callee)+"("+params+")";

 if((bToggle==1)||(bToggle==3) )
   document.getElementById(objID).className=Text1;//"WeaSunny1_trans";
 else if(bToggle==2)
   document.getElementById(objID).className=Text2;
 else
   document.getElementById(objID).className=Text0;

// format_txt=bToggle+":"+document.getElementById(objID).className; document.getElementById('txtTest').value=format_txt;

 window.setTimeout(fn_str,next_update);   

}//UpdateClassName

function UpdateClassName(objID,OnRate,OffRate,OnText,OffText)
{
 var fn_str; var params; var format_txt; var next_update;
 var txtDisplay;
 var bToggle;
// alert('in here');
// document.getElementById('txtTest').value='count='+this.count;

 if (typeof this.count=='undefined') //fake static var initialization, hehe
 {
//  alert(arguments.callee.name);
   this.count=0;
 }
// this.count^=1;
 if(this.count>=3)
   this.count=0;
 else
   this.count++;
 bToggle=this.count;

 params="'"+objID+"',"+OnRate+","+OffRate+",'"+OnText+"','"+OffText+"'"; 
// alert(format_txt);
 next_update=(bToggle)?OnRate:OffRate;

 fn_str="UpdateClassName"+"("+params+")";// fn_str=GetFnNameFromCallee(arguments.callee)+"("+params+")";

// txtDisplay=0ffText;
// if(bToggle==0)
// else
//   txtDisplay=0nText;
 if(bToggle==0)
   document.getElementById(objID).className=OffText;
 else if(bToggle==1)
   document.getElementById(objID).className="WeaSunny1_trans";
 else if(bToggle==2)
   document.getElementById(objID).className=OnText;
 else if(bToggle==3)
   document.getElementById(objID).className="WeaSunny1_trans";

// format_txt=bToggle+":"+document.getElementById(objID).className; document.getElementById('txtTest').value=format_txt;

 window.setTimeout(fn_str,next_update);   

}//UpdateClassName

function fmt2digits(x)
{ var digitstr;
  if(x<10)//only 1 digit
   digitstr='0'+String(x);
  else if(x>99)
   digitstr='99';//limit it for now
  else 
   digitstr=String(x);
  return digitstr;
}//fmt2digits
function GetCgiStart()
{
  var link_str=location.href;
  var cgi_start=link_str.substring(0,link_str.lastIndexOf(CGI_INPUT)+CGI_INPUT.length);
 // alert('cgi_start:'+cgi_start);
  return cgi_start;
}
function HideObj(obj,bDoHide)
{
  if(bDoHide)
  {
    obj.style.opacity=0;
  }
  else
    obj.style.opacity=1;

}
function ToSiteList()
{
  var link_str=location.href;
  link_str=GetCgiStart()+"sort=site_name";
//alert('after:'+link_str);
  location.href=link_str;
}
function updatetimer()
{
 var mins_left; var secs_left;
 var mins_str; var secs_str;
 if(interval==-1) {  location.href=document.location.href; return; }
 mins_left=Math.floor(interval/60);  secs_left=interval-(mins_left*60);
 mins_str=fmt2digits(mins_left);  secs_str=fmt2digits(secs_left);
 document.getElementById('txtmsg').value="[Refresh in "+mins_str+":"+secs_str+"]";
 interval--;
 windowvar=window.setTimeout("updatetimer()",1000);   
}//updatetimer

function GetBrowser()
{
 var appName=navigator.appName;  
 var appStr=appName.toLowerCase();
// alert('appStr='+appStr);

 if(appStr.indexOf("microsoft")>=0)   
   return BROWSER_MICROSOFT;
 else if(appStr.indexOf("netscape")>=0)   
   return BROWSER_NETSCAPE;
 else 
   return BROWSER_UNDEFINED;

}//GetBrowser
function RedirectPage(redirect_page)
{
 location.href=redirect_page;
}
function Redirect2Login()
{
  var oldlink=location.href;
  var link_start=oldlink.substring(0,oldlink.lastIndexOf(CGI_BIN));
  var link_end=oldlink.substring(oldlink.lastIndexOf(CGI_BIN)+CGI_BIN.length,oldlink.length);
  var newlink=link_start+CGI_PRI+link_end;
//alert(newlink);
  location.href=newlink;
}
function Redirect2Public()
{
  var oldlink=location.href;
  var link_start=oldlink.substring(0,oldlink.lastIndexOf(CGI_PRI));
  var link_end=oldlink.substring(oldlink.lastIndexOf(CGI_PRI)+CGI_PRI.length,oldlink.length);
  var newlink=link_start+CGI_BIN+link_end;
//alert(newlink);
  location.href=newlink;
}
function CustomStartTbl(width,top_pos)
{
  var left_pos="0";
  if(GetBrowser()==BROWSER_MICROSOFT)
    left_pos=")";
  StartTblTag(width,top_pos,left_pos,0,'');
}//CustomStartTbl
function StartTblTag(width,top_pos,left_pos,height,style_str)
{
  var print_str; 
  printf_str='<table align=center width='+width+' style="position:absolute;top:'+top_pos+'px;';
  if(left_pos>0)
    printf_str=printf_str+'left:'+left_pos+'px;';
  if(height>0)
    printf_str=printf_str+'height:'+height+'px;';
  printf_str=printf_str+style_str+'">';

//  if(height>0)
//    printf_str='<table align=center width='+width+' style="position:absolute;top:'+top_pos+'px;left:'+left_pos+'px;height:'+height+'px;'+style_str+'">';
//  else
//    printf_str='<table align=center width='+width+' style="position:absolute;top:'+top_pos+'px;left:'+left_pos+'px;'+style_str+'">';
  alert(printf_str);
  document.write(printf_str);
}//StartTblTag

function DrawOuterTbl(height)
{
  var type;
  var print_str; var left_pos="0";

  if(GetBrowser()==BROWSER_MICROSOFT)
    left_pos="0";//"29";

  StartTblTag(PAGE_WIDTH_STR,220,left_pos,height,'border-bottom:10px solid #100;border-left:10px solid #100;border-right:10px solid #100;border-color:#DCDCDC;');
  document.write('<tr><td>&nbsp;</td></tr></table>');//end table
}//DrawOuterTbl

function SetRefresh(bFocus)
{
  windowvar=window.setTimeout("updatetimer()",1000);  
  if(bFocus)
    window.focus();
}
function PrintSRVLinks(bUseMovie)
{
 var str="";
 if(bUseMovie)//print out the display to play the swf file
 {
  str="<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" codebase=\"http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0\" width=\"940\" height=\"150\" id=\"menu\" align=\"middle\">";
  str+="<param name=\"allowScriptAccess\" value=\"sameDomain\" />";
  str+="<param name=\"movie\" value=\"menu.swf\" /><param name=\"quality\" value=\"high\" /><param name=\"wmode\" value=\"transparent\" /><param name=\"bgcolor\" value=\"#eeeeee\" /><embed src=\"menu.swf\" quality=\"high\" wmode=\"transparent\" bgcolor=\"#eeeeee\" width=\"940\" height=\"150\" name=\"menu\" align=\"middle\" allowScriptAccess=\"sameDomain\" type=\"application/x-shockwave-flash\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" />";
  str+="</object>";
 } 
 else//format cells to display individual links
 {
  str="<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"940\">";
  str+="<tr><td width=\"940\" colspan=\"6\"><img src=\"images/h_header.jpg\" border=\"0\" /></td></tr><tr>";
  str+="<Td valign=\"top\"><a href=\"h_home.html\"><img src=\"images/h_home.jpg\" border=\"0\" /></a></Td>";
  str+="<Td valign=\"top\"><a href=\"h_products.html\"><img src=\"images/h_products.jpg\" border=\"0\" /></a></Td>";
  str+="<Td valign=\"top\"><a href=\"h_livesites.html\"><img src=\"images/h_livesites.jpg\" border=\"0\" /></a></Td>";
  str+="<Td valign=\"top\"><a href=\"h_downloads.html\"><img src=\"images/h_downloads.jpg\" border=\"0\" /></a></Td>";
  str+="<Td valign=\"top\"><a href=\"h_contact.html\"><img src=\"images/h_contact.jpg\" border=\"0\" /></a></Td>";
  str+="<Td valign=\"top\"><a href=\"http://www.solren.com\" target=\"_blank\"><img src=\"images/h_solren.jpg\" border=\"0\" /></a></Td>";
  str+="</tr></table>";
 }//format individual links 
 document.write(str);
}//PrintSRVLinks
function GetKeyCode(e)
{
 var KeyID;
 if(e&&e.which)
   KeyID=e.which;
 else 
   KeyID=event.keyCode;
 return KeyID;
}
function CheckSearch2(txt,e)
{//note e is event object passed in, doesn't seem to work if I use event object directly, needs to be passed in from function call

 var KeyID = GetKeyCode(e);

 if(KeyID==13)//enter key
    FindString(txt.value);  
}
function CheckSearch(txt)
{
 var KeyID = (window.event)? event.keyCode : e.which;//  alert(keyID);
 if(KeyID==13)
    FindString(txt.value);  
}
function FindString (str) {
 if (parseInt(navigator.appVersion)<4) return;
 var strFound;
 if (window.find) {

  // CODE FOR BROWSERS THAT SUPPORT window.find

  strFound=self.find(str);
  if (strFound && self.getSelection && !self.getSelection().anchorNode) {
   strFound=self.find(str)
  }
  if (!strFound) {
   strFound=self.find(str,0,1)
   while (self.find(str,0,1)) continue
  }
 }
 else if (navigator.appName.indexOf("Microsoft")!=-1) {

  // EXPLORER-SPECIFIC CODE

  if (TRange!=null) {
   TRange.collapse(false)
   strFound=TRange.findText(str)
   if (strFound) TRange.select()
  }
  if (TRange==null || strFound==0) {
   TRange=self.document.body.createTextRange()
   strFound=TRange.findText(str)
   if (strFound) TRange.select()
  }
 }
 else if (navigator.appName=="Opera") {
  alert ("Opera browsers not supported, sorry...")
  return;
 }
 if (!strFound) alert ("String '"+str+"' not found!")
 return;
}

function custom_onload()
{
  var link_str=location.href;
  var display_page=0;  var bViewPVDetails=0; var bViewSummary=0;

  if(link_str.indexOf("sort=pvi_IDs&cond=site_ID")>=0)  //summary page
    display_page=1;
  else if (link_str.indexOf("view=")>=0)//inverter direct graphs
    display_page=2;

  bViewSummary=(display_page==1)?1:0;   bViewPVDetails=(display_page==2)?1:0;

  if(bViewSummary)
    {windowvar=window.setTimeout("updatetimer()",1000);  }
  else if(bViewPVDetails) 
  {
  }

//alert('bViewSummary='+bViewSummary+',bViewPVDetails='+bViewPVDetails);
}//custom_onload


function testfunction()
{
  alert("testheight="+testheight);
  
//  document.write("blah");
  return;
  alert("appCodeName="+navigator.appCodeName);//
  alert("appName="+navigator.appName);//
  alert("userAgent="+navigator.userAgent);
}

