var mt = 0;
var yr = 0;

var TIME_INCLUDED = 1;
var REWRITE_DATE = 2;

var MONTH_NAME_EN = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
var DAY_NAME_EN = new Array("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun");
var MONTH_LENGTHS = new Array(   31,   28,   31,   30,   31,   30,   31,   31,   30,   31,   30,   31);

var DATE_FORMAT_SHORT = "dd MMM yyyy";
var DATE_FORMAT_LONG = "dd MMM yyyy hh:mm";

var myField;
var fieldDate;

Array.prototype.indexOf = function(item) {
    for (var i = 0; i < this.length; i++) {
        if (this[i] == item) {
            return i;
        }
    }
    return -1;
};


//---

var companyID;

var xmlHttp;
var completeDiv;
var completeFrm;
var inputField;
var nameTable;
var nameTableBody;

//--- Leave page
//---
function leavePage() {
}

//--- Check Mandatory values
//---
//---

function checkValue(name, outputname) {
	var data=document.enquiry
		alert("Checking: " + name + " = " + outputname);
    if (data.name != null) {
		alert("Its not null! " + data.name.value);
        if (data.name.type == "select-one") {
            if (data.name.selectedIndex < 0 ||
                    ( data.name.selectedIndex == 0 && data.name.text == '') ) {
                // if nothing, or the first element is selected and is blank,
                // this isn't valid.
                alert("Please enter the " + outputname);
                return false;
            }
            return true;
        } else if (data.name.value == "") {
            alert("Please enter the " + outputname);
            return false;
        }
    }
    return true;
}

function submitData(req)
{
	ok = checkForm();
	if (ok == false)
	{
		return false;
	}
	else {

	var data=document.enquiry
	var enqText = "\n"
	enqText += "     Name:\t" + data.contact.value + "\n"
	enqText += "    Title:\n" + data.title.value + "\n\n"
	enqText += "    Phone:\t" + data.phone.value + "\n"
	enqText += "   E-Mail:\t" + data.email.value + "\n"
	enqText += "  Company:\t" + data.company.value + "\n"
	enqText += "     City:\t" + data.city.value + "\n"
	enqText += "  Country:\t" + data.country.options[data.country.selectedIndex].text + "\n"
	enqText += "    Query:\n" + data.query.value + "\n\n"
	//enqText += "Browser Name: " + navigator.appName + "\n"
	//enqText += "Browser Info: " + navigator.userAgent + "\n"
	req.Enquiry.value = enqText + "\n\n"
	alert(data.contact.value + ": Thank you for your enquiry!")
//	window.document.enquiry.reset()
//	window.document.submitForm.reset()
//	return confirm(Inquiry+"\nClick OK to confirm submission.")
}
	}

function popup(message)
{
	alert("The message is: " + message);
}


function checkForm() {
	var data=document.enquiry


   charsok= validateChars(data.email);
        if (charsok == false) {
        return false;
        }

   charsok= validateChars(data.title);
        if (charsok == false) {
        return false;
        }


 charsok= validateChars(data.contact);
  	if (charsok == false) {
        return false;
        }

   charsok= validateChars(data.city);
        if (charsok == false) {
        return false;
        }

   charsok= validateChars(data.company);
        if (charsok == false) {
        return false;
        }

  charsok= validateChars(data.phone);
        if (charsok == false) {
        return false;
        }

   charsok= validateChars(data.preferredLocs);
        if (charsok == false) {
        return false;
        }
   charsok= validateChars(data.query);
        if (charsok == false) {
        return false;
        }

if (data.contact.value == null || data.contact.value =="")
{
	alert ("Please enter your name");
	return false
}
if (data.email.value == null || data.email.value =="")
{
	alert("Please enter a valid email address");
	return false
}

return true
}


function submitForm() {
	var data=document.privatepage
    var currentpage=document.location.href;
    var pos_array = currentpage.split("docs");
	var nohttp_array = pos_array[0].split("http://");
	var newpage = "http://" + data.user.value + ":" + data.password.value + "@" + nohttp_array[1] + "docs/private/support.htm";
//	alert(newpage);
	document.location.href=newpage;

}

// mh begin

function getCountry(country, index) 
 {
   document.srchform.country.selectedIndex=index;
   window.status=country;
 }

