// JavaScript Document
function popUpWindow(URLStr, left, top, width, height)
{
	if(popUpWin)
	{
		if(!popUpWin.closed) popUpWin.close();
	}
	popUpWin = open(URLStr, 'popUpWin', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=yes,width='+width+',height='+height+',left='+left+', top='+top+',screenX='+left+',screenY='+top+'');
}

function showhide(parentId)
{
	// Example:
	//var browser = new BrowserInfo();
	myParent = document.getElementById("item" + parentId)

	if (myParent.style.display=="none") {
		myParent.style.display="block"
	} else {
		myParent.style.display="none"
	}
}

function BrowserInfo()
{
  this.name = navigator.appName;
}

function click_it(btn)
{
	var obj = document.getElementById(btn)
	obj.click()
}

// form fieldsvalidators
var numb = '0123456789';
var lwr = 'abcdefghijklmnopqrstuvwxyz';
var upr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
 
function isValid(parm,val) {
  if (parm == "") return true;
  for (i=0; i<parm.length; i++) {
    if (val.indexOf(parm.charAt(i),0) == -1) return false;
  }
  return true;
}
 
function isNum(parm) {return isValid(parm,numb);}
function isLower(parm) {return isValid(parm,lwr);}
function isUpper(parm) {return isValid(parm,upr);}
function isAlpha(parm) {return isValid(parm,lwr+upr);}
function isAlphanum(parm) {return isValid(parm,lwr+upr+numb);}

// Validate a new subscriber
function validate_new_member(frm)
{
	if (trimAll(frm.email.value) == "")
	{
		alert("Email field is empty!")
		frm.email.focus()
		return false
	}

	// check for a valid email address entered
	if (!emailCheck(trimAll(frm.email.value))) 
	{
		alert("Problem found with the Email address entered!")
		frm.email.focus()
		return false
	} 
	
	if (trimAll(frm.txt2.value) == "")
	{
		alert("Password field is empty!")
		frm.txt2.focus()
		return false
	}
	// submit the form
	frm.zstr.value = MakeZstr(trimAll(frm.txt2.value))
	frm.submit()
}

// trims off leading and trailing spaces
function trimAll( strValue ) {
 var objRegExp = /^(\s*)$/;

    //check for all spaces
    if(objRegExp.test(strValue)) {
       strValue = strValue.replace(objRegExp, '');
       if( strValue.length == 0)
          return strValue;
    }

   //check for leading & trailing spaces
   objRegExp = /^(\s*)([\W\w]*)(\b\s*$)/;
   if(objRegExp.test(strValue)) {
       //remove leading and trailing whitespace characters
       strValue = strValue.replace(objRegExp, '$2');
    }
  return strValue;
}

// validate the login form passed in
function validate_login()
{
	var oform = document.login
	if (oform.username.value == "")
	{
		alert("User Name is missing")
		oform.username.focus()
		return false
	}
	if (oform.txt2.value == "")
	{
		alert("Password is missing")
		oform.txt2.focus()
		return false
	}
	
	// submit the form
	oform.zstr.value = MakeZstr(oform.txt2.value)
	//oform.txt2.value = ""
	oform.action = "login_process.asp"
	oform.submit()
}

// convert to field to uppercase 
function MakeUpperCase(field)
{
	var re = / /g
	field.value = field.value.toUpperCase()
	field.value = field.value.replace(re, "")
}

// preload images
function TG_preloadImages() 
{ //v3.0
	var d=document; if(d.images){ if(!d.TG_p) d.TG_p=new Array();
	var i,j=d.TG_p.length,a=TG_preloadImages.arguments; for(i=0; i<a.length; i++)
	if (a[i].indexOf("#")!=0){ d.TG_p[j]=new Image; d.TG_p[j++].src=a[i];}}
}

// Check for frames and break out of them
function check_frames()
{
  if (top.location != location) 
	{ top.location.href = document.location.href ; }
}

// Menu functions
function menuover(oitem)
{
	oitem.style.color="White";
	oitem.style.background="../images/admin_menu_bkgd_down.gif";
}
function menuout(oitem)
{
	oitem.style.color="#FF0000";
	oitem.style.background="../images/admin_menu_bkgd.gif";
}
function oldmenuover(oitem, imgName, imgSrc)
{
	oitem.style.color="White";
	switchImage(imgName, imgSrc); 
}
function oldmenuout(oitem, imgName, imgSrc)
{
	oitem.style.color="#FF0000";
	switchImage(imgName, imgSrc); 
}

// swap image when mouse over
function switchImage(imgName, imgSrc) 
{
  if (document.images)
  {
    if (imgSrc != "none")
    {
      document.images[imgName].src = imgSrc;
    }
  }
}

// A JavaScript implementation of the Secure Hash Algorithm 
// Convert a 32-bit number to a hex string with ms-byte first
var hex_chr = "0123456789abcdef";
function hex(num)
{
  var str = "";
  for(var j = 7; j >= 0; j--)
    str += hex_chr.charAt((num >> (j * 4)) & 0x0F);
  return str;
}

// Convert a string to a sequence of 16-word blocks, stored as an array.
// Append padding bits and the length, as described in the SHA1 standard.
function str2blks_SHA1(str)
{
  var nblk = ((str.length + 8) >> 6) + 1;
  var blks = new Array(nblk * 16);
  for(var i = 0; i < nblk * 16; i++) blks[i] = 0;
  for(i = 0; i < str.length; i++)
    blks[i >> 2] |= str.charCodeAt(i) << (24 - (i % 4) * 8);
  blks[i >> 2] |= 0x80 << (24 - (i % 4) * 8);
  blks[nblk * 16 - 1] = str.length * 8;
  return blks;
}

// Add integers, wrapping at 2^32. This uses 16-bit operations internally 
// to work around bugs in some JS interpreters.
function add(x, y)
{
  var lsw = (x & 0xFFFF) + (y & 0xFFFF);
  var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
  return (msw << 16) | (lsw & 0xFFFF);
}

// Bitwise rotate a 32-bit number to the left
function rol(num, cnt)
{
  return (num << cnt) | (num >>> (32 - cnt));
}

// Perform the appropriate triplet combination function for the current iteration
function ft(t, b, c, d)
{
  if(t < 20) return (b & c) | ((~b) & d);
  if(t < 40) return b ^ c ^ d;
  if(t < 60) return (b & c) | (b & d) | (c & d);
  return b ^ c ^ d;
}

// Determine the appropriate additive constant for the current iteration
 function kt(t)
{
  return (t < 20) ?  1518500249 : (t < 40) ?  1859775393 :
         (t < 60) ? -1894007588 : -899497514;
}

// Take a string and return the hex representation of its SHA-1.
function MakeZstr(str)
{
  var x = str2blks_SHA1(str);
  var w = new Array(80);

  var a =  1732584193;
  var b = -271733879;
  var c = -1732584194;
  var d =  271733878;
  var e = -1009589776;

  for(var i = 0; i < x.length; i += 16)
  {
    var olda = a;
    var oldb = b;
    var oldc = c;
    var oldd = d;
    var olde = e;

    for(var j = 0; j < 80; j++)
    {
      if(j < 16) w[j] = x[i + j];
      else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1);
      t = add(add(rol(a, 5), ft(j, b, c, d)), add(add(e, w[j]), kt(j)));
      e = d;
      d = c;
      c = rol(b, 30);
      b = a;
      a = t;
    }

    a = add(a, olda);
    b = add(b, oldb);
    c = add(c, oldc);
    d = add(d, oldd);
    e = add(e, olde);
  }
  return hex(a) + hex(b) + hex(c) + hex(d) + hex(e);
}

