var CELL_DIV='<td>'+B(5,1)+'</td>\n\t<td bgcolor='+COLOUR4+'>'+B(1,30)+'</td>\n\t<td>'+B(5,1)+'</td>\n';
var CELL_DIV2='<td>'+B(5,1)+'</td>\n\t<td bgcolor='+COLOUR4+'>'+B(1,25)+'</td>\n\t<td>'+B(5,1)+'</td>\n';
function TB(n,v,s,m,o,a) { return '<input type="text" name="'+n+'" value="'+((v==null)?'':v)+'" size='+((s==null)?'30':s)+((m==null)?'':' maxlength='+m)+((o==null)?'':' '+o)+' class=txt'+((a==null)?'':'Num')+'>'; }
function BTN(n,v,o) { return '<input type="button" name="'+n+'" value="'+v+'"'+((o==null)?'':' '+o)+'" class=Btn2 onMouseDown="BtnOnOff(\''+n+'\',1,\''+COLOUR2+'\');" onMouseUp="BtnOnOff(\''+n+'\',0,\''+COLOUR2+'\');" onMouseOut="BtnOnOff(\''+n+'\',0,\''+COLOUR2+'\');" onFocus="this.blur();">'; }
function BTN2(n,v,o) { return '<input type="button" name="'+n+'" value="'+v+'"'+((o==null)?'':' '+o)+'" class=BtnIndex onMouseDown="BtnOnOff(\''+n+'\',1,\''+COLOUR1+'\');" onMouseUp="BtnOnOff(\''+n+'\',0,\''+COLOUR1+'\');" onMouseOut="BtnOnOff(\''+n+'\',0,\''+COLOUR1+'\');" onFocus="this.blur();">'; }
function BTN3(n,v,o,c) { return '<input type="button" name="'+n+'" value="'+v+'"'+((o==null)?'':' '+o)+'" class='+c+' onMouseDown="BtnOnOff(\''+n+'\',1);" onMouseUp="BtnOnOff(\''+n+'\',0);" onMouseOut="BtnOnOff(\''+n+'\',0);" onFocus="this.blur();">'; }
function B(w,h){return '<img src="images/b.gif" width='+w+' height='+h+'>';}
function CA(frm,base,obj,start,end) { with (frm) { for (i=start; i<=end; i++) { elements[obj+i].checked=base.checked; }	} }
function BtnOnOff(btn,state,upcolour) {
	if (typeof(FRM)=='undefined'){FRM=document.forms[0];}
	if (FRM==null){FRM=document.forms[0];}
	if (typeof(upcolour)=='undefined'){upcolour=COLOUR2;}
	if (bw.ns6) {myTimer=setTimeout("BtnOnOff2('"+btn+"','"+state+"','"+upcolour+"')",100);}
	else { FRM.elements[btn].style.backgroundColor=((state==1)?COLOUR3:upcolour); }
}
function BtnOnOff2(btn,state,upcolour) {
	if (bw.ns6){clearTimeout(myTimer);}
	FRM.elements[btn].style.backgroundColor=((state==1)?COLOUR3:upcolour);
}
function SelectListItem(l,v,k) {
	var idx=0;
	for(i=0; i<l.length; i++) { 
		if (k=="") { if (l.options[i].text==v) { idx=i; break; } }
		if (v=="") { if (l.options[i].value==k) { idx=i; break; } }
	}
	l.selectedIndex=idx;
	return parseInt(i,10);
}
function ResetToDefault() {
	if (confirm("Are you sure you want to reset this page back to factory defaults?")) { ResetSettings(); }
}
function ShowHelp(loc) {
	if (ENGLISH_ONLY_HELP_FILES)
		var url=HELP_FILE_DIR+"help_0"+GetPageName(loc)+".html";
	else
		var url=HELP_FILE_DIR+"help_"+LANG+GetPageName(loc)+".html";
	
        PW(625,500,url,'',1,1);
}
function ShowHelpFromPopup(loc) {
	if (ENGLISH_ONLY_HELP_FILES)
		var url=HELP_FILE_DIR+"help_0"+GetPageName(loc)+".html";
	else
		var url=HELP_FILE_DIR+"help_"+LANG+GetPageName(loc)+".html";

	// use PW2, coz we've already used PW once to get popup that generated this msg
	PW2(625,500,url,'',1,1);
}

