
schedule("window", initForm);
schedule("window", exampleTextInit);

String.prototype.validEmail = function() {
	if (this.match(/^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$/))
	{
		return true;
	}
	
	return false;
}

function isAlien(a) {
   return isObject(a) && typeof a.constructor != 'function';
}
function isArray(a) {
    return isObject(a) && a.constructor == Array;
}
function isBoolean(a) {
    return typeof a == 'boolean';
}
function isEmpty(o) {
    var i, v;
    if (isObject(o)) {
        for (i in o) {
            v = o[i];
            if (isUndefined(v) && isFunction(v)) {
                return false;
            }
        }
    }
    return true;
}
function isFunction(a) {
    return typeof a == 'function';
}
function isNull(a) {
    return typeof a == 'object' && !a;
}
function isNumber(a) {
	return typeof a == 'number' && isFinite(a);
}
function isObject(a) {
    return (a && typeof a == 'object') || isFunction(a);
}
function isString(a) {
    return typeof a == 'string';
}
function isUndefined(a) {
    return typeof a == 'undefined';
} 
function valueNaN(i) {
	return !(parseInt(i) > -1);
}
function validEmailFormat(txtValue) {
	var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
	if (! txtValue.match(re)) {
		return (false);
	}
	return (true);
}

function trim(value){
	if(value.length < 1){
		return"";
	}
	value = rTrim(value);
	value = lTrim(value);
	if(value==""){
		return "";
	} else {
		return value;
	}
} //End Function

function rTrim(value){
	var w_space = String.fromCharCode(32);
	var v_length = value.length;
	var strTemp = "";
	if(v_length < 0){
		return "";
	}
	var iTemp = v_length -1;
	
	while(iTemp > -1){
		if(value.charAt(iTemp) == w_space){
		} else {
			strTemp = value.substring(0,iTemp +1);
			break;
		}
		iTemp = iTemp-1;	
	} //End While
	return strTemp;

} //End Function

function lTrim(value){
	var w_space = String.fromCharCode(32);
	if(v_length < 1){
		return"";
	}
	var v_length = value.length;
	var strTemp = "";
	
	var iTemp = 0;
	
	while(iTemp < v_length){
		if(value.charAt(iTemp) == w_space){
		} else {
			strTemp = value.substring(iTemp,v_length);
			break;
		}
		iTemp = iTemp + 1;
	} //End While
	return strTemp;
} //End Function


function initForm()
{
	var termsCheckbox = document.getElementById('ReadAboutDeliveries-yes').parentNode.getElementsByTagName('a')[0];
	attachEventListener(termsCheckbox, "click", checkTheBox, false);
	
	var downloadForm = document.getElementById("frmOrders");

	downloadForm.onsubmit = checkForm;
};



function checkTheBox()
{
	document.getElementById('ReadAboutDeliveries-yes').checked = true;
}

function checkForm()
{
	if (fieldNotEmpty(document.getElementById("Name")) == false) return false;
	if (fieldNotEmpty(document.getElementById("DeliveryAddress")) == false) return false;
	if (fieldNotEmpty(document.getElementById("TelephoneNumber")) == false) return false;
	if (fieldValidEmail(document.getElementById("EmailAddress")) == false) return false;
	if (fieldNotEmpty(document.getElementById("DeliveryDate")) == false) return false;
	if (somethingNotSelected(document.getElementById("SubstituteBrands-Yes").parentNode.parentNode.parentNode) == false) return false;
	if (somethingNotSelected(document.getElementById("ReadAboutDeliveries-yes").parentNode) == false) return false;
	
	resetTextAreas();
	
	return true;
};

function fieldNotEmpty(fieldElement)
{
	if (trim(fieldElement.value).length == 0)
	{
		var title = fieldElement.parentNode.getElementsByTagName("label")[0].firstChild.nodeValue;
		if (title == "") alert(fieldElement.parentNode.getElementsByTagName("label")[0].childNode[1].value);
		alert("Please Enter your " + title);
		fieldElement.focus();
		return false;
	}
	
	return true;
};

function fieldValidEmail(fieldElement)
{
	if(fieldNotEmpty(fieldElement)) {
		if (!validEmailFormat(fieldElement.value))
		{
			alert("Please enter a valid email");
			fieldElement.focus();
			return false;
		}
	}
	else
	{
		return false;
	}
	
	return true;
};

function somethingNotSelected(wrapperElement)
{
	var lastElement;
	var somethingChecked = false;
	var inputs = wrapperElement.getElementsByTagName("input");
	for(i=0; i<inputs.length; i++)
	{
		lastElement = inputs[i];
		if(inputs[i].checked)
		{
			somethingChecked = true;
		}
	}
	if (!somethingChecked)
	{
		if(wrapperElement.getElementsByTagName("input")[0].type == "radio") alert("Please select at least one option.");
		else alert("You must agree to our terms and conditions.");
		lastElement.focus();
		return false;
	}
	
	return true;
};


function exampleTextInit()
{
	var textareaElements = document.getElementById("frmOrders").getElementsByTagName("textarea");
	
	for (i=0;i<textareaElements.length;i++)
	{
		textareaElements[i].value = getTextValue(textareaElements[i]);
		attachEventListener(textareaElements[i], "focus", setExampleText, false);
		attachEventListener(textareaElements[i], "blur", setExampleTextBack, false);
	}
};


function resetTextAreas()
{
	var textareaElements = document.getElementById("frmOrders").getElementsByTagName("textarea");
	
	for (i=0;i<textareaElements.length;i++)
	{
		//alert(textareaElements[i].value);
		//alert(getTextValue(textareaElements[i]));
		if(getTextValue(textareaElements[i])==textareaElements[i].value)
		{
			textareaElements[i].value = "";
		}
	}
};

function setExampleText()
{
	if(this.value == getTextValue(this))
	{
		this.value = "";
	}
};

function setExampleTextBack()
{
	if(this.value == "")
	{
		this.value = getTextValue(this);
	}
};

function getTextValue(field)
{
	var textValue = "";
	switch(field.id)
	{
		case "DryGrocery":
			textValue = "Eg. 1 x 500g packet san remo pasta shells";
			break;
		
		case "HealthAndBeauty":
			textValue = "E.g. 1 x 6 pack sorbent toilet rolls";
			break;
			
		case "CleaningProducts":
			textValue = "E.g. 1 x 350ml Palmolive dish washing liquid";
			break;
			
		case "FruitAndVegetables":
			textValue = "E.g. 500g green beans";
			break;
			
		case "FreshMeat":
			textValue = "E.g. 1 x large leg of lamb";
			break;
			
		case "Dairy":
			textValue = "E.g. 1 x 2lt full cream milk";
			break;
			
		case "Delicatessen":
			textValue = "E.g. 300g pitted black olives";
			break;
			
		case "Liquor":
			textValue = "E.g. 1 x 6 pack VB stubbies";
			break;
			
		default:
			textValue = "Eg. 1 x 500g packet san remo pasta shells";
			break;
	}
	return textValue;
};