function checkChoices() {

// displayAllChecked()

// count the sponsors...

   numChoices=document.reqinfo.length - 1;
   numChecked=0;
   for  (counter=0; counter<=numChoices; counter++) {
   if  (document.reqinfo.elements[counter].checked) {
	   numChecked++;
	   }
   }

// now do the companies
   numChoices=frames['resultsframe'].document.resultspage.length - 1;
   for  (counter=0; counter<=numChoices; counter++) {
   if  (frames['resultsframe'].document.resultspage.elements[counter].checked) {
	   numChecked++;
	   	   }
   }

if (numChecked > 5)
{
    alert('Please select no more than 5 companies');
	return false;
}

if (numChecked == 0)
{
	alert('Please choose at least one company');
	return false;
}

document.submitbit.elements['selected1'].value = 0;
document.submitbit.elements['selected2'].value = 0;
document.submitbit.elements['selected3'].value = 0;
document.submitbit.elements['selected4'].value = 0;
document.submitbit.elements['selected5'].value = 0;

   numChoices=document.reqinfo.length - 1;
   numChecked=0;

   for  (counter=0; counter<=numChoices; counter++) {
   if  (document.reqinfo.elements[counter].checked) {

	   numChecked++;
	   selected = "selected" + numChecked;
//	   	   alert("updating " + selected + " value = " + document.reqinfo.elements[counter].value);
	   document.submitbit.elements[selected].value = document.reqinfo.elements[counter].value;
	   }
   }

// now do the companies

   numChoices=frames['resultsframe'].document.resultspage.length - 1;
   for  (counter=0; counter<=numChoices; counter++) {
   if  (frames['resultsframe'].document.resultspage.elements[counter].checked) {

	   numChecked++;
	   selected = "selected" + numChecked;
//	   alert("updating " + selected + " value = " + frames['resultsframe'].document.resultspage.elements[counter].value);
	   document.submitbit.elements[selected].value = frames['resultsframe'].document.resultspage.elements[counter].value;

	   }
   }
   

//alert("Selected = " + document.submitbit.elements['selected1'].value + "," + document.submitbit.elements['selected2'].value + "," + document.submitbit.elements['selected3'].value + "," + document.submitbit.elements['selected4'].value + "," + document.submitbit.elements['selected5'].value);
}


function validateChars(fieldname)
{
// check for dodgy characters in input fields
var iChars = "`!#$%^+=[]\\\';/{}|\":<>";
  for (var i = 0; i < fieldname.value.length; i++) {
        if (iChars.indexOf(fieldname.value.charAt(i)) != -1) {
        alert ("You have entered special characters that are not allowed.\n Please remove them and try again.");
        return false;
        }
  }

}


function validateSearch() 
 {

   charsok= validateChars(document.srchform.keyword);
  if (charsok == false) {
	return false;
	}
   charsok= validateChars(document.srchform.state);
  if (charsok == false) {
        return false;
        }

	
  if ((document.srchform.keyword.value.length <= 1) && (document.srchform.state.value.length <= 1)){
   alert("You must enter either a City/Town or a State/Region/Postcode");
   return false;
  }else{
   return true;
  }
 }

function validateLogin() 
 {
  if ((document.loginform.login.value.length <= 1) || (document.loginform.password.value.length <= 1)){
   alert("You must enter an ID and Password");
   return false;
  }else{
   return true;
  }
 }

function emailalert() {
   alert("Enter a Valid Email address in the format user@domain");
   document.reqform.emailaddy.focus();
 }

function email2alert() {
   alert("Please confirm your email address");
   document.reqform.emailaddy2.focus();
 }

function missingalert() {
   alert("Fields marked with an asterix '*' are mandatory");
 }

