function Share() {
	this.xml = null;
}
Share.prototype.create = function(_element) {
	this.shareForm = document.createElement("div");
	this.shareForm.innerHTML = '<h3>Share Fotobounce</h3>';
	this.form = document.createElement("form");
	this.form.innerHTML = '<p><label for="ref_email">Your email</label><br /><input type="text" name="ref_email" class="shareForm" /></p>'+
	'<p><label for="ref_name">Your name</label><br /><input type="text" name="ref_name" class="shareForm" /></p>'+
	'<p>Enter up to five email addresses. We will send your friends an email with a fotobounce download link on your behalf.</p>'+
	'<p><input type="text" name="ref_toemail1" class="shareForm" /></p>'+
	'<p><input type="text" name="ref_toemail2" class="shareForm" /></p>'+
	'<p><input type="text" name="ref_toemail3" class="shareForm" /></p>'+
	'<p><input type="text" name="ref_toemail4" class="shareForm" /></p>'+
	'<p><input type="text" name="ref_toemail5" class="shareForm" /></p>';
	this.shareForm.appendChild(this.form);
	_element.appendChild(this.shareForm);
	
	this.shareLink = document.createElement("div");
	this.shareLink.innerHTML = '<h4>Are you a Fotobouncer?</h4>';
	_element.appendChild(this.shareLink);
	
	this.loader = document.createElement("div");
	this.loader.innerHTML = '<img src="/images/spinner.gif" alt="loading" /> Sending referrals. Please wait.';
	_element.appendChild(this.loader);
	
	var selfRef = this;
	
	var captchaContainer = document.createElement("div");
	this.form.appendChild(captchaContainer);
	
	Recaptcha.create("6LdOFAgAAAAAACCsgDmk6KvJvjNhEr7JJZ2WQ13q",captchaContainer,{"theme":"white"});
	
	var submitButton = document.createElement("input");
	submitButton.setAttribute("type","submit");
	submitButton.setAttribute("value","Send");
	submitButton.onclick = function (e) {
		var evt = window.event || e;
		evt.returnValue = false;
		if (evt.preventDefault) {
			evt.preventDefault();
		}
		selfRef.validateAndSend();
	};
	var cancelButton = document.createElement("input");
	cancelButton.setAttribute("type","reset");
	cancelButton.setAttribute("value","Cancel");
	cancelButton.onclick = function (e) {
		var evt = window.event || e;
		evt.returnValue = false;
		if (evt.preventDefault) {
			evt.preventDefault();
		}
		selfRef.close();
	};
	var formButtons = document.createElement("p");
	formButtons.appendChild(submitButton);
	formButtons.appendChild(document.createTextNode(" "));
	formButtons.appendChild(cancelButton);
	this.form.appendChild(formButtons);
	
	var openLink = document.createElement("a");
	openLink.href = "javascript:void(0)";
	openLink.onclick = function (e) {
		var evt = window.event || e;
		evt.returnValue = false;
		if (evt.preventDefault) {
			evt.preventDefault();
		}
		selfRef.open();
	};
	openLink.innerHTML = "Share it with friends!";	
	this.shareLink.appendChild(document.createElement("p")).appendChild(openLink);
	
	this.close();
}
Share.prototype.close = function() {
	this.shareForm.style.display = "none";
	this.shareLink.style.display = "block";
	this.loader.style.display = "none";
}
Share.prototype.open = function() {
	this.shareForm.style.display = "block";
	this.shareLink.style.display = "none";
	this.loader.style.display = "none";
}
Share.prototype.loading = function() {
	this.shareForm.style.display = "none";
	this.shareLink.style.display = "none";
	this.loader.style.display = "block";
}
Share.prototype.hide = function() {
	this.shareForm.style.display = "none";
	this.shareLink.style.display = "none";
	this.loader.style.display = "none";
}
Share.prototype.validateAndSend = function(frm) {
	var emailRE = /^[^@]+@.+\.[a-z0-9]+$/;
	var postVars = new Array();
	if (!emailRE.test(this.form.ref_email.value)) {
		alert("Please enter your valid email address.");
		return;
	}
	postVars.push("ref_email="+escape(this.form.ref_email.value));
	if (this.form.ref_name.value == "") {
		alert("Please enter your name.");
		return;
	}
	postVars.push("ref_name="+escape(this.form.ref_name.value));
	var hasAtLeastOneEmail = false;
	for (var i=1; i<=5; i++) {
		if (this.form.elements["ref_toemail"+i].value != "" && !emailRE.test(this.form.elements["ref_toemail"+i].value)) {
			alert("The email address "+this.form.elements["ref_toemail"+i].value+" is invalid.");
			return;						 
		}
		postVars.push("ref_toemail"+i+"="+escape(this.form.elements["ref_toemail"+i].value));
		hasAtLeastOneEmail = true;
	}
	if (!hasAtLeastOneEmail) {
		alert("Please enter at least one email address of a friend you want to share Fotobounce with.");
		return;
	}
	if (Recaptcha.get_response() == "") {
		alert("Please enter the words as they appear in the image.");
		return;
	}
	postVars.push("partner=fotobounce");
	postVars.push("captcha_challenge="+escape(Recaptcha.get_challenge()));
	postVars.push("captcha_response="+escape(Recaptcha.get_response()));
	var xmlobj;
	try {
		xmlobj = new XMLHttpRequest();
	} catch (e) {
		try {
			xmlobj = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			xmlobj = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	if (xmlobj == null) {
		frm.onsubmit = null;
		frm.submit();
	}
	var selfRef = this;
	xmlobj.onreadystatechange = function () {
		if (xmlobj.readyState == 4) {
			selfRef.xml = xmlobj.responseXML;
			if (selfRef.xml == null) {
				alert("We were unable to send your referrals now. We apologize for any inconvenience.\n\n"+xmlobj.responseText);
				selfRef.open();
				return;
			}
			if (selfRef.xml.getElementsByTagName("error").length > 0) {
				alert(selfRef.xml.getElementsByTagName("error")[0].firstChild.nodeValue);
				selfRef.open();
				return;
			}
			if (selfRef.xml.getElementsByTagName("response").length > 0) {
				alert(selfRef.xml.getElementsByTagName("response")[0].firstChild.nodeValue);
			}
			selfRef.hide();
		}
	}
	this.xml = null;
	var url = "/share_fotobounce/send.php?"+postVars.join("&");
	xmlobj.open("GET",url,true);
	xmlobj.send(null);
	this.loading();
	Recaptcha.reload();
}
var share = new Share();