function GetSaveHelpHTML(DoReset) {
	if (DoReset==null){DoReset=true;}
	var str=''+
	'<table border=0 cellpadding=0 cellspacing=0>\n';
	if (DoReset) { str+='<tr><td><input type="button" value="" name="cmdDefault" onfocus="this.blur();" onClick="ResetToDefault();" onMouseDown="BtnOnOff(\'cmdDefault\',1);" onMouseUp="BtnOnOff(\'cmdDefault\',0);" onMouseOut="BtnOnOff(\'cmdDefault\',0);" class=HelpBtn style="background-image:url(\'images/recycle.gif\');" title="Reset To Defaults"></td></tr>'; }
	else { str+='<tr><td>'+B(1,40)+'</td></tr>'; }
	str+='<tr><td>'+B(1,6)+'</td></tr>\n'+
	'<tr><td><input type="button" value="?" name="cmdHelp" onfocus="this.blur();" onClick="ShowHelp(location);" onMouseDown="BtnOnOff(\'cmdHelp\',1);" onMouseUp="BtnOnOff(\'cmdHelp\',0);" onMouseOut="BtnOnOff(\'cmdHelp\',0);" class=HelpBtn title="Display Help"></td></tr>'+
	'<tr><td>'+B(1,6)+'</td></tr>\n'+
	'<tr><td><input type="button" value="" name="cmdSave" onfocus="this.blur();" onClick="SaveSettings();" onMouseDown="BtnOnOff(\'cmdSave\',1);" onMouseUp="BtnOnOff(\'cmdSave\',0);" onMouseOut="BtnOnOff(\'cmdSave\',0);" class=HelpBtn style="background-image:url(\'images/save.gif\');" title="Save Settings"></td></tr>'+
	'</table>\n';
	return str;
}

function GetSaveHTML(DoReset) {
	if (DoReset==null){DoReset=true;}
	var str=''+
	'<table border=0 cellpadding=0 cellspacing=0>\n';
	if (DoReset) { str+='<tr><td><input type="button" value="" name="cmdDefault" onfocus="this.blur();" onClick="ResetToDefault();" onMouseDown="BtnOnOff(\'cmdDefault\',1);" onMouseUp="BtnOnOff(\'cmdDefault\',0);" onMouseOut="BtnOnOff(\'cmdDefault\',0);" class=HelpBtn style="background-image:url(\'images/recycle.gif\');" title="Reset To Defaults"></td></tr>'; }
	else { str+='<tr><td>'+B(1,40)+'</td></tr>'; }
	str+='<tr><td>'+B(1,6)+'</td></tr>\n'+
	'<tr><td><input type="button" value="" name="cmdSave" onfocus="this.blur();" onClick="SaveSettings();" onMouseDown="BtnOnOff(\'cmdSave\',1);" onMouseUp="BtnOnOff(\'cmdSave\',0);" onMouseOut="BtnOnOff(\'cmdSave\',0);" class=HelpBtn style="background-image:url(\'images/save.gif\');" title="Save Settings"></td></tr>'+
	'</table>\n';
	return str;
}

