window.onload = Security;

var request = false;
try {
 request = new XMLHttpRequest();
} catch (trymicrosoft) {
 try {
   request = new ActiveXObject("Msxml2.XMLHTTP");
 } catch (othermicrosoft) {
   try {
     request = new ActiveXObject("Microsoft.XMLHTTP");
   } catch (failed) {
     request = false;
   }
 }
}
if (!request)
alert("Error initializing XMLHttpRequest!");
/********************************************/
var request2 = false;
try {
 request2 = new XMLHttpRequest();
} catch (trymicrosoft) {
 try {
   request2 = new ActiveXObject("Msxml2.XMLHTTP");
 } catch (othermicrosoft) {
   try {
     request2 = new ActiveXObject("Microsoft.XMLHTTP");
   } catch (failed) {
     request2 = false;
   }
 }
}
if (!request2)
alert("Error initializing XMLHttpRequest!");

/******************/
/* Trim functions */
/******************/
function LTrim( value ) {
var re = /\s*((\S+\s*)*)/;
return value.replace(re, "$1");
}
function RTrim( value ) {
var re = /((\s*\S+)*)\s*/;
return value.replace(re, "$1");
}
function trim( value ) {
return LTrim(RTrim(value));
}
/*************************/
/* End of trim functions */
/*************************/

function Security(){
url = "PHP/checkSecurity.php";
request.open("GET", url, true);
request.onreadystatechange = SecurityResponse;
request.send(null);
}

function SecurityResponse(){
if (request.readyState == 4)
	{
	if (request.status == 200)
      		{
      		response = request.responseText;
      		response = trim(response);

      		if (response != 'M') window.location = "http://www.hospitalregisters.com/index.html";
      		CreateList();
      		} 
  	 else
   		{
   		alert("status is " + request.status);
   		}
   	} 
}

/****************************/
/* Retrieve the information */
/* and create the list      */
/****************************/
function CreateList(){
url = "PHP/getMembers.php";
request.open("GET", url, true);
request.onreadystatechange = DrawList;
request.send(null);
}

function DrawList(){
if (request.readyState == 4)
 	{
   if (request.status == 200)
   	{
     	response = request.responseText;
     	response = trim(response);
	
		document.getElementById("tablecontainer").innerHTML = response;	
     	
     	var t = new SortableTable(document.getElementById('namestable'), 480);
     	}
   else
   	{
     	alert("status is " + request.status);
     	}
 	}
}

function ShowDetails(username){
url = "PHP/getDetails.php?username=" + escape(username);
request.open("GET", url, true);
request.onreadystatechange = writeDetails;
request.send(null);
}

function writeDetails(){
if (request.readyState == 4)
	{
   if (request.status == 200)
   	{
   	data = trim(request.responseText);
		details = data.split("#");
		
		document.signform.name.value = details[0];
		document.signform.email.value = details[1];
		document.signform.username.value = details[2];
		document.profile.expirydate.value = details[3];
		document.profile.position.value = details[5];
		document.profile.company.value = details[6];
		document.profile.address1.value = details[7];
		document.profile.address2.value = details[8];
		document.profile.town.value = details[9];
		document.profile.country.value = details[10];
		document.profile.telephone.value = details[11];

		accesscodes = details[4];
		countries = accesscodes.split("|");

		numberofcountries = countries.length;
		numberofbases = currentaccess.length;
		

		for (k=0;k<numberofbases;k++)
			{
			document.currentaccess.elements[k].checked = false;
			
			for (j=0;j<numberofcountries;j++)
				{
				if (document.currentaccess.elements[k].value == countries[j])
					{
					document.currentaccess.elements[k].checked = true;
					}
				}
			}
		InformationBlock('visible');
   	} 
   else
   	{
     	alert("status is " + request.status);
     	}
 	}
}

function Email(email){
if(!email) return;
   	email = trim(email);
     	var to = email;
		var subject = "Message from United Kingdom Hospital Register";
		var doc = "mailto:" + to + "?subject=" + escape(subject); 
		window.location = doc;
}

