/*
	FORM Dynamic HTML Interface & Verification (v0.8)
	Copyright © 2008 Internet Design Studios Pty Ltd, All Rights Reserved
	(www.idstudios.com.au)
	
	Author: James Hartcher
	Last Modified: Sun, 8th November 2008
*/

// Clear DropDown
function SelectReset(name)
{
	var objSelect = document.getElementById(name);
	while (objSelect.length > 0) {
		objSelect.remove(objSelect.length - 1);
	}
}

// Toggle Password Text Encryption
function TogglePasswordEncryption(field, checkbox)
{

	//JAMES' Version
	var Password = $(field).value;
	var NewHTML = $('TogglePassword').innerHTML;

	/*JAMES' IDEA
	alert(Password);
	alert(NewHTML);
	var IsPassword = $(field).type == "password";

	alert(IsPassword);
	
	alert($('TogglePassword').innerHTML);

	if (IsPassword == true) {
		// display as text
		$('TogglePassword').innerHTML = NewHTML.replace(/type="password"/,'type="text"');
	}

	if (IsPassword == false) {
		// display encrypted
		$('TogglePassword').innerHTML = NewHTML.replace(/type="text"/,'type="password"');
	}
	
	alert($('TogglePassword').innerHTML);

	$(field).focus();
	$(field).value = Password;*/

	// Is it currently encrypted?
	var Type = $(field).type == "password" ? "text" : "password";

	if (Type == "password") {
		$('ConfirmPassword_Container').style.display = '';
	}
	else {
		$('ConfirmPassword_Container').style.display = 'none';
	}

	// Create a new element to replace the current.
	var newPassword = document.createElement("input");
	newPassword.setAttribute("type", Type);
	newPassword.setAttribute("id", $(field).id);
	newPassword.setAttribute("name", $(field).name);
	newPassword.setAttribute("class", $(field).className);
	newPassword.setAttribute("maxlength", $(field).maxLength);
	newPassword.setAttribute("value", $(field).value);

	// Replace, with opposite text type.
	$(field).replace(newPassword);
	$(field).className = "input_text";

}

// Add Item to DropDown
function SelectAddItem(name, value, description)
{
	var objSelect 	= document.getElementById(name);
	var objOption	= document.createElement('option');
	objOption.value = value;
	objOption.text 	= description;
	try {
    	objSelect.add(objOption, null);
  	} catch(ex) {
    	objSelect.add(objOption);
  	}
}

// Change Selected Item in DropDown
function SelectChange(name, value)
{
	var objSelect = document.getElementById(name);
	for (var i = 0; i <= objSelect.length; i++) {
		if (objSelect.options[i].value == value) {
			objSelect.selectedIndex = i;
			break;
		}
	}
}



/* -----------------------------------------------------------------------
	FORM Data Validation (v2)
 ----------------------------------------------------------------------- */

// Check Vote (Entry Form)
function CheckForm(id)
{

	// Reset Error Checking
	var Errors = '';

	// Get Form
	var Form = document.getElementById(id).elements;
	
	// Check Required Fields
	for (var i=0; i<Form.length; i++) {

		// Check E-Mail (if applicable)
		if (Form[i].getAttribute('format') == 'email' && Form[i].value) {
			if (CheckEmailFormat(Form[i].value) == false) {
				Errors = Errors + '  - ' + Form[i].getAttribute('title') + '\n';
			}
		
		// Check Phone Number (if applicable)
		} else if (Form[i].getAttribute('format') == 'phonenumber' && Form[i].value) {
			if (CheckPhoneNumberFormat(Form[i].value) == false) {
				Errors = Errors + '  - ' + Form[i].getAttribute('title') + '\n';
			}
		
		// Check Date (if applicable)
		} else if (Form[i].getAttribute('format') == 'date' && Form[i].value) {
			if (CheckDateFormat(Form[i].getAttribute('prefix')) == false) {
				Errors = Errors + '  - ' + Form[i].getAttribute('title') + '\n';
			}
		
		// Check PostCode (if applicable)
		} else if (Form[i].getAttribute('format') == 'postcode' && Form[i].value) {
			if (isNaN(parseInt(Form[i].value)) == true) {
				Errors = Errors + '  - ' + Form[i].getAttribute('title') + '\n';
			}

		// Check Confirm Password (if applicable)
		} else if (Form[i].name == 'ConfirmPassword' && document.getElementById(Form[i].name+'_Container').style.display == '') {
			if (Form('Password').value != Form('ConfirmPassword').value) {
				Errors = Errors + '  - Passwords do not match\n';
			}

		// Check Value (if applicable)
		} else if (Form[i].getAttribute('required')) {
			if ((!Form[i].value) || (Form[i].getAttribute('type')=='checkbox' && !Form[i].checked)) {
				Errors = Errors + '  - ' + Form[i].getAttribute('title') + '\n';
			}

		}

	}

	// Did the entry form contain errors?
	if (Errors > '') {
		alert('Sorry, you didn\'t specify all the required fields correctly:\n' + Errors + '\nPlease check your details & try again.');	
		return false;
	}

	// Success
	return true;

}


// Check E-Mail (Method)
function CheckEmailFormat(email)
{
		
	// Check E-Mail is Valid
	if (email.search(/^[^@]+@[^@]+.[a-z]{2,}$/i) == -1) {
		return false;
	}
	
	return true;
	
}


// Check Date (Method)
function CheckDateFormat(field)
{

	// Get Values
	var Day 	= document.getElementById(field + '_Day').value;
	var Month 	= document.getElementById(field + '_Month').value-1;
	var Year 	= document.getElementById(field + '_Year').value;

	// Create Date
	FormDate = new Date(Year,Month,Day);
	
	// Check Date is Valid
	if (Year != FormDate.getFullYear() || Month != FormDate.getMonth() || Day != FormDate.getDate()) {
		return false;
	}

	return true;
}


// Check Phone Number (Method)
function CheckPhoneNumberFormat(PhoneNumber)
{	

	// Declare Variables & Get Values
	var ValidCharacters	= '0123456789';
	var CleanNumber		= '';

	// Clean String (Remove Invalid Characters)
	for (i=0; i<PhoneNumber.length; i++) {
		if (ValidCharacters.indexOf(PhoneNumber.charAt(i)) > -1) {
			CleanNumber += PhoneNumber.charAt(i);
		}
	}
	
	// Check Length
	if (CleanNumber.length < 8) {
		return false;
	}

	return true;

}
