/*
 * (C) 2002-2008 J Sarkinen / SSD Innovation / J&P Group
 * 2002-12-01 started (this version)
 * 2004-01-06 stripped version into Magnetek PSC500 controller
 * 2008-04-07 ###
*/

var gT=null
var gP1=60
var gC1=gP1
var gT1=null
var gC2=null
var gcH=null
var ga=0
var holdrect=false;
var holdlog=false;
var new_fixed_ip;
var new_dhcp;

function reverse(str)
{
  var rev="";
  var i=str.length;
  while (i-->=0)
     rev=rev+str.charAt(i);
  return rev;
}
function ConfirmPersReset(cgi_handler, msg, langnum)
{
   if(msg.length==0)
   {
      switch(langnum)
      {
         case 0:
           msg="This will reset fields to factory default values. Proceed?";
           break;   
         case 1:
           msg="Esta acción regresará los campos a su valor de fábrica. Proceder?";
           break;
         default://assume english
           msg="This will reset fields to factory default values. Proceed?";
      
      }       
   }
   if (confirm(msg))
      location.href=cgi_handler;     
   
}
function Bool2Num(boolvar)//move to js
{
   if(boolvar)//true
     return 1;
  else return 0;   
}

// equiv to padl()//move to js
function padTextPrefix (InString, PadChar, DefLength)  {
   if (InString.length >= DefLength)
      return (InString);
   OutString = InString
   for (Count = InString.length; Count < DefLength; Count++)  {
      OutString = PadChar + OutString;
   }
   return (OutString);
}

// Decimal to binary, returns character string of length depending on bits given
function toBin(inVal,numbits) {
   base = 2 ;
   num = parseInt(inVal);
   binNum = num.toString(base);
   // pad leading spaces with "0"
   binNum = padTextPrefix(binNum, "0", numbits) ;

   return binNum;
}


function ToSignRep(unsigned_str, max_rep)
{
   var diff_offset=max_rep-unsigned_str;
   if(diff_offset<0)
   {
      return (-(max_rep+diff_offset+2));   
   }   
   else
      return unsigned_str;
}
function ToSignLong(ulong_str)
{
   return ToSignRep(ulong_str,2147483647);
}

function ConvertAddr(str_addr)
{
   var i;
   var tmpstr;
   var bin_str="";
   var prev_index=0;
//alert(str_addr);

   i=0;
   index=0;
   while(i<=str_addr.length)
   { 
      if((str_addr.charAt(i)=='.')||(i==str_addr.length))
      {
          bin_str=bin_str+toBin(str_addr.substring(prev_index,i),8) ;

          prev_index=i+1; 
  //        index=i;
      }
      else if((str_addr.charAt(i)<'0')||(str_addr.charAt(i)>'9'))
      {
         return 0; 
      }
      i++;
   }
   return ToSignLong(parseInt(bin_str,2));

}
function CfgAlarmHandlingNum(alrm3,alrm2,alrm1,alrm0)
{

  var alrm3_bits=toBin(alrm3,2);
  var alrm2_bits=toBin(alrm2,2);
  var alrm1_bits=toBin(alrm1,2);
  var alrm0_bits=toBin(alrm0,2);
  return ToSignLong(parseInt(alrm3_bits+alrm2_bits+alrm1_bits+alrm0_bits,2));
}

function EventHandlingNum(severity,snmp,email,in_use)
{
//alert(severity+', '+snmp+', '+email+', '+in_use);
  var severity_bits=toBin(severity,3);
  var snmp_bits=toBin(snmp,2);
  var email_bits=toBin(email,2);
  var in_use_bits=toBin(in_use,1);
  return ToSignLong(parseInt(severity_bits+snmp_bits+email_bits+in_use_bits,2));
}

var gArrWeekday3 = new Array(7);
	gArrWeekday3[0]="Sun";
	gArrWeekday3[1]="Mon";
	gArrWeekday3[2]="Tue";
	gArrWeekday3[3]="Wed";
	gArrWeekday3[4]="Thu";
	gArrWeekday3[5]="Friday";
	gArrWeekday3[6]="Sat";

var weekday=new Array(7);
	weekday[0]="Sunday";
	weekday[1]="Monday";
	weekday[2]="Tuesday";
	weekday[3]="Wednesday";
	weekday[4]="Thursday";
	weekday[5]="Friday";
	weekday[6]="Saturday";

function dayName(dayNum) {
	return weekday[dayNum];
} // dayName


