/*
	*********************************************************
		Description		: Cal functions
		Author			: Waqas Azeem
		Version			: 1.0
		Last Modified	: 5th Feb 2009
	*********************************************************	
	*/

<!--

	CalMonths = ["January", "February", "March", "April", "May", "June","July", "August", "September", "October", "November", "December"];
	MonthText=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sept','Oct','Nov','Dec'];
	MonthNumber=['01','02','03','04','05','06','07','08','09','10','11','12'];

	CalMonth1 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
	CalMonth2 = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

	var IE = document.all?true:false
	if (!IE) document.captureEvents(Event.MOUSEMOVE)

	document.onmousemove = getMouseXY;

	var tempX = 0;
	var tempY = 0;

	var Xbuffer = 0;
	var Ybuffer = 20;

	var thisMonth = new Date();
    var CurrentMonth = thisMonth.getMonth() + 1;
    var CurrentDay = thisMonth.getDate();
    var CurrentYear = thisMonth.getYear();
	if (CurrentYear < 2000)	CurrentYear += 1900;

	var month=CurrentMonth;
	var year=CurrentYear;
	var target;

	function choose(day){
		if (day < 10) day = "0"+day;
		var short_month = MonthNumber[month-1]
		if (target == 1){
			document.getElementById('ctlAvailCriteria_cboDepMon').value = short_month + "/" + year;
			selYrDeptOnChange();
			setReturnCalendarDate();
			document.getElementById('ctlAvailCriteria_cboDepDay').value= day;
		}else{
            document.getElementById('ctlAvailCriteria_cboRetMon').value = short_month + "/" + year;
			selYrRetuOnChange();
			setReturnCalendarDate();
			document.getElementById('ctlAvailCriteria_cboRetDay').value= day;
        }
		go('one',0);
	}
	function Next(){
		month=month+1;
		if (month >12){
			month = 1;
			year++;
		}
		go('one',1);
	}
	function Prev(){
		month=month-1;
		if (month < 1){
			month = 12;
			year--;
		}
		go('one',1);
	}
	function Calendar_get_daysofmonth(monthNo, p_year) {
		if ((p_year % 4) == 0) {
        		if ((p_year % 100) == 0 && (p_year % 400) != 0)	return CalMonth1[monthNo];
                return CalMonth2[monthNo];
		}else	return CalMonth1[monthNo];
	}
	function getMouseXY(e) 
	{
	   if (IE){
			tempX = event.clientX + document.documentElement.scrollLeft + Xbuffer;
	    		tempY = event.clientY + document.documentElement.scrollTop +  Ybuffer;
		}else{
	    	tempX = e.pageX + Xbuffer;
	    	tempY = e.pageY + Ybuffer;
	  	}  
	 	if (tempX < 0){tempX = 0;}
	  	if (tempY < 0){tempY = 0;}  
	  	return true;
	}
	function printDay(day,month,year){
		if ((day == CurrentDay) && (month == CurrentMonth) && (year == CurrentYear))	cclass = 'current_day';
		else	cclass= 'cal_day';
		if (month == CurrentMonth && year == CurrentYear){
			if (day < CurrentDay){
				cclass = 'passed_day';
			}
		}
		if (cclass == 'passed_day')	var link = '';
		else						var link = "<a href=\"javascript:choose('"+day+"');\" class=\""+cclass+"\">";
		return "<td class=\""+cclass+"\">"+link+""+day+"</a></td>";
	}
	function go(id,cmd){
	    tempX = tempX;
		d = document.getElementById(""+id);
		var MaxMonthYear = document.getElementById('ctlAvailCriteria_cboDepMon').options[document.getElementById('ctlAvailCriteria_cboDepMon').length-1].text;
		var retCal = 0;
		var nullOB = 0;
		if (cmd == 2){
			target = 1;
			d.style.top = tempY + "px";
			d.style.left = tempX - 110 + "px";	
			cmd = 1;
		}
		if (cmd == 3){
			target = 2;
            d.style.top = tempY + "px";
            d.style.left = tempX - 110 + "px";
			retCal = 1;
			if (document.getElementById('ctlAvailCriteria_cboDepMon').value == -1){
			nullOB = 1;
			}
            cmd = 1;
        }

		var test = new Date(year,month-1,1);
		var first_day  = test.getDay()-1;
		if (first_day == -1)	first_day = 6;

		var a = document.getElementById('lblOne');
		var days_in_month = Calendar_get_daysofmonth(month-1,year);
        if (cmd == 1){
			str = "<table class=\"cal_table\" cellpadding='1'>";
			str += "<tr><td colspan='6' class='month_head' style='text-align:center;'><span style='padding-left:20px;'>" + "</span></td><td style='text-align:center;text-decoration:none;color:#ffffff;background-color:#0069aa;'><a href=\"javascript:go('one',0);\" class=\"close\" style='color:#ffffff;text-decoration:none;'><strong>x</strong</a></td></tr>";
			str += "<tr><td class=\"arrow_head\">";
			if (CurrentMonth == month && CurrentYear == year)	str += "&#171;";
			else												str += "<a href=\"javascript:Prev();\">&#171;</a>";

			str += "</td><td colspan=\"5\" class=\"month_head\">";
			str += CalMonths[month-1] +  " " + year + "</td><td class=\"arrow_head\">";

			var short_month = CalMonths[month-1].substr(0,3).toUpperCase() + " " + year;
			if (MaxMonthYear.toUpperCase() == short_month)str += "&#187;";	
			else							str += "<a href=\"javascript:Next();\">&#187;</a>";

			str +=  "</td></tr>";
			str += "<tr><td class=\"day_head\">Mon</td><td class=\"day_head\">Tue</td><td class=\"day_head\">Wed</td><td class=\"day_head\">Thu</td><td class=\"day_head\">Fri</td><td class=\"day_head\">Sat</td><td class=\"day_head\">Sun</td></tr>";
			str += "<tr>";
			var day = 0;
			for (var x=0;x<first_day;x++)	str += "<td>&nbsp;</td>";	//blank days before month starts
			for (var x=first_day;x<7;x++){  day++;  str += printDay(day,month,year); }
			str += "</tr>";

			while (day < days_in_month){
				str += "<tr>";
				for (var x=0;x<7;x++){
					day++;
					if (day > days_in_month)	str += "<td>&nbsp;</td>";
					else						str += printDay(day,month,year);
				}
				str += "</tr>";
			}
			str += "</table>";
			a.innerHTML = str;
			changeVisible();
		}
		else{
 			a.innerHTML = "&nbsp;";
 			CloseCal();
		}
	}

 /* CalCommon */
