// ************************* GLOBAL VARIABLE DECLARATION **********************************//
var hidnElement = null;
var element = null;

// ************************* PRINT FUNCTION **********************************//

function printPg()
{

	if(document.all.tags("div").item("print"))
	{
		if(document.all.tags("div").item("print").length)
		{
			for(var i=0; i<document.all.tags("div").item("print").length; i++)
			{
				document.all.tags("div").item("print")[i].style.visibility = "hidden"
			}
			window.print()
			for(var i=0; i<document.all.tags("div").item("print").length; i++)
			{
				document.all.tags("div").item("print")[i].style.visibility = "visible"
			}
		}
		else
		{
			document.all.tags("div").item("print").style.visibility = "hidden"
			window.print()
			document.all.tags("div").item("print").style.visibility = "visible";
		}
	}
	else
	{
		window.print()
	}
}


//***************** RETRIVAL FUNCTION FROM DATABASE TO FIELD **************************//


function retriveDate(dte, objDisInpt, objHidnInpt)
{
	var dayDate, mDate, yDate, arrDate
	if(!isEmpty(dte))
	{
		arrDate = dte.split("/")

		dayDate = arrDate[0]
		mDate = arrDate[1]
		yDate = arrDate[2]

		if(objDisInpt.type)
		{
			objDisInpt.value = dayDate + "/" + mDate + "/" + yDate
			objHidnInpt.value = yDate + "/" + mDate + "/" + dayDate
		}
		else
		{
			//alert(objHidnInpt)
			//alert(objDisInpt)
			//alert(yDate + "/" + mDate + "/" + dayDate)
			//document.getElementById(objDisInpt).value = dayDate + "/" + mDate + "/" + yDate
			document.getElementById("non$"+objHidnInpt).value = dayDate + "/" + mDate + "/" + yDate
			document.getElementById(objHidnInpt).value = yDate + "/" + mDate + "/" + dayDate
		}
	}
}


function retriveTime(dte, objDisInpt, objHidnInpt)
{
	var dayDate, mDate, yDate, arrDate
	if(!isEmpty(dte))
	{
		arrDate = dte.split(":")

		dayDate = arrDate[2]
		mDate = arrDate[1]
		yDate = arrDate[0]

		if(objDisInpt.type)
		{
			objDisInpt.value = yDate + ":" + mDate + ":" + dayDate
			objHidnInpt.value = yDate + ":" + mDate + ":" + dayDate
		}
		else
		{
			document.getElementById(objDisInpt).value = yDate + ":" + mDate + ":" + dayDate 
			document.getElementById(objHidnInpt).value = yDate + ":" + mDate + ":" + dayDate
		}
	}
}

function listValue(obj,objValue)
{
	var total
	var objType = ""
	if(obj.type)
	{
		objType = obj.type
	}
	else
	{
		if(obj.length)
		{
			if(obj[0].type)
			{
				objType = obj[0].type
			}
		}
	}
	total = obj.length
	switch(objType)
	{
		case "select-one" :
		{ 
			for(var k=0;k<total;k++)
			{
				if(obj[k].value == objValue)
				{
					obj.selectedIndex = k;
					obj[k].selected = true;
				}
			}
			break;
		}
		case "select-multiple" :
		{
			break;
		}
		case "radio" :
		{
			if(obj.length)
			{
				for(var k=0;k<total;k++)
				{
					if(obj[k].value == objValue)
					{
						obj[k].checked = true;
					}
				}
			}
			else
			{
				if(obj.value == objValue)
				{
					obj.checked = true;
				}
				else
				{
					obj.checked = false;
				}
			}
			break;
		}
		case "checkbox" :
		{
			break;
		}
	}

}



function listValue1(obj,objValue)
{
	var total
	
	if(obj.length && obj.type)
	{
		total = obj.length
		switch(obj.type)
		{
			case "select-one" :
			{
				for(var k=0;k<total;k++)
				{
					if(obj[k].value == objValue)
					{
						obj.selectedIndex = k;
						obj[k].selected = true;
					}
				}
				break;
			}
			case "select-multiple" :
			{
				break;
			}
		}
	}

	if(obj.length && obj[0].type)
	{
		total = obj.length
		switch(obj[0].type)
		{
			case "radio" :
			{
				for(var k=0;k<total;k++)
				{
					if(obj[k].value == objValue)
					{
						obj[k].checked = true;
					}
				}
				break;
			}
			case "checkbox" :
			{
				break;
			}
		}
	}
}


//******************* Common Validation Functions ***********************//
var cmnt = ""


function isNum(num)
{
	num = trim(num)
	validCH="0123456789.";
	var i = 0

	trim(num)
	if(!isEmpty(num))
	{
		if(isNaN(num))
		{
			cmnt = "#Name# is not a Number"
			return(false)
		}
	}
	else
	{
		cmnt = "#Name# is not a Number"
		return(false)
	}

	return true;

}



function isNumber(num)
{
	num = trim(num)
	validCH="0123456789.";
	var i = 0

	trim(num)
	if(!isEmpty(num))
	{
		if(isNaN(num))
		{
			cmnt = "#Name# is not a Number"
			return(false)
		}
	}
	return true;
}

function isAmt(num)
{
	num = trim(num)

	if(!isEmpty(num))
	{
		if(isNaN(num))
		{
			cmnt = "Please enter appropriate value for #Name#"
			return(false)
		}
		else
		{
			if(num<0)
			{
				cmnt = "Please enter appropriate value for #Name#"
				return(false)
			}
		}
	}
	
	return true;
}




