//--- for checking new password and confirm new password

//var dummy
//dummy = setTimeout("document.location.href='http://clara/hints'",1200000);

// check phone number
// added by amol on 02/23/2002
function checkPhone(phoneNumber1, phoneNumber2, phoneNumber3)
{
	var phoneLength
	phoneLength = phoneNumber1.value.length + phoneNumber2.value.length + phoneNumber3.value.length
	
	// if more than 1 char then check for validations else return true
	if (phoneLength>0)
	{
		if (checkNaN(phoneNumber1)==false)
			return false;
		else if (checkNaN(phoneNumber2)==false)
			return false;
		else if (checkNaN(phoneNumber3)==false)
			return false;
		else if (phoneLength<10)
			{
			alert("This field must be a 10 digit U.S. phone number. Please reenter it now.");
			phoneNumber1.focus();
			return false;
			}
		else
			return true;
	}
	else
		return true;
}
//////////////////////////////////////////////////

function getMenu(menuName)
{
//	alert('AMOL');
	sList = window.open("getMenu.asp?menu="+ menuName,"frmMenu","top=2000, left=10, width=300, height=100")
	sList.focus();
}

/**
 * DHTML date validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
 */
// Declaring valid date character, minimum year and maximum year
var dtCh= "/";
var minYear=1900;
var maxYear=2100;

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function isDate(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strMonth=dtStr.substring(0,pos1)
	var strDay=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		alert("The date format should be : mm/dd/yyyy")
		return false
	}
	if (month<1 || month>12){
		alert("Please enter a valid month")
		return false
	}
	if (day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		alert("Please enter a valid day")
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		alert("Please enter a valid date")
		return false
	}
return true
}

function checkDate(dt){
	//alert(dt.value);
	if (isDate(dt.value)==false){
		dt.focus();
		return false;
	}
    return true;
 }

///////////////////////////////////////////////////
// GET NAKSHTRAM LIST
function getNakshtram(languageID, frmName)
{
	sList = window.open("getNakshtram.asp?formName="+ frmName +"&languageID="+ languageID, "Nakshtram","width=300,height=100,top=200,left=200");
	sList.focus();
}
///////////////////////////////////////////////////


///////////////////////////////////////////////////
// GET POOJA LIST
function getPoojas(location, frmName)
{
//	alert(location);
	sList = window.open("getPooja.asp?formName="+ frmName +"&locationID="+ location, "Pooja","width=300,height=100,top=200,left=200");
	sList.focus();
}
///////////////////////////////////////////////////




////////////////////////////////////////////////////////////
/// SEND AN EMAIL TO SELECTED MEMBER
// added  by amol rajmane on 02/05/2002

function SendEmail(emailID)
{
	//alert(emailID);
	var filename;
	filename = 'email.asp?toEmail='+ emailID;
	sList = window.open(filename,'sendEmail','width=650,height=500,top=10,left=0,scrollbars,resizable=1');
	sList.focus();
	//window.showModelessDialog(filename,'sendEmail','width=500,height=400,top=10,left=200,scrollbars,resizable=1,status=0')
}
//////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////
/// SEND AN EMAIL TO SELECTED MEMBER
// added  by amol rajmane on 02/05/2002

function SendEmail1(Name,emailID,Category)
{
	var filename;
	filename = "email.asp?Name=" + Name + "&toEmail=" + emailID + "&Category=" + Category;
	sList = window.open(filename,'sendEmail','width=650,height=500,top=10,left=0,scrollbars,resizable=1');
	sList.focus();
	//window.showModelessDialog(filename,'sendEmail','width=500,height=400,top=10,left=200,scrollbars,resizable=1,status=0')
}
//////////////////////////////////////////////////////////////


function trimString(str)
 {
  str = this != window? this : str;
  return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
 }


// Area code check (3+ ie area code)
function phone3Onkeyup(field1, field2) {
	if (field1.value.length>=3)
		field2.focus();
}

// +4 digit phone number check
function phone4Onkeyup(field1, field2) {
	if (field1.value.length>=4)
		{
		if (field2!="")
			field2.focus();
		}
}


// this is for checking new and confirmed password
function check_password(new_password, confirm_password)
{
if (new_password.value==confirm_password.value)
		{return true;}
else
		{alert('Confirm your password again.');
		new_password.value="";
		confirm_password.value="";
		new_password.focus();
		return false;}
		
}

