/*Functions for validatios=from here*/
MANDATORY=true;
OPTIONAL=false;
serversideAppend="";

function CertificateOpen(title,field,width,height){
	var sizeSpec = 'toolbar=0,location=0,directories=0,status=no,menubar=1,scrollbars=yes,resizable=yes,width=' + width + ',height=' + height + ',left=20,top=20';
	storywin = window.open(title,field,sizeSpec);
	storywin.focus();
}

function isEmpty(element,field){
    var regExp=/^(\s*)$/;
    if(regExp.test(element.value)){
        alert("The "+field+" cannot be Empty");
        element.focus();
        return true;
    }
    else{
        return false;
    }
}

function isTextwithNumberandUnderscore(element,mandatory,field){
	returnFlag=false;
	regExp=/^[A-Za-z]+[A-Za-z0-9_@.-]*$/;     
	                 
    if((mandatory && !isEmpty(element,field)) || !mandatory){
   		if(element.value.length>0 && !regExp.test(element.value)){
			alert(field +" can contain only [A-Z,a-z,0-9, _ ] characters");        
			element.focus();
			returnFlag=false;
		}	
		else{
			returnFlag=true;
		}
	}
   return returnFlag;
 }
 
 function isPasswordStartWithTextOrNumberOrUnderscore(element,mandatory,field){
	returnFlag=false;
	//regExp=/^[A-Za-z0-9_.]*$/;   
	regExp=/^[A-Za-z0-9_@.-]*$/;
	                 
    if((mandatory && !isEmpty(element,field)) || !mandatory){
    	if(element.value.length>0 && !regExp.test(element.value)){
			//alert(field +" can contain only [A-Z,a-z,0-9, _ ] characters");     
			alert(field +" can contain only [A-Z,a-z,0-9,@,_ ] characters.");
			element.focus();
			returnFlag=false;
		}	
		else{
			returnFlag=true;
		}
	}
   return returnFlag;
   }
 function dataHasTextOrNumberOrUnderscoreOrEmail(element,mandatory,field){
	returnFlag=false;
	regExp=/^[A-Za-z0-9_@.-]*$/;     
		                 
	if((mandatory && !isEmpty(element,field)) || !mandatory){
		if(element.value.length>0 && !regExp.test(element.value)){
			alert(field +" can contain only <A-Z,a-z,0-9,@,_ > characters");        
			element.focus();
			returnFlag=false;
		}	
		else{
			returnFlag=true;
		}
	}
	  return returnFlag;
	}  
 
 function isEmail(element,mandatory,field)
{  
    var emailStr=element.value;
    if(mandatory && isEmpty(element,field)){
        return false; 
    }
	var emailPat=/^(.+)@(.+)$/
	var specialChars="\\(\\)<>=%@,;:#`!~$\\^&*+\\?{}'\\|/\\\\\\\"\\.\\[\\]"
	var validCharsUser="\[^\\s" + specialChars + "\]"
	var validCharsDomain="\[^\\s" + specialChars + "\[^_" + "\]"
	var atomUser=validCharsUser + '+'
	var atomDomain=validCharsDomain + '+'
	var word="(" + atomUser + ")"
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	var domainPat=new RegExp("^" + atomDomain + "(\\." + atomDomain+")*$")

	    var matchArray=emailStr.match(emailPat)
	    if (matchArray==null)
		{
		alert("Invalid "+field);
		element.focus();
		return false;
		}
	    
		var user=matchArray[1]
	    var domain=matchArray[2]
	    if (user.match(userPat)==null) 
		{
		alert("Invalid "+field);
		element.focus();
		return false;
		}

	    var domainArray=domain.match(domainPat)
	    if (domainArray==null) 
		{
		alert("Invalid "+field);
		element.focus();
		return false;
		}

	    var atomPat=new RegExp(atomDomain,"g")
	    var domArr=domain.match(atomPat)
	    var len=domArr.length
	    if (domArr[domArr.length-1].length<2 ||	domArr[domArr.length-1].length>3) 
		{
		alert("Invalid "+field);
		element.focus();
		return false;
		}

	    var endWord="\[^0123456789\]+"
	    var endPat=new RegExp("^(" + endWord + ")+$","g")
	    var endDom = domArr[domArr.length-1].match(endPat)
	    if (endDom==null) 
		{
		alert("Invalid "+field);
		element.focus();
		return false;
		}

	    if (len<2) 
		{
		   //var errStr="This address is missing a hostname!"
		   alert("Invalid "+field);
		   element.focus();
		   return false;
		}

	return "true";
  
}

function isAnyText(element,mandatory,field){
	returnFlag=false;
	if((mandatory && !isEmpty(element,field)) || !mandatory){
		returnFlag=true;
	}
	return returnFlag;
}