function emailvalidate()
 {

   for (var i = 0; i < document.reqform.length; i++) {
        charsok=validateChars(document.reqform.elements[i]);
                if (charsok == false) {
                return false;
                }
        }

   emailaddy=document.reqform.emailaddy;
   emailaddy2=document.reqform.emailaddy2;
   if (document.reqform.surname.value.length <= 2)
   {
     alert("Please enter your Last Name");
     document.reqform.surname.focus();
     return false;
   }
   if (emailaddy.value.length < 7)
   {
     emailalert();
     return false;
   }
   if (emailaddy.value.indexOf("@") < 1)
   {
     emailalert();
     return false;
   }
   if (emailaddy.value.indexOf(".") < 1)
   {
       emailalert();
       return false;
   }
   if (emailaddy.value.length - emailaddy.value.lastIndexOf(".") <=2)
   {
     emailalert();
     return false;
   }
   if (emailaddy.value.lastIndexOf("@") > emailaddy.value.lastIndexOf("."))
   {
     emailalert();
     return false;
   }

     if (emailaddy.value != emailaddy2.value)
   {
     email2alert();
     return false;
   }

     if (document.reqform.tocity.value.length < 1)
   {
     missingalert();
     return false;
   }
     if (document.reqform.tocountry.value.length < 1)
   {
     missingalert();
     return false;
   }
     if (document.reqform.phone.value.length < 1)
   {
     missingalert();
     return false;
   }
     if (document.reqform.fromcity.value.length < 1)
   {
     missingalert();
     return false;
   }


//   if (document.reqform.inforeq.value.length <= 7)
//   {
//     alert("It does not appear as though you have requested any information, please try again");
//     document.reqform.inforeq.focus();
//     return false;
//   }
   return true;
 }


// - mh2006


function createXMLHttpRequest() {
    if (window.ActiveXObject) {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    } 
    else if (window.XMLHttpRequest) {
        xmlHttp = new XMLHttpRequest();
    }
}

// Populate States

function refreshStateList() {

	createXMLHttpRequest();
    
	var country = document.getElementById("country").value;

    if(country == "") {
        clearStateList();
        return;
    }

	var url = "/cgi-bin/RefreshStates.cgi?" + createQueryString(country) + "&ts=" + new Date().getTime();
        
    createXMLHttpRequest();
    xmlHttp.onreadystatechange = handleStateChange;
    xmlHttp.open("GET", url, true);
    xmlHttp.send(null);
	
}

function clearStateList() {
    var states = document.getElementById("state");
    while(states.childNodes.length > 0) {
        states.removeChild(states.childNodes[0]);
    }
}

function handleStateChange() {
//	alert("Ready = " + xmlHttp.readyState + " status = " + xmlHttp.status);
//	alert(xmlHttp.responseText);
    if(xmlHttp.readyState == 4) {
        if(xmlHttp.status == 200) {
            updateStateList();
        }
    }
}

function updateStateList() {

	clearStateList();
    
    var states = document.getElementById("state");
    var results = xmlHttp.responseXML.getElementsByTagName("state");
//	alert("head = " + xmlHttp.getAllResponseHeaders());
//	alert("xml = " + xmlHttp.responseXML.xml);
//	alert("text = " + xmlHttp.responseText);
//	alert("Len = " + results.length);
    var option = null;
    for(var i = 0; i < results.length; i++) {
        option = document.createElement("option");
 // alert("option= " + results[i].firstChild.nodeValue + " code = " + codes[i].firstChild.nodeValue);
        option.appendChild(document.createTextNode(results[i].firstChild.nodeValue));
        states.appendChild(option);
    }
//    var areaLabel = document.getElementById("areaLabel");
  //  var results = xmlHttp.responseXML.getElementsByTagName("arealabel");
//	areaLabel.value=results[0].firstChild.nodeValue;
}

function createQueryString(country) {
    var queryString = "country=" + country;
    return queryString;
}

// End of populate States


// Populate Move Types

function refreshTypeList() {
  	createXMLHttpRequest();
    
	var country = document.getElementById("country").value;

    if(country == "") {
        clearTypeList();
        return;
    }

	var url = "/cgi-bin/GetTypes.cgi?" + createQueryString(country) + "&ts=" + new Date().getTime();
        
    createXMLHttpRequest();
    xmlHttp.onreadystatechange = handleStateChangeType;
    xmlHttp.open("GET", url, true);
    xmlHttp.send(null);
	
}

function clearTypeList() {
    var types = document.getElementById("typeofmove");
    while(types.childNodes.length > 0) {
        types.removeChild(types.childNodes[0]);
    }
}


