﻿// JavaScript Document


if(typeof parkside == "undefined") var parkside = new Object();
if(typeof parkside.signup == "undefined") parkside.signup = new Object();

// Constructor
parkside.signup = function() {
}

/// Class members
parkside.signup.prototype = {
/// Properties
	timeout: null,
	nameID: null,
	emailID: null,
	submitID: null,
	loadingID: null,
	messageContainerID: null,
	messageID: null,

/// Methods
	request: function(form, nameElement, emailElement, submitElement, loadingElement, messageContainerElement, messageElement) 
	{ 
		if( typeof http == "undefined" )
		{
			alert("JSMX not included!");
			return;
		}
		nameID = nameElement;
		emailID = emailElement;
		submitID = submitElement;
		loadingID = loadingElement;
		messageContainerID = messageContainerElement;
		messageID = messageElement;	
		document.getElementById(submitID).style.display = 'none';
		document.getElementById(messageContainerID).style.display = 'none';
		document.getElementById(loadingID).style.display = 'block';		
		http("POST", "newsletter_system/website/newsletter.cfc?method=signupAjax", this.response, form); //notice the third argument = list_response. This is the callback function below.
	}
	,
	response: function(obj) //callback functions always take one argument. This is the result passed back from the server.
	{ 	
		document.getElementById(submitID).style.display = 'block';
		document.getElementById(loadingID).style.display = 'none';
		if (obj.error == "true") 
		{
			document.getElementById(messageID).innerHTML = obj.result;
			if (obj.reset == "true") 
			{
				document.getElementById(nameID).value = "";
				document.getElementById(emailID).value = "";
			}
		}
		else 
		{
			document.getElementById(messageID).innerHTML = obj.result;
		}
		
		document.getElementById(messageContainerID).style.display = 'block';	
		var pos = parkside.newsletterSignup.findPos(document.getElementById(submitID));
		document.getElementById(messageContainerID).style.left = pos[0] + "px";
		document.getElementById(messageContainerID).style.top = pos[1] - document.getElementById(messageContainerID).offsetHeight + "px";
		
		if(this.timeout != null) 
			clearTimeout(this.timeout);
		this.timeout = setTimeout("parkside.newsletterSignup.clearResponse()", 6000);	
	}
	, 
	clearResponse: function() 
	{
		document.getElementById(messageID).innerHTML = "";
		document.getElementById(messageContainerID).style.display = 'none';
		this.timeout = null;
	}
	,
	findPos: function(obj) 
	{
		var curleft = curtop = 0;
		if(obj.offsetParent) 
		{
			do 
			{
				curleft += obj.offsetLeft;
				curtop += obj.offsetTop;
			} 
			while(obj = obj.offsetParent);

			return [curleft,curtop];
		}
	}
}

parkside.newsletterSignup = new parkside.signup();