MANDATORY=true;
OPTIONAL=false;
serversideAppend="";

function isEmpty(element,field){

    var regExp=/^(\s*)$/;
    if(regExp.test(element.value)){
        alert("The "+field+" cannot be Empty");
        element.focus();
        return true;
    }
    else{
        return false;
    }
}

function isTextwithNumberandUnderscore(element,mandatory,field){

	returnFlag=false;
	regExp=/^[A-Za-z]+[A-Za-z0-9_@.-]*$/;     
	                 
    if((mandatory && !isEmpty(element,field)) || !mandatory){
   		if(element.value.length>0 && !regExp.test(element.value)){
			alert(field +" can contain only [A-Z,a-z,0-9, _ ] characters");        
			element.focus();
			returnFlag=false;
		}	
		else{
			returnFlag=true;
		}
	}
   return returnFlag;
 }
 
 function isPasswordStartWithTextOrNumberOrUnderscore(element,mandatory,field){
	returnFlag=false;
	//regExp=/^[A-Za-z0-9_.]*$/;     
	regExp=/^[A-Za-z0-9_@.-]*$/; 
	                 
    if((mandatory && !isEmpty(element,field)) || !mandatory){
    	if(element.value.length>0 && !regExp.test(element.value)){
			//alert(field +" can contain only [A-Z,a-z,0-9, _ ] characters");
    		alert(field +" can contain only [A-Z,a-z,0-9,@,_ ] characters...");
			element.focus();
			returnFlag=false;
		}	
		else{
			returnFlag=true;
		}
	}
   return returnFlag;
   }
   
 function isEmail(element,mandatory,field)
{  
    var emailStr=element.value;
    if(mandatory && isEmpty(element,field)){
        return false; 
    }
	var emailPat=/^(.+)@(.+)$/
	var specialChars="\\(\\)<>=%@,;:#`!~$\\^&*+\\?{}'\\|/\\\\\\\"\\.\\[\\]"
	var validCharsUser="\[^\\s" + specialChars + "\]"
	var validCharsDomain="\[^\\s" + specialChars + "\[^_" + "\]"
	var atomUser=validCharsUser + '+'
	var atomDomain=validCharsDomain + '+'
	var word="(" + atomUser + ")"
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	var domainPat=new RegExp("^" + atomDomain + "(\\." + atomDomain+")*$")

	    var matchArray=emailStr.match(emailPat)
	    if (matchArray==null)
		{
		alert("Invalid "+field);
		element.focus();
		return false;
		}
	    
		var user=matchArray[1]
	    var domain=matchArray[2]
	    if (user.match(userPat)==null) 
		{
		alert("Invalid "+field);
		element.focus();
		return false;
		}

	    var domainArray=domain.match(domainPat)
	    if (domainArray==null) 
		{
		alert("Invalid "+field);
		element.focus();
		return false;
		}

	    var atomPat=new RegExp(atomDomain,"g")
	    var domArr=domain.match(atomPat)
	    var len=domArr.length
	    if (domArr[domArr.length-1].length<2 ||	domArr[domArr.length-1].length>6) //DOMAIN EXTENSION LENGTH INCREASED FROM 3 TO 6 CHARACTERS | BY: RAVIRAJ | ON: 16-04-2009 
		{
		alert("Invalid "+field);
		element.focus();
		return false;
		}

	    var endWord="\[^0123456789\]+"
	    var endPat=new RegExp("^(" + endWord + ")+$","g")
	    var endDom = domArr[domArr.length-1].match(endPat)
	    if (endDom==null) 
		{
		alert("Invalid "+field);
		element.focus();
		return false;
		}

	    if (len<2) 
		{
		   //var errStr="This address is missing a hostname!"
		   alert("Invalid "+field);
		   element.focus();
		   return false;
		}

	return "true";
  
}

function isAnyText(element,mandatory,field){
	returnFlag=false;
	if((mandatory && !isEmpty(element,field)) || !mandatory){
		returnFlag=true;
	}
	return returnFlag;
}
function oneNumber(element,field){
//alert("oneNumber");
	returnFlag=false;
	re = /[0-9]/;
    if(!re.test(element.value)) {
    	alert("password must contain at least one number (0-9)!");
        return false;
 }
 return "true";
}
function oneLetter(element,field){
//alert("oneLetter");
	returnFlag=false;
	re = /[A-Za-z]/;
    if(!re.test(element.value)) {
        alert("password must contain at least one letter (a-z)!");
       return false;
    }
	return "true";
}
 

/*Functions for validatios=to here*/

/*Functions for preloadeimages=from here*/
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_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_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_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];}
}

/*Functions for preloadeimages=to here*/