function setModel(model){
    for(var key in model){
    if(model[key].match('null')){
    	model[key]="";
    }
     setField(key,model[key]);
  	}
  	
	}

	// Set the Navigate URL for a Anchor Tag
	function setLinkUrl(strControlID, strNavigateURL){
		var objControl = getFieldByID(strControlID) ;
		objControl.href= strNavigateURL;
	}
	
	// Set Style Sheet
	function setStyleClass(strControlID, strClassName){
		var objControl = getFieldByID(strControlID) ;
		objControl.className = strClassName
	}
	
	// get Style Sheet
	function getStyleClass(strControlID){
		var objControl = getFieldByID(strControlID) ;
		return objControl.className;
	}
		
	// Write to Divs / span
	function DivWrite(strDivID, strText){
		var objControl ;
		if (document.getElementById)
		{	objControl = document.getElementById(strDivID);
			objControl.innerHTML = "";
			objControl.innerHTML = strText;
		}
		else if (document.all)
		{
			objControl = document.all[strDivID];
			objControl.innerHTML = strText;
		}
		else if (document.layers)
		{
			objControl = document.layers[strDivID];
			objControl.document.open();
			objControl.document.write(strText);
			objControl.document.close();
		}
	}
	
	// Read the div information
	function DivRead(strDivID){
		var objControl ;
		if (document.getElementById)
		{	objControl = document.getElementById(strDivID);
			return objControl.innerHTML
		}
		else if (document.all)
		{
			objControl = document.all[strDivID];
			return objControl.innerHTML;
		}
		else if (document.layers)
		{
			return "";
		}
	}
	
	// Set Image 	
	function setImage(strImageID, strImagePath){
		var objControl = getFieldByID(strImageID);
		objControl.src = strImagePath;
	}
	
	// Set Visibility
	function setVisible(strControlID, blnVisible){
		var objControl = getFieldByID(strControlID);
		if (!blnVisible){
			objControl.style.visibility = "hidden";
		}else{
			objControl.style.visibility = "visible";
		}
	}
	
	// Get Visibility
	function getVisible(strControlID){
		var objControl = getFieldByID(strControlID);
		if (objControl.style.visibility == "visible"){
			return true;
		}else{
			return false;
		}
	}

	// Get the Field Type
	function getFieldType(objControl){
		return objControl.type.toUpperCase();
	}
	
	// Get the control as Object
	function getFieldByID(strControlID){
		return document.getElementById(strControlID) ;
	}
	
	function getFieldByName(strControlName){
		return document.getElementsByName(strControlName) ;
	}
	
	
	// Set ReadOnly	
	function ReadOnly(strControlID, blnEnable){
		var objControl = getFieldByID(strControlID) ;
		var strType = getFieldType(objControl);
		
		switch (strType){
			case "TEXT" : objControl.readOnly = blnEnable ; break ;
			case "PASSWORD" : objControl.readOnly = blnEnable ; break ;
			case "TEXTAREA" : objControl.readOnly = blnEnable ; break ;
		}	
	}
	
	// Enable / Disable a Conrol
	function Disable(strControlID, blnEnable){
		var objControl = getFieldByID(strControlID) ;
		var strType = getFieldType(objControl);
		
		switch (strType){
			case "CHECKBOX" : 
				objControl = getFieldByName(strControlID);
				var intLengrh = objControl.length ;
				for (var i = 0 ; i < intLengrh ; i++){
					objControl[i].disabled = blnEnable;
				}
				break;
			
			case "RADIO" : 
				objControl = getFieldByName(strControlID);
				var intLengrh = objControl.length ;
				for (var i = 0 ; i < intLengrh ; i++){
					objControl[i].disabled = blnEnable;
				}
				break;
			default :
				objControl.disabled = blnEnable ; break ;
		}	
	}
	
	// Read Only
	function readOnly(strControlID, blnEnable){
		var objControl = getFieldByID(strControlID) ;
		var strType = getFieldType(objControl);
		
		switch (strType){
			case "TEXT" : objControl.readOnly = blnEnable; break;
			case "PASSWORD" : objControl.readOnly = blnEnable; break;
			case "TEXTAREA" : objControl.readOnly = blnEnable; break;
		}
	}
	
	// Set values to a control 
	function getText(strControlID){
		var objControl = getFieldByID(strControlID) ;
		var strType = getFieldType(objControl);
		var strReturn = "" ;
		
		switch (strType){
			case "TEXT" : strReturn = objControl.value; break;
			case "PASSWORD" : strReturn = objControl.value; break;
			case "HIDDEN" : strReturn = objControl.value; break;
			case "TEXTAREA" : strReturn = objControl.value; break;
			case "CHECKBOX" : 
				objControl = getFieldByName(strControlID);
				var intLengrh = objControl.length ;
				for (var i = 0 ; i < intLengrh ; i++){
					if (objControl[i].checked){
						if (strReturn != ""){strReturn += ","; }
						strReturn += objControl[i].value;
					}
				}				
				break;
			
			case "RADIO" : 
				objControl = getFieldByName(strControlID);
				var intLengrh = objControl.length ;
				for (var i = 0 ; i < intLengrh ; i++){
					if (objControl[i].checked){
						if (strReturn != ""){strReturn += ","; }
						strReturn += objControl[i].value;
					}
				}				
				break;
				
			case "SELECT-ONE" :
				strReturn = objControl.options[objControl.selectedIndex].text;
				break;
					
			case "SELECT-MULTIPLE" :
				var intLengrh = objControl.length ;
				for (var i = 0 ; i < intLengrh ; i++){
					if (objControl.options[i].selected){
						if (strReturn != ""){strReturn += ","; }
						strReturn += objControl.options[i].text;
					}
				}				
				break;
		}
		return strReturn;
	}
	
	// Set values to a control 
	function getValue(strControlID){
		var objControl = getFieldByID(strControlID) ;
		var strType = getFieldType(objControl);
		var strReturn = "" ;
		
		switch (strType){
			case "TEXT" : strReturn = objControl.value; break;
			case "PASSWORD" : strReturn = objControl.value; break;
			case "HIDDEN" : strReturn = objControl.value; break;
			case "TEXTAREA" : strReturn = objControl.value; break;
			case "CHECKBOX" : 
				objControl = getFieldByName(strControlID);
				var intLength = objControl.length ;
				if (intLength > 0)
				for (var i = 0 ; i < intLength ; i++){
					if (strReturn != ""){strReturn += ","; }
					if (objControl[i].checked){
						strReturn += objControl[i].value + "^";
					}
					strReturn += objControl[i].checked;
				}				
				break;
			
			case "RADIO" : 
				objControl = getFieldByName(strControlID);
				var intLength = objControl.length ;
				for (var i = 0 ; i < intLength ; i++){
					if (objControl[i].checked){
						if (strReturn != ""){strReturn += ","; }
						strReturn += objControl[i].value;
					}
				}				
				break;
				
			case "SELECT-ONE" :
				strReturn = objControl.value ;
				break;
					
			case "SELECT-MULTIPLE" :
				var intLengrh = objControl.length ;
				for (var i = 0 ; i < intLengrh ; i++){
					if (objControl.options[i].selected){
						if (strReturn != ""){strReturn += ","; }
						strReturn += objControl.options[i].value;
					}
				}				
				break;
		}
		return strReturn;
	}
	
	// Set values to a control 
	function setField(strControlID, strControlValue){
		var objControl = getFieldByID(strControlID) ;
		var strType = getFieldType(objControl);
		switch (strType){
			case "TEXT" : objControl.value = strControlValue ; break ;
			case "PASSWORD" : objControl.value = strControlValue ; break ;
			case "HIDDEN" : objControl.value = strControlValue ; break ;
			case "TEXTAREA" : objControl.value = strControlValue ; break ;
			case "CHECKBOX" : 
				objControl = getFieldByName(strControlID);
				var intLength = objControl.length ;
				if (strControlValue != true && strControlValue != false){
					var arrConValue = strControlValue.split(",");
					var intArrLength = arrConValue.length ;
					if (strControlValue == ""){
						for (var i = 0 ; i < intLength ; i++){
							objControl[i].checked = false;
						}				
					}
					
					for (var x = 0; x < intArrLength ; x++){
						for (var i = 0 ; i < intLength ; i++){
							if (objControl[i].value == arrConValue[x]){
								if (!objControl[i].disabled){
									objControl[i].checked = true;
								}
								break;
							}
						}
					}
				}else{
					for (var i = 0 ; i < intLength ; i++){
						if (!objControl[i].disabled){
							objControl[i].checked = strControlValue;
						}
						
					}
				}
				break;
			
			case "RADIO" : 
				objControl = getFieldByName(strControlID);
				var intLengrh = objControl.length ;
				if (strControlValue == ""){
					for (var i = 0 ; i < intLengrh ; i++){
						objControl[i].checked = false;
					}				
				}
				for (var i = 0 ; i < intLengrh ; i++){
					if (objControl[i].value == strControlValue){
						objControl[i].checked = true;
						break;
					}
				}				
				break;
				
			case "SELECT-ONE" :
				var intLengrh = objControl.length ;
				for (var i = 0 ; i < intLengrh ; i++){
					if (objControl.options[i].value == strControlValue){
						objControl.options[i].selected = true;
						break;
					}
				}
				break;
					
			case "SELECT-MULTIPLE" :
				var intLengrh = objControl.length ;
				var arrConValue = strControlValue.split(",");
				var intArrLength = arrConValue.length ;
				if (strControlValue == ""){
					for (var i = 0 ; i < intLengrh ; i++){
						objControl.options[i].selected = false;
					}				
				}
				for (var x = 0; x < intArrLength ; x++){
					for (var i = 0 ; i < intLengrh ; i++){
						if (objControl.options[i].value == arrConValue[x]){
							objControl.options[i].selected = true;
							break;
						}
					}				
				}
				break;
		}
	}
	
	
	function numberConvertToArabic(intNumber){
		var arrNumbers = new Array("&#1632;","&#1633;","&#1634;","&#1635;","&#1636;","&#1637;","&#1638;","&#1639;","&#1640;","&#1641;")
		intNumber = String(intNumber);
		var intLength = intNumber.length;
		var strReturn = "" ;
		for (var i = 0 ; i < intLength ; i++){
			if (intNumber.substr(i,1) != " "){
				if (!isNaN(intNumber.substr(i,1))){
					strReturn += arrNumbers[intNumber.substr(i,1)];
				}else{
					strReturn += intNumber.substr(i,1);
				}
			}else{
				strReturn += intNumber.substr(i,1);
			}
		}
		
		return strReturn;
	}
	
	function CurrencyFormat(amount, decimals){
		if ((String(amount) == "") || (amount == ".00")){amount = 0;}
		amount = addDecimals(amount, decimals);
		var Num = amount.toString().replace(/\$|\,/g,'');
		var dec = Num.indexOf(".");
		var intCents = ((dec > -1) ? "" + Num.substring(dec,Num.length) : ".00");
		Num = "" + parseInt(Num);
		var intValue = "";
		var intReturnValue = "";
		if (intCents.length == 2) intCents += "0";
		if (intCents.length == 1) intCents += "00";
		if (intCents == "") intCents += ".00";
		var count = 0;
		for (var k = Num.length-1; k >= 0; k--) {
			var oneChar = Num.charAt(k);
			if (count == 3){
				intValue += ",";
				intValue += oneChar;
				count = 1;
				continue;
			}else {
				intValue += oneChar;
				count ++;
			}
		}
		for (var k = intValue.length-1; k >= 0; k--) {
			var oneChar = intValue.charAt(k);
			intReturnValue += oneChar;
		}
		intReturnValue = intReturnValue + intCents;
		if (intReturnValue.indexOf("-,") != -1)
		{
			intReturnValue = intReturnValue.replace("-,","-");
		}
		return intReturnValue;
	}

	function addDecimals(strValue, intDecimals){
		var strReturn = "";
		var intDevide = "1"
		for (var i = 0 ; i < Number(intDecimals) ; i++){
			intDevide += "0";
		}
		strValue = String(Math.round(Number(strValue) * Number(intDevide))/Number(intDevide))
		var intIndex = strValue.indexOf(".")
		var strDecimals = "";
		if (intIndex !=  -1){
			var arrData = strValue.split(".");
			if (arrData.length > 1){
				strDecimals = arrData[1]
				for (var i = strDecimals.length ; i < Number(intDecimals) ; i++){
					strDecimals += "0" ;
				}	
				strDecimals = strDecimals.substr(0, intDecimals);
			}else{
				for (var i = 0 ; i < Number(intDecimals) ; i++){
					strDecimals += "0" ;
				}	
			}
			strReturn = arrData[0] + "." + strDecimals ;		
		}else{
			for (var i = 0 ; i < Number(intDecimals) ; i++){
				strDecimals += "0" ;
			}	
			strReturn = strValue + "." + strDecimals ;
		}
		return strReturn;
	}
	
	function raiseError(strErrNo){
		var strMsg = arrError[strErrNo];
		if (arguments.length >1){
			for (var i = 0 ; i < arguments.length - 1 ; i++){
				strMsg = strMsg.replace("#" + (i+1), arguments[i+1]);
			}
		}
		return strMsg;
	}	
	
	/*
	*
	*/
	function checkInvalidChar(strValue, strMessage, strControlText){
		var strChkEmpty = FindChar(strValue)
		if (strChkEmpty != "0"){
			return buildError(strMessage, strChkEmpty[0], strControlText);
		}else{
			return "";
		}
	}
	
	function buildError(strMessage){
		if (arguments.length >1){
			for (var i = 0 ; i < arguments.length - 1 ; i++){
				strMessage = strMessage.replace("#" + (i+1), arguments[i+1]);
			}
		}
		return strMessage;
	}
	
	function FindChar(StringIn){
		// ------------- Check the standards characters
		var CharInArray = new Array("'","<",">","^","/",'"',"~");
		for (var i=0;i<StringIn.length;i++){
			for (var j=0;j<CharInArray.length;j++){
				if (StringIn.charAt(i)==CharInArray[j]){
					var CharOutArray=new Array();
					CharOutArray[0]=CharInArray[j];
					CharOutArray[1]=eval(i+1);
					return (CharOutArray);
				}
			}
		}
		return "0";
	}
	
	function showContextMenu(){
		//should return false in production
		return false;
	}
	
	
	function rightTrim(strValue){
		var objRegExp = /^([\w\W]*)(\b\s*)$/;
	
	      if(objRegExp.test(strValue)) {
	       //remove trailing a whitespace characters
	       strValue = strValue.replace(objRegExp, '$1');
	    }
	  	return strValue;
	}
	
	function leftTrim(strValue){
		var objRegExp = /^(\s*)(\b[\w\W]*)$/;
	
	  	if(objRegExp.test(strValue)) {
	    	//remove leading a whitespace characters
	       strValue = strValue.replace(objRegExp, '$2');
	    }
	  	return strValue;
	}
	
	function trim(strValue){
		var objRegExp = /^(\s*)$/;
	
	    //check for all spaces
	    if(objRegExp.test(strValue)) {
	       strValue = strValue.replace(objRegExp, '');
	       if( strValue.length == 0)
	          return strValue;
	    }
	
	   //check for leading & trailing spaces
	   objRegExp = /^(\s*)([\W\w]*)(\b\s*$)/;
	   if(objRegExp.test(strValue)) {
	       //remove leading and trailing whitespace characters
	       strValue = strValue.replace(objRegExp, '$2');
	    }
	
	  	return strValue;
	}
	
	function replaceall(strValue, strRepValue, strNValue){
		var i = strValue.indexOf(strRepValue);
		while(i > -1){
			strValue = strValue.replace(strRepValue, strNValue);
			i = strValue.indexOf(strRepValue);
		}
		return strValue
	}
	
	function ClearCache(){
		try{
			window.clipboardData.clearData()
		}catch(e){}
	}
	
	function CloseChildWindow(){
		try{
			if ((objCW) && (!objCW.closed)){
				if 	(blnChildOpen){
					objCW.close();
				}
			}
		}catch (ex){}
	}
	
	
	function childWindowClosed(){
		try{
			opener.blnChildOpen = false
		}catch (ex){}
	}
	
	function backClick(){
		backBClick();
	}
	
	function converToTitleCase(strValue){
		var arrValues = strValue.split(" ");
		strValue = "";
		var strFC = ""
		var strOC = ""
		for (var i = 0; i < arrValues.length ; i++){
			strOC = "";
			if (strValue != ""){strValue += " ";}
			arrValues[i] = trim(arrValues[i]);
			arrValues[i] = arrValues[i].toLowerCase();
			strFC = arrValues[i].substr(0,1).toUpperCase();
			if (arrValues[i].length > 1){
				strOC = arrValues[i].substr(1,arrValues[i].length - 1).toLowerCase()
			}
			strValue += strFC + strOC;
		}
		return strValue
	}

	function buttonDisable(strID, blnValue, strType){
		var strClass = "Button"
		if (!blnValue){
			switch (strType){
				case "D" : strClass += " ButtonDefault"; break
				case "M" : strClass += " ButtonMedium"; break
				case "L" : strClass += " ButtonLarge"; break
			}
		}else{
			switch (strType){
				case "D" : strClass += " ButtonDefaultDisable"; break
				case "M" : strClass += " ButtonMediumDisable"; break
				case "L" : strClass += " ButtonLargeDisable"; break
			}
		}
		setStyleClass(strID, strClass);
		Disable(strID, blnValue)
	}
	
	function arrayClone(arrSource, arrTarget){
		arrTarget.length = 0 ; 
		for (var i = 0 ; i < arrSource.length ; i++){
			arrTarget[i] = new Array();
			for (var m = 0 ; m < arrSource[i].length ; m++){
				arrTarget[i][m] = arrSource[i][m];
			}
		}
	}