function isGRN(num)
{
	num = trim(num)
	if(!isEmpty(num))
	{
		if(!isNum(num))
		{
			return(false)
		}
		else
		{
			if(!isGTZero(num))
			{
				return false
			}
		}
	}
	return true;
}

function isGRN1(num)
{
	num = trim(num)
	if(!isEmpty(num))
	{
		if(!isNum(num))
		{
			return(false)
		}
		else
		{
			
		}
	}
	return true;
}


function isGTZero(num)
{
	num = trim(num)

	if(!isEmpty(num))
	{
		if(isNaN(num))
		{
			cmnt = "Please enter appropriate value for #Name#"
			return(false)
		}
		else
		{
			if(num<=0)
			{
				cmnt = "Please enter appropriate value for #Name#"
				return(false)
			}
		}
	}
	else
	{
		cmnt = "Please enter appropriate value for #Name#"
		return(false)
	}

	return true;
}


function isDateLE(dte)
{

	if(!isEmpty(dte))
	{
		dte = trim(dte)

		arrDate = dte.split("/")
		arrDTToday = DtToday.split("/")
		
		dtDate=new Date((arrDate[1] + "/" + arrDate[0] + "/" + arrDate[2]))
		TDate=new Date((arrDTToday[1] + "/" + arrDTToday[0] + "/" + arrDTToday[2]))

		if(dtDate > TDate)
		{
			cmnt = "Please select appropriate Date for #Name#"
			return false
		}
	}

	return true;
}

function isDateLESS(dte)
{

	if(!isEmpty(dte))
	{
		dte = trim(dte)

		arrDate = dte.split("/")
		arrDTToday = DtToday.split("/")
		
		dtDate=new Date((arrDate[1] + "/" + arrDate[0] + "/" + arrDate[2]))
		TDate=new Date((arrDTToday[1] + "/" + arrDTToday[0] + "/" + arrDTToday[2]))

		if(dtDate < TDate)
		{
			cmnt = "Please select appropriate Date for #Name#"
			return false
		}
	}

	return true;
}


function isCurrentMonth(mth)
{

	if(!isEmpty(mth))
	{
		mth = trim(mth)

		arrDTToday = DtToday.split("/")
		
		if(mth != arrDTToday[1])
		{
			cmnt = "Invalid Month \nPlease select current Month"
			return false
		}
	}

	return true;
}

function isCurrentYear(yer)
{

	if(!isEmpty(yer))
	{
		yer = trim(yer)

		arrDTToday = DtToday.split("/")
		
		if(yer != arrDTToday[2])
		{
			cmnt = "Invalid Year \nPlease select current Year"
			return false
		}
	}

	return true;
}


function isNotNull(txt)
{
	txt = trim(txt)
	if(isEmpty(txt))
	{
		cmnt = "#Name# should not be Empty, or Please select the appropriate value"
		return false;
	}
	return true;
}


function isText(txt)
{
	txt = trim(txt)
	validCH="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ";
	var i = 0
	if(isEmpty(txt))
	{
		cmnt = "#Name# is not a valid Text"
		return false;
	}
	
	for(i=0;i<txt.length;i++)
	{
		if(validCH.indexOf(txt.charAt(i))==-1)
		{
			cmnt = "#Name# is not a valid text"
			return false;
		}
	}

	return true;
}



function isEmail(mail)
{
	var i = 0
	mail = trim(mail)
	at=mail.indexOf("@");
	lat=mail.lastIndexOf("@");
	dot=mail.indexOf(".");
	valid1="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-.@";


	if(isEmpty(mail))
	{
		return true;
	}
	
	if(at==-1 || dot==-1 || at==1 || dot==1 || at==mail.length || dot== mail.length || dot-1==at || at!=lat)
	{
		cmnt = "#Name# is not a valid Email address"
		return false;
	}

	for(i=0;i<mail.length;i++)
	{
		if(valid1.indexOf(mail.charAt(i))==-1)
		{
			cmnt = "#Name# is not a valid Email address"
			return false;
		}
	}

	if(mail.charAt(mail.length-1) == ".")
	{
		cmnt = "#Name# is not a valid Email address"
		return false;
	}

	return true;
}


//******************* Common Functions ***********************//

var winMain = null;

function winOpen(url, winName, width, height)
{
	if(winMain == null)
	{
		url = genURL(url)
		winMain = open(url,"common","height=" + height + ",width=" + width + ",directories=no,location=no,menubar=no,resizable=yes,scrollbars=yes,status=no,titlebar=no,toolbar=no")
		return winMain;
	}
}

function mywinOpen(url, winName, width, height)
{
	if(winMain == null)
	{
		url = genURL(url)
		winMain = open(url,"common","height=" + height + ",width=" + width + ",directories=no,location=no,menubar=no,resizable=no,scrollbars=no,status=no,titlebar=no,toolbar=no")
		return winMain;
	}
}

function winOpen1(url, winName, width, height)
{
	if(winMain == null)
	{
		url = genURL(url)
		winMain = open(url,"common","height=" + height + ",width=" + width + ",directories=no,location=no,menubar=yes,resizable=yes,scrollbars=yes,status=no,titlebar=no,toolbar=no")
		return winMain;
	}
}