function updateTypeList() {

	clearTypeList();
    
    var types = document.getElementById("typeofmove");
    var results = xmlHttp.responseXML.getElementsByTagName("type");
//	alert("head = " + xmlHttp.getAllResponseHeaders());
//	alert("xml = " + xmlHttp.responseXML.xml);
//	alert("text = " + xmlHttp.responseText);
//	alert("Len = " + results.length);
    var option = null;
    for(var i = 0; i < results.length; i++) {
        option = document.createElement("option");
 // alert("option= " + results[i].firstChild.nodeValue + " code = " + codes[i].firstChild.nodeValue);
        option.appendChild(document.createTextNode(results[i].firstChild.nodeValue));
        types.appendChild(option);
    }
//    var areaLabel = document.getElementById("areaLabel");
 //   var results = xmlHttp.responseXML.getElementsByTagName("arealabel");
//	areaLabel.value=results[0].firstChild.nodeValue;
}

function handleStateChangeType() {
//	alert("Ready = " + xmlHttp.readyState + " status = " + xmlHttp.status);
//	alert(xmlHttp.responseText);
    if(xmlHttp.readyState == 4) {
        if(xmlHttp.status == 200) {
            updateTypeList();
        }
    }
}

// End of populate Types


// Show Help


function getHelp(field) {
	context=document.srchform.country.value;
	clearHelp();
	createXMLHttpRequest();
    var queryString = "field=" + field + "&context=" + context;

	var url = "/cgi-bin/GetHelp.cgi?" + queryString + "&ts=" + new Date().getTime();
        
    createXMLHttpRequest();
    xmlHttp.onreadystatechange = handleStateChangeHelp;
    xmlHttp.open("GET", url, true);
    xmlHttp.send(null);
	
}

function clearHelp() {
	var helpField = document.getElementById("help");
	helpField.value="";
}

function handleStateChangeHelp() {
    if(xmlHttp.readyState == 4) {
        if(xmlHttp.status == 200) {
            showHelp();
        }
    }
}

function showHelp() {

    var helpField = document.getElementById("help");
    var results = xmlHttp.responseXML.getElementsByTagName("help");
	helpField.value=results[0].firstChild.nodeValue;

}

// Change State Label

function replaceStateLabel(field) {
country=document.srchform.country.value;
	if (country == "USA")
	{
		document.getElementById("areaLabel").value = "State:";
		document.getElementById("areaLabel").style.display = "";
		document.getElementById("state").size = "2";
		document.getElementById("state").style.display = "";

	} else if (country == "UNITED KINGDOM")
	{
				document.getElementById("areaLabel").value = "PostCode:";
				document.getElementById("areaLabel").style.display = "none";
				document.getElementById("state").size = "2";
				document.getElementById("state").style.display = "none";

	} else {
					document.getElementById("areaLabel").value = "Area:";
					document.getElementById("areaLabel").style.display = "none";
					document.getElementById("state").size = "40";
					document.getElementById("state").style.display = "none";

	}

}
function changeStateLabel(field) {
	country=document.srchform.country.value;
	clearStateLabel();
	createXMLHttpRequest();
    var queryString = "country=" + country;

	var url = "/cgi-bin/StateLabels.cgi?" + queryString + "&ts=" + new Date().getTime();
        
    createXMLHttpRequest();
    xmlHttp.onreadystatechange = handleStateChangeLabel;
    xmlHttp.open("GET", url, true);
    xmlHttp.send(null);
}

function clearStateLabel() {
	var stateField = document.getElementById("areaLabel");
	stateField.value="";
}

function handleStateChangeLabel() {
    if(xmlHttp.readyState == 4) {
        if(xmlHttp.status == 200) {
            showLabel();
        }
    }
}

function showLabel() {

    var stateField = document.getElementById("areaLabel");
    var results = xmlHttp.responseXML.getElementsByTagName("state");
	stateField.value=results[0].firstChild.nodeValue;

}



// Do Query


function doQuery(field) {
	country=document.srchform.country.value;
	state=document.srchform.state.value;
	keyword=document.srchform.keyword.value;
	clearQuery();
	createXMLHttpRequest();
    var queryString = "field=" + field + "&country=" + country + "&state=" + state + "&keyword=" + keyword;

	var url = "/cgi-bin/DoQuery.cgi?" + queryString + "&ts=" + new Date().getTime();
        
    createXMLHttpRequest();
    xmlHttp.onreadystatechange = handleStateChangeQuery;
    xmlHttp.open("GET", url, true);
    xmlHttp.send(null);
	
}

