function setContentSize() {
	var X = document.getElementById("left_content").offsetHeight;

	if ( document.getElementById('home-main-content') != undefined ) {
		Y = document.getElementById('home-main-content').offsetHeight;
		if ( Y <= X ) {
			document.getElementById('home-main-content').style.height = X + "px";
		}	
	} else {
		var Z = 0;
		elementArray = document.getElementsByClassName("content");
		for (var i=0; i<elementArray.length; i++ ) {
			var Y =  elementArray[i].offsetHeight;
			if ( Y > Z ) Z = Y;
		}
		if ( X > Z ) Z = X;
		elementArray = document.getElementsByClassName("content");
		for (var i=0; i<elementArray.length; i++ ) {
			elementArray[i].style.height = Z + "px";
		};
	}
}


document.getElementsByClassName = function(clsName){
    var retVal = new Array();
    var elements = document.getElementsByTagName("*");
    for(var i = 0;i < elements.length;i++){
        if(elements[i].className.indexOf(" ") >= 0){
            var classes = elements[i].className.split(" ");
            for(var j = 0;j < classes.length;j++){
                if(classes[j] == clsName)
                    retVal.push(elements[i]);
            }
        }
        else if(elements[i].className == clsName)
            retVal.push(elements[i]);
    }
    return retVal;
}


function buildCal(m, y, cM, cH, cDW, cD, brdr){
var mn=['January','February','March','April','May','June','July','August','September','October','November','December'];
var dim=[31,0,31,30,31,30,31,31,30,31,30,31];

var oD = new Date(y, m-1, 1); //DD replaced line to fix date bug when current day is 31st
oD.od=oD.getDay()+1; //DD replaced line to fix date bug when current day is 31st

var todaydate=new Date() //DD added
var scanfortoday=(y==todaydate.getFullYear() && m==todaydate.getMonth()+1)? todaydate.getDate() : 0 //DD added

dim[1]=(((oD.getFullYear()%100!=0)&&(oD.getFullYear()%4==0))||(oD.getFullYear()%400==0))?29:28;

var t='<div class="'+cM+'"><table class="'+cM+'" cols="7" cellpadding="0" border="'+brdr+'" cellspacing="0"><tr align="center">';
t+='<td colspan="7" align="center" class="'+cH+'">'+mn[m-1]+' - '+y+'</td></tr><tr align="center">';

for(s=0;s<7;s++) {
	t+='<td class="'+cDW+'">'+"SMTWTFS".substr(s,1)+'</td>';
}

z=" 4321765".substr(oD.od,1); // 1st wed of month

if (mn[m-1] == "December" || mn[m-1] == "January" || mn[m-1] == "February") var no_meet="yes";

t+='</tr><tr align="center">';

for(i=1;i<=42;i++){
	var x=((i-oD.od>=0)&&(i-oD.od<dim[m-1]))? i-oD.od+1 : '&nbsp;';
	if (mn[m-1] == "October" && x == 9) x='<span class="purpleB">'+x+'</span>' // Gj added
	if (x==z) {
		if (no_meet != "yes") {
			x='<span id="today">'+x+'</span>' //DD added
		}
	}
	if (no_meet == "yes") {
		t+='<td class="no_meet">'+x+'</td>';
	} else {
		t+='<td class="'+cD+'">'+x+'</td>';
	}
	if(((i)%7==0)&&(i<36))t+='</tr><tr align="center">';
}
return t+='</tr></table></div>';
}




