function clickLink(id) {
     var linkobj=document.getElementById(id);
     if (linkobj.getAttribute('onclick') == null) {
          if (linkobj.getAttribute('href')) document.location = linkobj.getAttribute('href');
     }
     else linkobj.onclick();
}

// Column Toggle Script
var showMode = 'table-cell';
// Hack to prevent Opera using the IE display mode.
if ((navigator.appName.indexOf("Microsoft") != -1) && (navigator.userAgent.indexOf("Opera") == -1)) {
 if (document.all) showMode='block';
}

function ExpandTextBlock(showHideDiv, switchTextDiv) {
	var ele = document.getElementById(showHideDiv);
	var text = document.getElementById(switchTextDiv);
	if(ele.style.display == "block") {
    		ele.style.display = "none";
		text.innerHTML = "more..";
  	}
	else {
		ele.style.display = "block";
		text.innerHTML = "less..";
	}
} 

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

function ToggleVis(btn) {
 try {
  var cells = document.getElementsByName('T'+btn.name);
  var mode = btn.checked ? showMode : 'none';
  for(j = 0; j < cells.length; j++) { cells[j].style.display = mode; }
  var objData=document.getElementById('colData');
  var colNum=btn.name.substr(3);
  var colValue = btn.checked ? '1' : '0';
  var txt=objData.value.substr(0,eval(colNum)-1)+colValue+objData.value.substr(eval(colNum));
  objData.value=txt;
 } catch(e) { alert("Error occured: "+e.description); }
}
function InitVis() {
 try {
  var objData=document.getElementById('colData');
  for (i = 0; i < objData.value.length -1; i++) {
   objCol=document.getElementById('col'+eval(i+1)); objCol.checked=objData.value.substr(i,1)=='1'; ToggleVis(objCol);
  }
 } catch(e) { alert("Error occured: "+e.description); }
}
// TR Hover Script
function trHover(obj,newcolor) { obj.oldColor=obj.bgColor; obj.bgColor=newcolor; }
function trOut(obj) { obj.bgColor=obj.oldColor; }

// Collapse Script
function tglPic(obj) { try{if(obj.src.lastIndexOf("+.")!=-1){obj.src=obj.src.replace('+.','-.');}else{obj.src=obj.src.replace('-.','+.');}}catch(e){}; }
function tglRow(event,picname) { try{tglPic(document.getElementById(picname));tglCase(event,document.getElementById(picname));}catch(e){}; }
function tglCase(event,obj) { try{child=document.getElementById(obj.id.replace("exImage","exData"));child.className=child.className=="collapsed" ? "expanded" : "collapsed";}catch(e){}; tglStop(event); }
function tglStop(event) { try{event.cancelBubble=true;}catch(e){}; try{event.stopPropagation;}catch(e){}; }

// Hook for Internet Explorer.
if (navigator.appName && navigator.appName.indexOf("Microsoft") != -1 && navigator.userAgent.indexOf("Windows") != -1 && navigator.userAgent.indexOf("Windows 3.1") == -1) { document.write('<script language=\"VBScript\"\>\nOn Error Resume Next\nSub top1x3_FSCommand(ByVal command, ByVal args)\nCall top1x3_DoFSCommand(command, args)\nEnd Sub\n</script\>\n'); }

function DoAsk(tourl,question) { if(confirm(question)==true){document.location.href=(tourl);} }

var newWin = null;  
function popUp(strURL, strType, strHeight, strWidth) {  
 if (newWin != null && !newWin.closed)  
   newWin.close();  
 var strOptions="";  
 if (strType=="console")  
   strOptions="resizable,height="+  
     strHeight+",width="+strWidth;  
 if (strType=="fixed")  
   strOptions="status,height="+  
     strHeight+",width="+strWidth;  
 if (strType=="elastic")  
   strOptions="toolbar,menubar,scrollbars,"+  
     "resizable,location,height="+  
     strHeight+",width="+strWidth;  
 newWin = window.open(strURL, 'newWin', strOptions);  
 newWin.focus();  
}