function check_hint_answer(new_password, confirm_password)
{
if (new_password.value==confirm_password.value)
		{return true;}
else
		{alert('Enter your hint answer again.');
		new_password.value="";
		confirm_password.value="";
		new_password.focus();
		return false;}
		
}


// this is for checking length of password it must be at least 4 char
function check_length_of_password(password)
{
if (password.value.length < 4)
	{
	alert("Password length must be at least 4 characters.");
	password.focus();
	return false;
	}
else
	return true;

}

// this will check for mandatory field it will return false if value of text/select box zero or null or blank
function mandatory_field(field_name, field_desc)
{
if (trimString(field_name.value)=="")
	{
	alert(field_desc + " field should not be blank.");
	field_name.focus();
	return false;
	}
else
	{
	if (trimString(field_name.value)=="'")
	{
		alert("this character is not allwoed.")
		return false;
	}
	else
		return true;
	}
}


// check email for  @ . and min 5 chars
function check_email(EMAIL)
 {
  var FLG = false;
  var FLG1 = false;
  var FLG2 = true;
  if (EMAIL.value.substring(0,1)=="@")
   {
    alert('Email should not start with @');
    EMAIL.focus();
    return false;
   }
   else if (EMAIL.value.substring((EMAIL.value.length-1),EMAIL.value.length)==".")
    {
    alert('Email should not end with .');
    EMAIL.focus();
	return false;
    }
   else
    {
    for (i=1;i<=EMAIL.value.length;i++)
     { 
      if (EMAIL.value.substring((i-1),i)=="@"){
         FLG=true;}
      if (EMAIL.value.substring((i-1),i)=="."){
         FLG1=true;}
      if (EMAIL.value.substring((i-1),i)=="@" && EMAIL.value.substring(i,(i+1))==".")
         {FLG2=false;}
     }
    if (FLG==false)
     {
       alert('@ missing in E-mail');
       EMAIL.focus();
       return false;
     }
    if (FLG1==false)
     {
       alert('. missing E-mail');
       EMAIL.focus();
       return false;
     }
    if (FLG2==false)
     {
      alert('There should be characters between @ and .');
      EMAIL.focus();
      return false;  
     } 
   }
  return true;
}
 // This is to validate the radio button.

function updatevalidate(frmname,counter) {
var sMsg = "Please select the modify radio button";
var bIsValid = false;
var j = frmname.elements.length
	for (var i=0; i<j-1; i++) {
	    if (frmname.elements[i].checked) {
	        bIsValid = true
			if(bIsValid) 
			break					
			else 
		   bIsValid = false
		}
	}
	if (bIsValid) 
    return true
    else
    alert(sMsg)
    return false
  }
 
//This is to validate the check box.

function deletevalidate(frmname,counter) {
var sMsg = "Please check atleast one check box";
var bIsValid = false;
var j = frmname.elements.length
	for (var i=1; i<=j-1; i++) {
		if (frmname.elements[i].checked) {
		    bIsValid = true
			if(bIsValid) 
			break					
			else 
		   bIsValid = false
		}
      }
	if (bIsValid) {
	return deleteConfirmation(); }
    else {
    alert(sMsg)
    return false }
}

function checkboxValidate(frmname, counter) {
	var bIsValid = false;
	var j = counter;
	var frmname1;
		for (var i=0; i<=j-1; i++) {
			frmname1 = eval(frmname +''+ i);
			if (frmname1.checked) {
			    bIsValid = true;
				if(bIsValid)
					break;
				else
					bIsValid = false;
			}
	      }
		if (bIsValid)
			return true;
		else 
			return false;
}


// it will ask for delete confirmation
function deleteConfirmation()
{
if (confirm("Are you sure do you want to delete?"))
	return true;
else
	return false;
}


// check for not a number if its numeric returns true.
 function check_for_NaN(TextValue)
 {
	if (isNaN(TextValue.value))
	{	alert('This field must be numeric.');
		TextValue.value="";
		TextValue.focus();
		return false;
	}
 }

