/*
	MY DETAILS Verification Interface (v0.7)
	Copyright © 2007 Internet Design Studios Pty Ltd, All Rights Reserved
	(www.idstudios.com.au)
	
	Author: James Hartcher
	Last Modified: Thu, 20th September 2007
*/


// CheckEmail Method (Query XML)
function CheckEmail(objField, objMessage, EMail, ProfileReference, IsUnique) {
	var AjaxOptions = {
		method: 'post', postBody: 'objField=' + objField + '&objMessage=' + objMessage + '&email=' + EMail + '&profile=' + ProfileReference + '&IsUnique=' + IsUnique,
		onSuccess: function(objXML) {
			VerifyData('EMail', objXML.responseXML);
		}
	}
	new Ajax.Request('../js/Verify/CheckEmail.asp', AjaxOptions);
}


// CheckNickname Method (Query XML)
function CheckNickname(objField, objMessage, NickName) {
	var AjaxOptions = {
		method: 'post', postBody: 'objField=' + objField + '&objMessage=' + objMessage + '&nickname=' + NickName,
		onSuccess: function(objXML) {
			VerifyData('Nickname', objXML.responseXML);
		}
	}
	new Ajax.Request('../js/Verify/CheckNickname.asp', AjaxOptions);
}


// CheckPostCode Method (Query XML)
function CheckPostCode(objField, objSuburb, objState, objMessage, PostCode) {
	var AjaxOptions = {
		method: 'post', postBody: 'objField=' + objField + '&objSuburb=' + objSuburb + '&objState=' + objState + '&objMessage=' + objMessage + '&postcode=' + PostCode,
		onSuccess: function(objXML) {
			VerifyData('PostCode', objXML.responseXML);
		}
	}
	new Ajax.Request('../js/Verify/CheckPostCode.asp', AjaxOptions);
}


// CheckCase Method (Query XML)
function CheckStreet(objField, Value) {
	var AjaxOptions = {
		method: 'post', postBody: 'objField=' + objField + '&value=' + escape(Value),
		onSuccess: function(objXML) {
			VerifyData('Street', objXML.responseXML);
		}
	}
	new Ajax.Request('../js/Verify/CheckStreet.asp', AjaxOptions);
}


// CheckCase Method (Query XML)
function CheckCase(objField, Value) {
	var AjaxOptions = {
		method: 'post', postBody: 'objField=' + objField + '&value=' + escape(Value),
		onSuccess: function(objXML) {
			VerifyData('Case', objXML.responseXML);
		}
	}
	new Ajax.Request('../js/Verify/CheckCase.asp', AjaxOptions);
}


// Verify Data & Update Responses
function VerifyData(Type, objXML)
{

	// Get Response
	var objResponse 	= objXML.getElementsByTagName('Response');
	var ResponseType	= objResponse[0].attributes.getNamedItem('Type').nodeValue;
	var ResponseCode	= objResponse[0].attributes.getNamedItem('Code').nodeValue;
	var objField		= objResponse[0].attributes.getNamedItem('Object').nodeValue;

	// Get Message (if applicable)
	try {
		
		// Get Message
		var objMessage		= objResponse[0].getElementsByTagName('Message');
		var objMessageObj	= objMessage[0].attributes.getNamedItem('Object').nodeValue;
		var ResponseMessage = objMessage[0].firstChild.nodeValue;

		// Return Response (if applicable)
		if (objMessageObj) {
			
			// Error
			if (ResponseCode >= 200) {
				document.getElementById(objMessageObj).innerHTML = ResponseMessage;	
				document.getElementById(objMessageObj).className = 'MessageError';
				document.getElementById(objMessageObj).style.display = '';
			
			// Success
			} else if (ResponseCode = 100) {
				document.getElementById(objMessageObj).innerHTML = ResponseMessage;	
				document.getElementById(objMessageObj).className = 'MessageOK';
				if (ResponseMessage > ' ') {
					document.getElementById(objMessageObj).style.display = '';	
				} else {
					document.getElementById(objMessageObj).style.display = 'none';
				}
			}
		}

	} catch(error) {}

	// Supplementary Actions (if applicable)
	if (Type == 'SignUp') {
		VerifySignUp(ResponseCode, ResponseMessage);

	} else if (Type == 'PostCode') {
		VerifyPostCode(ResponseCode, objXML);

	} else if (Type == 'Street') {
		if (ResponseCode = 100) { VerifyStreet(objField, objXML) }

	} else if (Type == 'Case') {
		if (ResponseCode = 100) { VerifyCase(objField, objXML) }
	
	}
}

// Verify Street
function VerifyStreet(objField, objXML) {
	var objStreet	= objXML.getElementsByTagName('Street');
	var StreetValue	= objStreet[0].attributes.getNamedItem('Value').nodeValue;
	document.getElementById(objField).value = StreetValue;			
}

// Verify Case
function VerifyCase(objField, objXML) {
	var objCase		= objXML.getElementsByTagName('Case');
	var CaseValue 	= objCase[0].attributes.getNamedItem('Value').nodeValue;
	document.getElementById(objField).value = CaseValue;			
}

// Verify PostCode
function VerifyPostCode(ResponseCode, objXML) {
	var objFields		= objXML.getElementsByTagName('Suburbs');
	var objSuburbDrop	= objFields[0].attributes.getNamedItem('Object').nodeValue;
	var objStateDrop	= objFields[0].attributes.getNamedItem('StateObject').nodeValue;

	// Get Suburb
	var CurrentSuburb = document.getElementById(objSuburbDrop).value;

	// Not a Valid PostCode (Swap to HTML)
	if (ResponseCode >= 200) {
		eval('obj'+objSuburbDrop).innerHTML = eval('obj'+objSuburbDrop+'HTML');
		
	// Valid PostCode (Swap to DropDown)
	} else if (ResponseCode = 100) {
		eval('obj'+objSuburbDrop).innerHTML = eval('obj'+objSuburbDrop+'Ajax');
		
		// Get Suburbs
		var objSuburbs 		= objXML.getElementsByTagName('Suburb');

		// Reset Drop Down
		SelectReset(objSuburbDrop);
		
		// Populate Suburbs
		for (var x = 0; x < objSuburbs.length; x++) {
			var Suburb 	= objSuburbs[x].attributes.getNamedItem('Name').nodeValue;
			var State	= objSuburbs[x].attributes.getNamedItem('State').nodeValue;
			SelectAddItem(objSuburbDrop, Suburb, Suburb);
			SelectChange(objStateDrop, State);
		}
		
		// Change Suburb
		if (CurrentSuburb) {
			SelectChange(objSuburbDrop, CurrentSuburb);
		}
		
	}
}