function set_date(str_fieldname) {
 
 str_target_field = document.getElementById(str_fieldname)
 ele_day = document.getElementById(str_fieldname + "_d")
 ele_month = document.getElementById(str_fieldname + "_m")
 ele_year = document.getElementById(str_fieldname + "_y")
 str_day = ele_day.value
 str_month = ele_month.value
 str_year = ele_year.value
 
 //Clear List
 ele_day.length = 0
 //Build base 28
 ele_day.options[0] = new Option("-", "", false, false)
 ele_day.options[1] = new Option("01", 1, false, false)
 ele_day.options[2] = new Option("02", 2, false, false)
 ele_day.options[3] = new Option("03", 3, false, false)
 ele_day.options[4] = new Option("04", 4, false, false)
 ele_day.options[5] = new Option("05", 5, false, false)
 ele_day.options[6] = new Option("06", 6, false, false)
 ele_day.options[7] = new Option("07", 7, false, false)
 ele_day.options[8] = new Option("08", 8, false, false)
 ele_day.options[9] = new Option("09", 9, false, false)
 ele_day.options[10] = new Option("10", 10, false, false)
 ele_day.options[11] = new Option("11", 11, false, false)
 ele_day.options[12] = new Option("12", 12, false, false)
 ele_day.options[13] = new Option("13", 13, false, false)
 ele_day.options[14] = new Option("14", 14, false, false)
 ele_day.options[15] = new Option("15", 15, false, false)
 ele_day.options[16] = new Option("16", 16, false, false)
 ele_day.options[17] = new Option("17", 17, false, false)
 ele_day.options[18] = new Option("18", 18, false, false)
 ele_day.options[19] = new Option("19", 19, false, false)
 ele_day.options[20] = new Option("20", 20, false, false)
 ele_day.options[21] = new Option("21", 21, false, false)
 ele_day.options[22] = new Option("22", 22, false, false)
 ele_day.options[23] = new Option("23", 23, false, false)
 ele_day.options[24] = new Option("24", 24, false, false)
 ele_day.options[25] = new Option("25", 25, false, false)
 ele_day.options[26] = new Option("26", 26, false, false)
 ele_day.options[27] = new Option("27", 27, false, false)

 ele_day.options[28] = new Option("28", 28, false, false)
 //Which Selected Month?
 switch (str_month) {
   case "09" : case "04" : case "06" : case "11" :
	  ele_day.options[29] = new Option("29", 29, false, false)
	  ele_day.options[30] = new Option("30", 30, false, false)
    break; 
   case "02" : 
	 	if (str_year/4 == parseInt(str_year/4)) {
	  	ele_day.options[29] = new Option("29", 29, false, false)
		}
    break; 
   default : 
	  ele_day.options[29] = new Option("29", 29, false, false)
	  ele_day.options[30] = new Option("30", 30, false, false) 
	  ele_day.options[31] = new Option("31", 31, false, false) 
	} 
//Reset day
		if (ele_day.options.length<str_day) { 
	  ele_day.options.selectedIndex = ele_day.options.length-1
		} else {
	  ele_day.options.selectedIndex = str_day
		}

 str_day = ele_day.value
 str_month = ele_month.value
 str_year = ele_year.value
 
 str_new_date = str_day + "/" + str_month + "/" + str_year
 str_target_field.value = str_new_date
}
function verify_email(str) {
	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)
	if (str.indexOf(at)==-1){return false}
	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr) {return false}
	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr) {return false}
	if (str.indexOf(at,(lat+1))!=-1) {return false}
	if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot) {return false}
	if (str.indexOf(dot,(lat+2))==-1) {return false}
	if (str.indexOf(" ")!=-1) {return false}
	return true					
	}

function ensureNumeric(strString,mini,maxi)
   {
   var strValidChars = "0123456789";
   var strChar;
   var blnResult = true;
   if (strString.length < mini | strString.length > maxi) return false;
   for (i = 0; i < strString.length && blnResult == true; i++)
      {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
         blnResult = false;
         }
      }
   return blnResult;
   }

function check_form(str_form,str_args) { // v0 copyright Andrew Watson Paligap 2004 (CALL) onClick="check_form('frm_subscribe','str_name|t|1|You have not entered your name.,str_email|e|1|You have entered an invalid e-mail address.');return document.check_form_return;"
	var arr_args = str_args.split(",")
	str_error_message = ""
	for(i=0;i<arr_args.length;i++) {
		var arr_this_element = arr_args[i].split("|")
		str_field = arr_this_element[0]
		str_type = arr_this_element[1]
		bln_required = arr_this_element[2]
		str_message = arr_this_element[3]
		this_value = eval("document." + str_form + "." + str_field + ".value")
		this_value = this_value.replace(" ","")
			if (str_type == "t") { //Check String
				if (bln_required==1) {
					if (this_value=='') {str_error_message = str_error_message + str_message + "\n\n"}
				}
			} else if (str_type == "e") { //Check Email
				if (bln_required==1) {
					if (this_value==''||!verify_email(this_value)) {str_error_message = str_error_message + str_message + "\n\n"}
				} else {
					if (this_value!=''&&!verify_email(this_value)) {str_error_message = str_error_message + str_message + "\n\n"}
				}
			} else if (str_type == "n") { //Check Numeric
				if (bln_required==1) {
					if (this_value==''||isNaN(this_value)) {str_error_message = str_error_message + str_message + "\n\n"}
				} else {
					if (this_value!=''&&isNaN(this_value)) {str_error_message = str_error_message + str_message + "\n\n"}
				}
			} else if (str_type == "d") { //Check Date
				if (bln_required==1) {
					if (this_value==''||!verify_date(this_value)) {str_error_message = str_error_message + str_message + "\n\n"}
				} else {
					if (this_value!=''&&!verify_date(this_value)) {str_error_message = str_error_message + str_message + "\n\n"}
				}
			}
		}
		if (str_error_message!="") {
			str_error_message = "Incorrect Form Information!                              \n________________________\n\n" + str_error_message
			alert(str_error_message)
			document.check_form_return = false
		} else {
			document.check_form_return = true
			//eval("document.forms." + str_form + ".submit();")
		}
	}


function check_date(str_input,str_element) {
	var str_prompt = new String("You have entered an invalid date. \n\nPlease ensure dates are entered in the following format... \n\nDD/MM/YYYY \n\n(e.g.) 14/05/2005");
	var bln_good = true;
	var str = new String(str_input);
	if (str!="") {
		var slashes = str.indexOf("/");
		if(slashes < 0) {bln_good = false} else {;
			var arr = str.split("/");
			if(arr.length != 3) {bln_good = false} else {;
				if(isNaN(arr[0])||isNaN(arr[1])||isNaN(arr[2])) {bln_good = false} else {;
					if(arr[2].length!=4) {bln_good = false} else {;
					var arr_months = new Array(0,31,28,31,30,31,30,31,30,31,31,30,31);
					var feb_days = (((arr[2] % 4 == 0) && ( (!(arr[2] % 100 == 0)) || (arr[2] % 400 == 0))) ? 29 : 28 );
					arr_months[2] = feb_days;
					var day = new Number(arr[0])
					var month = new Number(arr[1])
					if(month>12||month<0) {bln_good = false};
					if(arr_months[month]<day||day<1) {bln_good = false};
					}
				}
			}
		}
	}
	if(!bln_good) {
		alert(str_prompt);
		document.getElementById(str_element).style.color = "red";
		} else {
		document.getElementById(str_element).style.color = "black";
		}
}