function clearQuery() {
	var helpField = document.getElementById("help");
	helpField.value="";
}

function handleStateChangeQuery() {
    if(xmlHttp.readyState == 4) {
        if(xmlHttp.status == 200) {
            showQuery();
        }
    }
}

function showQuery() {

    var helpField = document.getElementById("help");
    var results = xmlHttp.responseXML.getElementsByTagName("help");
	helpField.value=results[0].firstChild.nodeValue;

}

function holdSelected() {

   numChoices=document.reqinfo.length - 1;
   numChecked=0;

   for  (counter=0; counter<=numChoices; counter++) {
   if  (document.reqinfo.elements[counter].checked) {
	   numChecked++;

	   selected = "selected" + numChecked;
	   	   alert("updating " + selected + " from " + document.reqinfo.elements[counter].name + " value = " + document.reqinfo.elements[counter].value);
	   document.submitbit.elements[selected].value = document.reqinfo.elements[counter].value;
	   }
   }
   


}


function displayAllChecked()
{
// display all

	alert("Checking reqinfo");
   numChoices=document.reqinfo.length - 1;

   for  (counter=0; counter<=numChoices; counter++) {
	alert("reqinfo " + counter + " = " + document.reqinfo.elements[counter].name + " value = " + document.reqinfo.elements[counter].value);
   }

	alert("Checking Results page");

   numChoices=frames['resultsframe'].document.resultspage.length - 1;
   alert("Nr inputs = " + numChoices);
   numChoices = 5;
   for  (counter=0; counter<=numChoices; counter++) {
	alert("results " + counter + " = " + frames['resultsframe'].document.resultspage.elements[counter].name + " value = " + frames['resultsframe'].document.resultspage.elements[counter].value);
   }

}

function commentvalidate()
{
        charsok=validateChars(document.commentform.comments);
                if (charsok == false) {
                return false;
                }


     if (document.commentform.comments.value.length < 1)
   {
     alert("Please enter a comment.");
     return false;
   }
}

function compareCompanies()
{

ok = checkChoices();

if (ok == false)
{
	return false;
} else {

url = "compare.cgi?co1=" + document.submitbit.elements['selected1'].value + "&co2=" + document.submitbit.elements['selected2'].value + "&co3=" + document.submitbit.elements['selected3'].value + "&co4=" + document.submitbit.elements['selected4'].value + "&co5=" + document.submitbit.elements['selected5'].value
window.open(url,'compare','height=640, width=1024, status=no, toolbar=no, menubar=no, location=no');

}

}


// Start of Auto Complete 

   
        function initVars() {
            inputField = document.getElementById("names");            
            nameTable = document.getElementById("name_table");
            completeDiv = document.getElementById("popup");
			completeFrm = document.getElementById("pop1");
            nameTableBody = document.getElementById("name_table_body");
			country=document.srchform.country.value;
			state=document.srchform.state.value;
	
        }

        function findNames() {
            initVars();
			queryString = escape(inputField.value) + "&country=" + country + "&state=" + state;
            if (inputField.value.length > 0) {
                createXMLHttpRequest();            
                var url = "/cgi-bin/AutoComplete.cgi?names=" + queryString;                        
                xmlHttp.open("GET", url, true);
                xmlHttp.onreadystatechange = callback;
                xmlHttp.send(null);
            } else {
                clearNames();
            }
        }

        function callback() {
            if (xmlHttp.readyState == 4) {
                if (xmlHttp.status == 200) {
//	alert("head = " + xmlHttp.getAllResponseHeaders());
//	alert("xml = " + xmlHttp.responseXML.xml);
//	alert("text = " + xmlHttp.responseText);
//	alert("Len = " + results.length);

                    var name = xmlHttp.responseXML.getElementsByTagName("name")[0].firstChild.data;
                    setNames(xmlHttp.responseXML.getElementsByTagName("name"));
                } else if (xmlHttp.status == 204){
                    clearNames();
                }
            }
        }
        
        function setNames(the_names) {            
            clearNames();
            var size = the_names.length;
            setOffsets();

            var row, cell, txtNode;
            for (var i = 0; i < size; i++) {
                var nextNode = the_names[i].firstChild.data;
                row = document.createElement("tr");
                cell = document.createElement("td");
                
                cell.onmouseout = function() {this.className='mouseOver';};
                cell.onmouseover = function() {this.className='mouseOut';};
                cell.setAttribute("bgcolor", "#FFFAFA");
                cell.setAttribute("border", "0");
                cell.onclick = function() { populateName(this); } ;                             

                txtNode = document.createTextNode(nextNode);
                cell.appendChild(txtNode);
                row.appendChild(cell);
                nameTableBody.appendChild(row);
            }
        }

        function setOffsets() {
            var end = inputField.offsetWidth;
            var left = calculateOffsetLeft(inputField);
            var top = calculateOffsetTop(inputField) + inputField.offsetHeight;

            completeDiv.style.border = "black 1px solid";
            completeDiv.style.left = left + "px";
            completeDiv.style.top = top + "px";
			completeFrm.style.top = top+"px";
			completeFrm.style.left = left+"px";
			completeFrm.style.display="block";
            nameTable.style.width = end + "px";
        }
        
        function calculateOffsetLeft(field) {
          return calculateOffset(field, "offsetLeft");
        }

        function calculateOffsetTop(field) {
          return calculateOffset(field, "offsetTop");
        }

        function calculateOffset(field, attr) {
          var offset = 0;
          while(field) {
            offset += field[attr]; 
            field = field.offsetParent;
          }
          return offset;
        }

        function populateName(cell) {
            inputField.value = cell.firstChild.nodeValue;
            clearNames();
        }

        function clearNames() {
            var ind = nameTableBody.childNodes.length;
            for (var i = ind - 1; i >= 0 ; i--) {
                 nameTableBody.removeChild(nameTableBody.childNodes[i]);
            }
            completeDiv.style.border = "none";
			completeFrm.style.display="none";
        }