function Update(){
name = document.signform.name.value;
if (!name)
	{
	alert("Subscriber's name is missing!");
	document.signform.name.value.focus();
	return;
	}
	
email = document.signform.email.value;
if(!email)
	{
	alert("An e-mail is needed to send reminders.");
	document.signform.email.focus();
	return;
	}
var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if (!filter.test(email))
	{
	alert("There's a fault in this e-mail address");
	document.signform.email.focus();
	return;
	}

username = document.signform.username.value;

expiry = document.profile.expirydate.value;
MonthNumber = new Array();
MonthNumber['Jan'] = "01";
MonthNumber['Feb'] = "02";
MonthNumber['Mar'] = "03";
MonthNumber['Apr'] = "04";
MonthNumber['May'] = "05";
MonthNumber['Jun'] = "06";
MonthNumber['Jul'] = "07";
MonthNumber['Aug'] = "08";
MonthNumber['Sep'] = "09";
MonthNumber['Oct'] = "10";
MonthNumber['Nov'] = "11";
MonthNumber['Dec'] = "12";

DateParts = expiry.split(" ");

Day = DateParts[0];
if (Day.length < 2) Day = "0" + Day;

Month = MonthNumber[DateParts[1]];

Year = DateParts[2];

expiry = Year + "-" + Month + "-" + Day;

position = document.profile.position.value;
company = document.profile.company.value;
address1 = document.profile.address1.value;
address2 = document.profile.address2.value;
town = document.profile.town.value;
country = document.profile.country.value;
postcode = document.profile.postcode.value;
telephone = document.profile.telephone.value;

var url = "PHP/updateMember.php";

var params = "";
params += "name=" + encodeURIComponent(name)
params += "&email=" + encodeURIComponent(email);
params += "&username=" + encodeURIComponent(username)
params += "&expiry=" + encodeURIComponent(expiry);
params += "&position=" + encodeURIComponent(position);
params += "&company=" + encodeURIComponent(company);
params += "&address1=" + encodeURIComponent(address1);
params += "&address2=" + encodeURIComponent(address2);
params += "&town=" + encodeURIComponent(town);
params += "&country=" + encodeURIComponent(country);
params += "&postcode=" + encodeURIComponent(postcode);
params += "&telephone=" + encodeURIComponent(telephone);

request.open("POST", url, true);

request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.setRequestHeader("Content-Type", "text/html; charset=utf-8");
request.setRequestHeader("Content-length", params.length);
request.setRequestHeader("Connection", "close");
request.onreadystatechange = updateOK;
request.send(params);
}

function updateOK(){
if (request.readyState == 4)
	{
	if (request.status == 200)
   		{
   		InformationBlock('hidden');
   		CreateList();
   		} 
   else
   		{
   		alert("status is " + request.status);
     	}
   }
}

function Kill(){
username = document.signform.username.value;
url = "PHP/removeMember.php?username=" + escape(username);alert(url)
request.open("GET", url, true);
request.onreadystatechange = updateOK;
request.send(null);
}

function CreatePassword(){
vowels = new Array("a", "e", "i", "o", "u", "ae", "oe");  
cons = new Array("b", "c", "d", "g", "h", "j", "k", "l", "m", "n", "p", "r", "s", "t", "u", "v", "w", "tr",  
"cr", "br", "fr", "th", "dr", "ch", "ph", "wr", "st", "sp", "sw", "pr", "sl", "cl", "kl");  
  
num_vowels = vowels.length - 1;  
num_cons = cons.length - 1;  

word = "";
for(i = 0; i < 8; i++)
	{
	vrand = Math.round(num_vowels*Math.random());
	crand = Math.round(num_cons*Math.random());  
	word += cons[crand];
	word += vowels[vrand];
	}
document.newbasic.password.value = word.substring(0,8);   
}

function ConvertDate(expiry){
MonthNumber['Jan'] = "01";
MonthNumber['Feb'] = "02";
MonthNumber['Mar'] = "03";
MonthNumber['Apr'] = "04";
MonthNumber['May'] = "05";
MonthNumber['Jun'] = "06";
MonthNumber['Jul'] = "07";
MonthNumber['Aug'] = "08";
MonthNumber['Sep'] = "09";
MonthNumber['Oct'] = "10";
MonthNumber['Nov'] = "11";
MonthNumber['Dec'] = "12";

DateParts = expiry.split(" ");

Day = DateParts[0];
if (Day.length < 2) Day = "0" + Day;

Month = MonthNumber[DateParts[1]];

Year = DateParts[2];

MySQLDate = Year + "-" + Month + "-" + Day;

return MySQLDate;
}