// check for not a number if its numeric returns true.
// do not clear fields
 function checkNaN(TextValue)
 {
	if (isNaN(TextValue.value))
	{	alert('This field must be numeric.');
		TextValue.focus();
		return false;
	}
 }

 
 // check for zipcode must be numeric 
 function check_Zip(ZIPCODE)
 {
	if (isNaN(ZIPCODE.value))
	{	alert('Zip code must be numeric.');
		ZIPCODE.value="";
		ZIPCODE.focus();
		return false;
	}
	else
	{
		if (ZIPCODE.value.length < 5)
		{	alert('Zip code must be at least 5 digits.');
			ZIPCODE.focus();
			return false;
		}
		else
			return true;
	}
 
 }
 
 // this function will be for checking SSN
 function check_SSN(SSN1, SSN2, SSN3)
 {
	var SSN
	if ((SSN1.value == "") && (SSN2.value == "") && (SSN3.value == ""))
		{
			alert("Amol");
			return true;
		}
	else if ((SSN1.value.length < 3)||(SSN2.value.length < 2)||(SSN3.value.length < 4))
		{
			alert("SSN must be 9 characters or leave it blank");
			SSN1.focus();
			return false;
		}
	else
		{
			return true;
		}
 }
 
 // check for alphabets no numbers allowed.
 function check_for_alphabets(TextValue)
 {
  var FLG = false;
    
  for (i=1;i<=TextValue.value.length;i++)
     { 
      if (TextValue.value.substring((i-1),i)=="0" || TextValue.value.substring((i-1),i)=="1" || TextValue.value.substring((i-1),i)=="2" || TextValue.value.substring((i-1),i)=="3" || TextValue.value.substring((i-1),i)=="4" || TextValue.value.substring((i-1),i)=="5" || TextValue.value.substring((i-1),i)=="6" || TextValue.value.substring((i-1),i)=="7" || TextValue.value.substring((i-1),i)=="8" || TextValue.value.substring((i-1),i)=="9")
		{
         FLG=true;
        }
     }
    
    
    if (FLG==true)
     {
       alert('Value of this textbox should not contain any number.');
       TextValue.focus();
       return false;
     }
  return true;
 }
 


function exportConfirmation()
{
if (confirm("Are you sure do you want to export all Incomes?"))
	return true;
else
	return false;
}

function swap_image()
{
//
//var img_name;
//img_name = 'img_'+ image_name;
//img_name.src = image_name + '1.gif';
}

function openHelpWindow()
{
	window.open("help.asp","helpPage","width=650,height=250,top=0,left=0, scrollbars=yes,resizable=yes");
}

// check for apostropy sign
function check_mask(mask)
{
	var mask;
	for(i=0;i<mask.elements.length;i++)
	{
		var Str_Item;
		Str_Item = mask.elements[i].value;		
		if (Str_Item.indexOf("'")!= "-1" )
		{	
			//Str_Item = Str_Item.replace("'","''")
			//window.document.frmNewUserReg.elements[i].value = Str_Item;
			alert("This ' character is not allowed.");
			mask.elements[i].focus();
			mask.elements[i].select();			
			return false;
		}		
	}
	return true;
	
}