//-- relo dates

function showCal(field) {
    myField = field;
    dateInit();
    var myX = window.event.clientX - window.event.offsetX;
    var myY = window.event.clientY - window.event.offsetY;
    if( (myX+210) > document.body.offsetWidth ) {
    	myX -= 184;
    }
    with( document.getElementById("myCal").style ) {
        top = myY+"px";
        left = myX+"px";
        visibility="visible";
    }
}

function hideCal() {
    document.getElementById("myCal").style.visibility="hidden";
    if( myField && myField.onchange ) {
    	myField.onchange();
    }
    if( myField && myField.onkeyup ) {
    	myField.onkeyup();
    }
}

function checkDate(field) {
	var val;
	if (field.value)
	{
		val = field.value
	} else {
        val = document.forms['dateform'].elements[field].value;
    }
    if( !val ) {
		alert( "giving up");
        return;
    }

    for( i = 0; i < parsePatterns.length; i++ ) {
        var match = parsePatterns[i].re.exec(val);
		var includeTime;
		if( match ) {
			includeTime = parsePatterns[i].flags & TIME_INCLUDED;
            try {
                var ret = parsePatterns[i].handler(match);
            }
            catch( e ) {
				if (field.value)
				{
					field.focus();
				} else {
                    document.forms['dateform'].elements[field].focus();
				}
            }

	    if( parsePatterns[i].flags & REWRITE_DATE ) {
			if (field.value)
			{
				field.value=formatDate(ret,includeTime);
			} else {
		        document.forms['dateform'].elements[field].value=formatDate(ret,includeTime);
			}
	    }
            return ret;
        }
    }
    alert( "Invalid date syntax.");
    if (field.value)
				{
					field.focus();
				} else {
                    document.forms['dateform'].elements[field].focus();
				}
}

function padMins(min) {
    min = parseInt(min);
    return (min<10?"0":"")+min;
}

function dateInit() {
    fieldDate = parseDateIn(myField);
    if( !fieldDate || fieldDate == "NaD" ) {
        fieldDate = new Date();
    }
    mt = fieldDate.getMonth();
    yr = fieldDate.getFullYear();
    populateCalendar(yr,mt);
}

function populateDate(val) {
    document.forms[0].elements[myField].value=val;
    document.getElementById('myCal').style.visibility="hidden";
    
    if( document.forms[0].elements[myField].onchange ) {
    	document.forms[0].elements[myField].onchange();
    }
}