function selectDatewithfisc(element, hidnElement)
{
	if(!hidnElement)
		{
			hidnElement = "hid" + element
		}
		
		if(document.getElementById(element))
		{
			if(document.getElementById(element).value != "")
			{
				var dte = document.getElementById(element).value.split("/")
				show_calendar(element, hidnElement, parseInt(dte[1]-1), dte[2])
			}
			else
			{
				show_calendar(element, hidnElement)
			}
			
	}
	//url = "/hms/giveMeDatewithfisc.asp?elementName=" + element + "&hidnElement=" + hidnElement;
	//winMain = window.open(url,"win1","toolbar=no,directories=no,resize=no,menubar=no,location=no,scrollbars=no,width=250,height=50,top=50,left=50,maximise=null")

}

function selectDate(element, hidnElement)
{
/*
	if(!hidnElement)
	{
		hidnElement = "hid" + element
	}
	url = "/hms/giveMeDate.asp?elementName=" + element + "&hidnElement=" + hidnElement;
	winMain = window.open(url,"win1","toolbar=no,directories=no,resize=no,menubar=no,location=no,scrollbars=no,width=250,height=50,top=50,left=50,maximise=null")
*/
	if(!hidnElement)
	{
		hidnElement = "hid" + element
	}
	
	if(document.getElementById(element))
	{
		if(document.getElementById(element).value != "")
		{
			var dte = document.getElementById(element).value.split("/")
			show_calendar(element, hidnElement, parseInt(dte[1]-1), dte[2])
		}
		else
		{
			show_calendar(element, hidnElement)
		}
		
	}
}

function genURL(strURL)
{
	if(strURL.indexOf("?") > 0)
	{
		strURL = strURL + "&rndNo=" + Math.random()
	}
	else
	{
		strURL = strURL + "?rndNo=" + Math.random()
	}
	return strURL
}

var replaceWith = "";
var v,status,msg,inp;

var re = new RegExp(" ","ig");

function isEmpty(val)
{
	val = val.replace(re,replaceWith);
	return(val == "")
}

function trim(inputString)
{
//	Removes leading and trailing spaces from the passed string. Also removes
//	consecutive spaces and replaces it with one space. If something besides
//	a string is passed in (null, custom object, etc.) then return the input.
	if (typeof inputString != "string")
	{
		return inputString;
	}
	var retValue = inputString;
	var ch = retValue.substring(0, 1);
	while (ch == " ")
	{
		// Check for spaces at the beginning of the string
		retValue = retValue.substring(1, retValue.length);
	      ch = retValue.substring(0, 1);
	}
	ch = retValue.substring(retValue.length-1, retValue.length);
	while (ch == " ")
	{
		// Check for spaces at the end of the string
		retValue = retValue.substring(0, retValue.length-1);
		ch = retValue.substring(retValue.length-1, retValue.length);
	}

/*
	while (retValue.indexOf("  ") != -1)
	{
		// Note that there are two spaces in the string - look for multiple spaces within the string
		retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length); // Again, there are two spaces in each of the strings
	}
*/
	return retValue; // Return the trimmed string back to the user
}





//******************** Form restore defaults all inputs ***************//
var resFrmMain

function restoreFrm(frm) 
{
	resFrmMain = frm
	var i = 0
	for(i=0;i<frm.length;i++)
	{
		//alert(frm.item(i).type)
		if(frm.item(i).type)
		{
			setDefaultValue(frm.item(i))
		}
	}
	return true;
}



function setDefaultValue(inpt)
{
	//alert(inpt.type)
	switch(inpt.type)
	{
		case "text" :
		{
			inpt.value = "";
			break;
		}
		case "password" :
		{
			inpt.value = "";
			break;
		}
		case "hidden" :
		{
			break;
		}
		case "select-one" :
		{
			inpt.selectedIndex = -1
			break;
		}
		case "select-multiple" :
		{
			selMulDefault(inpt);
			break;
		}
		case "radio" :
		{
			rDefault(inpt);
			break;
		}
		case "checkbox" :
		{
			cDefault(inpt);
			break;
		}
		case "textarea" :
		{
			inpt.value = ""
			break;
		}
		case "file" :
		{
			inpt.value = ""
			break;
		}
	}
}
//-----------------------select all check box--------------
//---------------------changes made by shukra -----------------
	function selectall(frm)
	{
		var i = 0
		for(i=0;i<frm.length;i++)
		{
			if (frm.item(i).type=="checkbox" && frm.item(i).disabled==false)
			{ 
				frm.item(i).checked=true;
			}
		}
		return true;
	}
	
//-----------------------de select all check box--------------
//---------------------changes made by shukra -----------------
	function uncheckall(frm)
	{
		
		var i = 0
		for(i=0;i<frm.length;i++)
		{
			if (frm.item(i).type=="checkbox")
			{
				frm.item(i).checked=false;
			}
		}
		return true;
	}



function selMulDefault(inpt)
{
	var strVal = ""
	var len = inpt.length
	var j =0
		
	for(j=0;j<len;j++)
	{
		if(inpt[j].selected)
		{
			inpt[j].selected = false;
		}
	}
}



function rDefault(inpt)
{
	var strVal = ""
	var nm = inpt.name
	var j =0
	if(resFrmMain[nm].length)
	{
		for(j=0;j<resFrmMain[nm].length;j++)
		{
			if(resFrmMain[nm][j].checked)
			{
				resFrmMain[nm][j].checked = false
			}
		}
	}
	else
	{
		if(resFrmMain[nm].checked)
		{
			resFrmMain[nm].checked = false
		}
	}
}



function cDefault(inpt)
{
	var strVal = ""
	var nm = inpt.name
	var j =0
	if(resFrmMain[nm].length)
	{
		for(j=0;j<resFrmMain[nm].length;j++)
		{
			if(resFrmMain[nm][j].checked)
			{
				resFrmMain[nm][j].checked = false;
			}
		}
	}
	else
	{
		if(resFrmMain[nm].checked)
		{
			resFrmMain[nm].checked = false;
		}
	}
}