function trim(inputString) {
 if (typeof inputString != "string") { return inputString; }
 var retValue = inputString;
 var ch = retValue.substring(0, 1);
 while (ch == " ") {
  retValue = retValue.substring(1, retValue.length);
  ch = retValue.substring(0, 1);
 }
 ch = retValue.substring(retValue.length-1, retValue.length);
 while (ch == " ") {
  retValue = retValue.substring(0, retValue.length-1);
  ch = retValue.substring(retValue.length-1, retValue.length);
 }
 while (retValue.indexOf("  ") != -1) {
  retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length);
 }
 return retValue;
}

function Validator(frmname) {
 this.formobj=document.forms[frmname];
 if(!this.formobj) {
//  alert("BUG: couldnot get Form object "+frmname);
  return;
 }
 if(this.formobj.onsubmit) {
  this.formobj.old_onsubmit = this.formobj.onsubmit;
  this.formobj.onsubmit=null;
 } else {
  this.formobj.old_onsubmit = null;
 }
 this.formobj.onsubmit=form_submit_handler;
 this.addValidation = add_validation;
 this.setAddnlValidationFunction=set_addnl_vfunction1;
 this.setAddnlValidationFunction2=set_addnl_vfunction2;
 this.setAddnlValidationFunction3=set_addnl_vfunction3;
 this.setAddnlValidationFunction4=set_addnl_vfunction4;
 this.setAddnlValidationFunction5=set_addnl_vfunction5;
 this.clearAllValidations = clear_all_validations;
}

function set_addnl_vfunction1(functionname) { this.formobj.addnlvalidation1 = functionname; }
function set_addnl_vfunction2(functionname) { this.formobj.addnlvalidation2 = functionname; }
function set_addnl_vfunction3(functionname) { this.formobj.addnlvalidation3 = functionname; }
function set_addnl_vfunction4(functionname) { this.formobj.addnlvalidation4 = functionname; }
function set_addnl_vfunction5(functionname) { this.formobj.addnlvalidation5 = functionname; }

function clear_all_validations() {
 for(var itr=0;itr < this.formobj.elements.length;itr++) { this.formobj.elements[itr].validationset = null; }
}

function form_submit_handler() {
 for(var itr=0;itr < this.elements.length;itr++) {
  if(this.elements[itr].validationset && !this.elements[itr].validationset.validate()) { return false; }
 }
 if(this.addnlvalidation1) { str =" var ret = "+this.addnlvalidation1; eval(str); if(!ret) return ret; }
 if(this.addnlvalidation2) { str =" var ret = "+this.addnlvalidation2; eval(str); if(!ret) return ret; }
 if(this.addnlvalidation3) { str =" var ret = "+this.addnlvalidation3; eval(str); if(!ret) return ret; }
 if(this.addnlvalidation4) { str =" var ret = "+this.addnlvalidation4; eval(str); if(!ret) return ret; }
 if(this.addnlvalidation5) { str =" var ret = "+this.addnlvalidation5; eval(str); if(!ret) return ret; }
 return true;
}


function add_validation(itemname,descriptor,errstr) {
 if(!this.formobj) { alert("BUG: the form object is not set properly"); return; }
 var itemobj = this.formobj[itemname];
 if(!itemobj) { alert("BUG: Couldnot get the input object named: "+itemname); return; }
 if(!itemobj.validationset) { itemobj.validationset = new ValidationSet(itemobj); }
 itemobj.validationset.add(descriptor,errstr);
}

function ValidationDesc(inputitem,desc,error) {
 this.desc=desc;
 this.error=error;
 this.itemobj = inputitem;
 this.validate=vdesc_validate;
}

