﻿var promo_flyup_holder_visible = false;
var originalPromoCallerLink = null;
var promo_zoom_rect;
function toggle_promo_flyup()
{
	var promo_flyup_holder = document.getElementById("promo_flyup_holder");
	if ( promo_flyup && promo_flyup_holder )
	{
		var caller_xy = getxy(originalPromoCallerLink);
		if ( ! promo_flyup_holder_visible )
		{
			document.getElementById("tbx_promo_code").value = "";
			$('#promo_result').html("");
			var centerPt_h = ( window.innerWidth ? window.innerWidth : ( document.body.scrollWidth ? document.body.scrollWidth : 800 ))/2;
			var centerPt_v = ( window.innerHeight ? window.innerHeight : ( document.body.scrollHeight ? document.body.scrollHeight : 600 ))/2;
			promo_flyup_holder.style.left = "" + ( centerPt_h - (promo_flyup_width/2) ) + "px";
			promo_flyup_holder.style.top = "" + ( centerPt_v - (promo_flyup_height/2) ) + "px";
			promo_zoom_rect = { left:( centerPt_h - (promo_flyup_width/2) ), top:( centerPt_v - (promo_flyup_height/2) ), width:promo_flyup_width, height:promo_flyup_height };
			if ( originalPromoCallerLink != null )
			    animate.open(promo_flyup, function() { promo_flyup_holder.style.display = "block"; addShadow(promo_flyup); document.getElementById("tbx_promo_code").focus(); }, null, caller_xy, promo_zoom_rect);
			else
				promo_flyup_holder.style.display = "block";
			promo_flyup_holder_visible = true;
		}
		else
		{
			var xy = getxy("promo_flyup_holder");
			promo_zoom_rect.left = xy.x;
			promo_zoom_rect.top = xy.y;
			promo_flyup_holder.style.display = "none";
			if ( originalPromoCallerLink != null )
				animate.close( promo_flyup, null, null, caller_xy, promo_zoom_rect);
			promo_flyup_holder_visible = false;
			try
			{
				toggle_promo_flyup_closing(); // function may not be defined
			}
			catch (e) { }
		}
	}
}

function addPromo(oCallerLink)
{
	originalPromoCallerLink = oCallerLink;
	toggle_promo_flyup();
}



function doAddPromo()
{
	var req = getreq();

	this.handler = function() {
		if (req.readyState == 4) {
			document.body.style.cursor = "default";
			$('#img_promo_wait').hide();
			$('#btn_doAddPromo').show();
			var result = JSON.parse(req.responseText);
			// alert(req.responseText);
			try {
				result = result.d;
			}
			catch (e) { }
			if (result.Success) {
				$('#promo_result').html(promo_code_add_success);
				document.getElementById("tbx_promo_code").value = "";
				try {
					doAddPromoCodeSuccess(result); // may not exist
				}
				catch (e) { }
			}
			else {
				if ( result.ErrorMessage && result.ErrorMessage.length > 0 )
					$('#promo_result').html(result.ErrorMessage);
				else
					$('#promo_result').html(promo_code_add_failure);
			}
		}
	}
	
	var sendObj = { };
	sendObj.promo_code = document.getElementById("tbx_promo_code").value.trim();
	
	if ( sendObj.promo_code.length > 0 )
	{		
		req.open("POST", ( srvr + WEBSERVICE + "AddPromoCode" ), true);
		req.setRequestHeader( CONTENT_TYPE, APP_JSON);
		req.onreadystatechange = this.handler;
		document.body.style.cursor = "wait";
		req.send(  JSON.serialize(sendObj) );
		$('#img_promo_wait').show();
		$('#btn_doAddPromo').hide();
	}
}

function submit_promo(oCaller) {
	var req = getreq();
	this.handler = function() {
		if (req.readyState == 4) {
			$('#btn_submit_promo').show();
			$('#img_submit_promo_wait').hide();
			document.body.style.cursor = "default";
			if (req.status == 200) {
				var rslt = JSON.parse(req.responseText);
				try {
					rslt = rslt.d;
				}
				catch (Error) { /* ignore */ }

				if (rslt.Success) {
					$g('tbx_webpromo').value = "";
					$('#cart_holder').html(rslt.FormattedHTML);
				}
				else {
					Notification(rslt.ErrorMessage, "Message");
					NotificationTimeout = setTimeout("NotificationClose()", 8000);
					// alert();
				}
			}
			else {
				alert(req.responseText);
			}
		}
	}

	this.validate = function() {
		var retval = { promo_code: $g('tbx_webpromo').value };

		return retval; // if no problems, otherwise return null and display alert!
	}

	var sendObj = this.validate();

	if (req && sendObj) {
		req.open("POST", (srvr + WEBSERVICE + "SetPromoCode"), true);
		req.setRequestHeader(CONTENT_TYPE, APP_JSON);
		req.onreadystatechange = this.handler;
		req.sendObj = sendObj;
		req.send(JSON.serialize(sendObj));
		$('#btn_submit_promo').hide();
		$('#img_submit_promo_wait').show();
		
	}
}