//******************** Form Checking Code ***************//
	
var frmMain
var DELIMITER = "$#@"

function checkFrm(frm) 
{
	frmMain = frm
	var i = 0
	for(i=0;i<frm.length;i++)
	{
		//alert(frm.item(i).type + " : " + frm.item(i).tagName frm.item(i).validate frm.item(i).value)
		if(frm.item(i).validate)
		{
		//alert(frm.item(i).type + " : " + frm.item(i).tagName + " : " + frm.item(i).validate + " : " + frm.item(i).value)
			if(frm.item(i).type)
			{
				if(frm.item(i).disabled == false)
				{
					if(!checkInp(getValue(frm.item(i)), frm.item(i).validate, frm.item(i)))
					{
						return false;
					}
				}
			}
		}
		
		//alert(frm.item(i).value)
		//alert(frm.item(i).tagName)
	}
	return true;
}


function checkInp(value, vali, objItem)
{

	var arrVali, arrParam
	var fncName = "", trValue = "", lsValue = "", comment = ""
	var retValue
	var j=0, k=0 
	
	arrVali = vali.split(",")
	for(j=0;j<arrVali.length;j++)
	{
		fncName = ""
		trValue = ""
		lsValue = ""
		comment = ""
		cmnt = ""
		
		
		arrParam = arrVali[j].split("#")
		fncName = arrParam[0]
		for(k=1;k<arrParam.length;k++)
		{
			if(arrParam[k] == "true" || arrParam[k] == "false")
			{
				trValue = arrParam[k]
			}
			else
			{
				if(arrParam[k] == "any" || arrParam[k] == "all")
				{
					lsValue = arrParam[k]
				}
				else
				{
					comment = arrParam[k]
				}
			}
		}

		fncName = trim(fncName)
		
		if(fncName.charAt(fncName.length) == ")")
		{
		 	// *********code to be writen; if some parameters is to be sent then code has to be writen here
		}
		else
		{
			fncName = "retValue = " + fncName + "('" + value + "')"
		}
		
		if(trValue == "")
		{
			trValue = "true"
		}
		
		
		eval(fncName)
			

		
		if(trValue == "true" && !retValue)
		{
			dispComment(comment, objItem)
			return false;
		}
		else
		{
			if(trValue == "false" && retValue)
			{
				dispComment(comment, objItem)
				return false;
			}
		}
	}

	return true;
}


function dispComment(commnt, objItem)
{
	if(commnt != "")
	{
		alert(commnt)
	}
	else
	{
		if(objItem.disName)
		{
			cmnt = cmnt.replace("#Name#", objItem.disName)
		}
		else
		{
			if(objItem.name)
			{
				cmnt = cmnt.replace("#Name#", objItem.name)
			}
			else
			{
				cmnt = cmnt.replace("#Name#", "Field")
			}
		}
		alert(cmnt)
	}
	objItem.focus()
}


function isINInputList(inputType)
{
	if(inputType == "button")
	{
		return false;
	}
	return true;
}


function getValue(inpt)
{
	//alert(inpt.type)
	switch(inpt.type)
	{
		case "text" :
		{
			return (inpt.value);
			break;
		}
		case "password" :
		{
			return (inpt.value);
			break;
		}
		case "hidden" :
		{
			return (inpt.value);
			break;
		}
		case "select-one" :
		{
			if(inpt.selectedIndex == -1)
			{
				return "";
			}
			else
			{
				return (inpt[inpt.selectedIndex].value);
			}
			break;
		}
		case "select-multiple" :
		{
			return (selValue(inpt));
			break;
		}
		case "radio" :
		{
			return (rValue(inpt));
			break;
		}
		case "checkbox" :
		{
			return (cValue(inpt));
			break;
		}
		case "textarea" :
		{
			return (inpt.value);
			break;
		}
		case "file" :
		{
			return (inpt.value);
			break;
		}
	}
}


function selValue(inpt)
{
	var strVal = ""
	var len = inpt.length
	var j =0
		
	for(j=0;j<len;j++)
	{
		if(inpt[j].selected)
		{
			strVal = strVal + inpt[j].value + DELIMITER
		}
	}
	strVal = strVal.substr(0,strVal.length-DELIMITER.length)
	return (strVal);
}



function rValue(inpt)
{
	var strVal = ""
	var nm = inpt.name
	var j =0
	if(frmMain[nm].length)
	{
		for(j=0;j<frmMain[nm].length;j++)
		{
			if(frmMain[nm][j].checked)
			{
				return (frmMain[nm][j].value)
			}
		}
	}
	else
	{
		if(frmMain[nm].checked)
		{
			return(frmMain[nm].value)
		}
		else
		{
			return "";
		}
	}
	return ("");
}



function cValue(inpt)
{
	var strVal = ""
	var nm = inpt.name
	var j =0
	if(frmMain[nm].length)
	{
		for(j=0;j<frmMain[nm].length;j++)
		{
			if(frmMain[nm][j].checked)
			{
				strVal = strVal + frmMain[nm][j].value + DELIMITER
			}
		}
	}
	else
	{
		if(frmMain[nm].checked)
		{
			return(frmMain[nm].value)
		}
		else
		{
			return "";
		}
	}

	strVal = strVal.substr(0,strVal.length-DELIMITER.length)
	return (strVal);
}



//*********** INVENTORY FUNCTIONS *****************//

