//whether to display error in different layer or in same document
var _errDisPara = new errDisplayParam();
function errDisplayParam(){
	this.errInline = true;
	this.errSeparte = false;
	this.errDiv = "dvErrorDis";
	this.errcssDiv = "divError";
	this.errcssTable = "panelError";
	this.errcssData = "divErrorTableData";
	this.errcssOkBtn = "inputs";
	this.errcssHead = "divErrorHead";
	this.errcssTblHead = "tblErrorHead";
}

//Object used to hold error messages
function errorMessageDTO(title,arrMsg){
	this.title = title;
	this.messages = (arrMsg)?arrMsg:new Array();
	this.hasMessages = true;
}

//Parameter object which is used in error display
function errorDisplayDTO(arrBMsg,arrEMsg,oFirstObject,Heading){
	this.mandatory = (arrBMsg)?arrBMsg:new errorMessageDTO();
	this.error = (arrEMsg)?arrEMsg:new errorMessageDTO();
	this.focusObject = oFirstObject;
	this.heading = Heading;
	this.hasErrors=true;
}

/*------------------------Data type validation related functions - Start-----------------*/
	
	//Display error messages in a div
var _errDiv = null;
var _undeErrDiv = null;

function displayErrorMessages(errDTO){
	var table;
	var tbody;
	var tr;
	var td;
	var td1;
	var div;
	var underDiv;
	if (_errDisPara.errSeparte){
		alert(sMsg);
		return false;
	}
	if ((_errDisPara.errInline)&&(getElById(_errDisPara.errDiv))){
		div = getElById(_errDisPara.errDiv);
		div.innerHTML = "";
		if ((!errDTO.hasErrors)||(errDTO.mandatory.messages.length==0 && errDTO.error.messages.length==0)){
			div.style.visibility = "hidden";
			return true;
		}
		else div.style.visibility = "";
	}
	else{
		if (_errDiv==null){
			div = createDiv("dvError","divError","absolute","","","500");
			_errDiv = div;
			document.body.appendChild(_errDiv);
		}
		else{
			div = _errDiv;
			div.innerHTML = "";
			if( _bw.ie6 ) div.style.visibility = "";
			else div.style.visibility = "";
			if( _undeErrDiv ) _undeErrDiv.removeNode(true);
		}
		_undeErrDiv = createDivIframe(div);
	}
	tbl = document.createElement("table");
	tbl.cellSpacing = 0;
	tbl.width = "100%";
	tbl.height = "100%";
	tbl.className = _errDisPara.errcssTable;
	if (!_errDisPara.errInline){
		tblHead = document.createElement("thead");
		tbl.appendChild(tblHead);
		tbltr = document.createElement("tr");
		if (!((_errDisPara.errInline)&&(getElById(_errDisPara.errDiv))))
		tbltr.onmousedown = function(event){dragStart(event,_errDiv,_undeErrDiv);};
		
		tblHead.appendChild(tbltr);
		tblth = document.createElement("th");
		tblth.appendChild(document.createTextNode((((errDTO.heading!=null)&&(errDTO.heading!=""))?errDTO.heading:_property.errHeadingText)));
		tblth.height = "20px";
		tblth.align = "left";
		tblth.className = _errDisPara.errcssHead;
		tbltr.appendChild(tblth);
	}
	tblBody = document.createElement("tbody");
	tbl.appendChild(tblBody);
	
	tbltr = document.createElement("tr");
	tblBody.appendChild(tbltr);
	tbltd = document.createElement("td");
	tbltd.valign = "middle";
	tbltr.appendChild(tbltd);
	
	table = createTable(null,null,"0",null,"0","100%",null,"left","middle");
	div.appendChild(tbl);
	tbltd.appendChild(table);
	tbody = document.createElement("tbody");
	table.appendChild(tbody);
	tr = document.createElement("tr");
	tr.appendChild(createTd(null,null,"2%","8",null,null));
	tr.appendChild(createTd(null,null,"98%",null,null,null));
	tbody.appendChild(tr);
	if ((errDTO.mandatory.hasMessages)&&(errDTO.mandatory.messages.length>0)){
		tr = document.createElement("tr");
		td1 = document.createElement("td");
		td1.appendChild(document.createTextNode(" "));
		tr.appendChild(td1);
		td1 = createTd(null,_errDisPara.errcssTblHead,null,null,null,null);
		td1.appendChild(document.createTextNode((((errDTO.mandatory.title!=null)&&(errDTO.mandatory.title!=""))?errDTO.mandatory.title:_property.valMandatory)));
		tr.appendChild(td1);
		tbody.appendChild(tr);
		for (i=0;i<errDTO.mandatory.messages.length;i++){
			tr = document.createElement("tr");
			tbody.appendChild(tr);
			td1 = document.createElement("td");
			td1.appendChild(document.createTextNode(" "));
			tr.appendChild(td1);
			td = document.createElement("td");
			td.appendChild(createImage(null,"images/bult.gif","0","3","3","absmiddle"));
			td.appendChild(document.createTextNode(" "+errDTO.mandatory.messages[i]));
			td.className =_errDisPara.errcssData;
			tr.appendChild(td);
		}
		tr = document.createElement("tr");
		tr.appendChild(createTd(null,null,"2%","8",null,null));
		tr.appendChild(createTd(null,null,"98%",null,null,null));
		tbody.appendChild(tr);
	}
	
	if ((errDTO.error.hasMessages)&&(errDTO.error.messages.length>0)){
		tr = document.createElement("tr");
		td1 = document.createElement("td");
		td1.appendChild(document.createTextNode(" "));
		tr.appendChild(td1);
		td1 = createTd(null,_errDisPara.errcssTblHead,null,null,null,null);
		td1.appendChild(document.createTextNode((((errDTO.error.title!=null)&&(errDTO.error.title!=""))?errDTO.error.title:_property.valErrorMessage)));
		tr.appendChild(td1);
		tbody.appendChild(tr);
		for (i=0;i<errDTO.error.messages.length;i++){
			tr = document.createElement("tr");
			tbody.appendChild(tr);
			td1 = document.createElement("td");
			td1.appendChild(document.createTextNode(" "));
			tr.appendChild(td1);
			td = document.createElement("td");
			td.appendChild(createImage(null,"images/bult.gif","0","3","3","absmiddle"));
			td.appendChild(document.createTextNode(" "+errDTO.error.messages[i]));
			td.className =_errDisPara.errcssData;
			tr.appendChild(td);
		}
		tr = document.createElement("tr");
		tr.appendChild(createTd(null,null,"2%","8",null,null));
		tr.appendChild(createTd(null,null,"98%",null,null,null));
		tbody.appendChild(tr);
	}
	
	tr = document.createElement("tr");
	tbody.appendChild(tr);
	td1 = document.createElement("td");
	td1.width = "20px";
	td1.appendChild(document.createTextNode(" "));
	tr.appendChild(td1);
	td = document.createElement("td");
	if (_errDisPara.errInline){
		td.appendChild(document.createTextNode(" "));
	}
	else{
		button = createButton("btnOk",_errDisPara.errcssOkBtn,_property.errButtonValue,null);
		button.onclick = function () { 
											if (_errDiv) getElById(_errDiv.id).style.visibility = "hidden";
											if( _bw.ie6 )
										    if( _undeErrDiv ) _undeErrDiv.removeNode(true);
										  
											try{
											if (errDTO.focusObject!="")
										  	if (eval(errDTO.focusObject).type != "hidden" && eval(errDTO.focusObject).disabled != true)
											    eval(errDTO.focusObject).focus();
											    }catch(ex){}
										};
		td.appendChild(button);
	}
	tr.appendChild(td);
	try{
		//if (getElById(div.id).focus) getElById(div.id).focus();
		
		if (errDTO.focusObject!=""){
	  	if (eval(errDTO.focusObject).type != "hidden" && eval(errDTO.focusObject).disabled != true)
		    eval(errDTO.focusObject).focus();
		}
	}catch(ex){}
	return false;
}