function GetSaveHelpHTMLFromPopup(DoReset) {
	if (DoReset==null){DoReset=true;}
	var str=''+
	'<table border=0 cellpadding=0 cellspacing=0>\n';
	if (DoReset) { str+='<tr><td><input type="button" value="" name="cmdDefault" onfocus="this.blur();" onClick="ResetToDefault();" onMouseDown="BtnOnOff(\'cmdDefault\',1);" onMouseUp="BtnOnOff(\'cmdDefault\',0);" onMouseOut="BtnOnOff(\'cmdDefault\',0);" class=HelpBtn style="background-image:url(\'images/recycle.gif\');" title="Reset To Defaults"></td></tr>'; }
	else { str+='<tr><td>'+B(1,40)+'</td></tr>'; }
	str+='<tr><td>'+B(1,6)+'</td></tr>\n'+
	'<tr><td><input type="button" value="?" name="cmdHelp" onfocus="this.blur();" onClick="ShowHelpFromPopup(location);" onMouseDown="BtnOnOff(\'cmdHelp\',1);" onMouseUp="BtnOnOff(\'cmdHelp\',0);" onMouseOut="BtnOnOff(\'cmdHelp\',0);" class=HelpBtn title="Display Help"></td></tr>'+
	'<tr><td>'+B(1,6)+'</td></tr>\n'+
	'<tr><td><input type="button" value="" name="cmdSave" onfocus="this.blur();" onClick="SaveSettings();" onMouseDown="BtnOnOff(\'cmdSave\',1);" onMouseUp="BtnOnOff(\'cmdSave\',0);" onMouseOut="BtnOnOff(\'cmdSave\',0);" class=HelpBtn style="background-image:url(\'images/save.gif\');" title="Save Settings"></td></tr>'+
	'</table>\n';
	return str;
}
function GetHelpOnlyHTML() {
	var str=''+
	'<table border=0 cellpadding=0 cellspacing=0>\n'+
	'<tr><td>'+B(40,86)+'</td></tr>\n'+
	'<tr><td><input type="button" value="?" name="cmdHelp" onfocus="this.blur();" onClick="ShowHelp(location);" onMouseDown="BtnOnOff(\'cmdHelp\',1);" onMouseUp="BtnOnOff(\'cmdHelp\',0);" onMouseOut="BtnOnOff(\'cmdHelp\',0);" class=HelpBtn title="Display Help"></td></tr>'+
	'</table>\n';
	return str;
}
function GetPageName(loc) { return loc.pathname.substring(loc.pathname.lastIndexOf("/"),loc.pathname.indexOf(".")); }
function GetFRM(loc) { return GetPageName(loc)+".frm?"; }
function GetSEQMask(BaseCam,NumCams,TotalCams,blnInHex) {
	var arrCams=new Array();
	var hexValue=0;
	var MYMASK=1;
	if (blnInHex==null){blnInHex=true;}
	for (var i=0; i<TotalCams; i++) { arrCams[i]=false; }
	i=1;
	while(true) {
		if (BaseCam>TotalCams) { BaseCam=1; }
		arrCams[(BaseCam-1)]=true;
		if (i>=NumCams) { break; }
		BaseCam++;
		i++;
	}
	for (var i=0; i<TotalCams; i++) {
		if ( arrCams[i] ) { hexValue=hexValue+MYMASK; }
		MYMASK = MYMASK<<1;
	}
	if (blnInHex){return hexValue.toString(TotalCams);}
	else{return parseInt(hexValue,10);}
}
function GetRnd(){return new Date().getTime();}
function trim(str){return str.replace(/^\s+/,'').replace(/\s+$/, '');}
function right(str,len){ return str.substr(str.length-len); }
function toNumber(str) { return parseInt(str.replace(/[".() "]/gi, ''),10); }
function RoundNum(value,increment) {
	var result;
	var remain=value%increment;
	var roundvalue=increment/2;
	if (remain>=roundvalue) {
		result=value-remain;
		result+=increment;
	} else { result=value-remain; }
	return result;
}
function IntToHex(n) {
	var str=n.toString(16);
	if (str.length==1) { str="0"+str; }
	return str.toUpperCase();
}
function ArrayToBitmask(arr,name,max,offset) {
	var bitmask=new Array(0,0);
	for (i=offset; i<=max; i++) {
		if (i<32) { if (arr[i]) { bitmask[0] |= (1<<(i-1)); } }
		else { if (arr[i]) { bitmask[1] |= (1<<((i-32)-1)); } }
	}
	if (name!="") { bitmask[0]=name+'[0]='+bitmask[0]; bitmask[1]=name+'[1]='+bitmask[1]; }
	return bitmask;
}
function ArrayToBitmask2(arr,bitmask,max,offset) {
	for (i=offset; i<=max; i++) { 
		if (arr[i]) { bitmask |= (1<<(i-1)); }
		else { bitmask &= ~(1<<(i-1)); }
	}
	return bitmask;
}
function BitmaskToArray(bitmask,max,offset) {
	var arr=new Array();

	for (i=0; i<max; i++) {
		if (i<32) {
			arr[(i+offset)]=((bitmask[0]&(1<<i))!=0); 
		}
		else { 
		arr[(i+offset)]=((bitmask[1]&(1<<(i-32)))!=0); 
		}
	}
	return arr;
}
function inArrayValue(v,a) {
	blnR=false;
	for(i in a) { if (a[i]==v) { blnR=true; break; } }
	return blnR;
}
function BitmaskToArray2(bitmask,max,offset) {
	var arr=new Array();
	for (i=0; i<max; i++) { arr[(i+offset)]=((bitmask&(1<<i))!=0); }
	return arr;
}
function Julian2String(iJulian,timeOffset) {
	if (timeOffset==null){timeOffset=0;}
	var isNS=(navigator.appName.indexOf("Netscape")!=-1);
	var time=new Date();
	var offset = time.getTimezoneOffset();
	//time.setTime(iJulian*1000);
	time.setTime((iJulian*1000) + (timeOffset*1000) + (offset*60000));

	if (DATEFORMAT == 0)
	{
		return pad(time.getDate(),2,0)+"/"+pad((time.getMonth()+1),2,0)+"/"+(time.getYear()+(isNS?1900:0))+" "+pad(time.getHours(),2,0)+":"+pad(time.getMinutes(),2,0)+":"+pad(time.getSeconds(),2,0);
	}
	else
	{
		return pad((time.getMonth()+1),2,0)+"/"+pad(time.getDate(),2,0)+"/"+(time.getYear()+(isNS?1900:0))+" "+pad(time.getHours(),2,0)+":"+pad(time.getMinutes(),2,0)+":"+pad(time.getSeconds(),2,0);
	}
}
function GetTimeString(julian,timeOffset) {
	var time=new Date();
	var offset=time.getTimezoneOffset();
	if (julian>0) { time.setTime((julian*1000) + (timeOffset*1000) + (offset*60000)); }
	return time.toLocaleString();
}
function Int2IP(num) {
	var arr=new Array();
	arr[0]=(((num & 0xFF000000)/0x1000000)&0xFF);
	arr[1]=(((num & 0xFF0000)/0x10000)&0xFF);
	arr[2]=(((num & 0xFF00)/0x100)&0xFF);
	arr[3]=(num&0xFF);
	return arr;
}
function pad(n,l,w) {
	w=""+w; n=""+n; var padwith="";
	for (i=1; i<=20; i++){padwith+=w+'';}
	return padwith.substr(0,l-n.length)+n;
}
function GetArrayIndex(a,v) {
	for(i in a) { if (a[i]==v) { break; } }
	return parseInt(i,10);
}
function Bitmask2Array(bitmask,max) {
	var arr=new Array(); var bit=0; var index=0;
	for (var i=0; i<max; i++) {
		index=Math.floor(1+(i/32)); bit=i%32;
		arr[(i+1)]= ( ((bitmask[index] & (1<<bit))>0) ? true : false );
	}
	return arr;
}
var PWin=null;
function PW(w,h,p,v,r,s,tb) {
	var RndNum=GetRnd();
	if (tb==null){tb=0;}
	var pX=parseInt((screen.width-w)/2);
	var pY=parseInt((screen.height-h)/2);
	if (tb==1){pY-=120; pX-=5;}
	if (pX<0){pX=0;}
	if (pY<0){pY=0;}
	var name=p.slice(p.lastIndexOf("/")+1,p.lastIndexOf("."));
	PWin=window.open(p+'?'+v,'POPUP'+name,'resizable='+r+',toolbar='+tb+',location='+tb+',status='+tb+',menubar='+tb+',scrollbars='+s+',width='+w+',height='+h+',left='+pX+',top='+pY);
	PWin.focus();
}
var PWin2=null;
function PW2(w,h,p,v,r,s,tb) {
	var RndNum=GetRnd();
	if (tb==null){tb=0;}
	var pX=parseInt((screen.width-w)/2);
	var pY=parseInt((screen.height-h)/2);
	if (tb==1){pY-=120; pX-=5;}
	if (pX<0){pX=0;}
	if (pY<0){pY=0;}
	var name=p.slice(p.lastIndexOf("/")+1,p.lastIndexOf("."))+'2';
	PWin2=window.open(p+'?'+v,'POPUP'+name,'resizable='+r+',toolbar='+tb+',location='+tb+',status='+tb+',menubar='+tb+',scrollbars='+s+',width='+w+',height='+h+',left='+pX+',top='+pY);
	PWin2.focus();
}
function GetSelect(name,arr,atribs,def) 
{
	var str='<select name="'+name+'"'+((atribs!="")?' '+atribs:'')+'>\n';
	for (i in arr) { str+='\t<option value="'+i+'"'+((def==arr[i][1])?' selected':'')+'>'+arr[i][0]+'</option>\n'; }
	str+='</select>\n';
	return str;
}
function GetTZSelect(name,arr,atribs,def) 
{
	var str='<select name="'+name+'"'+((atribs!="")?' '+atribs:'')+'>\n';
	for (i in arr) { str+='\t<option value="'+i+'"'+((def==i)?' selected':'')+'>'+arr[i]+'</option>\n'; }
	str+='</select>\n';
	return str;
}
function getCookie(Name){
	if (typeof(document.cookie)=='undefined') {/*No Cookie*/;}
	else {/*Have Cookies*/;}
	var myVal="";
	var CookieSize = document.cookie.length;
	var i=0;
	while(i<CookieSize){
		var ValueBegin=i+Name.length+1;
		if(document.cookie.substring(i,ValueBegin)==Name+"="){
			var ValueEnd=document.cookie.indexOf(";",ValueBegin);
			if(ValueEnd==-1){ValueEnd=document.cookie.length;}
			myVal=unescape(document.cookie.substring(ValueBegin,ValueEnd));
		}
		i=document.cookie.indexOf(" ",i)+1;
		if(i==0){break;}
	}
	return myVal;
}
function setCookie(name, value) {
	var expDays=365;
	var exp=new Date(); 
	exp.setTime(exp.getTime()+(expDays*24*60*60*1000));
	if (value!=null && value!="") { document.cookie=name+"="+escape(value)+"; path=/; expires="+exp.toGMTString(); }
	bikky=document.cookie;
}
function ArrayToString(arr,name,delim,offset) {
	for (i=1; i<=offset; i++) { arr.shift(); }
//	for (i in arr) { arr[i]=escape(arr[i]); }
	return name+'="'+arr.join('","')+'"';
}