function checkSubscriptionForm()
{
        // instantiate object
        fv = new validateData();

        // perform checks

	if (!document.subscription_form.new_member.checked && !document.subscription_form.renew_member.checked ) {
                fv.raiseError("You must \"check\" either New Membership OR Renew Membership");
	}

	if (document.subscription_form.new_member.checked && document.subscription_form.renew_member.checked ) {
                fv.raiseError("You must only \"check\" either New Membership OR Renew Membership");
	}

        // check Subscription field (Required)
	if (fv.isEmpty(document.subscription_form.subscription_enclosed.value)) {
                fv.raiseError("Required Field not present, Please enter a dollar value in \"Subscription Enclosed\" field");
        } else {
		x = document.subscription_form.subscription_enclosed.value;
		if (! (x == 20 || x == 10)) {
                	fv.raiseError("Subscription Enclosed Invalid. Must be 10.00 or 20.00");
		}
	}

        // check Donation field (Optional)
	if (!fv.isEmpty(document.subscription_form.donation_enclosed.value)) {
		if (!fv.isNumber(document.subscription_form.subscription_enclosed.value)) {
                	fv.raiseError("Donation Enclosed Invalid. This field may only contain Numerics");
		}
	}

        // check First Name field (Required)
	if (fv.isEmpty(document.subscription_form.first_name.value)) {
                fv.raiseError("Required Field not present, Please enter your First Name");
        } else {
		if (!fv.isAlphabeticSpecial(document.subscription_form.first_name.value)) {
                	fv.raiseError("First Name Invalid. This field may only contain alphabetic characters plus \- \' , and space");
		}
	}

        // check Last Name field (Required)
        if (fv.isEmpty(document.subscription_form.last_name.value))
        {
                fv.raiseError("Required Field not present, Please enter your Surname");
        } else {
		if (!fv.isAlphabeticSpecial(document.subscription_form.last_name.value)) {
                	fv.raiseError("Surname Invalid. This field may only contain alphabetic characters plus \- \' , and space");
		}
	}

        // check Email address (Required)
        if (fv.isEmpty(document.subscription_form.email_address.value))
        {
                fv.raiseError("Required Field not present, Please enter your Email address");
        } else {
                // check for valid Email address format
                if (!fv.isEmailAddress(document.subscription_form.email_address.value))
                {
                        fv.raiseError(document.subscription_form.email_address.value + " - is not a valid Email address, please re-enter");
		}
        }

        // check Home Phone (Required)
        if (fv.isEmpty(document.subscription_form.home_phone.value)) {
                fv.raiseError("Required Field not present, Please enter your Home Phone Number");
        } else {
        	if (!fv.isNumberSpecial(document.subscription_form.home_phone.value)) {
                        fv.raiseError(document.subscription_form.home_phone.value + " - is not a valid Home Phone number, Must contain only Numbers \- \( \) \+ and space");
		}
	}

        // check Mobile phone (Optional)
        if (!fv.isEmpty(document.subscription_form.mobile_number.value)) {
        	if (!fv.isNumberSpecial(document.subscription_form.mobile_number.value)) {
                        fv.raiseError(document.subscription_form.mobile_number.value + " - is not a valid Mobile Number, Must contain only Numbers \- \( \) \+ and space");
		}
	}

        // check address field (Required)
        if (fv.isEmpty(document.subscription_form.street_address.value))
        {
                fv.raiseError("Required Field not present, Please enter your Street Address");
	}

        // check city field (Required)
        if (fv.isEmpty(document.subscription_form.city.value))
        {
                fv.raiseError("Required Field not present, Please enter your City and Postal Code");
	}


        // if errors, display, else proceed
        if (fv.numErrors() > 0)
        {
                fv.displayErrors();
                return false;
        }
        else
        {
                return true;
        }

}