function getItem(itemCode, itemName, groupName, matreq_no)
{
	url1 = "/hms/inventory/itemSelSing.asp?item_code=" + itemCode + "&item_nm=" + itemName + "&grp_name=" + groupName + "&matreq_no=" + matreq_no
	winOpen(url1,'test',500,400)
}


function selEmpInv(empName)
{
	if(!empName)
	{
		searchWinHandler=winOpen("../emp_list.asp", "Employee List", "450","350");
	}
	else
	{
		searchWinHandler=winOpen("../emp_list.asp?empName=" + empName, "Employee List", "450","350");
	}
}




//*********** Button over code *****************//

var prevElement = "null"
clsName = ""
clsOver = ""

document.onmousemove = function buttTrap()  {

	var tagClass
	tagClass = event.srcElement.className

	if(event.srcElement.disabled && event.srcElement.disabled == true)
	{
		if(prevElement != "null")
		{
			prevElement.className = clsName
			prevElement = "null"
		}
		return;
	}
	
	if(tagClass == "button" || tagClass == "buttonOver" || tagClass == "buttSize" || tagClass == "buttSizeOver")
	{
		if(prevElement != "null")
		{
			prevElement.className = clsName
			prevElement = "null"
		}

		if(tagClass == "button" || tagClass == "buttonOver")
		{
			clsName = "button"
			clsOver = "buttonOver"
		}	

		if(tagClass == "buttSize" || tagClass == "buttSizeOver")
		{
			clsName = "buttSize"
			clsOver = "buttSizeOver"
		}

		//document.f.txtLogin.value = event.srcElement.type
		event.srcElement.className = clsOver
		prevElement = event.srcElement
	}
	else
	{
		if(prevElement != "null")
		{
			prevElement.className = clsName
			prevElement = "null"
		}
	}
	
}


document.onmousedown = clickTrapp;

function clickTrapp()
{
	if(winMain != null)
	{
		winMain.close();
		winMain = null;
	}
}











//*****************************POP UP DATE******************************//



<!-- STEP ONE: Copy this code into a new file, save as date-picker.js  -->

<!-- Original:  Kedar R. Bhave (softricks@hotmail.com) -->
<!-- Web Site:  http://www.softricks.com -->

<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->

var weekend = [0,6];
var weekendColor = "#e0e0e0";
var fontface = "arial";
var fontsize = 1;
var h_item = ""
var n_win = false;
var p_win

var gNow = new Date();
var ggWinCal;
isNav = (navigator.appName.indexOf("Netscape") != -1) ? true : false;
isIE = (navigator.appName.indexOf("Microsoft") != -1) ? true : false;


Calendar.Months = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];

// Non-Leap year Month days..
Calendar.DOMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
// Leap year Month days..
Calendar.lDOMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

function Calendar(p_item, p_WinCal, p_month, p_year, p_format) {
	if ((p_month == null) && (p_year == null))	return;

	if (p_WinCal == null)
		this.gWinCal = ggWinCal;
	else
		this.gWinCal = p_WinCal;
	
	if (p_month == null) {
		this.gMonthName = null;
		this.gMonth = null;
		this.gYearly = true;
	} else {
		this.gMonthName = Calendar.get_month(p_month);
		this.gMonth = new Number(p_month);
		this.gYearly = false;
	}

	this.gYear = p_year;
	this.gFormat = p_format;
	this.gBGColor = "white";
	this.gFGColor = "black";
	this.gTextColor = "black";
	this.gHeaderColor = "black";
	this.gReturnItem = p_item;
}

Calendar.get_month = Calendar_get_month;
Calendar.get_daysofmonth = Calendar_get_daysofmonth;
Calendar.calc_month_year = Calendar_calc_month_year;
Calendar.print = Calendar_print;

function Calendar_get_month(monthNo) {
	return Calendar.Months[monthNo];
}

function Calendar_get_daysofmonth(monthNo, p_year) {
	/* 
	Check for leap year ..
	1.Years evenly divisible by four are normally leap years, except for... 
	2.Years also evenly divisible by 100 are not leap years, except for... 
	3.Years also evenly divisible by 400 are leap years. 
	*/
	if ((p_year % 4) == 0) {
		if ((p_year % 100) == 0 && (p_year % 400) != 0)
			return Calendar.DOMonth[monthNo];
	
		return Calendar.lDOMonth[monthNo];
	} else
		return Calendar.DOMonth[monthNo];
}

function Calendar_calc_month_year(p_Month, p_Year, incr) {
	/* 
	Will return an 1-D array with 1st element being the calculated month 
	and second being the calculated year 
	after applying the month increment/decrement as specified by 'incr' parameter.
	'incr' will normally have 1/-1 to navigate thru the months.
	*/
	var ret_arr = new Array();
	
	if (incr == -1) {
		// B A C K W A R D
		if (p_Month == 0) {
			ret_arr[0] = 11;
			ret_arr[1] = parseInt(p_Year) - 1;
		}
		else {
			ret_arr[0] = parseInt(p_Month) - 1;
			ret_arr[1] = parseInt(p_Year);
		}
	} else if (incr == 1) {
		// F O R W A R D
		if (p_Month == 11) {
			ret_arr[0] = 0;
			ret_arr[1] = parseInt(p_Year) + 1;
		}
		else {
			ret_arr[0] = parseInt(p_Month) + 1;
			ret_arr[1] = parseInt(p_Year);
		}
	}
	
	return ret_arr;
}

function Calendar_print() {
	ggWinCal.print();
}