// check and validate an email address
function emailCheck (emailStr) 
{
	//var emailStr=ofield.value
	var emailPat=/^(.+)@(.+)$/
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	var validChars="\[^\\s" + specialChars + "\]"
	var quotedUser="(\"[^\"]*\")"
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var atom=validChars + '+'
	var word="(" + atom + "|" + quotedUser + ")"
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
	
	// Begin with the coarse pattern to simply break up user@domain into different pieces that are easy to analyze.
	var matchArray=emailStr.match(emailPat)
	if (matchArray==null) {
	  // Too many/few @'s or something; basically, this address doesn't even fit the general mould of a valid e-mail address.
		alert("The Email address seems incorrect (check for @ and .'s problems)")
		return false
	}
	var user=matchArray[1]
	var domain=matchArray[2]
	// See if "user" is valid 
	if (user.match(userPat)==null) {
		// user is not valid
		alert("The Email username doesn't seem to be valid.")
		return false
	}
	// if the e-mail address is at an IP address (as opposed to a symbolic host name) make sure the IP address is valid. 
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) {
		// this is an IP address
		  for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				alert("The Email Destination IP address is invalid!")
			return false
			}
		}
		return true
	}
	// Domain is symbolic name
	var domainArray=domain.match(domainPat)
	if (domainArray==null) {
		alert("The Email domain name doesn't seem to be valid.")
		return false
	}
	/* Now we need to break up the domain to get a count of how many atoms it consists of. */
	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length
	if (domArr[domArr.length-1].length<2 || 
		domArr[domArr.length-1].length>4) {
	   // the address must end in a two letter or three letter word.
	   alert("The email address must end in a three-letter domain, or two letter country.")
	   return false
	}
	// Make sure there's a host name preceding the domain.
	if (len<2) {
	   var errStr="The Email address is missing a hostname!"
	   alert(errStr)
	   return false
	}
	return true;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

// the following two functions work together and support IE and Firefox
function getDocHeight(doc) 
{ 
	var docHt = 0, sh, oh; 
	if (doc.height) 
	{ 
		docHt = doc.height; 
	} 
	else if (doc.body) 
	{ 
		if (doc.body.scrollHeight) docHt = sh = doc.body.scrollHeight; 
		if (doc.body.offsetHeight) docHt = oh = doc.body.offsetHeight; 
		if (sh && oh) docHt = Math.max(sh, oh); 
	} 
	return docHt; 
} 

function fnResizeIframe(sIFrameName) 
{ 
	var iframeWin = window.frames[sIFrameName]; 
	var iframeEl = window.document.getElementById? window.document.getElementById(sIFrameName): document.all? document.all[sIFrameName]: null; 
	if ( iframeEl && iframeWin ) 
	{ 
		iframeEl.style.height = "auto"; 
		var docHt = getDocHeight(iframeWin.document); 
		if (docHt) iframeEl.style.height = docHt + "px"; 
	} 
	else 
	{ //firefox 
		var docHt = window.document.getElementById(iframeName).contentDocument.height; 
		window.document.getElementById(iframeName).style.height = docHt + "px"; 
	} 
} 

function autoIframe(frameId)
{
	try
	{
		frame = document.getElementById(frameId);
		innerDoc = (frame.contentDocument) ? frame.contentDocument : frame.contentWindow.document;
		objToResize = (frame.style) ? frame.style : frame;
		objToResize.height = innerDoc.body.scrollHeight + 10;
	}
	catch(err)
	{
		window.status = err.message;
	}
}