function static_menu()
{

	dhtmlMenu = new NavBarMenu(80, 0);
	dhtmlMenu.addItem(new NavBarMenuItem("Home", "../../default.asp"));
	myNavBar1.addMenu(dhtmlMenu);

	dhtmlMenu = new NavBarMenu(110, 110);
	dhtmlMenu.addItem(new NavBarMenuItem("Information", ""));
	dhtmlMenu.addItem(new NavBarMenuItem("History", "temple_info.asp"));
	dhtmlMenu.addItem(new NavBarMenuItem("Contact", "contact_info.asp"));
	dhtmlMenu.addItem(new NavBarMenuItem("Directions", "javascript:window.open('http://maps.expedia.com/default.asp?C=37.713199,-121.73042&A=16&O=0,0&L=USA0409&Pr=1&P=37.713199,-121.73042,1,1232+Arrowhead+Ave%2C+Livermore%2C+CA+94550&Title=1232+Arrowhead+Ave%2C+Livermore%2C+CA+94550&L=USA0409','DrivingDirections','width=700,height=400,top=0,left=0, resizable=no, scrollbars=yes');"));
	dhtmlMenu.addItem(new NavBarMenuItem("News", "temple_news.asp"));
	dhtmlMenu.addItem(new NavBarMenuItem("Festivities", "about_hinduism.asp"));
	myNavBar1.addMenu(dhtmlMenu);

	dhtmlMenu = new NavBarMenu(110, 110);
	dhtmlMenu.addItem(new NavBarMenuItem("Services", ""));
	dhtmlMenu.addItem(new NavBarMenuItem("Temple Services", "temple_services.asp"));
	dhtmlMenu.addItem(new NavBarMenuItem("Pooja Schedules", "daily_schedule.asp"));
	dhtmlMenu.addItem(new NavBarMenuItem("Special Events", "special_events_schedule.asp"));
	dhtmlMenu.addItem(new NavBarMenuItem("Volunteer Info", "volunteer_info.asp"));
	myNavBar1.addMenu(dhtmlMenu);

	dhtmlMenu = new NavBarMenu(90, 150);
	dhtmlMenu.addItem(new NavBarMenuItem("Login", "login.asp"));
	myNavBar1.addMenu(dhtmlMenu);

	dhtmlMenu = new NavBarMenu(90, 150);
	dhtmlMenu.addItem(new NavBarMenuItem("Register", "new_user_reg.asp"));
	myNavBar1.addMenu(dhtmlMenu);

	dhtmlMenu = new NavBarMenu(80, 150);
	dhtmlMenu.addItem(new NavBarMenuItem("Help", "help.asp"));
	myNavBar1.addMenu(dhtmlMenu);

	dhtmlMenu = new NavBarMenu(90, 150);
	dhtmlMenu.addItem(new NavBarMenuItem("Feedback", "feedback.asp"));
	myNavBar1.addMenu(dhtmlMenu);

	dhtmlMenu = new NavBarMenu(70, 150);
	dhtmlMenu.addItem(new NavBarMenuItem("Site Map", "sitemap.asp"));
	myNavBar1.addMenu(dhtmlMenu);

}


//////////////////////////////////////////////////////////////////////////////////////
/////////  these functions are for pop-up time screen and return back to mail page
//////////////////////////////////////////////////////////////////////////////////////

function showList(tTime) {
  var fileName
  fileName = "time.asp?textbox=" + tTime
  sList = window.open(fileName, "time", "width=600,height=100,left=50,top=380");
  sList.focus();
  //sList = window.showModalDialog(fileName, "time", "width=600,height=100,left=50,top=300");
}

function remLink() {
  if (window.sList && window.sList.open && !window.sList.closed)
    window.sList.opener = null;
}

function showMembers(tMember) {
  var fileName
  fileName = "members.asp?tMember=" + tMember
  sList = window.open(fileName, "MembersList", "width=480,height=350,left=100,top=100");
  sList.focus();
}


function showPooja(tPooja, tLocation, tPoojaDesc) {
  var fileName
  fileName = "pooja_location.asp?textBoxPooja=" + tPooja + "&textBoxLocation=" + tLocation + "&textBoxPoojaDesc=" +  tPoojaDesc
  sList = window.open(fileName, "time", "width=600,height=100,left=10,top=300");
  //sList = window.showModalDialog(fileName, "time", "width=600,height=100,left=0,top=0");
  sList.focus();
}

function showDevoteePooja(tPooja, tLocation, tPoojaDesc) {
  var fileName
  fileName = "pooja_location_devotee.asp?textBoxPooja=" + tPooja + "&textBoxLocation=" + tLocation + "&textBoxPoojaDesc=" +  tPoojaDesc
  sList = window.open(fileName, "time", "width=600,height=100,left=10,top=300");
  //sList = window.showModalDialog(fileName, "time", "width=600,height=100,left=0,top=0");
  sList.focus();
}

function showDevoteeInfo(username){
	var fileName
	fileName = "devotee_details.asp?username="+ username;
	sList = window.open(fileName, "DisplayDevoteeInfo", "width=350,height=500,left=10,top=10");
	sList.focus();
}


//////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////
//////////  END OF JAVASCRIT/  validations.js
/////////////////////////////////////////////////////////////////



/////////////////////////////////////////////////////////////////
//////////  START OF DATE PICKER SCRIPT ///////////////////////////
/////////////////////////////////////////////////////////////////