/* end cal common */

/*
	*********************************************************
		Description		: Auto Date Generator (Fully client side)
		Author			: Waqas Azeem
		Version			: 1.0
		Last Modified	: 5th Feb 2009
	*********************************************************	
	*/

	function dateChk(strID){
		var arrMonth = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sept','Oct','Nov','Dec'];
		var dtToday = new Date();
		var dtCurrD	= dtToday.getDate();
		var dtCurrM	= (dtToday.getMonth() + 1);
		var dtCurrY	= dtToday.getFullYear();
	
		var objC = document.getElementById(strID);
		var strEValue = "";
		if (objC == null){
			strEValue = strID;
		}else{
			strEValue = objC.value
		}
		
		
		var blnReturn = true;
		var dtCreatD = dtCurrD;
		var dtCreatM = dtCurrM;
		var dtCreatY = dtCurrY;
		
		strEValue = replaceall(strEValue, "/", "^");
		strEValue = replaceall(strEValue, "-", "^");
		strEValue = replaceall(strEValue, ".", "^");
		strEValue = replaceall(strEValue, " ", "^");
		if (strEValue.indexOf("^") != -1){
			var arrDts = strEValue.split("^");
			switch (arrDts.length){
				case 1 : 
					if (String(arrDts[0]) != ""){dtCreatD = arrDts[0];} 
					break;
				case 2 : 
					if (String(arrDts[0]) != ""){dtCreatD = arrDts[0];} 
					if (String(arrDts[1]) != ""){dtCreatM = arrDts[1];}
					break;
				case 3 :
					if (String(arrDts[0]) != ""){dtCreatD = arrDts[0];} 
					if (String(arrDts[1]) != ""){dtCreatM = arrDts[1];}
					if (String(arrDts[2]) != ""){dtCreatY = arrDts[2];}
					break;
			}
		}else{
			var intCLength = strEValue.length;
			for (var i = 0 ; i < intCLength ; i++){
				if (i <= 1){
					if (i == 0){dtCreatD = "";}
					dtCreatD += strEValue.substr(i,1);
				}
				
				if (i > 1 && i <= 3){
					if (i == 2){
						if (intCLength >= 4){
							dtCreatM = "";
							dtCreatM += strEValue.substr(i,1);
						}else{
							if (strEValue.substr(i,1) != 0){
								dtCreatM = "";
								dtCreatM += strEValue.substr(i,1);
							}
						}
					}else{
						dtCreatM += strEValue.substr(i,1);
					}
				}
				
				if (i > 3 && i <= 7){
					if (i == 4){dtCreatY = "";}
					dtCreatY += strEValue.substr(i,1);
				}
			}
		}
		
		// ------------------------------------ Validate
		if (!validDate(dtCreatD, dtCreatM, dtCreatY)){
			switch (strEValue.length){
				case 2 :
					if (Number(strEValue.substr(0,1)) > 0){dtCreatD = strEValue.substr(0,1);}
					if (Number(strEValue.substr(1,1)) > 0){dtCreatM = strEValue.substr(1,1);}
					break;
				case 3:	
					if (Number(strEValue.substr(1,2)) <= 12) {
						if (Number(strEValue.substr(0,1)) > 0){dtCreatD = strEValue.substr(0,1);}
						if (Number(strEValue.substr(1,2)) > 0){dtCreatM = strEValue.substr(1,2);}
					}else{
						if (Number(strEValue.substr(0,1)) > 0){dtCreatD = strEValue.substr(0,1);}
						if (Number(strEValue.substr(1,1)) > 0){dtCreatM = strEValue.substr(1,1);}
						if (Number(strEValue.substr(2,1)) > 0){dtCreatY = strEValue.substr(2,1);}
					}
				case 4:	
					if (Number(strEValue.substr(1,2)) <= 12) {
						if (Number(strEValue.substr(0,1)) > 0){dtCreatD = strEValue.substr(0,1);}
						if (Number(strEValue.substr(1,2)) > 0){dtCreatM = strEValue.substr(1,2);}
						if (Number(strEValue.substr(3,1)) > 0){dtCreatY = strEValue.substr(3,1);}
					}else{
						if (Number(strEValue.substr(0,1)) > 0){dtCreatD = strEValue.substr(0,1);}
						if (Number(strEValue.substr(1,1)) > 0){dtCreatM = strEValue.substr(1,1);}
						if (Number(strEValue.substr(2,2)) > 0){dtCreatY = strEValue.substr(2,2);}
					}
					break;
				default :
					if (objC == null){
						return "";
					}else{
						objC.focus()
						blnReturn = false;	
					}
					break;
			}
		}
		
		if (!validDate(dtCreatD, dtCreatM, dtCreatY)){
			if (objC == null){
				return "";
			}else{
				objC.focus()
				blnReturn = false;	
			}
		}
		
		if (blnReturn && strEValue != ""){
			if (dtCreatY.length < 4){
				dtCreatY = String(dtCurrY).substr(0, (String(dtCurrY).length - dtCreatY.length)) + dtCreatY
			}else if (dtCreatY.length > 4){
				dtCreatY = String(dtCurrY).substr(0, 4);
			}
		
			// ------------------------------------ Formatting the date 
			var strFormat = "dd/mm/yyyy";
			if (arguments.length == 2){
				if (arguments[1] != ""){
					strFormat = arguments[1];
				}
			}
			
			var strDefSep = "" ;
			var arrSep = new Array("/","-"," ",".");
			
			for (var i = 0 ; i < arrSep.length ; i++){
				if (strFormat.indexOf(arrSep[i]) != -1){
					strDefSep = arrSep[i];
					break;
				}
			}
			if (strDefSep == ""){
				if (objC == null){
					return "";
				}else{
					objC.focus()
					blnReturn = false;	
				}
			}
			
			var strReturnDt = "";
			if (Number(dtCreatD) < 10){dtCreatD = "0" + Number(dtCreatD)};
			if (Number(dtCreatM) < 10){dtCreatM = "0" + Number(dtCreatM)};
			var strFormat1  = "DD" + strDefSep + "MM" + strDefSep + "YYYY"
			var strFormat2  = "DD" + strDefSep + "MM" + strDefSep + "YY"
			var strFormat3  = "DD" + strDefSep + "MMM" + strDefSep + "YYYY"
			var strFormat4  = "DD" + strDefSep + "MMM" + strDefSep + "YY"
			var strFormat5  = "DD" + strDefSep + "MMMM" + strDefSep + "YYYY"
			var strFormat6  = "DD" + strDefSep + "MMMM" + strDefSep + "YY"
			var strFormat7  = "MM" + strDefSep + "YYYY"
			var strFormat8  = "MM" + strDefSep + "YY"
			var strFormat9  = "MMM" + strDefSep + "YYYY"
			var strFormat10 = "MMM" + strDefSep + "YY"
			var strFormat11 = "MMMM" + strDefSep + "YYYY"
			var strFormat12 = "MMMM" + strDefSep + "YY"
			
			
			var strDW = "th" ;
			var strCM = "," ;
			if ((dtCreatD == "01") || (dtCreatD == "21")  || (dtCreatD == "31")){strDW = "st";}
			if ((dtCreatD == "02") || (dtCreatD == "22")){strDW = "nd";}
			if ((dtCreatD == "03") || (dtCreatD == "23")){strDW = "rd";}
			if (strDefSep != " "){strDW = ""; strCM = "";}
			
			switch (strFormat.toUpperCase()){
				case strFormat1	: strReturnDt = dtCreatD + strDefSep + dtCreatM + strDefSep + dtCreatY; break;
				case strFormat2	: strReturnDt = dtCreatD + strDefSep + dtCreatM + strDefSep + String(dtCreatY).substr(2,2); break;
				case strFormat3	: strReturnDt = dtCreatD + strDefSep + arrMonth[Number(dtCreatM)-1].substr(0,3) + strDefSep + dtCreatY; blnReturn = true; break;
				case strFormat4	: strReturnDt = dtCreatD + strDefSep + arrMonth[Number(dtCreatM)-1].substr(0,3) + strDefSep + String(dtCreatY).substr(2,2); blnReturn = true; break;
				case strFormat5	: strReturnDt = dtCreatD + strDW + strDefSep + arrMonth[Number(dtCreatM)-1] + strCM + strDefSep + dtCreatY; blnReturn = true; break;
				case strFormat6	: strReturnDt = dtCreatD + strDW + strDefSep + arrMonth[Number(dtCreatM)-1] + strCM + strDefSep + String(dtCreatY).substr(2,2); blnReturn = true; break;
				case strFormat7	: strReturnDt = dtCreatM + strDefSep + dtCreatY; break;
				case strFormat8	: strReturnDt = dtCreatM + strDefSep + String(dtCreatY).substr(2,2); break;
				case strFormat9	: strReturnDt = arrMonth[Number(dtCreatM)-1].substr(0,3) + strDefSep + dtCreatY; blnReturn = true; break;
				case strFormat10: strReturnDt = arrMonth[Number(dtCreatM)-1].substr(0,3) + strDefSep + String(dtCreatY).substr(2,2); blnReturn = true; break;
				case strFormat11: strReturnDt = arrMonth[Number(dtCreatM)-1] + strCM + strDefSep + dtCreatY; blnReturn = true; break;
				case strFormat12: strReturnDt = arrMonth[Number(dtCreatM)-1] + strCM + strDefSep + String(dtCreatY).substr(2,2); blnReturn = true; break;
				
			}
			if (objC == null){
				return strReturnDt;
			}else{
				objC.value = strReturnDt;
			}
		}
		return blnReturn;
	
		
		function replaceall(strValue, strRepValue, strNValue){
			var i = strValue.indexOf(strRepValue);
			while(i > -1){
				strValue = strValue.replace(strRepValue, strNValue);
				i = strValue.indexOf(strRepValue);
			}
			return strValue
		}
		
		function validDate(dtD, dtM, dtY){
			if ((isNaN(dtD)) || (isNaN(dtM)) || (isNaN(dtY))){
				return false;
			}
			
			if ((Number(dtD) == 0) || (Number(dtM) == 0) || (Number(dtY) == 0)){
				return false;
			}
			
			// is it Valid Date
			if (Number(dtM) > 12){	
				return false;
			}
			
			if (Number(dtD) > getDaysInMonth(dtM, dtY)){	
				return false;
			}
			return true;
		}
	}
	
	// Add Months
	function addMonths(intMonths){
		var dtToday = new Date();
		if (arguments.length == 2){
			if (arguments[1] != ""){
				dtToday = new Date(arguments[1].substr(6,4), Number(arguments[1].substr(3,2)) - 1, arguments[1].substr(0,2));
			}
		}
		
		// See if we got anything
		var dtTD = dtToday.getDate();
		
		// Retrieve the Date pieces
		var strMonth = dtToday.getMonth() + new Number (intMonths);
		var strDay   = 1; //dtToday.getDate();
		var strYear  = dtToday.getFullYear();

		// Retrieve the Time pieces
		var strHour    = dtToday.getHours();
		var strMinutes = dtToday.getMinutes();
		var strSeconds = dtToday.getSeconds();
		var dtNew = new Date( strYear, strMonth, strDay, strHour, strMinutes, strSeconds);
		
		var dtNM = dtNew.getMonth() + 1;
		var dtND = dtNew.getDate();
		var dtNY = dtNew.getFullYear();
		
		if (Number(dtTD) > getDaysInMonth(dtNM, dtNY)){
			dtND = getDaysInMonth(dtNM, dtNY);
		}else{
			dtND = dtTD;
		}
		
		if (Number(dtND) < 10){dtND =  "0" + dtND;}
		if (Number(dtNM) < 10){dtNM =  "0" + dtNM;}
		
		// Create a new Date Object
		return dtND + "/" + dtNM + "/" + dtNY;
	}

	function CheckDates(tempIStartDate,tempIEndDate){
		var tempDay;
		var tempMonth;
		var tempYear;
	
		tempDay=tempIStartDate.substring(0,2);
		tempMonth=tempIStartDate.substring(3,5);
		tempYear=tempIStartDate.substring(6,10); 	
		var tempOStartDate=(tempYear+tempMonth+tempDay);
		
		
		tempDay=tempIEndDate.substring(0,2);
		tempMonth=tempIEndDate.substring(3,5);
		tempYear=tempIEndDate.substring(6,10); 	
		var tempOEndDate=(tempYear+tempMonth+tempDay);
		
		if (arguments.length == 2){
			if (tempOEndDate >= tempOStartDate){
				return true;
			}else{
				return false;
			}	
		}else{
			if (arguments[2] == true){
				if (tempOEndDate > tempOStartDate){
					return true;
				}else{
					return false;
				}	
			}
		}
	}
	
	function addDays(dtDate,intDays) {
		return new Date(dtDate.getTime() + Number(intDays) *24*60*60*1000);
	}
	
	function dateValidDate(strDate){
		var dtD = strDate.substring(0,2) 
		var dtM = strDate.substring(3,5)
		var dtY = strDate.substring(6,10) 
		if ((isNaN(dtD)) || (isNaN(dtM)) || (isNaN(dtY))){
			return false;
		}
		
		if ((Number(dtD) == 0) || (Number(dtM) == 0) || (Number(dtY) == 0)){
			return false;
		}
		
		// is it Valid Date
		if (Number(dtM) > 12){	
			return false;
		}
		
		if (Number(dtD) > getDaysInMonth(dtM, dtY)){	
			return false;
		}
		return true;
	}
	
	// Age Calculate
	function ageCalculate(strDOB){
		var dd = strDOB.substr(0,2);
		var mm = strDOB.substr(3,2);
		var yy = strDOB.substr(6,4);
		
		var days = new Date();
		if (arguments.length == 2){
			if (arguments[1] != ""){
				days = new Date(arguments[1].substr(6,4), Number(arguments[1].substr(3,2)) - 1, arguments[1].substr(0,2));
			}
		}
		
		var gdate = days.getDate();
		var gmonth = days.getMonth();
		var gyear = days.getFullYear();
		var age = gyear - yy;
		if((mm == (gmonth + 1)) && (dd <= parseInt(gdate))) {
			age = age;
		}
		else {
			if(mm <= (gmonth)) {
				age = age;
			}
			else {
				age = age - 1; 
			}
		}
		
		if (age == gyear){
			age = 0;
		}
		return age
	}
		
	
		
	// GET NUMBER OF DAYS IN MONTH
	function getDaysInMonth(month,year)  {
		var days;
		if (month==1 || month==3 || month==5 || month==7 || month==8 ||
			month==10 || month==12)  days=31;
		else if (month==4 || month==6 || month==9 || month==11) days=30;
		else if (month==2)  {
			if (isLeapYear(year)) {
				days=29;
			}
			else {
				days=28;
			}
		}
		return (days);
	}
	
	function getWDay(strD){
		var arrW = new Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat");
		var dtDate = new Date(strD.substr(6,4), Number(strD.substr(3,2)) - 1, strD.substr(0,2))
		return arrW[dtDate.getDay()];
	}	
	
	// CHECK TO SEE IF YEAR IS A LEAP YEAR
	function isLeapYear (Year) {
		if (((Year % 4)==0) && ((Year % 100)!=0) || ((Year % 400)==0)) {
			return (true);
		}
		else {
			return (false);
		}
	}
	
	function DateToString(dtdate){
		var dtCM = dtdate.getMonth() + 1;
		var dtCD = dtdate.getDate();
		if (dtCM < 10){dtCM = "0" + dtCM}
		if (dtCD < 10){dtCD = "0" + dtCD}
		return dtCD + "/" + dtCM + "/" + dtdate.getFullYear();;
	}
	
	function dateConvertToMMDD(strDate){
		if (strDate != ""){
			var strDay=strDate.substring(0,2);
			var strMonth=strDate.substring(3,5);
			var strYear=strDate.substring(6,10); 	
			strDate = strMonth + "/" + strDay + "/" + strYear;
		}
		return strDate;
	}
	
	function ageCompare(strDOB, strDate, intAge){
		var arrAge = computeAge(strDOB, strDate).split("/");
		var blnReturn = true;
		if (Number(arrAge[2]) > intAge){blnReturn = false;}
		if (blnReturn){
			if (Number(arrAge[2]) == intAge){
				if ((Number(arrAge[0]) == 0) && (Number(arrAge[1]) == 0)) {
					blnReturn = true
				}else{
					blnReturn = false;
				}
			}
		}
		return blnReturn;
		
		function computeAge(strDOB, strCDate){
			var yd = Number(strCDate.substr(6,4));	
			var md = Number(strCDate.substr(3,2));
			var dd = Number(strCDate.substr(0,2));
	
			var yb = Number(strDOB.substr(6,4));	
			var mb = Number(strDOB.substr(3,2));
			var db = Number(strDOB.substr(0,2));
			
			var mLength = 0 
			var isJulian = 0 
		      
			var ma=0;
			var ya=0;
	
			var da = dd-db;
			if(da<0){
				md--;
				if(md<1){
					yd--;
					if(mLength){
						md=md+parseInt(365/mLength);
					}else{
						md=md+12;
					}
				}
				if(mLength==0){ 
					ml=getMonthLength(md,yd,isJulian);
					da=da+ml;
				}else{
					da+=mLength;
				}
			}
	
			ma = md - mb;
			// Month borrowing code - borrows months from years.
			if(ma<0){
				yd--;
				if(mLength!=0){
					ma=ma+parseInt(365/mLength);
				}else{
					ma=ma+12;
				}
			}
			ya = yd - yb;
			return da + "/" + ma + "/" + ya;
			
			function getMonthLength(month,year,julianFlag){
				var ml;
				if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10||month==12)
					{ml = 31;}
				else {
					if(month==2) {
						ml = 28;
						if(!(year%4) && (julianFlag==1 || year%100 || !(year%400)))
							ml++;
					}
					else
						{ml = 30;}
				}
				return ml;    
			}
		}
	}
	
	function CheckDateTime(strFromDate, strFromTime, strToDate, strToTime){
		var tempDay;
		var tempMonth;
		var tempYear;
		var strFromTime = strFromTime.replace(":", "");
		var strToTime = strToTime.replace(":", "");
		
		tempDay=strFromDate.substring(0,2);
		tempMonth=strFromDate.substring(3,5);
		tempYear=strFromDate.substring(6,10); 	
		var tempOStartDate= (tempYear+tempMonth+tempDay) + strFromTime;
		
		tempDay=strToDate.substring(0,2);
		tempMonth=strToDate.substring(3,5);
		tempYear=strToDate.substring(6,10); 	
		var tempOEndDate=(tempYear+tempMonth+tempDay) + strToTime;
		
		if (tempOEndDate >= tempOStartDate){
			return true;
		}else{
			return false;
		}	
	}
	
	
	// -------------------------------- End of File -----------------------------------

-->