function populateCalendar(year, month) {
    var start = new Date( year, month, 1, 0, 0, 0 );
    var today = fieldDate;
    window.status = ( formatDate(start) + " - " + formatDate(today) );

    if( start.getDay() != 0 ) {
        start.setDate(start.getDate()-start.getDay()+1);
    }
    else {
        start.setDate(start.getDate()-6);
    }
    for( y = 0; y < 6; y++ ) {
        for( x = 0; x < 7; x++ ) {
            var nr = start.getDate();
            document.getElementById(x+'x'+y).innerHTML='<a href=\"javascript:void(0)\" onMouseover=\"window.status=\''+formatDate(start)+'\'; return true;\" onMouseout=\"window.status=\'\'\" onClick=\"javascript:populateDate(\''+formatDate(start)+'\')\">'+nr+'</a>';
            if( (y == 0 && nr >= 10) || (y > 3 && nr < 15) ) {
                document.getElementById(x+'x'+y).className='diary_inactive_day';
            }
            else {
                document.getElementById(x+'x'+y).className='diary_active_day';
            }
	    if( formatDate(today) == formatDate(start) ) {
                document.getElementById(x+'x'+y).className='diary_today';
            }
            start.setDate(start.getDate()+1);
        }
    }
    document.getElementById("yearmon").innerText=capitalise(MONTH_NAME_EN[month])+" "+year;
}

function moveMonth(num) {
    mt += num;
    if( mt == 12 ) {
        yr++;
        mt = 0;
    }
    else if( mt == -1 ) {
        yr--;
        mt = 11;
    }
    populateCalendar(yr,mt);
}

function formatDate(date, slong) {
    var result = DATE_FORMAT_SHORT;
    if( slong ) {
        result = DATE_FORMAT_LONG;
    }
    result = result.replace(/dd/, padMins(date.getDate()));
    result = result.replace(/d/, date.getDate());
    result = result.replace(/hh/i, padMins(date.getHours()));
    result = result.replace(/h/i, date.getHours());
    result = result.replace(/mm/, padMins(date.getMinutes()));
    result = result.replace(/m/, date.getMinutes());
    result = result.replace(/ss/, padMins(date.getSeconds()));
    result = result.replace(/s/, date.getSeconds());
    result = result.replace(/SSS/, date.getMilliseconds());
    result = result.replace(/yyyy/, date.getFullYear());
    result = result.replace(/MMM/, MONTH_NAME_EN[date.getMonth()]);
    result = result.replace(/MM/, padMins(date.getMonth()+1));
    return result;
}

var parsePatterns = [
{
re: /^([0-9]+)\-([0-9]+)\-([0-9]+)$/,
handler: function(bits) {
             bits[1] = parseYear(bits[1]);
             parseMonth(bits[2]);
             parseDay(bits[3],bits[2],bits[1]);
             return new Date( bits[1], bits[2]-1, bits[3] );
         },
flags:REWRITE_DATE
},
{
re: /^([0-9]+)\-([0-9]+)\-([0-9]+) ([0-9]+)[.:;,]([0-9]+)$/,
handler: function(bits) {
             bits[1] = parseYear(bits[1]);
             parseMonth(bits[2]);
             parseDay(bits[3],bits[2],bits[1]);
             parseDayTime(bits[4],bits[5]);
             return new Date( bits[1], bits[2]-1, bits[3], bits[4], bits[5], 0 );
         },
flags:REWRITE_DATE|TIME_INCLUDED
},
{
re: /^([0-9]+)[\/\.]([0-9]+)[\/\.]([0-9]+)$/,
handler: function(bits) {
	    bits[3] = parseYear(bits[3]);
	    parseMonth(bits[2]);
            parseDay(bits[1],bits[2],bits[3]);
	    return new Date( bits[3], bits[2]-1, bits[1] );
	},
flags:REWRITE_DATE
},
{
re: /^([0-9]+)[\/\.]([0-9]+)[\/\.]([0-9]+) ([0-9]+)[.:;,]([0-9]+)$/,
handler: function(bits) {
	    bits[3] = parseYear(bits[3]);
	    parseMonth(bits[2]);
            parseDay(bits[1],bits[2],bits[3]);
             parseDayTime(bits[4],bits[5]);
	    return new Date( bits[3], bits[2]-1, bits[1], bits[4], bits[5], 0 );
	},
flags:REWRITE_DATE|TIME_INCLUDED
},
{
re: /^([0-9]+) ([a-z\.???]+) ([0-9]+)$/i,
handler: function(bits) {
            bits[3] = parseYear(bits[3]);
            bits[2] = parseMonthName(bits[2]);
            parseDay(bits[1], bits[2], bits[3]);
            return new Date( bits[3], bits[2]-1, bits[1] );
         },
flags:REWRITE_DATE
},
{
re: /^([0-9]+) ([a-z\.???]+) ([0-9]+) ([0-9]+)[.:;,]([0-9]+)$/i,
handler: function(bits) {
             bits[3] = parseYear(bits[3]);
             bits[2] = parseMonthName(bits[2]);
             parseDay(bits[1],bits[2],bits[3]);
             parseDayTime(bits[4],bits[5]);
             return new Date( bits[3], bits[2]-1, bits[1], bits[4], bits[5], 0 );
         },
flags:TIME_INCLUDED
}
];

