var MSIE = false;
var agent = navigator.userAgent;
if (/MSIE/.test(agent)) MSIE = true;
//function showoverA(notneeded){
//	return false;
//}
//function hideoverA(notneeded){
//	return false;
//}
function unhtml(n) {
  s = '';
  while (s != n) {
    s = n;
    n = n.replace("<br>", "\n").replace("<br>", "\n").replace('&quot;', '"').replace('&amp;', '&');
  }
  return n;
}
function nl2br(n) {
  var s = '';
  while (s != n) { s = n; n = n.replace("\n", '<br>'); }
  return n;
}

function escape_text(text) {return String(text).replace(/\&/g, "&amp;").replace(/\'/g, "&#039;").replace(/\"/g, '&quot;').replace(/</g, "&lt;").replace(/>/g, "&gt;");}

function unescape_text(text) {return String(text).replace(/\&amp;/g, "&").replace(/\&#039;/g, "'").replace(/\&quot;/g, '"').replace(/&lt;/g, "<").replace(/&gt;/g, ">");}

function xChange(div1, div2) {
	if(obj=getObj(div1))
			obj.style.display = 'block';
	if (div2)
		if(obj=getObj(div2))
			obj.style.display = 'none';
	}

function addEvent(obj, ev, eh) {
	if (obj.addEventListener) obj.addEventListener(ev, eh, false);
	else if (obj.attachEvent) obj.attachEvent('on' + ev, eh);
}
function getEventObj(e) {
	if (e.originalTarget) return e.originalTarget;
	else if (e.srcElement) return e.srcElement;
	else return false;
}
function getObj(n) {
  if (document.getElementById) return document.getElementById(n);
  if (document.all) return document.all[n];
  return null;
}
function debugObj(obj) {
  s = '';
  for (a in obj) s += a + ' = ' + String(obj[a]).replace(/</g, '&lt;') + ";<br/>\n";
  win = window.open('about:blank', '_blank');
  with (win.document) {
    open();
    write(s);
    close();
  }
}

function getOffsetLeft(obj) {
  var curleft = 0;
  if (obj.offsetParent)
    while (obj.offsetParent) {
      curleft += obj.offsetLeft
      obj = obj.offsetParent;
    }
  else if (obj.x) curleft += obj.x;
  return curleft;
}

function getOffsetTop(obj) {
  var curtop = 0;
  if (obj.offsetParent)
    while (obj.offsetParent) {
      curtop += obj.offsetTop
      obj = obj.offsetParent;
    }
  else if (obj.y) curtop += obj.y;
  return curtop;
}

function setStyleRec(o, s, v) {
	if (o && o.style)
		o.style[s] = v;
	if (o && o.childNodes && o.childNodes.length)
		for (i = o.childNodes.length - 1; i >= 0; i--)
			setStyleRec(o.childNodes[i], s, v);
}

function trim(s) {return String(s).replace(/^[\s\t]+/g, "").replace(/[\s\t]+$/g, "");}

function emailCheck(emailStr) {
	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 +")*$");
	var matchArray=emailStr.match(emailPat);
	if (matchArray==null) {return false;}
	var user=matchArray[1];
	var domain=matchArray[2];
	if (user.match(userPat)==null){return false;}
	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {return false;}
		}
		return true;
	}
	var domainArray=domain.match(domainPat);
	if (domainArray==null) {return false; }
	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) { return false;}
	if (len<2) {return false;}
	return true;
}

function p(s, divN) {
	if(divN==null) divN='';var o=getObj('debugDiv'+divN);if(o!=null){o.innerHTML=s;o.style.border="solid 1px #999";}
	else{var div=document.createElement('div');div.id='debugDiv'+divN;div.style.border="solid 1px #999";div.innerHTML=s;document.body.appendChild(div);}
}
function dh(obj) {
	var s=''; 
	for (var i in obj) {
		if(typeof obj[i]=="function")
			s+=i+' : function () { /* native code */ } <br /> '; 
		else
			s+=i+' : '+obj[i]+' <br /> '; 
	}
	return s;
}

function da(obj) {
	var s=''; 
	for (var i=0; i<obj.length;i++) {
		if(typeof obj[i]=="function")
			s+=i+' : function () { /* native code */ } <br /> '; 
		else
			s+=i+' : '+obj[i]+' <br /> '; 
	}
	return s;
}