var arrMonth = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
var arrDaysInMonth = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var arrAMPM = new Array("AM", "PM");

// given a date formatted as mm/dd/yyyy, create select objects
// for month, day, year.
function writeDateDropDown(strName, strDate) {
	objDate = new Date(strDate);
	
	var intMonth = objDate.getMonth();
	var intDay = objDate.getDate();
	var intYear = objDate.getFullYear();
	
	var html = "<select name='" + strName + "_month'>";

	for (i = 0; i < arrMonth.length; i++) {
		html += "<option value='" + (i+1) + "'";
		
		if (i == intMonth) {
			html += " selected";
		}
		
		html += ">" + arrMonth[i] + "</option>\r\n";
	}
	
	html += "</select>\r\n<select name='" + strName + "_day'>";
	
	for (i = 0; i <31; i++) {
		html += "<option value='" + (i + 1) + "'";
		
		if ((i+1) == intDay) {
			html += " selected";
		}
		
		html += ">" + (i + 1) + "</option>\r\n";
	}	
	
	html += "</select>\r\n<select name='" + strName + "_year'>";
	
	for (i = 0; i <=10; i++) {
		html += "<option value='" + (i + 2003) + "'";
		
		if ((i+2003) == intYear) {
			html += " selected";
		}
		
		html += ">" + (i + 2003) + "</option>\r\n";
	}	
	
		
	html += "</select>";
	document.write(html);
}


// given a time formatted as hh:mm:ss, create select objects
// for hour and minute
function writeTimeDropDown(strName, strTime) {
	objDate = new Date(strTime);
	
	var intHour = objDate.getHours();
	var int12Hour = parseInt(objDate.getHours()) % 12;
	var intMinute = objDate.getMinutes();
	
	if (intHour > 12) {
		am_pm = "PM";
	} else {
		am_pm = "AM";
	}
	
	if (int12Hour == 0) int12Hour = 12;
	
	var html = "<select name='" + strName + "_hour'>";

	for (i = 1; i < 13; i++) {
		html += "<option value='" + i + "'";
		
		if (i == int12Hour) {
			html += " selected";
		}
		
		h=i;
		
		if (i == 0) h=12;
		
		html += ">" + h + "</option>\r\n";
	}
	
	html += "</select>\r\n<select name='" + strName + "_minute'>";
	
	for (i = 0; i <60; i++) {
		
		m = "" +i;
		if (m.length < 2) m = "0" + m;
				
		html += "<option value='" + m + "'";
		
		if (i == intMinute) {
			html += " selected";
		}
		
		m = ""+i;
		
		if (m.length < 2) m="0" + m;
		
		html += ">" + m + "</option>";
	}	

	html += "</select>\r\n<select name='" + strName + "_ampm'>";
	
	for (i = 0; i < 2; i++) {
		html += "<option value='" + arrAMPM[i] + "'";
		
		if (arrAMPM[i] == am_pm) {
			html += " selected";
		}
		
		html += ">" + arrAMPM[i] + "</option>";
	}	
	
	html += "</select>\r\n";
	document.write(html);
}


function focusOn(el, msg) {
	if (el != null) {
		if (el.select != null)
			el.select();
		if (el.focus != null)
  			el.focus();
	}
  
	if (msg != null)
  		alert(msg);

	if (el != null && el.focus != null)
  		el.focus();
  
	return false;
}


function getFebDays(y) {
	var febDays = 28;
  
	if (y % 4 == 0) {
		febDays = 29;
    
	   if (y % 100 == 0) {
			febDays = 28;
      
			if (y % 400 == 0) {
				febDays = 29;
			}
		}
	}
  
	return febDays;
}

function checkDate(m, d, y) {
  
	m = parseInt(m) - 1;
	d = parseInt(d);
	y = parseInt(y);
    
    
	if (m < 0 || d < 1 || y < 1)
		return false;
	
	if ( (arrDaysInMonth[m] < d) || ((m == 1) && d > getFebDays(y)) ) {
		return false;
  }

  return true;
}


function checkEmail(el, msg) {
	var msgDetail = null;
	var value = trim(el.value);
	
	var atloc = value.indexOf('@');
	if (value.length < 1) 
		msgDetail = "";
	else if (atloc < 1)
		msgDetail = "\r\nEmail addresses have a username followed by an @ symbol.";
	else if (value.lastIndexOf('.') < atloc)
		msgDetail = "\r\nThe @ symbol should be followed by an email domain.";
	
	if (msgDetail != null) 
		return focusOn(el, msg+"\r\n"+msgDetail);
	else
		return true;

}

function checkZip(el, msg, mustBe5digitZip) {
	var value = trim(el.value);

	if (!mustBe5digitZip && value.length == 10 && value.charAt(5) == '-')
		value = value.substring(0,5)+value.substring(6);
	else if (value.length != 5)
		return messageHelper(el, msg);
	
	var lenx = value.length;
	for (var i = 0; i < lenx; i++) {
		if ("0123456789".indexOf(value.charAt(i)) == -1)
			return messageHelper(el, msg);
	}
	return true;
}

/*
  Trims left side spaces from the given value and returns trimed string
 */
function ltrim(value) {
	if (value == null) return value;
	if (value.length < 1) return value;
	var result = new String(value);
	while (result.length > 0 && result.charAt(0) <= ' ')
	{
		result = result.substr(1);
	}
	return result;
}

/*
  Trims right side spaces in the given value and returns trimed string
 */
function rtrim(value) {
	if (value == null) return value;
	if (value.length < 1) return value;
	var result = new String(value);
	while (result.length > 0 && result.charAt(result.length - 1) <= ' ')
	{
		result = result.substring(0, result.length - 1);
	}
	return result;
}

/*
  Trims spaces from both ends in the given value and returns trimed string
 */
function trim(value) {
	return rtrim(ltrim(value));
}