function vdesc_validate() {
 this.itemobj.value=trim(this.itemobj.value);
 if (this.itemobj.style.display!=='none') {
  if ((this.itemobj.name.indexOf("Dia")!=-1)||(this.itemobj.name.indexOf("Mes")!=-1)||(this.itemobj.name.indexOf("Ano")!=-1)) {
   var imgobj = document.getElementById("d"+this.itemobj.name.replace("Dia","").replace("Mes","").replace("Ano",""))
  } else {
   var imgobj = document.getElementById("p"+this.itemobj.name)
  }
  if(!V2validateData(this.desc,this.itemobj,this.error)) {
   this.itemobj.focus();
   pngsrcchange(imgobj,false)
   return false;
  } else {
   pngsrcchange(imgobj,true)
  }
 }
 return true;
}

function pngsrcchange(obj,valid) {
 try{
  if (valid) { newpic="ico-16x32xok2.png"; } else { newpic="ico-16x32xerror.png"; }
  if (obj.src.indexOf("transpng.gif")!=-1) {
   obj.style.filter=obj.style.filter.substring(0,obj.style.filter.lastIndexOf("/")+1)+newpic+obj.style.filter.substring(obj.style.filter.lastIndexOf("'"));
  } else {
   obj.src=obj.src.substring(0,obj.src.lastIndexOf("/")+1)+newpic;
  }
 } catch(e) {}
}

function ValidationSet(inputitem) {
 this.vSet=new Array();
 this.add= add_validationdesc;
 this.validate= vset_validate;
 this.itemobj = inputitem;
}

function add_validationdesc(desc,error) {
 this.vSet[this.vSet.length]=new ValidationDesc(this.itemobj,desc,error);
}

function vset_validate() {
 for(var itr=0;itr<this.vSet.length;itr++) {
  if(!this.vSet[itr].validate()) { return false; }
 }
 return true;
}

function validateEmailv2(email) {
//  checks the validity of an email address entered returns true or false
 var splitted = email.match("^(.+)@(.+)$");
 if(splitted == null) return false;
 if(splitted[1] != null ) {
  var regexp_user=/^\"?[\w-_\.\+]*\"?$/;
  if(splitted[1].match(regexp_user) == null) return false;
 }
 if(splitted[2] != null) {
   var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/;
   if(splitted[2].match(regexp_domain) == null) {
    var regexp_ip =/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;
    if(splitted[2].match(regexp_ip) == null) return false;
   }// if
   return true;
 }
 return false;
}