function CheckEurope(){
if (document.access.elements[0].checked)
	{
	for (k=4;k<12;k++)
		{
		document.access.elements[k].checked = false;
		document.access.elements[k].disabled = true;
		}
	document.access.elements[2].checked = false;
	document.access.elements[2].disabled = true;
	}
else
	{
	for (k=1;k<12;k++)
		{
		document.access.elements[k].disabled = false;
		}
	}
}

function CheckManager(){
if (document.access.elements[11].checked)
	{
	for (k=0;k<11;k++)
		{
		document.access.elements[k].checked = false;
		document.access.elements[k].disabled = true;
		}
	}
else
	{
	for (k=0;k<11;k++)
		{
		document.access.elements[k].disabled = false;
		}
	}

}

function AddSubscriber(){

/**************/
/* Check name */
/**************/
who = document.newbasic.name.value;
who = trim(who);
if(!who)
	{
	alert("Please enter their name");
	document.newbasic.name.focus();
	return;
	}

/***************/
/* Check email */
/***************/
mail = document.newbasic.email.value;
mail = trim(mail);
if(!mail)
	{
	alert("An e-mail is needed to send the username & password.");
	document.signform.email.focus();
	return;
	}
var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if (!filter.test(mail))
	{
	alert("There's a fault in this e-mail address");
	document.newbasic.email.focus();
	return;
	}

/******************/
/* Check Username */
/******************/
uname = document.newbasic.username.value;
uname = trim(uname);

if (!uname)
	{
	alert("No username created");
	document.newbasic.username.focus();
	return;
	}

if (uname.length<6 || uname.length >20)
	{
	alert("Please make the Username between 6 and 20 letters long");
	document.newbasic.username.focus();
	return;
	}
accessvalue = "";
for (k=0;k<12;k++)
	{
	if (document.access.elements[k].checked)
		{
		accessvalue += document.access.elements[k].value + "|";
		}
	}
accessvalue = accessvalue.substring(0,accessvalue.length-1);

for (k=0;k<5;k++)
	{
	if (document.edition.elements[k].checked)
		{
		editionvalue = document.edition.elements[k].value;
		}
	}

position = document.newprofile.position.value;
company = document.newprofile.company.value;
address1 = document.newprofile.address1.value;
address2 = document.newprofile.address2.value;
town = document.newprofile.town.value;
country = document.newprofile.country.value;
postcode = document.newprofile.postcode.value;
telephone = document.newprofile.telephone.value;

/***************************************/	
/* Gather up data and send to PHP file */
/***************************************/
var url = "PHP/addNewUser.php?";

var params = "";
params += "param1=" + encodeURIComponent(who)
params += "&param2=" + encodeURIComponent(mail);
params += "&param3=" + encodeURIComponent(uname)
params += "&param4=" + encodeURIComponent(accessvalue);
params += "&param5=" + encodeURIComponent(editionvalue);
params += "&param6=" + encodeURIComponent(position);
params += "&param7=" + encodeURIComponent(company);
params += "&param8=" + encodeURIComponent(address1);
params += "&param9=" + encodeURIComponent(address2);
params += "&param10=" + encodeURIComponent(town);
params += "&param11=" + encodeURIComponent(country);
params += "&param12=" + encodeURIComponent(postcode);
params += "&param13=" + encodeURIComponent(telephone);

request.open("POST", url, true);

request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.setRequestHeader("Content-Type", "text/html; charset=utf-8");
request.setRequestHeader("Content-length", params.length);
request.setRequestHeader("Connection", "close");
request.onreadystatechange = SendOK;
request.send(params);
}

function SendOK(){
Message = "";
if (request.readyState == 4)
	{
	if (request.status == 200)
   		{
   		alert("New user added");
   		document.newbasic.reset();
   		document.newprofile.reset();
   		CreateList();
   		}
	}    
}
function CheckUsername(){
uname = document.newbasic.username.value;
uname = trim(uname);
var url = "PHP/checkUsername.php?";
url += "param1=" + escape(uname);
request.open("GET", url, true);
request.onreadystatechange = UsernameResponse;
request.send(null);
}

function UsernameResponse(){
if (request.readyState == 4)
	{
   if (request.status == 200)
   	{
     	var response = request.responseText;
     	response = trim(response);
     	if (response != "OK")
     		{
     		alert("Unfortunately, this Username has\nalready been allocated.\n\nPlease try another.");
     		document.newbasic.username.focus();
     		return;
     		}	 		
     	}
 	}
}