var weekend = [0,6];
var weekendColor = "#e0e0e0";
var fontface = "Verdana";
var fontsize = 2;

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=1 BGCOLOR=\"" + this.gBGColor + "\">";
	
	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>Calendar-Shiva vishnu Temple</title>");
	this.wwrite("</head>");

	this.wwrite("<body " + 
		"link=\"" + this.gLinkColor + "\" " + 
		"vlink=\"" + this.gLinkColor + "\" " +
		"alink=\"" + this.gLinkColor + "\" " +
		"text=\"" + this.gTextColor + "\">");
	this.wwriteA("<FONT FACE='" + fontface + "' SIZE=2><B>");
	this.wwriteA(this.gMonthName + " " + this.gYear);
	this.wwriteA("</B><BR>");

	// 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=1 CELLSPACING=0 CELLPADDING=0 BGCOLOR='#e0e0e0'><TR><TD ALIGN=center>");
	this.wwrite("[<A HREF=\"" +
		"javascript:window.opener.Build(" + 
		"'" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)-1) + "', '" + this.gFormat + "'" +
		");" +
		"\"><<<\/A>]</TD><TD ALIGN=center>");
	this.wwrite("[<A HREF=\"" +
		"javascript:window.opener.Build(" + 
		"'" + this.gReturnItem + "', '" + prevMM + "', '" + prevYYYY + "', '" + this.gFormat + "'" +
		");" +
		"\"><<\/A>]</TD><TD ALIGN=center>");
	//this.wwrite("[<A HREF=\"javascript:window.print();\">Print</A>]</TD><TD ALIGN=center>");
	this.wwrite("[<A HREF=\"" +
		"javascript:window.opener.Build(" + 
		"'" + this.gReturnItem + "', '" + nextMM + "', '" + nextYYYY + "', '" + this.gFormat + "'" +
		");" +
		"\">><\/A>]</TD><TD ALIGN=center>");
	this.wwrite("[<A HREF=\"" +
		"javascript:window.opener.Build(" + 
		"'" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)+1) + "', '" + this.gFormat + "'" +
		");" +
		"\">>><\/A>]</TD></TR></TABLE><BR>");

	// Get the complete calendar code for the month..
	vCode = this.getMonthlyCalendarCode();
	this.wwrite(vCode);

	this.wwrite("</font></body></html>");
	this.gWinCal.document.close();
}

