//'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//' DESC: JavaScript Base Utilities Library v2.0
//' FILE: lib_baseutils.js
//'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//' Copyright Digital Fix 2006. All rights reserved.
//'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

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];}}
}
function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_validateForm() { //v4.0
  var i,p,q,nm,nid,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) {
    test=args[i+2]; val=MM_findObj(args[i]);
    if (val) {
      nm=val.name; nid=val.id; nid=nid.replace(/_/g,' ');
      if ((val=val.value)!="") {
        if (test.indexOf('isEmail')!=-1) {
	  p=val.indexOf('@');
          if (p<1 || p==(val.length-1)) errors+='- '+nid+' must contain an e-mail address.\n';
        } else if (test!='R') {
	  num = parseFloat(val);
          if (test.indexOf('isSel')!=-1) {
	    if (num==0) {
	      errors += '- '+nid+' must be chosen.\n';
	    }
          }
          if (test.indexOf('isRad')!=-1) {
	    if (!val.checked) {
	      errors += '- '+nid+' must be chosen.\n';
	    }
          }
	  else if (isNaN(val)) {
	    errors+='- '+nid+' must contain a number.\n';
	  }
          if (test.indexOf('inRange') != -1) {
	    p=test.indexOf(':');
            min=test.substring(8,p); max=test.substring(p+1);
            if (num<min || max<num) errors+='- '+nid+' must contain a number between '+min+' and '+max+'.\n';
          }
	}
      } else if (test.charAt(0) == 'R') errors += '- '+nid+' is required.\n';
    }
  }
  if (errors) alert('The following error(s) occurred:\n\n'+errors);
  document.MM_returnValue = (errors == '');
}

/*function loadImgs() {
	var d=document;
	if (d.images) {
		if (!d.arrImg) d.arrImg = new Array();
		var i, l=d.arrImg.length, args=loadImgs.arguments;
		for (i=0, i<args.length, i++); d.arrImg[j]=new Image; d.arrImg[j++].src=args[i];
	}
}*/

function chClass(id, newClass) {
	identity=document.getElementById(id);
	identity.className=newClass;
}
function confirmLink(str, loc) {
  if (confirm(str)) {
    document.location = loc;
  }
}
function confLink(loc, str) {
  if (confirm(str)) {
    document.location = loc;
  }
}
function vEmail(src) {
   var emailReg = "^[\\w-\.]*[\\w-_\.]\@[\\w-\.]*[\\w][\\w]+\\.+[\\w]+[\\w]$";
   var regex = new RegExp(emailReg);
   if (!(regex.test(src))) {
     alert('You have entered an invalid email address!\nPlease provide an email address like:\n\n- xx@yy.zz\n- joe@bloggs.com\n\nOr\n\n- aa@bb.cc.dd\n- john@joe.bloggs.com');
     return false;
   }
}

function sHeight() {
	var i = 90, screenH = 600 - i;
	if (parseInt(navigator.appVersion)>3) {
		screenH = screen.height;
	}
	else if (navigator.appName == 'Netscape' && parseInt(navigator.appVersion)==3 && navigator.javaEnabled()) {
		var jToolkit = java.awt.Toolkit.getDefaultToolkit();
		var jScreenSize = jToolkit.getScreenSize();
		screenH = jScreenSize.height;
	}
	screenH = screenH - i;
	return screenH;
}

function checkDouble(a,b,err) { // check if a = b; if not return 'err' message as document.returnVal
  var error='';
  if (a!=b) { error=err; alert(error); }
  document.returnVal = (error=='');
}

/* Property Finder movement functions

function getedge(o, is_top){
	var edge;
	if (is_top)
	edge=window.pageYOffset? window.pageYOffset : truebody().scrollTop? truebody().scrollTop : 0;
	else{
		edge=o.menupos=='left'? 0 : truebody().clientWidth? truebody().clientWidth : window.innerWidth&&truebody().offsetHeight<=window.innerHeight? window.innerWidth :  window.innerWidth? window.innerWidth-20 : 0;
		edge+=window.pageXOffset? window.pageXOffset : truebody().scrollLeft? truebody().scrollLeft: 0;
	}
	return edge;
}

function keep_in_view(o) {
if(o.keepinview){
	if(o.m.ft){
		o.m.ft=0;
		o.m.topP=o.m.offsetTop;
		o.m.ltop=0;
	}
	var pt=getedge(o, 'top'), ks=typeof o.keepinview=='number'&&o.keepinview<o.m.topP&&o.keepinview>0? o.keepinview : o.m.topP, smooth=0;
	if (pt!=o.m.ltop){
		if(o.menupos=='top')
			o.m.style.visibility='hidden';
			smooth = pt>o.m.topP-ks? .2 * (pt - o.m.ltop - o.m.topP + ks) : o.m.ltop>0? -.2 * o.m.ltop : 0;
			smooth = smooth > 0 ? Math.ceil(smooth) : Math.floor(smooth);
	}
	else if(o.menupos=='top')
		o.m.style.visibility='';
		o.m.style.top=(o.m.style.top? parseInt(o.m.style.top) : o.m.topP)+smooth+'px';
		o.m.ltop += smooth;
	}
	if(o.menupos=='top'){
		if(typeof o.menuleft=='string'){
			o.m.style.left=o.menuleft
			o.m.style.marginLeft=Math.floor(o.m.getElementsByTagName('div')[0].offsetWidth/-2)+'px';
			o.lleft=o.m.offsetLeft;
		}
		o.m.style.marginLeft=0;
		o.m.style.left=o.lleft+(window.pageXOffset? window.pageXOffset : truebody().scrollLeft? truebody().scrollLeft: 0)+'px';
	}
	else
	o.m.style.left=getedge(o)-(o.menupos=='right'? o.m.offsetWidth : 0)+'px';
}

function move(el, num) {
	el.getElementsByTagName('div')[0].style[el.menupos]=parseInt(el.getElementsByTagName('div')[0].style[el.menupos])+num+'px';
	if(num>0) el.moving=setTimeout(function(){movein(el)}, el.menuspeed)
	else el.moving=setTimeout(function(){moveout1(el)}, el.menuspeed)
}

function movein(el) {
	var m1=parseInt(el.getElementsByTagName('div')[0].style[el.menupos]);
	if (el.moving) clearTimeout(el.moving);
	if (m1<-1*el.borderwidth) move(el, Math.min(-1*m1-el.borderwidth, 10));
}

function moveout(el){
	if(el.moving)
		clearTimeout(el.moving);
		el.moving=setTimeout(function(){moveout1(el)}, el.menupause);
}

function moveout1(el){
	var aw=el.menupos=='top'? el.b.offsetHeight : el.b.offsetWidth, m1=el.getElementsByTagName('div')[0];
	if(el.moving)
		clearTimeout(el.moving);
	if (parseInt(m1.style[el.menupos])>aw-(el.menupos=='top'? m1.offsetHeight : m1.offsetWidth)+10)
		move(el, -10);
	else {
		m1.style[el.menupos]=aw-(el.menupos=='top'? m1.offsetHeight : m1.offsetWidth)+'px';
		if(el.menupos=='right') {
			el.style.width=aw+'px';
			if(el.kviewtype=='absolute') {
				var ed=truebody().clientWidth? truebody().clientWidth : window.innerWidth&&truebody().offsetHeight<=window.innerHeight? window.innerWidth :  window.innerWidth? window.innerWidth-20 : 0;
				ed+=window.pageXOffset? window.pageXOffset : truebody().scrollLeft? truebody().scrollLeft: 0;
				el.style.left=ed-el.offsetWidth+'px';
			}
		}
	}
}

 */