function CountryChanged(){
countryname = document.newprofile.country.value.toLowerCase();

if (!countryname)
	{
	document.getElementById("suggestions").style.visibility = "hidden";
	return;
	}

document.getElementById("suggestions").style.visibility = "visible";

firstlistedname = "";
if (document.getElementById("countrytable") !== null)
	{
	firstlistedname = document.getElementById("countrytable").rows[0].cells[0].innerHTML;
	firstlistedname = firstlistedname.toLowerCase();
	}
if (countryname == firstlistedname)
	{
	return;
	}	

result = countryname.replace(/\?/g,"_");
var url = "PHP/getCountry.php?param1=" + escape(result);
request.open("GET", url, true);
request.onreadystatechange = writeCountry;
request.send(null);
}

function writeCountry(){
if (request.readyState == 4)
	{
   if (request.status == 200)
   	{
     	var response = request.responseText;
     	tableresult = trim(response);
		if (tableresult)
			{
			document.getElementById("suggestions").style.visibility = "visible";	
     		document.getElementById("suggestions").innerHTML = tableresult;
     		listedresults = document.getElementById('countrytable').rows.length;
     		if (listedresults == 1)
     			{
     			result = document.getElementById("countrytable").rows[0].cells[0].innerHTML;
     			document.getElementById("country").value = result;
     			document.getElementById("suggestions").style.visibility = "hidden";
     			}
			}
		else
			{
			document.getElementById("suggestions").style.visibility = "hidden";
			return;
			}
   	} 	
   	else
   	{
     	alert("status is " + request.status);
     	}
 	}
}

function MoveCountry(k){
result = document.getElementById("countrytable").rows[k].cells[0].innerHTML;
document.newprofile.country.value = result;
document.getElementById("suggestions").style.visibility = "hidden";
document.getElementById("suggestions").innerHTML = "";
CountryChanged();
}

function checkManager(){
return;
}

function NewSubscriber(state){
document.getElementById("NewSubscriber").style.visibility = state;
}

function InformationBlock(state){
document.getElementById("InformationBlock").style.visibility = state;
}

/*******************/
/** Calendar Code **/
/*******************/

var datePickerDivID = "datepicker";
var iFrameDivID = "datepickeriframe";

var dayArrayShort = new Array('Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa');
var dayArrayMed = new Array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
var dayArrayLong = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var monthArrayShort = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
var monthArrayMed = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec');
var monthArrayLong = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
 
var defaultDateSeparator = " ";
var defaultDateFormat = "dmy";
var dateSeparator = defaultDateSeparator;
var dateFormat = defaultDateFormat;

function displayDatePicker(dateFieldName, displayBelowThisObject, dtFormat, dtSep)
{
  var targetDateField = document.getElementsByName (dateFieldName).item(0);

  if (!displayBelowThisObject)
    displayBelowThisObject = targetDateField;

  if (dtSep)
    dateSeparator = dtSep;
  else
    dateSeparator = defaultDateSeparator;

  if (dtFormat)
    dateFormat = dtFormat;
  else
    dateFormat = defaultDateFormat;
 
  var x = displayBelowThisObject.offsetLeft;
  var y = displayBelowThisObject.offsetTop + displayBelowThisObject.offsetHeight ;
 
  var parent = displayBelowThisObject;
  while (parent.offsetParent) {
    parent = parent.offsetParent;
    x += parent.offsetLeft;
    y += parent.offsetTop ;
  }
 
  drawDatePicker(targetDateField, x, y);
}

function drawDatePicker(targetDateField, x, y)
{
  var dt = getFieldDate(targetDateField.value );

  if (!document.getElementById(datePickerDivID)) {
    var newNode = document.createElement("div");
    newNode.setAttribute("id", datePickerDivID);
    newNode.setAttribute("class", "dpDiv");
    newNode.setAttribute("style", "visibility: hidden;");
    document.body.appendChild(newNode);
  }
 
  var pickerDiv = document.getElementById(datePickerDivID);
  pickerDiv.style.position = "absolute";
  pickerDiv.style.left = x + "px";
  pickerDiv.style.top = y + "px";
  pickerDiv.style.visibility = (pickerDiv.style.visibility == "visible" ? "hidden" : "visible");
  pickerDiv.style.display = (pickerDiv.style.display == "block" ? "none" : "block");
  pickerDiv.style.zIndex = 10000;
 
  refreshDatePicker(targetDateField.name, dt.getFullYear(), dt.getMonth(), dt.getDate());
}