function ft(x) {
	return ((x<10)?"0":"")+x
}
var gf=0

function jsltff(f) {
	gf=f
}

/*
 arg 1: Date()
 arg 2: 1 = YYYY.MM.DD hh:mm:ss     ; ISO-8601; 24 hr clock
        2 = DD.MM.YYYY hh:mm:ss     ; Common European; 24 hr clock
		3 = MM/DD/YYYY hh:mm:ss ap ; US; 12 hr clock, AM/PM
*/
function jsltf(t,f) {
	if (!f)f=gf
	if (f==3) { // 12 hr clock, AM/PM
		ap="AM";
		h=t.getHours();
		if(h>11)ap="PM";
		if(h>12)h=h-12;
		if(h==0)h=12;
		h=ft(h)+":"+ft(t.getMinutes())+":"+ft(t.getSeconds())+" "+ap
	}
	else {
		h=ft(t.getHours())+":"+ft(t.getMinutes())+":"+ft(t.getSeconds())
	}
	switch(f) {
	case 2: return ft(t.getDate())+"."+ft(t.getMonth()+1)+"."+t.getFullYear()+" "+h; break;
	case 3: return ft(t.getMonth()+1)+"/"+ft(t.getDate())+"/"+t.getFullYear()+" "+h; break;
	}
	
	var gmtHours = t.getTimezoneOffset() / 60;
	gmtHours = gmtHours * -1;
	if (gmtHours > 0) {
		sign = "+";
	} else {
		sign = "";
	}
	gmtHrsStr = " GMT" + sign + gmtHours;

	return gArrWeekday3[t.getDay()] + " " + t.getFullYear() + "-" + ft(t.getMonth()+1) + "-" + ft(t.getDate()) + " " + h + gmtHrsStr;
}

function jslts(s,f) {
	if (!f)f=gf
	s=s.replace(/ +/g,'!');
	s=s.replace(/-/g,'!').replace(/\//g,'!').replace(/\./g,'!')
	t=s.split("!")
	switch(f) {
	case 2:
		d=t[0]
		m=t[1]
		y=t[2]
		break;
	case 3:
		m=t[0]
		d=t[1]
		y=t[2]
	 	break;
	default: 
		y=t[0]
		m=t[1]
		d=t[2]
		break;
	}
	S=t[3]+(t[4]?t[4]:"")
	p=S.match(/a/i)?-12:S.match(/p/i)?12:0
	S=S.replace(/m/gi,'').replace(/a/gi,'');
	S=S.replace(/p/gi,'');	
	S=S.replace(/\:/g,'!')
	t=S.split("!")
	H=eval(t[0])
	M=t[1]?t[1]:0
	S=t[2]?t[2]:0
	switch(p)
	{
	case 12:
		if(H<12){H=H+p}
		break;
	case -12:
		if(H>=12){H=H+p}
		break;
	}
	d=new Date(y,m-1,d,H,M,S)
	return(d)
}

var gTF = "jslibLoop()"

function jslibLoop()
{
	t=jsltf(new Date())
	if(gT1) {gT1.innerHTML=t}
	if(!gcH||!gcH.checked){
		if (gC1==0){
			jslUpd()
			gC1=gP1
		}
		if(gC2){gC2.innerHTML=gC1}
		if(gC1>0){gC1--}
	}
	gT=setTimeout(gTF,1000)
}

function jslInit(p,b,c,h,f)
{
	document.writeln("<p>ga="+ga+"</p>")
	gP1=p
	gT1=b
	gC2=c
	gcH=h
	gC1=gP1
	gTF=((f&&f!="")?f:"jslibLoop()")
//	alert( "document_forms_onHoldCB= " + document_forms_onHoldCB.checked + ", x=" + x )
//	if(gcH)gcH.checked=true
	jslibLoop()
}

function jslStop()
{
	clearTimeout(gT)
}

var x = true
function jslUpd()
{
	ga++
	x=(gcH?gcH.checked:false)
//	alert("x=" + x)
	location.reload(true)
//	location.refresh
	if(gcH){
		gcH.checked=x; 	
		//alert("x=" + x)
	}
}

function jslw(URL,w,h)
{
	ww=window.open(URL,"A",
		"resizable=yes,toolbar=no,location=no,directories=no,menubar=no,scrollbars=yes,width="+w+",height="+h)
	ww.focus()
}
function helpWin(k)
{
	jslw("help.html#"+k,500,400)
}
function showWin(u)
{
	jslw(u,700,700)
}