function checkDonationForm()
{
        // instantiate object
        fv = new validateData();

        // perform checks


        // check Donation field (Required)
	if (fv.isEmpty(document.donation_form.donation_enclosed.value)) {
                fv.raiseError("Required Field not present, Please enter a dollar value in \"Donation Enclosed\" field");
        } else {
		if (!fv.isNumber(document.donation_form.donation_enclosed.value)) {
                	fv.raiseError("Donation Enclosed Invalid. This field may only contain Numerics");
		}
	}

        // check First Name field (Required)
	if (fv.isEmpty(document.donation_form.first_name.value)) {
                fv.raiseError("Required Field not present, Please enter your First Name");
        } else {
		if (!fv.isAlphabeticSpecial(document.donation_form.first_name.value)) {
                	fv.raiseError("First Name Invalid. This field may only contain alphabetic characters plus \- \' , and space");
		}
	}

        // check Last Name field (Required)
        if (fv.isEmpty(document.donation_form.last_name.value))
        {
                fv.raiseError("Required Field not present, Please enter your Surname");
        } else {
		if (!fv.isAlphabeticSpecial(document.donation_form.last_name.value)) {
                	fv.raiseError("Surname Invalid. This field may only contain alphabetic characters plus \- \' , and space");
		}
	}

        // check Email address (Required)
        if (fv.isEmpty(document.donation_form.email_address.value))
        {
                fv.raiseError("Required Field not present, Please enter your Email address");
        } else {
                // check for valid Email address format
                if (!fv.isEmailAddress(document.donation_form.email_address.value))
                {
                        fv.raiseError(document.donation_form.email_address.value + " - is not a valid Email address, please re-enter");
		}
        }

        // check Home Phone (Required)
        if (fv.isEmpty(document.donation_form.home_phone.value)) {
                fv.raiseError("Required Field not present, Please enter your Home Phone Number");
        } else {
        	if (!fv.isNumberSpecial(document.donation_form.home_phone.value)) {
                        fv.raiseError(document.donation_form.home_phone.value + " - is not a valid Home Phone number, Must contain only Numbers \- \( \) \+ and space");
		}
	}

        // check Mobile phone (Optional)
        if (!fv.isEmpty(document.donation_form.mobile_number.value)) {
        	if (!fv.isNumberSpecial(document.donation_form.mobile_number.value)) {
                        fv.raiseError(document.donation_form.mobile_number.value + " - is not a valid Mobile Number, Must contain only Numbers \- \( \) \+ and space");
		}
	}

        // check address field (Required)
        if (fv.isEmpty(document.donation_form.street_address.value))
        {
                fv.raiseError("Required Field not present, Please enter your Street Address");
	}

        // check city field (Required)
        if (fv.isEmpty(document.donation_form.city.value))
        {
                fv.raiseError("Required Field not present, Please enter your City and Postal Code");
	}


        // if errors, display, else proceed
        if (fv.numErrors() > 0)
        {
                fv.displayErrors();
                return false;
        }
        else
        {
                return true;
        }

}


function checkRegistrationForm()
{
        // instantiate object
        fv = new validateData();

        // perform checks

        // check Registration field (Required)
	if (fv.isEmpty(document.registration_form.registration_enclosed.value)) {
                fv.raiseError("Required Field not present, Please enter a dollar value in \"Registration Enclosed\" field");
        } else {
		x = document.registration_form.registration_enclosed.value;
		if (! (x == 20 || x == 30)) {
                	fv.raiseError("Registration Enclosed Invalid. Must be 20.00 or 30.00");
		}
	}

        // check First Name field (Required)
	if (fv.isEmpty(document.registration_form.first_name.value)) {
                fv.raiseError("Required Field not present, Please enter your First Name");
        } else {
		if (!fv.isAlphabeticSpecial(document.registration_form.first_name.value)) {
                	fv.raiseError("First Name Invalid. This field may only contain alphabetic characters plus \- \' , and space");
		}
	}

        // check Last Name field (Required)
        if (fv.isEmpty(document.registration_form.last_name.value))
        {
                fv.raiseError("Required Field not present, Please enter your Surname");
        } else {
		if (!fv.isAlphabeticSpecial(document.registration_form.last_name.value)) {
                	fv.raiseError("Surname Invalid. This field may only contain alphabetic characters plus \- \' , and space");
		}
	}

        // check Email address (Required)
        if (fv.isEmpty(document.registration_form.email_address.value))
        {
                fv.raiseError("Required Field not present, Please enter your Email address");
        } else {
                // check for valid Email address format
                if (!fv.isEmailAddress(document.registration_form.email_address.value))
                {
                        fv.raiseError(document.registration_form.email_address.value + " - is not a valid Email address, please re-enter");
		}
        }

        // check Home Phone (Required)
        if (fv.isEmpty(document.registration_form.home_phone.value)) {
                fv.raiseError("Required Field not present, Please enter your Home Phone Number");
        } else {
        	if (!fv.isNumberSpecial(document.registration_form.home_phone.value)) {
                        fv.raiseError(document.registration_form.home_phone.value + " - is not a valid Home Phone number, Must contain only Numbers \- \( \) \+ and space");
		}
	}

        // check Mobile phone (Optional)
        if (!fv.isEmpty(document.registration_form.mobile_number.value)) {
        	if (!fv.isNumberSpecial(document.registration_form.mobile_number.value)) {
                        fv.raiseError(document.registration_form.mobile_number.value + " - is not a valid Mobile Number, Must contain only Numbers \- \( \) \+ and space");
		}
	}

        // check address field (Required)
        if (fv.isEmpty(document.registration_form.street_address.value))
        {
                fv.raiseError("Required Field not present, Please enter your Street Address");
	}

        // check city field (Required)
        if (fv.isEmpty(document.registration_form.city.value))
        {
                fv.raiseError("Required Field not present, Please enter your City and Postal Code");
	}


        // if errors, display, else proceed
        if (fv.numErrors() > 0)
        {
                fv.displayErrors();
                return false;
        }
        else
        {
                return true;
        }

}