function Calendar_calc_month_year(p_Month, p_Year, incr) {
	/* 
	Will return an 1-D array with 1st element being the calculated month 
	and second being the calculated year 
	after applying the month increment/decrement as specified by 'incr' parameter.
	'incr' will normally have 1/-1 to navigate thru the months.
	*/
	var ret_arr = new Array();
	
	if (incr == -1) {
		// B A C K W A R D
		if (p_Month == 0) {
			ret_arr[0] = 11;
			ret_arr[1] = parseInt(p_Year) - 1;
		}
		else {
			ret_arr[0] = parseInt(p_Month) - 1;
			ret_arr[1] = parseInt(p_Year);
		}
	} else if (incr == 1) {
		// F O R W A R D
		if (p_Month == 11) {
			ret_arr[0] = 0;
			ret_arr[1] = parseInt(p_Year) + 1;
		}
		else {
			ret_arr[0] = parseInt(p_Month) + 1;
			ret_arr[1] = parseInt(p_Year);
		}
	}

	return ret_arr;
}

// This is for compatibility with Navigator 3, we have to create and discard one object before the prototype object exists.
new Calendar();

Calendar.prototype.getMonthlyCalendarCode = function() {
	var vCode = "";
	var vHeader_Code = "";
	var vData_Code = "";
	
	// Begin Table Drawing code here..
	vCode = vCode + "<TABLE BORDER=0 width='100%' cellpadding=0 cellspacing=0 BGCOLOR=#FFFFFF>";
	
	vHeader_Code = this.cal_header();
	vData_Code = this.cal_data();
	vCode = vCode + vHeader_Code + vData_Code;
	
	vCode = vCode + "</TABLE>";
	
	return vCode;
}

Calendar.prototype.show = function() {
	var vCode = "";
	
	this.gWinCal.document.open();

	// Setup the page...
	this.wwrite("<html>");
	this.wwrite("<head><title>CHITALE DAIRY - Calendar</title>");
	this.wwrite("<style type='text/css'>");
	this.wwrite("<!--");
	this.wwrite("@import '../calender.css';");
	this.wwrite("-->");
	this.wwrite("</style>");

	this.wwrite("</head>");

	this.wwrite("<body topmargin='0' leftmargin='0'>");

	// Show navigation buttons
	var prevMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, -1);
	var prevMM = prevMMYYYY[0];
	var prevYYYY = prevMMYYYY[1];

	var nextMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, 1);
	var nextMM = nextMMYYYY[0];
	var nextYYYY = nextMMYYYY[1];

	this.wwrite("<TABLE WIDTH='100%' BORDER=0 CELLSPACING=0 CELLPADDING=0 style='border:solid 1px #000000'>");
	this.wwrite("<tr>");
	this.wwrite("<td>");
		this.wwrite("<TABLE WIDTH='100%' BORDER=0 BGCOLOR='#d0d0d0' CELLSPACING=0 CELLPADDING=0 style='border-left:solid 2px #FFFFFF;border-top:solid 2px #FFFFFF'>");
		this.wwrite("<tr><td colspan='11' height='4'></td></tr>");
		this.wwrite("<tr><td colspan='10'align='right'><input type='button' value='x' style='width:12;height:12' onclick='" + p_win + ".clsDate()'></td>");
		this.wwrite("<td></td></tr>");
		this.wwrite("<tr><td colspan='11' height='5'></td></tr>");
		this.wwrite("<tr>");
		this.wwrite("<td width='10'>&nbsp;</td>");
		this.wwrite("<td align='center'><input type='button' value='<<'");
		this.wwrite("onclick=\"" + p_win + ".Build('" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)-1) + "', '" + this.gFormat + "')\"");
		this.wwrite("></td>");
		this.wwrite("<td width='10'>&nbsp;</td>");
		this.wwrite("<td align='center'><input type='button' value='<'");
		this.wwrite("onclick=\"" + p_win + ".Build('" + this.gReturnItem + "', '" + prevMM + "', '" + prevYYYY + "', '" + this.gFormat + "')\"");
		this.wwrite("></td>");
		this.wwrite("<td width='10'>&nbsp;</td>");
		this.wwrite("<td align='center' width='100%'>");
		this.wwriteA("<FONT style='font-size:11px'><B>");
		this.wwriteA(this.gMonthName + " " + this.gYear);
		this.wwriteA("</B></font></td>");
		this.wwrite("<td width='10'>&nbsp;</td>");
		this.wwrite("<td align='center'><input type='button' value='>'");
		this.wwrite("onclick=\"" + p_win + ".Build('" + this.gReturnItem + "', '" + nextMM + "', '" + nextYYYY + "', '" + this.gFormat + "')\"");
		this.wwrite("></td>");
		this.wwrite("<td width='10'>&nbsp;</td>");
		this.wwrite("<td align='center'><input type='button' value='>>'");
		this.wwrite("onclick=\"" + p_win + ".Build('" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)+1) + "', '" + this.gFormat + "')\"");
		this.wwrite("></td>");
		this.wwrite("<td width='10'>&nbsp;</td>");
		this.wwrite("</tr>");
		this.wwrite("<tr><td colspan='11' height='5'></td></tr>");
		this.wwrite("</table>");
	this.wwrite("</td>");
	this.wwrite("</tr>");
	this.wwrite("<tr>");
	this.wwrite("<td>");
		// Get the complete calendar code for the month..
		vCode = this.getMonthlyCalendarCode();
		this.wwrite(vCode);
	this.wwrite("</td>");
	this.wwrite("</tr>");
	this.wwrite("</table>");

	this.wwrite("</body></html>");
	this.gWinCal.document.close();
}

