
if (!itdr) var itdr = new Object();
if (!itdr.classes) itdr.classes = new Object();
if (!itdr.classes.ContactForm) itdr.classes.ContactForm = new function () {
	// private members
	var formObjects = new Object();
	var publishDir = document.location.href.indexOf("publish")==-1 ? "publish/" : "../../publish/";
	var stringLookup = new Object();
		stringLookup["FromName"] = "Name:";
		stringLookup["FromAddr"] = "E-mail:";
		stringLookup["FromPhone"] = "Phone:";
		stringLookup["ShootType"] = "Wedding Date:";
		stringLookup["ReferredBy"] = "Venue:";
		stringLookup["EmailSubject"] = "How did you find us:";
		stringLookup["EmailTxtBody"] = "Comments:";
		stringLookup["SubmitButton"] = "Submit";
		stringLookup["ServerResponse"] = "Server Response";
		stringLookup["FieldsRequired"] = "Highlighted Fields Required.";
		stringLookup["RequiredIndicator"] = "* denotes a required field.";
		stringLookup["SendingData"] = "Sending, Please Wait ...";
		stringLookup["ServerError"] = "Error: Server not found.";
		stringLookup["SendSuccess"] = "Transmission Successfull!";
		stringLookup["SendFailure"] = "Error: Transmission Failed!";
		stringLookup["SendError"] = "Error: ";
	var requiredFields = ["FromNameField", "EmailSubjectField", "FromAddrField", "FromPhoneField", "ShootTypeField", "ReferredByField", "EmailTxtBodyField"];
	// private methods
	function getElementsByClassName(className, tag, elm){
		return itdr.func.getElementsByClassName(className, tag, elm);
	};
	function isRequired (arr, fName) {
		for (var i=0; i<arr.length; ++i) {
			if (arr[i]==fName) return true;
		}
		return false;
	};
	function init (id) {
		if (formObjects[id]==undefined) formObjects[id] = new Object();
		var formObject = formObjects[id];
		formObject.inited = true;
		var contactform = getElementsByClassName("ContactForm", "div", document.getElementById(id))[0];
		contactform.style.display = "block";
		var form = contactform.getElementsByTagName("form")[0];
		form.action = 'javascript:intothedarkroom.classes.ContactForm.click("' + id + '");';
		var fields = ["FromName", "FromAddr", "FromPhone", "ShootType", "ReferredBy", "EmailSubject", "EmailTxtBody"];
		var formRequiredFields = formObject.requiredFields ? formObject.requiredFields : requiredFields;
		var formStringLookup = formObject.stringLookup ? formObject.stringLookup : stringLookup;
		for (var j=0; j<fields.length; ++j) {
			var field = fields[j];
			var set = getElementsByClassName(field+"Set", "div", form)[0];
			var label = set.getElementsByTagName("label")[0];
			var input = set.getElementsByTagName((field=="EmailTxtBody"?"textarea":"input"))[0];
			var required = isRequired(formRequiredFields, field+"Field");
			var className = set.className.split(" ");
			if (className.length>1) className.pop();
			className.push((required ? " Required" : " Optional"));
			set.className = className.join(" ");
			label.innerHTML = formStringLookup[field] + (required?"*":"");
			formObject[field+"Field"] = input;
		}
		var set = getElementsByClassName("SubmitButtonFieldset", "fieldset", form)[0];
		var SubmitButton = set.getElementsByTagName("input")[0];
		SubmitButton.value = formStringLookup["SubmitButton"];
		var set = getElementsByClassName("ServerResponseFieldset", "fieldset", form)[0];
		var label = set.getElementsByTagName("label")[0];
		label.innerHTML = formStringLookup["ServerResponse"];
		var ServerResponseField = set.getElementsByTagName("input")[0];
		ServerResponseField.value = formStringLookup["RequiredIndicator"];
		formObject.formObject = formObject;
		formObject.form = form;
		formObject.SubmitButton = SubmitButton;
		formObject.ServerResponseField = ServerResponseField;
	};
	function validateForm (id) {
		var formObject = formObjects[id];
		var formRequiredFields = formObject.requiredFields ? formObject.requiredFields : requiredFields;
		var result = true;
		for (var i=0; i<formRequiredFields.length; ++i) {
			var input = formObject[formRequiredFields[i]];
			if (input.value==""||input.value==undefined) {
				input.className = "Invalid";
				result = false;
			} else {
				input.className = "Valid";
			}
		}
		return result;
	};
	function hardenForm (id) {
		var formObject = formObjects[id];
		var fields = ["FromName", "FromAddr", "FromPhone", "ShootType", "ReferredBy", "EmailSubject", "EmailTxtBody"];
		for (var i=0; i<fields.length; ++i) {
			var field = formObject[fields[i]+"Field"];
			field.value = "";
			field.disabled = "disabled";
		}
		formObject.SubmitButton.disabled = "disabled";
	};
	function result (id, src) {
		var formObject = formObjects[id];
		var formStringLookup = formObject.stringLookup ? formObject.stringLookup : stringLookup;
		if (src==undefined) formObject.ServerResponseField.value = formStringLookup["ServerError"];
		else if (src=="true") {
			formObject.ServerResponseField.value = formStringLookup["SendSuccess"];
			hardenForm(id);
		} else {
			var bits = src.split("|");
			formObject.ServerResponseField.value = bits.length>1 ? formStringLookup["SendError"] + bits[1] : formStringLookup["SendFailure"];
		}
	};
	function postFormVariables (id) {
		var formObject = formObjects[id];
		var formStringLookup = formObject.stringLookup ? formObject.stringLookup : stringLookup;
		if (validateForm(id)==false) {
			formObject.ServerResponseField.value = formStringLookup["FieldsRequired"];
			return;
		}
		var uri = "/darkroom/blog/" + formObject.form.Language.value + "/send.mail." + formObject.form.Language.value;
		var loader = new thetainteractive.classes.AjaxConnection();
		loader.setVariable("cid", "bd532a430d5651fd8b8f4c8527af398f");
		loader.setVariable("ToAddr", formObject.form.ToEmail.value);
		loader.setVariable("ToName", formObject.form.ToName.value);
		loader.setVariable("FromName", formObject.FromNameField.value);
		loader.setVariable("FromAddr", formObject.FromAddrField.value);
		loader.setVariable("FromPhone", formObject.FromPhoneField.value);
		loader.setVariable("ShootType", formObject.ShootTypeField.value);
		loader.setVariable("ReferredBy", formObject.ReferredByField.value);
		loader.setVariable("EmailSubject", formObject.EmailSubjectField.value);
		loader.setVariable("EmailTxtBody", formObject.EmailTxtBodyField.value);
		loader.setVariable("EmailHtmlBody", '<font face="Arial">' + formObject.EmailTxtBodyField.value + '</font>');
		loader.onLoad = function () {
			result(id, this.getText());
		};
		loader.sendAndLoad(uri, "POST");
		formObject.ServerResponseField.value = formStringLookup["SendingData"];
	};
	// public methods
	this.start = function(id) {
		init(id)
	};
	this.click = function(id) {
		postFormVariables(id)
	};
	this.setGlobalStringTable = function(obj) {
		for (var prop in obj) stringLookup[prop] = obj[prop];
		for (var id in formObjects) if (formObjects[id].inited) init(id);
	};
	this.setGlobalRequiredFields = function(arr) {
		requiredFields = arr;
		for (var id in formObjects) if (formObjects[id].inited) init(id);
	};
	this.setFormStringTable = function(id, obj) {
		if (formObjects[id]==undefined) formObjects[id] = new Object();
		formObjects[id].stringLookup = stringLookup;
		for (var prop in obj) formObjects[id].stringLookup[prop] = obj[prop];
		if (formObjects[id].inited) init(id);
	};
	this.setFormRequiredFields = function(id, arr) {
		if (formObjects[id]==undefined) formObjects[id] = new Object();
		formObjects[id].requiredFields = arr;
		if (formObjects[id].inited) init(id);
	};
};

// a little backwards compatibility
if (!thetainteractive) var thetainteractive = itdr;
if (!intothedarkroom) var intothedarkroom = itdr;