function ArrayToInt(arr,name,delim,offset) {
	for (i=1; i<=offset; i++) { arr.shift(); }
	for (i in arr) { arr[i]=escape(arr[i]); }
	return name+'='+arr.join(delim);
}

function ArrayToStringURI(arr,name,delim,offset) {
	for (i=1; i<=offset; i++) { arr.shift(); }
	for (i in arr) { arr[i]=encodeURI(arr[i]); }
	return name+'="'+arr.join('","')+'"';
}

function SSIStringSafe(str) { return str.substr(0,(str.length-1))+((str.charCodeAt((str.length-1))==10)?"\\":''); }
function MakeStringSafe(str) { 
	var validstr="";
	for (j=0; j<str.length; j++) {
		if(str.charCodeAt(j)==34)		// Double quote
			validstr+='-';
		else if(str.charCodeAt(j)==38)	// ampersand
			validstr+='%26';
		else if(str.charCodeAt(j)==39)	// Single quote
			validstr+='-';
		else if(str.charCodeAt(j)==96)	// opening quote
			validstr+='-';
		else if(str.charCodeAt(j)==92)	// backslash
			validstr+='/';
		else if(str.charCodeAt(j)==46)	// period
			validstr+='.';
		else if(str.charCodeAt(j) == 43)  // plus
			validstr += '%2B';
		else
			validstr += str.charAt(j);
	}

	return validstr;
}