function displayErrors(arrBMsg,arrEMsg,oFirstErrObject,errHeading){
	//var arrMgs = sMsg.split("\n");
	var table;
	var tbody;
	var tr;
	var td;
	var div;
	var underDiv;
	if (_errDisPara.errSeparte){
		alert(sMsg);
		return false;
	}
	if ((_errDisPara.errInline)&&(getElById(_errDisPara.errDiv))){
		div = getElById(_errDisPara.errDiv);
		div.innerHTML = "";
		if ((arrBMsg=="" || arrBMsg==null) && (arrEMsg=="" || arrEMsg==null)){
			div.style.visibility = "hidden";
			return true;
		}
		else div.style.visibility = "";
	}
	else{
		if (_errDiv==null){
			div = createDiv("dvError","divError","absolute","","","500");
			_errDiv = div;
			document.body.appendChild(_errDiv);
		}
		else{
			div = _errDiv;
			div.innerHTML = "";
			if( _bw.ie6 ) div.style.visibility = "";
			else div.style.visibility = "";
			if( _undeErrDiv ) _undeErrDiv.removeNode(true);
		}
		_undeErrDiv = createDivIframe(div);
	}
	tbl = document.createElement("table");
	tbl.cellSpacing = 0;
	tbl.width = "100%";
	tbl.height = "100%";
	tbl.className = _errDisPara.errcssTable;
	if (!_errDisPara.errInline){
		tblHead = document.createElement("thead");
		tbl.appendChild(tblHead);
		tbltr = document.createElement("tr");
		if (!((_errDisPara.errInline)&&(getElById(_errDisPara.errDiv))))
		tbltr.onmousedown = function(event){dragStart(event,_errDiv,_undeErrDiv);};
		
		tblHead.appendChild(tbltr);
		tblth = document.createElement("th");
		tblth.appendChild(document.createTextNode((((errHeading!=null)&&(errHeading!=""))?errHeading:_property.errHeadingText)));
		tblth.height = "20px";
		tblth.align = "left";
		tblth.className = _errDisPara.errcssHead;
		tbltr.appendChild(tblth);
	}
	tblBody = document.createElement("tbody");
	tbl.appendChild(tblBody);
	
	tbltr = document.createElement("tr");
	tblBody.appendChild(tbltr);
	tbltd = document.createElement("td");
	tbltd.valign = "middle";
	tbltr.appendChild(tbltd);
	
	table = createTable(null,null,"0",null,"0","100%",null,"left","middle");
	div.appendChild(tbl);
	tbltd.appendChild(table);
	tbody = document.createElement("tbody");
	table.appendChild(tbody);
	tr = document.createElement("tr");
	tr.appendChild(createTd(null,null,"2%","8",null,null));
	tr.appendChild(createTd(null,null,"98%",null,null,null));
	tbody.appendChild(tr);
	if ((arrBMsg!="")&&(arrBMsg!=null)){
		tr = document.createElement("tr");
		td1 = document.createElement("td");
		td1.appendChild(document.createTextNode(" "));
		tr.appendChild(td1);
		td1 = createTd(null,_errDisPara.errcssTblHead,null,null,null,null);
		td1.appendChild(document.createTextNode((((errHeading!=null)&&(errHeading!=""))?errHeading:_property.valMandatory)));
		tr.appendChild(td1);
		tbody.appendChild(tr);
		for (i=0;i<arrBMsg.length;i++){
			tr = document.createElement("tr");
			tbody.appendChild(tr);
			td1 = document.createElement("td");
			td1.appendChild(document.createTextNode(" "));
			tr.appendChild(td1);
			td = document.createElement("td");
			td.appendChild(createImage(null,"images/bult.gif","0","3","3","absmiddle"));
			td.appendChild(document.createTextNode(" "+arrBMsg[i]));
			td.className =_errDisPara.errcssData;
			tr.appendChild(td);
		}
		tr = document.createElement("tr");
		tr.appendChild(createTd(null,null,"2%","8",null,null));
		tr.appendChild(createTd(null,null,"98%",null,null,null));
		tbody.appendChild(tr);
	}
	
	if ((arrEMsg!="")&&(arrEMsg!=null)){
		tr = document.createElement("tr");
		td1 = document.createElement("td");
		td1.appendChild(document.createTextNode(" "));
		tr.appendChild(td1);
		td1 = createTd(null,_errDisPara.errcssTblHead,null,null,null,null);
		td1.appendChild(document.createTextNode((((errHeading!=null)&&(errHeading!=""))?errHeading:_property.valErrorMessage)));
		tr.appendChild(td1);
		tbody.appendChild(tr);
		for (i=0;i<arrEMsg.length;i++){
			tr = document.createElement("tr");
			tbody.appendChild(tr);
			td1 = document.createElement("td");
			td1.appendChild(document.createTextNode(" "));
			tr.appendChild(td1);
			td = document.createElement("td");
			td.appendChild(createImage(null,"images/bult.gif","0","3","3","absmiddle"));
			td.appendChild(document.createTextNode(" "+arrEMsg[i]));
			td.className =_errDisPara.errcssData;
			tr.appendChild(td);
		}
		tr = document.createElement("tr");
		tr.appendChild(createTd(null,null,"2%","8",null,null));
		tr.appendChild(createTd(null,null,"98%",null,null,null));
		tbody.appendChild(tr);
	}
	
	tr = document.createElement("tr");
	tbody.appendChild(tr);
	td1 = document.createElement("td");
	td1.width = "20px";
	td1.appendChild(document.createTextNode(" "));
	tr.appendChild(td1);
	td = document.createElement("td");
	if (_errDisPara.errInline){
		td.appendChild(document.createTextNode(" "));
	}
	else{
		button = createButton("btnOk",_errDisPara.errcssOkBtn,_property.errButtonValue,null);
		button.onclick = function () { 
											if (_errDiv) getElById(_errDiv.id).style.visibility = "hidden";
											if( _bw.ie6 )
										    if( _undeErrDiv ) _undeErrDiv.removeNode(true);
										  
											try{
											if (oFirstErrObject!="")
										  	if (eval(oFirstErrObject).type != "hidden" && eval(oFirstErrObject).disabled != true)
											    eval(oFirstErrObject).focus();
											    }catch(ex){}
										};
		td.appendChild(button);
	}
	tr.appendChild(td);
	try{
		//if (getElById(div.id).focus) getElById(div.id).focus();
		
		if (oFirstErrObject!=""){
	  	if (eval(oFirstErrObject).type != "hidden" && eval(oFirstErrObject).disabled != true)
		    eval(oFirstErrObject).focus();
		}
	}catch(ex){}
	return false;
}

	
	
	
	function checkDoubleQuotes(str){  
	 return ((str.length > 0) ? (str.indexOf('"') == -1) : true);
	}
	
	function checkSingleQuotes(str){  
	 return ((str.length > 0) ? (str.indexOf("'") == -1) : true);
	}
	
	function checkQuotes(str){	
		return ((str.length > 0) ?((str.indexOf("'") == -1) && (str.indexOf('"') == -1)):true);
	}
	
	//Function to check pattern
	function checkPattern(pat,str,typ){
		if (!pat) return true;
		rg = RegExp(pat);
		var notIn = "NUMBER:EMAIL:SMS:DECIMAL:DECIMAL1:DECIMAL2:DECIMAL3:DECIMAL4:DECIMAL5:DECIMAL6:DECIMAL7:DECIMAL8:AIRPORT:CITY:CASSCODE:IATACODE:";
		if (notIn.indexOf(typ+":")==-1){
			return ((str!="")?(str.search(rg) == -1):true);
		}
		else{
			return ((str!="")?(str.search(rg) != -1):true);
		}
	}
	
	//Function to get data type information
	function getDataTypeDesc(str) { return _property["val"+((str.substr(0,2)=="UC")?str.substr(2,str.length):str)];}
	
	//Function to validate a string when passed with the type
	function validateDataType(typ,str){
	  var tmp = (typ.substr(0,2)=="UC")?(typ.substr(2,typ.length)):typ;
	  switch(tmp){
	   case "DATE"  :return checkDate(str,_environment.dateFormat,false);break;
	   case "TIME"  :return checkTime(str,_environment.timeFormat,false);break;
	   case "DESCWORD"  :return (checkPattern(getDataTypePattern("WORD"),str,tmp)||checkPattern(getDataTypePattern(tmp),str,tmp));break;
	   case "WITHOUTQUOTES" : return checkQuotes(str); break;
	   case "ALL"  :return checkDoubleQuotes(str);break;
	   case "FLIGHTNUMBER" : return checkFlightNumber(str);
	   case "CARRIERCODE" : return checkCarrierCode(str);
	   case "AWBSERIAL" : return checkAWBSerial(str);
	   case "CHKAWBSERIAL" : return checkCHKAWBSerial(str);
	   case "FUTUREDATE" : return checkFutureDate(str);
	   case "PASTDATE" : return checkPastDate(str);
	   case "COMCODE"  : return checkComCode(str);
	   default : 
	   		return checkPattern(getDataTypePattern(tmp),str,tmp);
	   		break;
	  }
	  return true;
	}
	//function to check comcode.
	function checkComCode(str,obj){
		var strval = ((obj)?obj.value:str).toString();
		if((strval=="")||(strval.toUpperCase()==_environment.defaultComCode)) return true;
		return (validateDataType("ALPHANUM",strval));
	}
	//Function to do case change
	function doCaseChange(obj,typ,maxlen){
		if((typ.substr(0,2)=="UC")||(typ=="AIRPORT")||(typ=="FLIGHTNUMBER")||(typ=="CARRIERCODE")||(typ=="AWBSERIAL")||(typ=="CHKAWBSERIAL")||(typ=="CITY")||(typ=="COMCODE")||(typ=="USERNAME")){
			replaceSpacesObjectUpper(obj,true);
			if(typ=="FLIGHTNUMBER"){
				checkFlightNumber(typ,obj);
			}
			if(typ=="CARRIERCODE"){
				checkCarrierCode(typ,obj);
			}
			if(typ=="AWBSERIAL"){
				checkAWBSerial(typ,obj);
			}
			if(typ=="CHKAWBSERIAL"){
				checkCHKAWBSerial(typ,obj);
			}
			if(typ=="COMCODE"){
				checkComCode(typ,obj);
			}
			
		}
		else{
			replaceSpacesObject(obj,true);
			if(typ!="DECIMAL"){
				if(typ.indexOf("DECIMAL")!=-1){
					digit = (typ.length==7)?"2":(typ.substr(typ.length-1,1));
					FormatNRoundNumber(obj,-1,-1,parseInt(digit),true,maxlen);
				}
				if(typ=="DATE"){
					changeDateFormat(obj);
				}
				if(typ=="FUTUREDATE"){
					changeDateFormat(obj);
					checkFutureDate(typ,obj);
				}
				if(typ=="PASTDATE"){
					changeDateFormat(obj);
					checkPastDate(typ,obj);
				}
			}
		}
		return obj.value;
	}
	
	//To change the date format
	function changeDateFormat(obj){
		var str = obj.value;
		var arrdate;
		var hasMatch = false;
		var strDate=str;
		if ((str.search( /^[0-3]{0,1}\d{1}\/[0-1]{0,1}\d{1}\/\d{4}$/ )!=-1)||(str.search( /^[0-3]{0,1}\d{1}\/[0-1]{0,1}\d{1}\/\d{2}$/ )!=-1)){//DD/MM/YYYY || DD/MM/YY
			arrdate = str.split("/");
			hasMatch = true;
		}else if ((str.search( /^[0-3]{0,1}\d{1}\-[0-1]{0,1}\d{1}\-\d{4}$/ )!=-1)||(str.search( /^[0-3]{0,1}\d{1}\-[0-1]{0,1}\d{1}\-\d{2}$/ )!=-1)){//DD-MM-YYYY || DD-MM-YY
			arrdate = str.split("-");
			hasMatch = true;
		}
		if(hasMatch){
			yr = arrdate[2];
			if(yr.length==2)
				yr = "20"+yr.toString();
			dy = "0"+arrdate[0].toString();
			dy = dy.substr(dy.length-2,2);
			strDate = dy+" "+getShortMonth(arrdate[1]) + " " + yr;
		}
		obj.value=strDate;
	}
	//Check Future Date
	function checkFutureDate(str,obj){
		var strval = ((obj)?obj.value:str).toString();
		if((strval=="")) return true;
		if(!validateDataType("DATE",strval)) return false;
		return compareIsGreaterThan(_currentDate,strval,"");
	}
	//Check Past Date
	function checkPastDate(str,obj){
		var strval = ((obj)?obj.value:str).toString();
		if((strval=="")) return true;
		if(!validateDataType("DATE",strval)) return false;
		return compareIsGreaterThan(strval,_currentDate,"");
	}
	//Check awb number
	function checkAWBSerial(str,obj){
		var strval = ((obj)?obj.value:str).toString();
		if((strval=="")||(strval.toUpperCase()=="UNK")) return true;
		if(!validateDataType("NUMBER",strval)) return false;
		if(parseFloat(strval)==0) return false;
		if(strval.length!=8) return false;
		//var lft = strval.substr(0,7);
		//var lst = strval.substr(7,1);
		//return (parseFloat(lft)%7==parseFloat(lst));
		return true;
	}
	
	function checkCHKAWBSerial(str,obj){
		
		var strval = ((obj)?obj.value:str).toString();
		if((strval=="")||(strval.toUpperCase()=="UNK")) return true;
		if(!validateDataType("NUMBER",strval)) return false;
		if(parseFloat(strval)==0) return false;
		if(strval.length!=8) return false;
		var lft = strval.substr(0,7);
		var lst = strval.substr(7,1);
		return (parseFloat(lft)%7==parseFloat(lst));
		return true;
	}

	//Check Carrier code
	function checkCarrierCode(str,obj){
		var strval = ((obj)?obj.value:str).toString();
		if(strval=="") return true;
		if(strval.length!=2) return false;
		return (strval.search(/[^A-Z0-9]+/) == -1);
	}

	//Check Flight Number
	function checkFlightNumber(str,obj){
		var strval = ((obj)?obj.value:str).toString();
		if(strval=="") return true;
		if (strval.length<5){
			try{
				if(obj){
					var len = (validateDataType("ALPHA",strval.substr(strval.length-1,1)))?5:4;
					strval = "0000"+strval;
					obj.value = strval.substr(strval.length-len);
				}
			}catch(ex){}
			return validateDataType("NUMBER",strval);
		}
		else{
			if(strval.length==5){
				return (validateDataType("NUMBER",strval.substr(0,4))&& validateDataType("ALPHA",strval.substr(4,1)));
			}
			return false;
		}
	}
	
	//Function to hold data type patterns
	function getDataTypePattern(typ){
		switch(typ){
	   case "EMAIL" :return /^\w+((-\w+)|(\.\w+)|(\_\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z\-]{2,5}$/;break;
	   case "ALPHA" :return /[^a-zA-Z]+/;break;
	   case "AIRPORT" :return /^[A-Z][A-Z][A-Z]$/;break;
	   case "CASSCODE" :return /^\d{4}$/;break;
	   case "IATACODE" :return /^\d{7}$/;break;
	   case "CITY" :return /^[A-Z0-9][A-Z0-9][A-Z0-9]$/;break;
	   case "ALPHAWSPACE" :return /[^a-zA-Z\s]+/;break;
	   case "ALPHANUMWUNS" :return /[^a-zA-Z0-9\s_]+/;break;
	   case "ALPHANUMUNDSCHYPN" :return /[^a-zA-Z0-9_\-]+/;break;
	   case "ALPHANUM" :return /[^a-zA-Z0-9]+/;break;
	   case "ALPHANUMWSPACE" :return /[^a-zA-Z0-9\s]+/;break;
	   case "RESTRICT" :return /,+/;break;
	   case "NUMBER" :return /^\d+$/;break;
	   case "DECIMAL":return /^\d+\.{0,1}\d*$/;break;
	   case "DECIMAL1":return /^\d+\.{0,1}\d*$/;break;
	   case "DECIMAL2":return /^\d+\.{0,2}\d*$/;break;
	   case "DECIMAL3":return /^\d+\.{0,3}\d*$/;break;
	   case "DECIMAL4":return /^\d+\.{0,4}\d*$/;break;
	   case "DECIMAL5":return /^\d+\.{0,5}\d*$/;break;
	   case "DECIMAL6":return /^\d+\.{0,6}\d*$/;break;
	   case "DECIMAL7":return /^\d+\.{0,7}\d*$/;break;
	   case "DECIMAL8":return /^\d+\.{0,8}\d*$/;break;
	   case "PHONE" :return /^\+{0,1}\d+([-]|[\s]){0,1}\d+([-]|[\s]){0,1}\d+([-]|[\s]){0,1}\d+$/;break;
	   case "SMS"  :return /^[1-9]\d*$/;break;
	   case "WORD"  :return /[^\w\.\s_\-\(\)\,]+/ ;break;
	   case "DESCWORD"  :return /[^\s_\-]+/;break;
	   case "USERNAME" :return /[^a-zA-Z0-9_]+/;break;
	   case "RESALPHANUM" :return /[^a-zA-Z0-9\-\.\s]+/;break;
	   default : return "";break;
	  }
	}
	
//Function to validate data objects for data types
 function validateBeforeSubmit(objArray,displaymsg){
  var strBMsg="";
  var strIMsg="";
  var strMsg="";
  var blnFocus=true;
  var intLen = objArray.length;
  var arrSchema;
  var str; 
  var strIndex="";
  var arrIndex=0;
  var strVal="";
  var strFocusobj="";
  var IsValid=true;
  
  var objBlank = new errorMessageDTO();
  var objError = new errorMessageDTO();
  
  var arrBMsg = objBlank.messages;
  var arrEMsg = objError.messages;
  
  for(var i=0;i<intLen;i++){
   arr = objArray[i];
   if (arr.length){
   	if ((eval(arr[0]).length)&&(eval(arr[0]+'.type')!="select-one")&&(eval(arr[0]+'.type')!="textarea")){
     strIndex = "[0]";
     arrIndex = eval(arr[0]).length-1;
    }
   }
   for(var j=0;j<=arrIndex;j++){
			var hasErr = false;
			obj = eval(arr[0]+strIndex);
			doCaseChange(obj,arr[3]);
			switch (eval(arr[0]+strIndex+'.type')){
				case "text":{
				 if(arr[3].indexOf("DATE") != -1)	if(eval(arr[0]+strIndex).value==_environment.dateFormat) eval(arr[0]+strIndex).value="";
				  if(arr[3].indexOf("TIME") != -1)	if(eval(arr[0]+strIndex).value==_environment.timeFormat) eval(arr[0]+strIndex).value="";
				 strVal = replaceSpacesObject(eval(arr[0]+strIndex),true);
				 if ((strVal=="")&&(arr[2])==true){
				  strBMsg=strBMsg+"* "+arr[1]+"\n";
				  arrBMsg[arrBMsg.length] = arr[1];
				  if (blnFocus){
				   strFocusobj = arr[0]+strIndex;
				   blnFocus=false;
				  }
				  hasErr = true;
				  if (obj.className.indexOf("Error")==-1)
   					if(!obj.readOnly)
   						obj.className = obj.className + "Error";
				 }
				 else{
				 	obj.className = obj.className.replace("Error","");
				 	hasErr = false;
				 }
				 if (!validateDataType(arr[3],strVal)){
				  strIMsg=strIMsg+"* "+arr[1]+ " " + getDataTypeDesc(arr[3])+"\n";
				  arrEMsg[arrEMsg.length] = arr[1]+ " " + getDataTypeDesc(arr[3]);
				  if (blnFocus){
				   strFocusobj = arr[0]+strIndex;
				   blnFocus=false;
				  }
				  if (obj.className.indexOf("Error")==-1)
   					if(!obj.readOnly)
   						obj.className = obj.className + "Error";
				 }
				 else{
				 	if((strVal!="")&&((arr[3].indexOf("DECIMAL")>=0)||(arr[3].indexOf("NUMBER")>=0))){
						if(!parseFloat(strVal)>0){ obj.value="";
						/*	strBMsg=strBMsg+"* "+arr[1]+"\n";
							arrBMsg[arrBMsg.length] = arr[1];
							if (blnFocus){
								strFocusobj = arr[0]+strIndex;
								blnFocus=false;
							}
							if (obj.className.indexOf("Error")==-1)
								if(!obj.readOnly)
									obj.className = obj.className + "Error";*/
						}
					}
					if (!hasErr)
				 		obj.className = obj.className.replace("Error","");
				 }
				 break;
				}
				case "password":{
				 if(arr[3].indexOf("DATE") != -1)	if(eval(arr[0]+strIndex).value==_environment.dateFormat) eval(arr[0]+strIndex).value="";
				 if(arr[3].indexOf("TIME") != -1)	if(eval(arr[0]+strIndex).value==_environment.timeFormat) eval(arr[0]+strIndex).value="";
				 strVal = replaceSpacesObject(eval(arr[0]+strIndex),true);
				 if ((strVal=="")&&(arr[2])==true){
				  strBMsg=strBMsg+"* "+arr[1]+"\n";
				  arrBMsg[arrBMsg.length] = arr[1];
				  if (blnFocus){
				   strFocusobj = arr[0]+strIndex;
				   blnFocus=false;
				  }
				  hasErr = true;
				  if (obj.className.indexOf("Error")==-1)
   					if(!obj.readOnly)
   						obj.className = obj.className + "Error";
				 }
				 else{
				 	obj.className = obj.className.replace("Error","");
				 	hasErr = false;
				 }
				 if (!validateDataType(arr[3],strVal)){
				  strIMsg=strIMsg+"* "+arr[1]+ " " + getDataTypeDesc(arr[3])+"\n";
				  arrEMsg[arrEMsg.length] = arr[1]+ " " + getDataTypeDesc(arr[3]);
				  if (blnFocus){
				   strFocusobj = arr[0]+strIndex;
				   blnFocus=false;
				  }
				  if (obj.className.indexOf("Error")==-1)
   					if(!obj.readOnly)
   						obj.className = obj.className + "Error";
				 }
				 else{
				 	if (!hasErr)
				 		obj.className = obj.className.replace("Error","");
				 }
				 break;
				}
				case "select-one":{
				 if (eval(arr[0]+strIndex+'.selectedIndex==-1')){
					strVal="";
				 }
				 else{
					strVal = eval(arr[0]+strIndex+'.options['+arr[0]+strIndex+'.selectedIndex].value;');
				 }
				 if ((strVal=="")&&(arr[2])==true){
				  strBMsg=strBMsg+"* "+arr[1]+"\n";
				  arrBMsg[arrBMsg.length] = arr[1];
				  if (blnFocus){
				   strFocusobj = arr[0]+strIndex;
				   blnFocus=false;
				  }
				  if (obj.className.indexOf("Error")==-1)
   					obj.className = obj.className + "Error";
				 }
				 else{
				 	obj.className = obj.className.replace("Error","");
				 }
				 break;
				}
				case "textarea":{
				 strVal = replaceSpacesObject(eval(arr[0]+strIndex),true);
				 if ((strVal=="")&&(arr[2])==true){
				  strBMsg=strBMsg+"* "+arr[1]+"\n";
				  arrBMsg[arrBMsg.length] = arr[1];
				  if (blnFocus){
				   strFocusobj = arr[0]+strIndex;
				   blnFocus=false;
				  }
				 }
				 if (!validateDataType(arr[3],strVal)){
				  strIMsg=strIMsg+"* "+arr[1]+ " " + getDataTypeDesc(arr[3])+"\n";
				  arrEMsg[arrEMsg.length] = arr[1]+ " " + getDataTypeDesc(arr[3]);
				  if (blnFocus){
				   strFocusobj = arr[0]+strIndex;
				   blnFocus=false;
				  }
				 }
				 break;
				}
			}
			strIndex = "["+(j+1)+"]";
    }
    strIndex = "";
    arrIndex=0;
   }
 
  if (strBMsg!=""){
   strMsg = "Please enter the following mandatory information\n" + strBMsg;
   IsValid=false;
  }
  if (strIMsg!=""){
   strMsg += "Incorrect data has been entered in the following field/s \n" + strIMsg; 
   IsValid=false;
  }
  if ((displaymsg)&&(strMsg!="")){
   	if(arrBMsg.length==0) objBlank.hasMessages=false;
	if(arrEMsg.length==0) objError.hasMessages=false;
   var errDTO = new errorDisplayDTO(objBlank,objError,strFocusobj);
   displayErrorMessages(errDTO);
    IsValid=false;
  }
  else{
  	if(displaymsg){
	  	if((arrBMsg.length==0)&&(arrEMsg.length==0)){
	  		var errDTO = new errorDisplayDTO();
	  		errDTO.hasErrors = false;
	  		displayErrorMessages(errDTO);
	  	}
  	}
  }
  if (strFocusobj!=""){
  	if (eval(strFocusobj).type != "hidden" && eval(strFocusobj).disabled != true) {
	    eval(strFocusobj).focus();
    }
  }
  if (IsValid){
  /*	if (validateBusinessLogic){
  		IsValid = validateBusinessLogic();
  	}*/
  }
  return IsValid;
 }

//Replace only spaces when string is passed
function replaceSpacesString(str){
	return str.replace(/(^\s*)|(\s*$)/g, ""); 
}

//Replace only spaces when object is passed
function replaceSpacesObject(obj,IsAssign){
	var str = obj.value;
	if (IsAssign) {obj.value = str.replace(/(^\s*)|(\s*$)/g, ""); return obj.value;}
	else {return str.replace(/(^\s*)|(\s*$)/g, "");}
}

//Replace only spaces when object is passed
function replaceSpacesObjectUpper(obj,IsAssign){
	var str = obj.value;
	if (IsAssign) {obj.value = (str.replace(/(^\s*)|(\s*$)/g, "")).toUpperCase(); return obj.value;}
	else {return str.replace(/(^\s*)|(\s*$)/g, "");}
}

//Return date array
function getDateArray(strDateVal, strFormat){
	var arrDateVal;
	switch (strFormat){
		case "DD/MM/YYYY":
			arrDateVal = strDateVal.split("/");					
			break;
		case "DD-MON-YYYY":
			arrDateVal = strDateVal.split("-");
			arrDateVal[1] = getMonthNumber(arrDateVal[1]);					
			break;
		case "DD MON YYYY":
			arrDateVal = strDateVal.split(" ");
			arrDateVal[1] = getMonthNumber(arrDateVal[1]);					
			break;
		case "DD MMM YYYY":
			arrDateVal = strDateVal.split(" ");
			arrDateVal[1] = getMonthNumber(arrDateVal[1]);					
			break;
		case "dd MMM yyyy":
			arrDateVal = strDateVal.split(" ");
			arrDateVal[1] = getMonthNumber(arrDateVal[1]);					
			break;
	}
	return arrDateVal;
}

//Check Date is greter than

function compareIsGreaterThan(strDate1, strDate2, strFormat){
	var formatStr = _environment.dateFormat;
	if (strFormat) formatStr=(strFormat=="")?formatStr:strFormat;
	var arrDate1 =getDateArray(strDate1, formatStr);
	var arrDate2 =getDateArray(strDate2, formatStr);
	var strDat1 = arrDate1[2].toString()+arrDate1[1].toString()+arrDate1[0].toString();
	var strDat2 = arrDate2[2].toString()+arrDate2[1].toString()+arrDate2[0].toString();
	return (parseFloat(strDat1)<=parseFloat(strDat2));
}

//Function to check date format
	function checkDate(str,strFormat,isMsgDisplay){
		var isValid			= false;
		var strDateVal	= str;
		var arrDateVal;
		if (strDateVal=="") return true;
		if (strFormat=="") strFormat=_environment.dateFormat;
		
		switch (strFormat){
			case "DD/MM/YYYY":
				isValid=(strDateVal.search( /^[0-3]{1}\d{1}\/[0-1]{1}\d{1}\/\d{4}$/ )!=-1);
				if(isValid) arrDateVal = getDateArray(strDateVal, strFormat);					
				break;
			case "DD-MON-YYYY":
				isValid=(strDateVal.search( /^[0-3]{1}\d{1}-[a-zA-Z]{3}-\d{4}$/ )!=-1);				
				if(isValid)	arrDateVal =getDateArray(strDateVal, strFormat);					
				break;
			case "DD MON YYYY":
				isValid=(strDateVal.search( /^[0-3]{1}\d{1}\s{1}[a-zA-Z]{3}\s{1}\d{4}$/ )!=-1);				
				if(isValid) arrDateVal =getDateArray(strDateVal, strFormat);
				break;
			case "DD MMM YYYY":
				isValid=(strDateVal.search( /^[0-3]{1}\d{1}\s{1}[a-zA-Z]{3}\s{1}\d{4}$/ )!=-1);				
				if(isValid) arrDateVal = getDateArray(strDateVal, strFormat);
				break;
			case "dd MMM yyyy":
				isValid=(strDateVal.search( /^[0-3]{1}\d{1}\s{1}[a-zA-Z]{3}\s{1}\d{4}$/ )!=-1);				
				if(isValid) arrDateVal = getDateArray(strDateVal, strFormat);
				break;
		}
		
		if (!isValid){
			if (isMsgDisplay) alert("Invalid Date Format. Please enter a valid date in "+strFormat+" format.");
			return false;
		}
		else{			
			if ((arrDateVal[2]).length!=4){
				if (isMsgDisplay) alert("Invalid Year. Please enter a valid year.");
				return false;
			}
			else{
				if (!((Number(arrDateVal[1])>0)&&(Number(arrDateVal[1])<13))){
					if (isMsgDisplay) alert("Invalid Month. Please enter a valid month.");
					return false;
				}
				else{
					var intDays = getDaysInMonth(arrDateVal[1], arrDateVal[2]);
					if ((Number(arrDateVal[0])>intDays)||(Number(arrDateVal[0]==0))){
						if (isMsgDisplay) alert("Invalid day in the month. Please enter a valid day between 01-"+intDays);
						return false;
					}
				}
			}
		}		
		return true;
	}
	
	//Funciton to get month number when month is passed as short month
	function getMonthNumber(strMonth){
		switch (strMonth.toUpperCase()){
			case "JAN":return "01";break;
			case "FEB":return "02";break;
			case "MAR":return "03";break;
			case "APR":return "04";break;
			case "MAY":return "05";break;
			case "JUN":return "06";break;
			case "JUL":return "07";break;
			case "AUG":return "08";break;
			case "SEP":return "09";break;
			case "OCT":return "10";break;
			case "NOV":return "11";break;
			case "DEC":return "12";break;
			default		:return "00";break;
		}
	}

	function getDaysInMonth(intMonth, intYear){
		var strMonth = "0"+intMonth.toString();
		strMonth = strMonth.substr(strMonth.length-2,2);
		switch (strMonth){
			case "04"	:return 30;break;
			case "06"	:return 30;break;
			case "09"	:return 30;break;
			case "11"	:return 30;break;
			case "02"	:return isLeapYear(intYear)?29:28;break;
			default		:return 31;break;
		}
	}
	
	//Funciton to get short month when month is passed as integer
	function getShortMonth(intMonth){
		var strMonth = "0"+intMonth.toString();
		strMonth = strMonth.substr(strMonth.length-2,2);
		switch (strMonth){
			case "01":return "JAN";break;
			case "02":return "FEB";break;
			case "03":return "MAR";break;
			case "04":return "APR";break;
			case "05":return "MAY";break;
			case "06":return "JUN";break;
			case "07":return "JUL";break;
			case "08":return "AUG";break;
			case "09":return "SEP";break;
			case "10":return "OCT";break;
			case "11":return "NOV";break;
			case "12":return "DEC";break;
		}
	}
	
	//Function to check if the yeaar is a leap year.
	function isLeapYear(intYear){
		return ((((intYear % 4)==0)&&((intYear % 100)!=0))||((intYear % 400)==0));
	}
	
	
	
	// Function to round from 2 decimals to integer and to get the next value
	// for 25, 50 and 100 cents. Formatting done from 2 decimals to 0 decimals.
	// Passing parameters are object(textbox), rounding decimals no(0,1,2), next value
	// want in cents(0,25,50,100), number of decimals to format(0,1,2) and whether the
	// value should be assigned to the object or return to the function(true,false)
	function FormatNRoundNumber(objName,intRound,NextVal,intDec,IsAssign,maxlen){
		var strTmp = objName.value;
		var strFirstVal = objName.value;
		var strTmpint="";
		var strTmpdec="";
		var strTmpdec1="";
		var hasdecimals=false;
		if ((isNaN(strTmp))||(strTmp==".")) strTmp="";
			
		if (strTmp!=""){
			if (strTmp.indexOf(".")<0){
				strTmp = parseFloat(strTmp) + ".0000000000";
			}
			else{
				hasdecimals=true;
				strTmpint = strTmp.substr(0,strTmp.indexOf("."));
				strTmpint = (strTmpint=="")?"0":parseFloat(strTmpint);
				strTmp = strTmpint + "." + (strTmp.substr(strTmp.indexOf(".")+1,strTmp.length)+"0000000000").substr(0,9);
			}

			switch (NextVal){
				case 25 :
					strTmpint = strTmp.substr(0,strTmp.indexOf("."));
					strTmpdec = strTmp.substr(strTmp.indexOf("."),5);
					if ((parseFloat(strTmpdec)>0)&&(parseFloat(strTmpdec)<=0.25))
					{
						strTmp = strTmpint + ".2500000000";
					}
					else if ((parseFloat(strTmpdec)>0.25)&&(parseFloat(strTmpdec)<=0.5))
					{
						strTmp = strTmpint + ".5000000000";
					}
					else if ((parseFloat(strTmpdec)>0.5)&&(parseFloat(strTmpdec)<=0.75))
					{
						strTmp = strTmpint + ".7500000000";
					}
					else if (parseFloat(strTmpdec)>0.75)
					{
						strTmp = (parseFloat(strTmpint)+1) + ".0000000000";
					}
					break;
				case 50 :
					strTmpint = strTmp.substr(0,strTmp.indexOf("."));
					strTmpdec = strTmp.substr(strTmp.indexOf("."),5);
					if ((parseFloat(strTmpdec)>0)&&(parseFloat(strTmpdec)<=0.5))
					{
						strTmp = strTmpint + ".5000000000";
					}
					else if (parseFloat(strTmpdec)>0.5)
					{
						strTmp = (parseFloat(strTmpint)+1) + ".0000000000";
					}
					break;
				case 100:
					strTmpint = strTmp.substr(0,strTmp.indexOf("."));
					strTmpdec = strTmp.substr(strTmp.indexOf(".")+1,5);
					if (parseFloat(strTmpdec)>0)
					{
						strTmp = (parseFloat(strTmpint)+1) + ".0000000000";
					}
					break;
				default :
					if(intRound>0){
						strTmp=roundNumber(strTmp, intRound);
					}
					else{
						if(intDec>3){
							strTmp=roundNumber(strTmp, intDec);
						}
					}

				/*switch (intRound)
					{
						
						
						case 0:
							strTmp		=	Math.round(strTmp) + ".0000000000";
							break;
						case 1:
							strTmpint = strTmp.substr(0,strTmp.indexOf("."));
							strTmpdec = strTmp.substr(strTmp.indexOf(".")+1,5);
							strTmpdec = strTmpdec.substr(0,1) + "." + strTmpdec.substr(1,5);
							strTmpdec = Math.round(strTmpdec);
							if (parseFloat(strTmpdec)>9)
							{
								strTmp = (parseFloat(strTmpint)+1) + ".0000000000";
							}
							else
							{
								strTmp = strTmpint + "." + strTmpdec + "0000000000";
							}
							break;
						case 2:
							strTmpint = strTmp.substr(0,strTmp.indexOf("."));
							strTmpdec = strTmp.substr(strTmp.indexOf(".")+1,1);
							strTmpdec1 = strTmp.substr(strTmp.indexOf(".")+2,4);
							strTmpdec1 = strTmpdec1.substr(0,1) + "." + strTmpdec1.substr(1,4);
							strTmpdec1 = Math.round(strTmpdec1);
							if (parseFloat(strTmpdec1)>9)
							{
								strTmpdec = (parseFloat(strTmpdec)+1);
								if (parseFloat(strTmpdec)>9)
								{
									strTmp = (parseFloat(strTmpint)+1) + ".0000000000";
								}
								else
								{
									strTmp = strTmpint + "." + strTmpdec + "000000000";
								}
							}
							else
							{
								strTmp = strTmpint + "." + strTmpdec + strTmpdec1 + "000000000";
							}
							break;
						default:
								
					}*/
			}
		}
		strTmp=strTmp.toString();
		if(strTmp.indexOf(".")==-1){
			strTmp = strTmp + ".0000000000";
		}
		if((strTmp.indexOf(".")==0)&&(parseFloat(strTmp)>0)){
			strTmp = "0"+strTmp;
		}
		switch (intDec)
		{
			case 0 :
				strTmp = strTmp.substr(0,strTmp.indexOf("."));
				break;
			case 1 :
				strTmp = strTmp.substr(0,strTmp.indexOf(".")+2);
				break;
			case 2 :
				strTmp = strTmp.substr(0,strTmp.indexOf(".")+3);
				break;
			case 3 :
				strTmp = strTmp.substr(0,strTmp.indexOf(".")+4);
				break;
			case 4 :
				strTmp = strTmp.substr(0,strTmp.indexOf(".")+5);
				break;
			case 5 :
				strTmp = strTmp.substr(0,strTmp.indexOf(".")+6);
				break;
			case 6 :
				strTmp = strTmp.substr(0,strTmp.indexOf(".")+7);
				break;
			case 7 :
				strTmp = strTmp.substr(0,strTmp.indexOf(".")+8);
				break;
			default:
				strTmp = strTmp.substr(0,strTmp.indexOf(".")+3);
		}

		

		if((!hasdecimals)&&(intDec>2)) strTmp = strTmp.substr(0,strTmp.indexOf("."));

		if(parseFloat(strTmp)<=0) strTmp="";
		if(parseInt(maxlen)>0){
			if(parseInt(maxlen)<strTmp.length){
				strTmp = strTmp.substr(0,maxlen);
			}
		}
		if (IsAssign)
		{
			objName.value = strTmp;
		}
		else
		{
			return strTmp;
		}
	}

	function roundNumber(num, dec) {
		var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
		return result;
	}
/*------------------------Data type validation related functions - End-----------------*/

//Function to validate data objects for data types
 function validatePopUpData(objArray,displaymsg){
  var strBMsg="";
  var strIMsg="";
  var strMsg="";
  var blnFocus=true;
  var intLen = objArray.length;
  var arrSchema;
  var str; 
  var strVal="";
  var strFocusobj="";
  var IsValid=true;
  
  var objBlank = new errorMessageDTO();
  var objError = new errorMessageDTO();
  
  var arrBMsg = objBlank.messages;
  var arrEMsg = objError.messages;
  
  for(var i=0;i<intLen;i++){
   arr = objArray[i];
   var objCtrl = arr[0];
	var hasErr = false;
	doCaseChange(objCtrl,arr[3]);
	switch (objCtrl.type){
		case "text":{
		 if(arr[3].indexOf("DATE") != -1)	if(objCtrl.value==_environment.dateFormat) objCtrl.value="";
	     if(arr[3].indexOf("TIME") != -1)	if(eval(arr[0]+strIndex).value==_environment.timeFormat) eval(arr[0]+strIndex).value="";
		 strVal = replaceSpacesObject(objCtrl,true);
		 if ((strVal=="")&&(arr[2])==true){
		  strBMsg=strBMsg+"* "+arr[1]+"\n";
		  arrBMsg[arrBMsg.length] = arr[1];
		  if (blnFocus){
		   strFocusobj = objCtrl;
		   blnFocus=false;
		  }
		  hasErr = true;
		  if (objCtrl.className.indexOf("Error")==-1)
			if(!objCtrl.readOnly)
				objCtrl.className = objCtrl.className + "Error";
		 }
		 else{
			objCtrl.className = objCtrl.className.replace("Error","");
			hasErr = false;
		 }
		 if (!validateDataType(arr[3],strVal)){
		  strIMsg=strIMsg+"* "+arr[1]+ " " + getDataTypeDesc(arr[3])+"\n";
		  arrEMsg[arrEMsg.length] = arr[1]+ " " + getDataTypeDesc(arr[3]);
		  if (blnFocus){
		   strFocusobj = objCtrl;
		   blnFocus=false;
		  }
		  if (objCtrl.className.indexOf("Error")==-1)
			if(!objCtrl.readOnly)
				objCtrl.className = objCtrl.className + "Error";
		 }
		 else{
			if((strVal!="")&&((arr[3].indexOf("DECIMAL")>=0)||(arr[3].indexOf("NUMBER")>=0))){
				if(!parseFloat(strVal)>0){ objCtrl.value="";
				}
			}
			if (!hasErr)
				objCtrl.className = objCtrl.className.replace("Error","");
		 }
		 break;
		}
		case "select-one":{
		 if (objCtrl.selectedIndex==-1){
			strVal="";
		 }
		 else{
			strVal = objCtrl.options[objCtrl.selectedIndex].value;
		 }
		 if ((strVal=="")&&(arr[2])==true){
		  strBMsg=strBMsg+"* "+arr[1]+"\n";
		  arrBMsg[arrBMsg.length] = arr[1];
		  if (blnFocus){
		   strFocusobj = objCtrl;
		   blnFocus=false;
		  }
		  if (objCtrl.className.indexOf("Error")==-1)
			objCtrl.className = objCtrl.className + "Error";
		 }
		 else{
			objCtrl.className = objCtrl.className.replace("Error","");
		 }
		 break;
		}
		case "textarea":{
		 strVal = replaceSpacesObject(objCtrl,true);
		 if ((strVal=="")&&(arr[2])==true){
		  strBMsg=strBMsg+"* "+arr[1]+"\n";
		  arrBMsg[arrBMsg.length] = arr[1];
		  if (blnFocus){
		   strFocusobj = objCtrl;
		   blnFocus=false;
		  }
		 }
		 if (!validateDataType(arr[3],strVal)){
		  strIMsg=strIMsg+"* "+arr[1]+ " " + getDataTypeDesc(arr[3])+"\n";
		  arrEMsg[arrEMsg.length] = arr[1]+ " " + getDataTypeDesc(arr[3]);
		  if (blnFocus){
		   strFocusobj = objCtrl;
		   blnFocus=false;
		  }
		 }
		 break;
		}
	  }
	}
 
  if (strBMsg!=""){
   strMsg = "Please enter the following mandatory information\n" + strBMsg;
   IsValid=false;
  }
  if (strIMsg!=""){
   strMsg += "Incorrect data has been entered in the following field/s \n" + strIMsg; 
   IsValid=false;
  }
  if ((displaymsg)&&(strMsg!="")){
   	if(arrBMsg.length==0) objBlank.hasMessages=false;
	if(arrEMsg.length==0) objError.hasMessages=false;
   var errDTO = new errorDisplayDTO(objBlank,objError,strFocusobj);
   displayErrorMessages(errDTO);
    IsValid=false;
  }
  else{
  	if(displaymsg){
	  	if((arrBMsg.length==0)&&(arrEMsg.length==0)){
	  		var errDTO = new errorDisplayDTO();
	  		errDTO.hasErrors = false;
	  		displayErrorMessages(errDTO);
	  	}
  	}
  }
  if (strFocusobj!=""){
  	if (eval(strFocusobj).type != "hidden" && eval(strFocusobj).disabled != true) {
	    eval(strFocusobj).focus();
    }
  }
  if (IsValid){
  /*	if (validateBusinessLogic){
  		IsValid = validateBusinessLogic();
  	}*/
  }
  return IsValid;
 }

 //Function to check date format
	function checkTime(str,strFormat,isMsgDisplay){
		var isValid			= false;
		var strDateVal	= str;
		var arrDateVal;
		if (strDateVal=="") return true;
		if (strFormat=="") strFormat=_environment.timeFormat;

		switch (strFormat){
			case "HH:mm":
				isValid=(strDateVal.search( /^[0-2]{0,1}\d{2}:[0-5]{0,1}\d{2}$/ )!=-1);
				if(isValid) arrDateVal = getTimeArray(strDateVal, strFormat);
				break;
			case "HH:mm:ss":
				isValid=(strDateVal.search( /^[0-2]{0,1}\d{1}:[0-5]{0,1}\d{1}:[0-5]{0,1}\d{1}$/ )!=-1);
				if(isValid)	arrDateVal =getTimeArray(strDateVal, strFormat);
				break;
			case "hh:mm":
				isValid=(strDateVal.search( /^[0-1]{0,1}\d{2}:[0-5]{0,1}\d{2}$/ )!=-1);
				if(isValid) arrDateVal =getTimeArray(strDateVal, strFormat);
				break;
			case "hh:mm:ss":
				isValid=(strDateVal.search( /^[0-1]{0,1}\d{1}:[0-5]{0,1}\d{1}:[0-5]{0,1}\d{1}$/ )!=-1);
				if(isValid) arrDateVal = getTimeArray(strDateVal, strFormat);
				break;
		}
		if (!isValid){
			if (isMsgDisplay) alert("Invalid time Format. Please enter a valid time in "+strFormat+" format.");
			return false;
		}
		else{
			if (arrDateVal[0]){
				if (!((Number(arrDateVal[0])>=0)&&(Number(arrDateVal[0])<=23))){
					if (isMsgDisplay) alert("Invalid Hour. Please enter a valid hour.");
					return false;
				}
			}
			if (arrDateVal[1]){
				if (!((Number(arrDateVal[1])>=0)&&(Number(arrDateVal[1])<=59))){
					if (isMsgDisplay) alert("Invalid Minutes. Please enter a valid minutes.");
					return false;
				}
			}
			if (arrDateVal[2]){
				if (!((Number(arrDateVal[2])>=0)&&(Number(arrDateVal[2])<=59))){
					if (isMsgDisplay) alert("Invalid Seconds. Please enter a valid seconds.");
					return false;
				}
			}
		}
		return true;
	}

	//Return time array
	function getTimeArray(strDateVal, strFormat){
		var arrDateVal;
		switch (strFormat){
			case "HH:mm":
				arrDateVal = strDateVal.split(":");
				break;
			case "HH:mm:ss":
				arrDateVal = strDateVal.split(":");
				break;
			case "hh:mm:ss":
				arrDateVal = strDateVal.split(":");
				break;
			case "hh:mm":
				arrDateVal = strDateVal.split(":");
				break;
		}
		return arrDateVal;
	}
// Documnet validation
function validateDocumetns(errMsg,arrDocControls){
		var hasErrors=false;
		if(arrDocControls){
			for(var count=0;count<arrDocControls.length;count++){
					var docCode=eval(arrDocControls[count][1]).value;
					var selectedFileLoc=eval(arrDocControls[count][3]).value;
					    if((docCode!=null && docCode!="") && (selectedFileLoc==null || selectedFileLoc=="")){
							hasErrors=true;
							errMsg.messages[errMsg.messages.length]=_claims_docupload.valselectfilepath+(count+1);	
					}else if((docCode==null || docCode=="") && (selectedFileLoc!=null && selectedFileLoc!="")){
						hasErrors=true;
						errMsg.messages[errMsg.messages.length]=_claims_docupload.valDocDesc+(count+1);
					}
			}
		}
		if(hasErrors)errMsg.title=_property.valMandatory;
		return hasErrors;
	}

function _clearValuesForDocumetns(arrDocControls){
		if(arrDocControls){
			for(var count=0;count<arrDocControls.length;count++){
					if(eval(arrDocControls[count][5]).checked){
						eval(arrDocControls[count][5]).checked=false;
						eval(arrDocControls[count][1]).value="";
						eval(arrDocControls[count][2]).value="";
						eval(arrDocControls[count][3]).value="";
					}
			}
		}
	}


function viewUploadedDocumetns(comName,funcType){
		var objArra=document.getElementsByName(comName);
	    if(objArra.length>0){
			var refNo=objArra[0].value;
				if(refNo!=null && refNo!=""){
					var objWin = window.open(appUrl+"nwp:UplodedDocs&RN="+refNo+"&FT="+funcType,"UploadedDocuments","height=400,width=652,left=10,top=10,scrollbars=yes,toolbars=no,status=yes,menu=yes");
					 objWin.focus();				
				}else{
					alert(_claims_docupload.noDocs);	
				}
		}
}
