/* CLIENT-side Scripts for Out-of-Stock (OOS) notifier
 *
 * by GF
 * Copyright 2010 Disk Depot Ltd
 */

function oosAddNotifierLink(currentProductCode)
{
	if (oosSupportsModernXmlHttpRequest()) {
		var	elm = document.getElementById('currently_oos');

		if (!elm) {
			return;
		}		

		var	linkHTML = "<small><a style='text-decoration:underline; color: #aa0000;' href='#' onclick=\"oosShowRequest('" + currentProductCode + "'); return false;\">Notify me when back in stock</a></small>";

		elm.innerHTML = elm.innerHTML + "<br /><br />" + linkHTML;
	}
}

function oosShowRequest(currentProductCode)
{
	//alert('SHOW 1');
	var	newDDDialog = new DDDialog(DDDIALOG_TYPE_PROMPT,
					"Stock Notification System",
					"PLEASE ENTER YOUR EMAIL ADDRESS\n\n" +
						"(Addresses entered into our reminder\n" +
					       	"system are kept separate and will not \n" +
						"be shared or used for any other purpose.)\n",
					"",						/* empty text box */
					oosProcessRequest,
					currentProductCode);
	//alert('SHOW 2');
	newDDDialog.display(true);
	//alert('SHOW 3');
}

function oosProcessRequest(currentProductCode, email)
{
	if (oosIsEmail(email)) {
		oosSendRequest(email, currentProductCode);
	} else {
		oosAlert("Not a valid email address.\n\nPlease enter your address again.");
	}
}

function oosGetXmlHttpRequest()
{
	return new XMLHttpRequest();
	/*else {
    		try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); }
      		catch (e) {}
    		try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); }
      		catch (e) {}
    		try { return new ActiveXObject("Msxml2.XMLHTTP"); }
      		catch (e) {}
		alert("Sorry, your browser does not support this functionality\nor it has been disabled for security reasons.");
	};*/
}

function oosSupportsModernXmlHttpRequest()
{
	return (typeof XMLHttpRequest != "undefined");
}

function oosSendRequest(email, pcode)
{
	var	xh = oosGetXmlHttpRequest();
	var	url = "http://www.diskdepot.co.uk/oosNotifier.aspx?email=" + escape(email) + "&product=" + escape(pcode) + "&action=request";

	xh.onreadystatechange = function () { oosResponseHandler(this); }
	
	//xh.onload = oosMozillaResponseHandler;
	xh.open("GET", url, true);
	xh.send(null);
}

function oosMozillaResponseHandler(event)
{
	var	xh = event.target ? event.target : event.srcElement;

	oosResponseHandler(xh);
}

function oosResponseHandler(xh)
{
	if (xh.readyState == 4) {
		var	responseText = xh.responseText;

		oosAlert(responseText);
	}
}

function oosIsEmail(str)
{
	var	regex = /.+@.+\..+/;

	return regex.test(str);
}

function oosAlert(str)
{
		var	DDAlert = new DDDialog(DDDIALOG_TYPE_ALERT,
						"Stock Notification System",
						str,
						null,	/* unused */
						null,	/* no callback required */
						null);	/* no data required */
		DDAlert.display(true);
}