function MakeStringSafeURI(str) { 
	var validstr="";
	for (j=0; j<str.length; j++) {
		if(str.charCodeAt(j)==34)		// Double quote
			validstr+='-';
		else if(str.charCodeAt(j)==39)	// Single quote
			validstr+='-';
		else if(str.charCodeAt(j)==96)	// opening quote
			validstr+='-';
		else if(str.charCodeAt(j)==92)	// backslash
			validstr+='/';
		else if(str.charCodeAt(j)==46)	// period
			validstr+='.';
		else if(str.charCodeAt(j) == 43)  // plus
			validstr += '%2B';
		else
			validstr += str.charAt(j);
	}

	return encodeURI(validstr);
}

function MakeStringSafeEscaped(str) { 
	var validstr="";
	for (j=0; j<str.length; j++) {
		if(str.charCodeAt(j)==34)		// Double quote
			validstr+='-';
		else if(str.charCodeAt(j)==39)	// Single quote
			validstr+='-';
		else if(str.charCodeAt(j)==96)	// opening quote
			validstr+='-';
		else if(str.charCodeAt(j)==92)	// backslash
			validstr+='/';
		else if(str.charCodeAt(j)==46)	// period
			validstr+='.';
		else if(str.charCodeAt(j) == 43)  // plus
			validstr += '%2B';
		else
			validstr += str.charAt(j);
	}

	return escape(validstr);
}