/*sregistrion code start here*/
    
 		
     
       
       
 function populateSelectOnChange(getIndexFromSelect,populateSelect,arrOfValues,startfrom){
    //delete all options.
    var len=populateSelect.length;
    
    for(var i=len;i>=startfrom;i--){
        populateSelect.options[i]=null;
    }
    //if single select box
    if(getIndexFromSelect.type=="select-one"){
        var selectedIndex=getIndexFromSelect.selectedIndex;                 //get selected option
        for(var i=0,counter=startfrom;i<arrOfValues.length;i=i+3){    
            if(arrOfValues[i]==getIndexFromSelect.options[selectedIndex].value){                              
                var option=new Option(arrOfValues[i+2],arrOfValues[i+1]);   //first text then value
                populateSelect.options[counter]=option;                     //add option
                counter++;
            }    
        }
        
        //populateSelect.options[0].selected=true;	//ORIGINAL CODE | COMMENTED BY RAVIRAJ ON 14-05-2009
        
        /*----- BEGIN: CODE ADDITION BY RAVIRAJ ON 14-05-2009 -----*/
        /*----- PURPOSE: SELECT THE FIRST OPTION FROM THE 'populateSelect' SELECT-LIST, IF THERE IS ATLEAST ONE OPTION IN THE SELECT-LIST -----*/
        var selectListLength = populateSelect.length;
        if(selectListLength > 0) {
        	populateSelect.options[0].selected=true;
        }
        /*----- END: CODE ADDITION BY RAVIRAJ ON 14-05-2009 -----*/
        
    }
    //if multiple select box
    if(getIndexFromSelect.type=="select-multiple"){
        var counter=startfrom;
        for(var i=0;i<getIndexFromSelect.length;i++){                       
            if(getIndexFromSelect.options[i].selected==true){               
                var selectedIndex=getIndexFromSelect.options[i].value;               //get selected option    
                for(var j=0;j<arrOfValues.length;j=j+3){       
                    if(arrOfValues[j]==getIndexFromSelect.options[selectedIndex].value){    
                        var option=new Option(arrOfValues[j+2],arrOfValues[j+1]);    //first text then value
                        populateSelect.options[counter]=option;                      //add option
                        counter++;
                    }
                }
            }  
        }
    }
}
 
/*  sregistrion code end here  */

/*	code for sorting  */
   
var sortedOn; 
function SortTable(sortOn) {           
	var table = document.getElementById('results');
	var tbody = table.getElementsByTagName('tbody')[0];
	var rows = tbody.getElementsByTagName('tr');
	var rowArray = new Array(); 
	var valuetype;
	var sorttype;
	var regExpForWhSpaces=/^\d+(.(\d)+|\d+%)*$/;
	var testdate=/^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/;

	for (var i=0, length=rows.length; i<length; i++) {
		rowArray[i] = new Object;
		rowArray[i].oldIndex = i; 
		rowArray[i].value = rows[i].getElementsByTagName('td')[sortOn].firstChild.nodeValue;
		//alert("rowArray value = " + rowArray[i].value);
		valuetype = rows[i].getElementsByTagName('td')[sortOn].firstChild.nodeValue;
		if(testdate.test(valuetype)){
			sorttype='dateval';
		}else if(regExpForWhSpaces.test(valuetype)){
			sorttype='number';
		}
	}                
	if (sortOn == sortedOn){ 
		rowArray.reverse(); 
	}else {
		sortedOn = sortOn;
		if (sorttype == 'number') {
			rowArray.sort(RowCompareNumbers);
		}else if (sorttype == 'dateval') {
			rowArray.sort(RowCompareDate);
		} else {
			rowArray.sort(RowCompare);
		}        
	}                
	var newTbody = document.createElement('tbody');
   	for (var i=0, length=rowArray.length ; i<length; i++) { 
		newTbody.appendChild(rows[rowArray[i].oldIndex].cloneNode(true));
	}
	table.replaceChild(newTbody, tbody);    
}    
    
 function RowCompare(a, b) {  
	var aVal = a.value;       
	var bVal = b.value;        
	return (aVal.toLowerCase() == bVal.toLowerCase() ? 0 : (aVal.toLowerCase() > bVal.toLowerCase() ? 1 : -1)); 
  }   
 function RowCompareNumbers(a, b) { 
	var aVal = parseInt( a.value);        
	var bVal = parseInt(b.value);       
	return (aVal - bVal);    
 }    
 function RowCompareDollars(a, b) {
	var aVal = parseFloat(a.value.substr(1)); 
	var bVal = parseFloat(b.value.substr(1)); 
	return (aVal - bVal);    
 }
 function RowCompareDate(a, b){
	var aCell = new Date(a.value);
	var bCell = new Date(b.value);
	return (aCell > bCell) ? 1 : (aCell < bCell) ? -1 : 0;
 }