function validateData()
{
	// set up array to hold error messages
	this.errorList = new Array;

	// set up object methods
	this.isEmpty = isEmpty;	
	this.isNumber = isNumber;	
	this.isNumberSpecial = isNumberSpecial;	
	this.isAlphabetic = isAlphabetic;	
	this.isAlphabeticSpecial = isAlphabeticSpecial;	
	this.isAlphaNumeric = isAlphaNumeric;	
	this.isWithinRange = isWithinRange;	
	this.isEmailAddress = isEmailAddress;	
	this.isChecked = isChecked;	

	this.raiseError = raiseError;	
	this.numErrors = numErrors;	
	this.displayErrors = displayErrors;	
}

function isEmpty(val)
{
	//
	// check to see if input is whitespace only or empty
	//
	if (val.match(/^s+$/) || val == "")
	{
		return true;
	}
	else
	{
		return false;
	}	
}

function isNumber(val)
{
	//
	// check to see if input is number
	//
	if (isNaN(val))
	{
		return false;
	}
	else
	{
		return true;
	}	
}

function isNumberSpecial(val)
{
	//
	// check to see if input is number with some special characters
	//
	if (val.match(/^[0-9' ',\-\(\)\+]+$/))
	{
		return true;
	}
	else
	{
		return false;
	}	
}

function isAlphabetic(val)
{
	//
	// check to see if input is alphabetic
	//
	if (val.match(/^[a-zA-Z]+$/))
	{
		return true;
	}
	else
	{
		return false;
	}	
}

function isAlphabeticSpecial(val)
{
	//
	// check to see if input is alphabetic with spaces and some special characters allowed
	//
	if (val.match(/^[a-zA-Z' ',\-\']+$/))
	{
		return true;
	}
	else
	{
		return false;
	}	
}

function isAlphaNumeric(val)
{
	//
	// check to see if input is alphanumeric
	//
	if (val.match(/^[a-zA-Z0-9]+$/))
	{
		return true;
	}
	else
	{
		return false;
	}	
}

function isWithinRange(val, min, max)
{
	//
	// check to see if value is within range
	//
	if (val >= min && val <= max)
	{
		return true;
	}
	else
	{
		return false;
	}	
}

function isEmailAddress(val)
{
	//
	// check to see if input is a valid email address
	//
        if (val.match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/))
	{
		return true;
	}
	else
	{
		return false;
	}	
}

function isChecked(obj)
{
	//
	// check to see if form value is checked
	//
	if (obj.checked)
	{
		return true;
	}
	else
	{
		return false;
	}	
}


function displayErrors()
{
	//	
	// display all errors
	// iterate through error array and print each item
	//
	stR = "\n";
	for (x=0; x<this.errorList.length; x++)
	{
		stR += this.errorList[x] + "\n";
	}
	alert("Error: " + stR);
}

function raiseError(msg)
{
	//
	// add an error to error list
	//
	this.errorList[this.errorList.length] = msg;
}

function numErrors()
{
	//
	// return number of errors in error array
	//
	return this.errorList.length;
}

/*========= End of validateData ====================*/