function V2validateData(strValidateStr,objValue,strError) {
 var epos = strValidateStr.search("=");
 var command  = "";
 var cmdvalue = "";
 if(epos >= 0) {
  command  = strValidateStr.substring(0,epos);
  cmdvalue = strValidateStr.substr(epos+1);
 } else {
  command = strValidateStr;
 }
 if (objValue.disabled) { return true;  }
 switch(command)  {
  case "req":
  case "required": {
   if(eval(objValue.value.length) == 0) {
    if(!strError || strError.length ==0) {
     strError = objValue.name + " : Required Field";
    }//if
    alert(strError);
    return false;
   }//if
   break;
  }//case required
  case "maxlength":
  case "maxlen": {
   if(eval(objValue.value.length) >  eval(cmdvalue)) {
    if(!strError || strError.length ==0) {
     strError = objValue.name + " : "+cmdvalue+" characters maximum ";
    }//if
    alert(strError + "\n[Current length = " + objValue.value.length + " ]");
    return false;
   }//if
   break;
  }//case maxlen
  case "minlength":
  case "minlen": {
   if(eval(objValue.value.length) <  eval(cmdvalue)) {
    if(!strError || strError.length ==0) {
     strError = objValue.name + " : " + cmdvalue + " characters minimum  ";
    }//if
    alert(strError + "\n[Current length = " + objValue.value.length + " ]");
    return false;
   }//if
   break;
  }//case minlen
  case "alnum":
  case "alphanumeric": {
   var charpos = objValue.value.search("[^A-Za-z0-9]");
   if(objValue.value.length > 0 &&  charpos >= 0) {
    if(!strError || strError.length ==0) {
     strError = objValue.name+": Only alpha-numeric characters allowed ";
    }//if
    alert(strError + "\n [Error character position " + eval(charpos+1)+"]");
    return false;
   }//if
   break;
  }//case alphanumeric
  case "num":
  case "numeric": {
   var charpos = objValue.value.search("[^0-9]");
   if(objValue.value.length > 0 &&  charpos >= 0) {
    if(!strError || strError.length ==0) {
     strError = objValue.name+": Only digits allowed ";
    }//if
    alert(strError + "\n [Error character position " + eval(charpos+1)+"]");
    return false;
   }//if
   break;
  }//numeric
  case "alphabetic":
  case "alpha": {
   var charpos = objValue.value.search("[^A-Za-z]");
   if(objValue.value.length > 0 &&  charpos >= 0) {
    if(!strError || strError.length ==0) {
     strError = objValue.name+": Only alphabetic characters allowed ";
    }//if
    alert(strError + "\n [Error character position " + eval(charpos+1)+"]");
    return false;
   }//if
   break;
  }//alpha
  case "mon":
  case "money": {
   var charpos = objValue.value.search("[^0-9|\,\.\+\-]");
   if(objValue.value.length > 0 &&  charpos >= 0) {
    if(!strError || strError.length ==0) {
     strError = objValue.name+": Only digits allowed ";
    }
    alert(strError + "\n [Error character position " + eval(charpos+1)+"]");
    return false;
   }
   break;
  }//money
  case "alnumhyphen":{
   var charpos = objValue.value.search("[^A-Za-z0-9\-_]");
   if(objValue.value.length > 0 &&  charpos >= 0) {
    if(!strError || strError.length ==0) {
     strError = objValue.name+": characters allowed are A-Z,a-z,0-9,- and _";
    }//if
    alert(strError + "\n [Error character position " + eval(charpos+1)+"]");
    return false;
   }//if
   break;
  }
  case "email": {
   if(!validateEmailv2(objValue.value)) {
    if(!strError || strError.length ==0) {
     strError = objValue.name+": Enter a valid Email address ";
    }//if
    alert(strError);
    return false;
   }//if
   break;
  }//case email
  case "lt":
  case "lessthan": {
   if(isNaN(objValue.value)) {
    alert(objValue.name+": Should be a number ");
    return false;
   }//if
   if(eval(objValue.value) >=  eval(cmdvalue)) {
    if(!strError || strError.length ==0) {
     strError = objValue.name + " : value should be less than "+ cmdvalue;
    }//if
    alert(strError);
    return false;
   }//if
   break;
  }//case lessthan
  case "gt":
  case "greaterthan": {
   if(isNaN(objValue.value)) {
    alert(objValue.name+": Should be a number ");
    return false;
   }//if
   if(eval(objValue.value) <=  eval(cmdvalue)) {
    if(!strError || strError.length ==0) {
     strError = objValue.name + " : value should be greater than "+ cmdvalue;
    }//if
    alert(strError);
    return false;
   }//if
   break;
  }//case greaterthan
  case "regexp": {
   if(!objValue.value.match(cmdvalue)) {
    if(!strError || strError.length ==0) {
     strError = objValue.name+": Invalid characters found ";
    }//if
    alert(strError);
    return false;
   }//if
   break;
  }//case regexp
  case "dontselect": {
   if(objValue.selectedIndex == null) {
    alert("BUG: dontselect command for non-select Item");
    return false;
   }
   if(objValue.selectedIndex == eval(cmdvalue)) {
    if(!strError || strError.length ==0) {
     strError = objValue.name+": Please Select one option ";
    }//if
    alert(strError);
    return false;
   }
   break;
  }//case dontselect
 }//switch
 return true;
}