Calendar.prototype.wwrite = function(wtext) {
	this.gWinCal.document.writeln(wtext);
}

Calendar.prototype.wwriteA = function(wtext) {
	this.gWinCal.document.write(wtext);
}

Calendar.prototype.cal_header = function() {
	var vCode = "";
	
	vCode = vCode + "<TR>";
	vCode = vCode + "<TD><B>Sun</B></TD>";
	vCode = vCode + "<TD><B>Mon</B></TD>";
	vCode = vCode + "<TD><B>Tue</B></TD>";
	vCode = vCode + "<TD><B>Wed</B></TD>";
	vCode = vCode + "<TD><B>Thu</B></TD>";
	vCode = vCode + "<TD><B>Fri</B></TD>";
	vCode = vCode + "<TD><B>Sat</B></TD>";
	vCode = vCode + "</TR>";
	vCode = vCode + "<TR><TD colspan='7' height='4'></TR>";
	
	return vCode;
}

Calendar.prototype.cal_data = function() {
	var vDate = new Date();
	vDate.setDate(1);
	vDate.setMonth(this.gMonth);
	vDate.setFullYear(this.gYear);

	var vFirstDay=vDate.getDay();
	var vDay=1;
	var vLastDay=Calendar.get_daysofmonth(this.gMonth, this.gYear);
	var vOnLastDay=0;
	var vCode = "";

	/*
	Get day for the 1st of the requested month/year..
	Place as many blank cells before the 1st day of the month as necessary. 
	*/

	vCode = vCode + "<TR>";
	for (i=0; i<vFirstDay; i++) {
		vCode = vCode + "<TD " + this.write_weekend_string(i) + "></TD>";
	}

// ******** code by abhijit

	

// ******** code by abhijit
	// Write rest of the 1st week
	for (j=vFirstDay; j<7; j++) {
		vCode = vCode + "<TD " + this.write_weekend_string(j) + ">" + 
			"<A HREF='#' " + 
				"onClick=\"" + p_win + ".document.getElementById('" + this.gReturnItem + "').value='" + 
				this.format_data(vDay) + 
				"';" + p_win + ".closeDate('" + this.format_data(vDay) + "');\">" + 
				this.format_day(vDay) + 
			"</A>" + 
			"</TD>";
		vDay=vDay + 1;
	}
	vCode = vCode + "</TR>";

	// Write the rest of the weeks
	for (k=2; k<7; k++) {
		vCode = vCode + "<TR>";

		for (j=0; j<7; j++) {
			vCode = vCode + "<TD " + this.write_weekend_string(j) + ">" + 
				"<A HREF='#' " + 
					"onClick=\"" + p_win + ".document.getElementById('" + this.gReturnItem + "').value='" + 
					this.format_data(vDay) + 
					"';" + p_win + ".closeDate('" + this.format_data(vDay) + "');\">" + 
				this.format_day(vDay) + 
				"</A>" + 
				"</TD>";
			vDay=vDay + 1;

			if (vDay > vLastDay) {
				vOnLastDay = 1;
				break;
			}
		}

		if (j == 6)
			vCode = vCode + "</TR>";
		if (vOnLastDay == 1)
			break;
	}
	
	// Fill up the rest of last week with proper blanks, so that we get proper square blocks
	for (m=1; m<(7-j); m++) {
		if (this.gYearly)
			vCode = vCode + "<TD " + this.write_weekend_string(j+m) + 
			"><FONT COLOR='gray'> </FONT></TD>";
		else
			vCode = vCode + "<TD " + this.write_weekend_string(j+m) + 
			"><FONT COLOR='gray'>&nbsp;&nbsp;" + m + "</FONT></TD>";
	}
	
	return vCode;
}

Calendar.prototype.format_day = function(vday) {
	var vNowDay = gNow.getDate();
	var vNowMonth = gNow.getMonth();
	var vNowYear = gNow.getFullYear();

	if (vday == vNowDay && this.gMonth == vNowMonth && this.gYear == vNowYear)
		return ("<FONT COLOR=\"Blue\"><B>" + vday + "</B></FONT>");
	else
		return (vday);
}

Calendar.prototype.write_weekend_string = function(vday) {
	var i;

	// Return special formatting for the weekend day.
	for (i=0; i<weekend.length; i++) {
		if (vday == weekend[i])
			return (" BGCOLOR=\"" + weekendColor + "\"");
	}
	
	return "";
}