function padMins(min) {
    min = parseInt(min);
    return (min<10?"0":"")+min;
}

function parseDay(day,month,year) {
    var maxAllowed = MONTH_LENGTHS[month-1];
    if( day > maxAllowed && !(month==2&&day==29&&isLeapYear(year)) ) {
        alert( "Day must be 1-"+(month==2&&isLeapYear(year)?"29":maxAllowed));
        throw new Error("Month does not have that many days");
    }
}

function capitalise(name) {
    return name.charAt(0).toUpperCase()+name.substring(1);
}

function isLeapYear(year) {
    year = parseInt(removeLeadingZeros(year));
    if( (year%4) != 0 )          return false;
    else if( (year%400) == 0 )   return true;
    else if( (year%100) == 0 )   return false;
    else                         return true;
}

function parseMonth(num) {
    if( num < 1 || num > 12 ) {
        alert( "No such month: "+name );
        throw new Error("Invalid month");
    }
}

function removeLeadingZeros(fld) {
	var ix = 0;
	for( var i = 0; i < fld.length; i++ ) {
		if( fld.charAt(i) == 0 ) {
			ix++;
		}
		else {
			break;
		}
	}
	return fld.substring(ix);
}

function parseMonthName(name) {
    if( MONTH_NAME_EN.indexOf(capitalise(name.toLowerCase())) == -1 ) {
        alert( "No such month: "+name );
        throw new Error("Invalid month");
    }
    return MONTH_NAME_EN.indexOf(capitalise(name.toLowerCase()))+1;
}


function parseDayTime(hours,minutes) {
    if( hours > 23 || minutes > 59 ) {
        alert( "Time is invalid" );
        throw new Error("Invalid time entered");
    }
}

function parseYear(year) {
    year = parseInt(removeLeadingZeros(year));
    if( year >= 40 && year < 100 ) {
        year += 1900;
    }
    if( year < 40 && year >= 0 ) {
        year += 2000;
    }
    if( year < 1900 || year > 2100 ) {
        alert( "Year must be between 1900-2100" );
        throw new Error("Year must be between 1900-2100");
    }
    return year;
}

function parseDateIn(field) {
	var val = document.forms[0].elements[field].value;
	
	if( !val ) {
		return "NaD";
	}
    for( i = 0; i < parsePatterns.length; i++ ) {
	    var match = parsePatterns[i].re.exec(val);
	    if( match ) {
	        try {
	            var ret = parsePatterns[i].handler(match);
	        }
	        catch( e ) {
	            return "NaD";
	        }
	        return ret;
	    }
	}
    return "NaD";
}

function dateInit() {
    fieldDate = parseDateIn(myField);
    if( !fieldDate || fieldDate == "NaD" ) {
        fieldDate = new Date();
    }
    mt = fieldDate.getMonth();
    yr = fieldDate.getFullYear();
    populateCalendar(yr,mt);
}



function newSearch(login, pword) {

var fromdatestr = document.forms['dateform'].elements['fromdatestr'].value;
var todatestr = document.forms['dateform'].elements['todatestr'].value;
var newpage = "/cgi-bin/mover/search.cgi?login=" + login + "&pword=" + pword + "&fromdate=" + fromdatestr + "&todate=" + todatestr;

document.location.href=newpage;
}

function closeInfoPage() 
{
if (history.length > 0) 
	{
	history.go(-1);
	} else {
	window.close();
	}
}