function CheckStringValid(str) 
{ 
	for (j=0; j<str.length; j++) 
	{
		if(str.charCodeAt(j)>=47 && str.charCodeAt(j)<=58)		// char is "/0123456789:"
			continue;
		else if(str.charCodeAt(j)>=65 && str.charCodeAt(j)<=90)	// char is "ABC-XYZ:"
			continue;
		else if(str.charCodeAt(j)>=97 && str.charCodeAt(j)<=122)	// char is "abc-xyz:"
			continue;
		else if(str.charCodeAt(j)==92 )							// char is "\\"
			continue;
		else
		{
			alert("Invalid character used only a-z, A-Z, 0-9, /, \\, :  allowed");
			return;
		}
	}
}

function ParseIp(StringIpData)
{
	var split=StringIpData.indexOf(":");
	if (split==-1) 
	{ 
		return StringIpData; 
	}
	else if (split==0) 
	{ 
		return ""; 
	}
	else 
	{
		return StringIpData.substring(0,split);
	}
}

function CopyToClipBoard(TextCopy)
{
    window.clipboardData.setData("Text",TextCopy);
}

function DEBUG(s) { document.forms[0].elements["txtDebug"].value=s; }

function SavePageData(page_location, urldata) 
{ 
var xmlhttp=null;

	try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
	catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
	catch (e) { try { xmlhttp = new XMLHttpRequest(); }
	catch (e) { try { xmlhttp = window.createRequest(); }
	catch (e) { xmlhttp = false; }}}}

	if (urldata.length > 2047 && xmlhttp)
	{
        if (bw.ie)
		{
			// Open an HTTP message to define its characteristics
			xmlhttp.open("POST","http:" + GetFRM(page_location),false);
			// Send the Document ()
			xmlhttp.send(urldata);
			if (xmlhttp.readyState != 4)
			{
				alert("XMLHttp Error\nState: " + xmlhttp.readyState + "\nStatus: " + xmlhttp.status);
			}
			return page_location;
		}
		else
		{
			return GetFRM(page_location) + urldata;
		}
	}
	else	
		return GetFRM(page_location) + urldata;
	
}



