/* Written by Rob Stevenson of codeMaker Systems */
/* If you use this code please leave the author line intact */

var alphabet_lcase = "abcdefghijklmnopqrstuvwxyz";
var alphabet_ucase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var numeric = "0123456789"

/* Validate the format of an email address */
function checkEmail(email) {
    var atIndex;
    var dotIndex;
    atIndex=email.value.indexOf("@");
    dotIndex=email.value.lastIndexOf(".");
    if (atIndex<1 || dotIndex<1 || dotIndex-atIndex<2 || email.value.length-dotIndex<3 || email.value.length-dotIndex>4)
        return false;
    else
	return true;
}

/* Function to set focus in specified element. */
function fixElement(element, message) {
    alert(message);
    element.focus();
}

function toProperCase(theString) {
    var ptr;
    var currChar;
    var prevChar=null;
    var lboChar=null;
    var newString="";

    if (theString == null)
        return;

    for (ptr = 0; ptr<theString.length; ptr++) {
        currChar = theString.charAt(ptr);

	if ((alphabet_lcase.search(prevChar) != -1) || (alphabet_ucase.search(prevChar) != -1)) 
	    currChar=currChar.toLowerCase();
	else
	    currChar=currChar.toUpperCase();

	//Convert trailing capitals after apostrophe e.g. Lord'S to Lord's
        if (prevChar == "'" && alphabet_lcase.search(lboChar) != -1)
            currChar=currChar.toLowerCase();

	newString=newString+currChar;
        lboChar = prevChar;
        prevChar = currChar;
    }
    return newString;
}

function openDialog(htmlfile) {
    window.status="";
    if (window.showModelessDialog) {
        strFeatures = "dialogWidth=360px;dialogHeight=495px;resizable=yes;"
                + "center=yes;border=thin;help=no;status=no"
        strTitle=window.showModelessDialog(htmlfile, "MyDialog", strFeatures);
        return false; }
    else
	return true;
}

function newwin(page, winame) {
OpenWin = this.open(page, winame, "top=10,left=10,toolbar=no,menubar=yes,location=yes,scrollbars=yes,resizable=yes,width="+eval(screen.availWidth-30)+",height="+eval(screen.availHeight-100)+'"');
return false;
}

/* Convert mm/yy date to months */
function YYMM2Months(txtDate) {
    var iMonth;
    var iYear;
    var sDate = new String(txtDate);
    var oblIndex;
    
    if (sDate.length > 0) {
	if (sDate.length != 5) return -1; 
	oblIndex=sDate.indexOf("/");
	if (oblIndex == 0) oblIndex=2;
	if (isNaN(sDate.slice(0,2))) return -1;
	iMonth = parseInt(sDate.slice(0,2));
	if (iMonth > 0 && iMonth < 13) {
	    if (isNaN(sDate.slice(oblIndex+1,oblIndex+3))) return -1;
	    iYear = parseInt(sDate.slice(oblIndex+1,oblIndex+3));
	    if (iYear <= 50)
		iYear = iYear + 2000
	    else
		iYear = iYear + 1900;
	    return (iYear * 12) + iMonth;
	    }
	else
	    return -1;
	}
    else
	return -1;
}

/* Validate a postcode */
function chkPostcode(thePostcode) {
    var sPostcode = new String(thePostcode);
    var i;
    var myMask="";
    var currChar;
    /* The incode of AAA allows letter O in place of zero */
    var vm = new Array(17);
    vm[0] = "AA99AA";
    vm[1] = "AA9AAA"; 
    vm[2] = "AA999AA";
    vm[3] = "AA99AAA";
    vm[4] = "AA9A9AA";
    vm[5] = "AA9AAAA";
    vm[6] = "A99AA";
    vm[7] = "A9AAA";
    vm[8] = "A999AA";
    vm[9] = "A99AAA";
    vm[10] = "A9A9AA";
    vm[11] = "A9AAAA";
    vm[12] = "A9";
    vm[13] = "A99";
    vm[14] = "AA9";
    vm[15] = "AA99";
    vm[16] = "***";

    if (thePostcode=="") return false;
    /* now convert postcode into a mask e.g. GU21 3JY becomes AANNNAA */
    for (i=0;i<sPostcode.length;i++) {
	currChar=sPostcode.charAt(i);
	if (currChar != " ") {
	    currChar=currChar.toUpperCase();
	    if (alphabet_ucase.search(currChar) != -1) myMask += "A";
	    else if (numeric.search(currChar) != -1) myMask += "9";
 	    else myMask += "X";
	}
    }
    /* look up myMask in list of valid masks */
    for (i=0;;i++) {
	if (vm[i] == "***") return false;
	else if (myMask == vm[i]) return true;
    }
}
  
function fmtDate() { 
// Array of day names
var dayNames = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");

// Array of month Names
var monthNames = new Array("January","February","March","April","May","June","July","August","September","October","November","December");

var now = new Date();
var y = now.getYear();
if (y < 1000) {y += 1900};
return (dayNames[now.getDay()] + ", " + monthNames[now.getMonth()] + " " + now.getDate() + ", " + y);
}

function fmtNow() { 
// Array of day names
var dayNames = new     Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");

// Array of month Names
var monthNames = new Array("January","February","March","April","May","June","July","August","September","October","November","December");

var now = new Date();
var h = new String(now.getHours());
var m = new String(now.getMinutes());
var y = now.getYear();
if (h.length == 1) h = "0" + h;
if (m.length == 1) m = "0" + m;
if (y < 1000) {y += 1900};
return (h + ":" + m + " on " + dayNames[now.getDay()] + ", " + monthNames[now.getMonth()] + " " + now.getDate() + ", " + y);
}
  