function fnFindField(n, d) { //v3.0
  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=fnFindField(n,d.layers[i].document); return x;
}


function isValidDate(day,month,year){
var dteDate;
dteDate=new Date(year,month,day);
return ((day==dteDate.getDate()) && (month==dteDate.getMonth()) && (year==dteDate.getFullYear()));
}


function isEmail(str) {
  // are regular expressions supported?
  var supported = 0;
  if (window.RegExp) {
    var tempStr = "a";
    var tempReg = new RegExp(tempStr);
    if (tempReg.test(tempStr)) supported = 1;
  }
  if (!supported) 
    return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
  var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
  var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
  return (!r1.test(str) && r2.test(str));
}


function fnPopUpErr(url,mwidth,mheight){ 
if (document.all&&window.print) //if ie5 
eval('window.showModelessDialog(url,"","help:0;resizable:0;status:0;dialogWidth:'+mwidth+'px;dialogHeight:'+mheight+'px")') 
else 
eval('window.open(url,"","width='+mwidth+'px,height='+mheight+'px,resizable=0,scrollbars=0")') 
}


function fnPopUp(h,w,where){ 
var winX = (screen.width/2)-(w/2); 
var winY = (screen.height/2)-(h/2); 
size="scrollbars=yes, toolbar=no, hotkeys=no, height=" + h + ", width=" + w + ",top=" + winY + ", left=" + winX; 
win = window.open(where, "myPop", size); 
}

function fnPopUp2(h,w,where){ 
var winX = (screen.width/2)-(w/2); 
var winY = (screen.height/2)-(h/2); 
size="scrollbars=yes, toolbar=no, location=no, hotkeys=no, height=" + h + ", width=" + w + ",top=" + winY + ", left=" + winX; 
win = window.open(where, "myPop", size); 
}

function fnShowHideLayers() { //v3.0

ns4 = (document.layers)? true:false;
ie4 = (document.all)? true:false;

winW = (ns4)? window.innerWidth-16 : document.body.offsetWidth-20;
winH = (ns4)? window.innerHeight : document.body.offsetHeight;

  var i,p,v,obj,args=fnShowHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=document.getElementById(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
  obj.left = (winW-150)/2;
  obj.top = (winH-75)/2;
    obj.visibility=v; }
}


function fnShowHideHelp() {

ns4 = (document.layers)? true:false;
ie4 = (document.all)? true:false;

  var i,p,v,obj,args=fnShowHideHelp.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=document.getElementById(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
  p=args[i+1];
  myAnchor = document.getElementById(p);
  obj.left = myAnchor.offsetLeft + 30;
  obj.top = myAnchor.offsetTop - 20;
  obj.visibility=v; }
}

function fnShowHideInvoice() {

ns4 = (document.layers)? true:false;
ie4 = (document.all)? true:false;

  var i,p,v,obj,args=fnShowHideInvoice.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=document.getElementById(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
  p=args[i+1];
  myAnchor = document.getElementById(p);
  obj.left = myAnchor.offsetLeft - 3;
  obj.top = myAnchor.offsetTop - 3;
  obj.visibility=v; }
}