function refreshDatePicker(dateFieldName, year, month, day)
{
  var thisDay = new Date();
 
  if ((month >= 0) && (year > 0)) {
    thisDay = new Date(year, month, 1);
  } else {
    day = thisDay.getDate();
    thisDay.setDate(1);
  }
 
  var crlf = "\r\n";
  var TABLE = "<table cols=7 class='dpTable'>" + crlf;
  var xTABLE = "</table>" + crlf;
  var TR = "<tr class='dpTR'>";
  var TR_title = "<tr class='dpTitleTR'>";
  var TR_days = "<tr class='dpDayTR'>";
  var TR_todaybutton = "<tr class='dpTodayButtonTR'>";
  var xTR = "</tr>" + crlf;
  var TD = "<td class='dpTD' onMouseOut='this.className=\"dpTD\";' onMouseOver=' this.className=\"dpTDHover\";' ";    // leave this tag open, because we'll be adding an onClick event
  var TD_title = "<td colspan=5 class='dpTitleTD'>";
  var TD_buttons = "<td class='dpButtonTD'>";
  var TD_todaybutton = "<td colspan=7 class='dpTodayButtonTD'>";
  var TD_days = "<td class='dpDayTD'>";
  var TD_selected = "<td class='dpDayHighlightTD' onMouseOut='this.className=\"dpDayHighlightTD\";' onMouseOver='this.className=\"dpTDHover\";' ";    // leave this tag open, because we'll be adding an onClick event
  var xTD = "</td>" + crlf;
  var DIV_title = "<div class='dpTitleText'>";
  var DIV_selected = "<div class='dpDayHighlight'>";
  var xDIV = "</div>";

  var html = TABLE;
 
  html += TR_title;
  html += TD_buttons + getButtonCode(dateFieldName, thisDay, -1, "&lt;") + xTD;
  html += TD_title + DIV_title + monthArrayLong[ thisDay.getMonth()] + " " + thisDay.getFullYear() + xDIV + xTD;
  html += TD_buttons + getButtonCode(dateFieldName, thisDay, 1, "&gt;") + xTD;
  html += xTR;
 
  html += TR_days;
  for(i = 0; i < dayArrayShort.length; i++)
    html += TD_days + dayArrayShort[i] + xTD;
  html += xTR;
 
  html += TR;
 
  for (i = 0; i < thisDay.getDay(); i++)
    html += TD + "&nbsp;" + xTD;
 
  do {
    dayNum = thisDay.getDate();
    TD_onclick = " onclick=\"updateDateField('" + dateFieldName + "', '" + getDateString(thisDay) + "');\">";
    
    if (dayNum == day)
      html += TD_selected + TD_onclick + DIV_selected + dayNum + xDIV + xTD;
    else
      html += TD + TD_onclick + dayNum + xTD;
    
    if (thisDay.getDay() == 6)
      html += xTR + TR;
    
    thisDay.setDate(thisDay.getDate() + 1);
  } while (thisDay.getDate() > 1)
 
  if (thisDay.getDay() > 0) {
    for (i = 6; i > thisDay.getDay(); i--)
      html += TD + "&nbsp;" + xTD;
  }
  html += xTR;
 
  var today = new Date();
  var todayString = "Today is " + dayArrayMed[today.getDay()] + ", " + monthArrayMed[ today.getMonth()] + " " + today.getDate();
  html += TR_todaybutton + TD_todaybutton;
  html += "<button class='dpTodayButton' onClick='refreshDatePicker(\"" + dateFieldName + "\");'>this month</button> ";
  html += "<button class='dpTodayButton' onClick='updateDateField(\"" + dateFieldName + "\");'>close</button>";
  html += xTD + xTR;
 
  html += xTABLE;
 
  document.getElementById(datePickerDivID).innerHTML = html;
  adjustiFrame();
}

function getButtonCode(dateFieldName, dateVal, adjust, label)
{
  var newMonth = (dateVal.getMonth () + adjust) % 12;
  var newYear = dateVal.getFullYear() + parseInt((dateVal.getMonth() + adjust) / 12);
  if (newMonth < 0) {
    newMonth += 12;
    newYear += -1;
  }
 
  return "<button class='dpButton' onClick='refreshDatePicker(\"" + dateFieldName + "\", " + newYear + ", " + newMonth + ");'>" + label + "</button>";
}