Calendar.prototype.showY = function() {
	var vCode = "";
	var i;
	var vr, vc, vx, vy;		// Row, Column, X-coord, Y-coord
	var vxf = 285;			// X-Factor
	var vyf = 200;			// Y-Factor
	var vxm = 10;			// X-margin
	var vym;				// Y-margin
	if (isIE)	vym = 75;
	else if (isNav)	vym = 25;
	
	this.gWinCal.document.open();

	this.wwrite("<html>");
	this.wwrite("<head><title>Calendar</title>");
	this.wwrite("<style type='text/css'>\n<!--");
	for (i=0; i<12; i++) {
		vc = i % 3;
		if (i>=0 && i<= 2)	vr = 0;
		if (i>=3 && i<= 5)	vr = 1;
		if (i>=6 && i<= 8)	vr = 2;
		if (i>=9 && i<= 11)	vr = 3;
		
		vx = parseInt(vxf * vc) + vxm;
		vy = parseInt(vyf * vr) + vym;

		this.wwrite(".lclass" + i + " {position:absolute;top:" + vy + ";left:" + vx + ";}");
	}
	this.wwrite("-->\n</style>");
	this.wwrite("</head>");

	this.wwrite("<body " + 
		"link=\"" + this.gLinkColor + "\" " + 
		"vlink=\"" + this.gLinkColor + "\" " +
		"alink=\"" + this.gLinkColor + "\" " +
		"text=\"" + this.gTextColor + "\">");
	this.wwrite("<FONT FACE='" + fontface + "' SIZE=2><B>");
	this.wwrite("Year : " + this.gYear);
	this.wwrite("</B><BR>");

	// Show navigation buttons
	var prevYYYY = parseInt(this.gYear) - 1;
	var nextYYYY = parseInt(this.gYear) + 1;
	
	this.wwrite("<TABLE WIDTH='100%' BORDER=1 CELLSPACING=0 CELLPADDING=0 BGCOLOR='#e0e0e0'><TR><TD ALIGN=center>");
	this.wwrite("[<A HREF=\"" +
		"javascript:window.opener.Build(" + 
		"'" + this.gReturnItem + "', null, '" + prevYYYY + "', '" + this.gFormat + "'" +
		");" +
		"\" alt='Prev Year'><<<\/A>]</TD><TD ALIGN=center>");
	this.wwrite("[<A HREF=\"javascript:window.print();\">Print</A>]</TD><TD ALIGN=center>");
	this.wwrite("[<A HREF=\"" +
		"javascript:window.opener.Build(" + 
		"'" + this.gReturnItem + "', null, '" + nextYYYY + "', '" + this.gFormat + "'" +
		");" +
		"\">>><\/A>]</TD></TR></TABLE><BR>");

	// Get the complete calendar code for each month..
	var j;
	for (i=11; i>=0; i--) {
		if (isIE)
			this.wwrite("<DIV ID=\"layer" + i + "\" CLASS=\"lclass" + i + "\">");
		else if (isNav)
			this.wwrite("<LAYER ID=\"layer" + i + "\" CLASS=\"lclass" + i + "\">");

		this.gMonth = i;
		this.gMonthName = Calendar.get_month(this.gMonth);
		vCode = this.getMonthlyCalendarCode();
		this.wwrite(this.gMonthName + "/" + this.gYear + "<BR>");
		this.wwrite(vCode);

		if (isIE)
			this.wwrite("</DIV>");
		else if (isNav)
			this.wwrite("</LAYER>");
	}

	this.wwrite("</font><BR></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 WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Sun</B></FONT></TD>";
	vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Mon</B></FONT></TD>";
	vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Tue</B></FONT></TD>";
	vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Wed</B></FONT></TD>";
	vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Thu</B></FONT></TD>";
	vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Fri</B></FONT></TD>";
	vCode = vCode + "<TD WIDTH='16%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Sat</B></FONT></TD>";
	vCode = vCode + "</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 WIDTH='14%'" + this.write_weekend_string(i) + "><FONT SIZE='2' FACE='" + fontface + "'> </FONT></TD>";
	}

	// Write rest of the 1st week
	for (j=vFirstDay; j<7; j++) {
		vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + "><FONT SIZE='2' FACE='" + fontface + "'>" + 
			"<A HREF='#' " + 
				"onClick=\"self.opener.document." + this.gReturnItem + ".value='" + 
				this.format_data(vDay) + 
				"';self.opener.document." + this.gReturnItem + ".focus();window.close();\">" + 
				this.format_day(vDay) + 
			"</A>" + 
			"</FONT></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 WIDTH='14%'" + this.write_weekend_string(j) + "><FONT SIZE='2' FACE='" + fontface + "'>" + 
				"<A HREF='#' " + 
					"onClick=\"self.opener.document." + this.gReturnItem + ".value='" + 
					this.format_data(vDay) + 
					"';self.opener.document." + this.gReturnItem + ".focus();window.close();\">" + 
				this.format_day(vDay) + 
				"</A>" + 
				"</FONT></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 WIDTH='14%'" + this.write_weekend_string(j+m) + 
			"><FONT SIZE='2' FACE='" + fontface + "' COLOR='gray'> </FONT></TD>";
		else
			vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j+m) + 
			"><FONT SIZE='2' FACE='" + fontface + "' COLOR='gray'>" + 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=\"RED\"><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
	if (gCal.gYearly)	gCal.showY();
	else	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];
	if (arguments[1] == null)
		p_month = new String(gNow.getMonth());
	else
		p_month = arguments[1];
	if (arguments[2] == "" || arguments[2] == null)
		p_year = new String(gNow.getFullYear().toString());
	else
		p_year = arguments[2];
	if (arguments[3] == null)
		p_format = "MM/DD/YYYY";
	else
		p_format = arguments[3];

	vWinCal = window.open("", "Calendar", 
		"width=250,height=250,status=no,resizable=no,top=200,left=200");
	vWinCal.opener = self;
	ggWinCal = vWinCal;
//	p_item.focus();
	Build(p_item, p_month, p_year, p_format);
	vWinCal.focus();
}
/*
Yearly Calendar Code Starts here
*/
function show_yearly_calendar(p_item, p_year, p_format) {
	// Load the defaults..
	if (p_year == null || p_year == "")
		p_year = new String(gNow.getFullYear().toString());
	if (p_format == null || p_format == "")
		p_format = "MM/DD/YYYY";

	var vWinCal = window.open("", "Calendar", "scrollbars=yes");
	vWinCal.opener = self;
	ggWinCal = vWinCal;

	Build(p_item, null, p_year, p_format);
}

/////////////////////////////////////////////////////////////////
//////////  END OF DATE PICKER SCRIPT ///////////////////////////
/////////////////////////////////////////////////////////////////