Calendar.prototype.format_data = function(p_day) {
	var vData;
	var vMonth = 1 + this.gMonth;
	vMonth = (vMonth.toString().length < 2) ? "0" + vMonth : vMonth;
	var vMon = Calendar.get_month(this.gMonth).substr(0,3).toUpperCase();
	var vFMon = Calendar.get_month(this.gMonth).toUpperCase();
	var vY4 = new String(this.gYear);
	var vY2 = new String(this.gYear.substr(2,2));
	var vDD = (p_day.toString().length < 2) ? "0" + p_day : p_day;

	switch (this.gFormat) {
		case "MM\/DD\/YYYY" :
			vData = vMonth + "\/" + vDD + "\/" + vY4;
			break;
		case "MM\/DD\/YY" :
			vData = vMonth + "\/" + vDD + "\/" + vY2;
			break;
		case "MM-DD-YYYY" :
			vData = vMonth + "-" + vDD + "-" + vY4;
			break;
		case "MM-DD-YY" :
			vData = vMonth + "-" + vDD + "-" + vY2;
			break;

		case "DD\/MON\/YYYY" :
			vData = vDD + "\/" + vMon + "\/" + vY4;
			break;
		case "DD\/MON\/YY" :
			vData = vDD + "\/" + vMon + "\/" + vY2;
			break;
		case "DD-MON-YYYY" :
			vData = vDD + "-" + vMon + "-" + vY4;
			break;
		case "DD-MON-YY" :
			vData = vDD + "-" + vMon + "-" + vY2;
			break;

		case "DD\/MONTH\/YYYY" :
			vData = vDD + "\/" + vFMon + "\/" + vY4;
			break;
		case "DD\/MONTH\/YY" :
			vData = vDD + "\/" + vFMon + "\/" + vY2;
			break;
		case "DD-MONTH-YYYY" :
			vData = vDD + "-" + vFMon + "-" + vY4;
			break;
		case "DD-MONTH-YY" :
			vData = vDD + "-" + vFMon + "-" + vY2;
			break;

		case "DD\/MM\/YYYY" :
			vData = vDD + "\/" + vMonth + "\/" + vY4;
			break;
		case "DD\/MM\/YY" :
			vData = vDD + "\/" + vMonth + "\/" + vY2;
			break;
		case "DD-MM-YYYY" :
			vData = vDD + "-" + vMonth + "-" + vY4;
			break;
		case "DD-MM-YY" :
			vData = vDD + "-" + vMonth + "-" + vY2;
			break;

		default :
			vData = vMonth + "\/" + vDD + "\/" + vY4;
	}

	return vData;
}

function Build(p_item, p_month, p_year, p_format) {
	var p_WinCal = ggWinCal;
	gCal = new Calendar(p_item, p_WinCal, p_month, p_year, p_format);

	// Customize your Calendar here..
	gCal.gBGColor="white";
	gCal.gLinkColor="black";
	gCal.gTextColor="black";
	gCal.gHeaderColor="darkgreen";

	// Choose appropriate show function
	gCal.show();
}

function show_calendar() {
	/* 
		p_month : 0-11 for Jan-Dec; 12 for All Months.
		p_year	: 4-digit year
		p_format: Date format (mm/dd/yyyy, dd/mm/yy, ...)
		p_item	: Return Item.
	*/

	p_item = arguments[0];

	h_item = arguments[1];

	if (arguments[2] == null)
		p_month = new String(gNow.getMonth());
	else
		p_month = arguments[2];
	if (arguments[3] == "" || arguments[3] == null)
		p_year = new String(gNow.getFullYear().toString());
	else
		p_year = arguments[3];
	if (arguments[4] == null)
		p_day = "DD/MM/YYYY";
	else
		p_format = arguments[4];

	p_format = "DD/MM/YYYY";

	var diffX = document.body.scrollWidth - findPosX(document.getElementById(p_item))
	
	n_win = false;

	if(diffX <= 223)
	{
		diffX = 223 - diffX
		diffX = findPosX(document.getElementById(p_item)) - diffX
		if(diffX<0)
		{
			n_win = true;
		}
	}
	else
	{
		diffX = findPosX(document.getElementById(p_item))
	}


	//alert(document.body.scrollHeight)
	//alert("element : " + document.documentElement.scrollHeight)
	
	var diffY = document.documentElement.scrollHeight - findPosY(document.getElementById(p_item))

	if(diffY <= 162)
	{
		diffY = 142 - diffY
		diffY = findPosY(document.getElementById(p_item)) - diffY
		if(diffY<0)
		{
			n_win = true;
		}
	}
	else
	{
		diffY = findPosY(document.getElementById(p_item)) + 20
	}

	//alert(diffX)
	
	//document.getElementById("divDate").style.left = findPosX(document.getElementById(p_item));

	if(n_win)
	{
		vWinCal = window.open("about:blank","win11","toolbar=no,directories=no,resize=no,menubar=no,location=no,scrollbars=no,width=223,height=142,maximise=null")
		vWinCal.focus()
		p_win = "window.opener"

	}
	else
	{
		vWinCal = window.frame_Date
		document.getElementById("divDate").style.left = diffX;
		document.getElementById("divDate").style.top = diffY;
		document.getElementById("divDate").style.display = "";
		p_win = "parent.window"
	}
	
	ggWinCal = vWinCal;
	Build(p_item, p_month, p_year, p_format);
}

function closeDate(vlDte)
{
	if(n_win)
	{
		ggWinCal.close()
	}
	{
		document.getElementById("divDate").style.display = "none";
	}
	if(document.getElementById(h_item))
	{
		if(vlDte != "")
		{
			var dte = vlDte.split("/")
			document.getElementById(h_item).value = dte[2] + "/" + dte[1] + "/" + dte[0]
		}
		else
		{
			document.getElementById(h_item).value = ""
		}
	}
}

function clsDate(vlDte)
{
	if(n_win)
	{
		ggWinCal.close()
	}
	{
		document.getElementById("divDate").style.display = "none";
	}
}

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}


function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

var j="";
function charcount(textname,countname)
{
	//textname= It is form element where u adding text matter.
	//countname= It is form element where see number which is length  of text matter(textname) .
	j=eval("document.forms[0]."+textname+".value")
	if(((j.length)+1) >255)
	{
	 	alert('You can not add more characters!');	
	}
	else
	{
		document.getElementById(countname).value=(j.length)+1
	}
}
//http://www.evolt.org/article/document_body_doctype_switching_and_more/17/30655/index.html
//http://www.xs4all.nl/~ppk/js/winprop.html
//http://www.xs4all.nl/~ppk/js/doctypes.html