function getDateString(dateVal)
{
  var dayString = "00" + dateVal.getDate();
  var monthString = "00" + (dateVal.getMonth()+1);
  dayString = dayString.substring(dayString.length - 2);
  monthString = monthString.substring(monthString.length - 2);
 
  switch (dateFormat) {
    case "dmy" :
      return dayString + dateSeparator + monthString + dateSeparator + dateVal.getFullYear();
    case "ymd" :
      return dateVal.getFullYear() + dateSeparator + monthString + dateSeparator + dayString;
    case "mdy" :
    default :
      return monthString + dateSeparator + dayString + dateSeparator + dateVal.getFullYear();
  }
}

function getFieldDate(dateString)
{

  var dateVal;
  var dArray;
  var d, m, y;
 
  try {
    dArray = splitDateString(dateString);
    if (dArray) {
      switch (dateFormat) {
        case "dmy" :
          d = parseInt(dArray[0], 10);
          m = parseInt(dArray[1], 10) - 1;
          y = parseInt(dArray[2], 10);
          break;
        case "ymd" :
          d = parseInt(dArray[2], 10);
          m = parseInt(dArray[1], 10) - 1;
          y = parseInt(dArray[0], 10);
          break;
        case "mdy" :
        default :
          d = parseInt(dArray[1], 10);
          m = parseInt(dArray[0], 10) - 1;
          y = parseInt(dArray[2], 10);
          break;
      }
      dateVal = new Date(y, m, d);
    } else if (dateString) {
      dateVal = new Date(dateString);
    } else {
      dateVal = new Date();
    }
  } catch(e) {
    dateVal = new Date();
  }

return dateVal;
}

function splitDateString(dateString)
{
  var dArray;
  if (dateString.indexOf("/") >= 0)
    dArray = dateString.split("/");
  else if (dateString.indexOf(".") >= 0)
    dArray = dateString.split(".");
  else if (dateString.indexOf("-") >= 0)
    dArray = dateString.split("-");
  else if (dateString.indexOf("\\") >= 0)
    dArray = dateString.split("\\");
  else
    dArray = false;
 
  return dArray;
}

function updateDateField(dateFieldName, dateString)
{
  dateParts = dateString.split(" ");
  
  dayPart = dateParts[0];
  dayPart = parseInt(dayPart,10);
  
  monthPart = dateParts[1];
  monthPart = parseInt(monthPart,10);
  monthName = monthArrayShort[monthPart-1];
  
  dateString = dayPart + " " + monthName + " " + dateParts[2];

  var targetDateField = document.getElementsByName (dateFieldName).item(0);
  if (dateString)
    targetDateField.value = dateString;
 
  var pickerDiv = document.getElementById(datePickerDivID);
  pickerDiv.style.visibility = "hidden";
  pickerDiv.style.display = "none";
 
  adjustiFrame();
  targetDateField.focus();
 
  if ((dateString) && (typeof(datePickerClosed) == "function"))
    datePickerClosed(targetDateField);
}

function adjustiFrame(pickerDiv, iFrameDiv)
{
  var is_opera = (navigator.userAgent.toLowerCase().indexOf("opera") != -1);
  if (is_opera)
    return;
  
  try {
    if (!document.getElementById(iFrameDivID)) {
      var newNode = document.createElement("iFrame");
      newNode.setAttribute("id", iFrameDivID);
      newNode.setAttribute("src", "javascript:false;");
      newNode.setAttribute("scrolling", "no");
      newNode.setAttribute ("frameborder", "0");
      document.body.appendChild(newNode);
    }
    
    if (!pickerDiv)
      pickerDiv = document.getElementById(datePickerDivID);
    if (!iFrameDiv)
      iFrameDiv = document.getElementById(iFrameDivID);
    
    try {
      iFrameDiv.style.position = "absolute";
      iFrameDiv.style.width = pickerDiv.offsetWidth;
      iFrameDiv.style.height = pickerDiv.offsetHeight ;
      iFrameDiv.style.top = pickerDiv.style.top;
      iFrameDiv.style.left = pickerDiv.style.left;
      iFrameDiv.style.zIndex = pickerDiv.style.zIndex - 1;
      iFrameDiv.style.visibility = pickerDiv.style.visibility ;
      iFrameDiv.style.display = pickerDiv.style.display;
    } catch(e) {
    }
 
  } catch (ee) {
  }
}

function datePickerClosed(dateField)
{
  var dateString = dateField.value;
  dateParts = dateString.split(" ");
  monthPart = dateParts[1];
}

