/******************** /Lib/Scripts/cart.js (0) *********************/


/******************** /Lib/Scripts/cart.js *********************/

// ---------- CONSTANTS ---------

var DIVID_CURRENTITEMSINCART = '#currentItemsInCart';

// ------------------------------------- CART DISPLAY --------------------------------------------

var cart_empty = false;
var cartEmptyMessage = '<p>Your cart is empty.</p>';
var cart_empty_ES = "<p>Su carrito est� vac�o.</p>";
var CART_CHANGED = "CART_CHANGED";


function removeItems(sItemList)
{
	removeLineitem(sItemList);
}


function removeLineitem(li, link)
{
	var req = getreq();
	this.handler = function() {
		if (req.readyState == 4) {
			document.body.style.cursor = "default";
			if (req.status == 200) {
				rslt = JSON.parse(req.responseText);
				try {
					rslt = rslt.d;
				}
				catch (err) { }
				if (rslt.Success) {
					$('#currentItemsInCart').html(rslt.FormattedHTML);
					if (rslt.FormattedHTML.indexOf("cart_empty") > -1) {
						eraseCookie("CART_SUMMARY");
						clearTimeout(cart_timer);
						$('#order_summary_panel').hide();
					}
				}
				else
					alert(rslt.ErrorMessage + req.responseText);
			}
			else
				alert(req.responseText);
		}
	}

	try
	{
		sendObj = { item_no: li };
		document.body.style.cursor = "wait";
		req.open(HTTP_VERB, (srvr + WEBSERVICE + "RemoveItem"), true);
		req.setRequestHeader(CONTENT_TYPE, APP_JSON);
		req.onreadystatechange = this.handler;
		req.send( JSON.serialize(sendObj) );
	}
	catch (err)
	{
		alert(err.description ? err.description : err);
	};
}


function show_cart_items(sFormatter, sStyles)
{
	var req = getreq();
	var cartresp = null;
	this.handler = function()
	{
		if (req.readyState == 4 )
		{
			if (req.status == 200)
			{
				cartresp = JSON.parse(req.responseText);
				try
				{
					cartresp = cartresp.d;
				}
				catch(Error) { /* ignore */ }

				if (cartresp.FormattedHTML != null && cartresp.FormattedHTML.length > 0)
				{
					$(DIVID_CURRENTITEMSINCART).html(cartresp.FormattedHTML); // 
				}
				else if (cartresp.LineCount == 0 && cartresp.Total == 0 )
				{
                    // CKP 10/06/2011 Spanish Translation but need to see when this comes into play and then debug it
                    //var cookiePresent = readCookie("lang");
                    //if (cookiePresent || location.search.indexOf("lang=") > -1)
                    //    cookiePresent = true;

                    //if (cookiePresent) {
                    //    if (location.pathname == "/tickets/cart.aspx") {
                    //        $(DIVID_CURRENTITEMSINCART).html(cart_empty_ES);
                    //}
                    //else
					    $(DIVID_CURRENTITEMSINCART).html(cartEmptyMessage);
					cart_empty= true;
					updateButtonText();
				}
				else
					$(DIVID_CURRENTITEMSINCART).html('');
			}
			else
				alert("some other return status in show_cart_items: " + req.responseText );
		}	
	}
	if (req)
	{
		var sendobj = {};
		sendobj.formatterTypeName = "FloridaGrand.Lib.Common.FGOHTMLCartFormatter2";
		sendobj.styles = sStyles;
		
		req.open(HTTP_VERB, ( srvr + ROOT + WEBSERVICE + "GetCart"), true);
		req.setRequestHeader( CONTENT_TYPE, APP_JSON );
		req.setRequestHeader( ORGANIZATION_CODE_KEY, ORGANIZATION_CODE );
		req.onreadystatechange = this.handler;
		req.send(JSON.serialize(sendobj));
	}
}


function edit_line( sCommand, iLineNo)
{
	var req = getreq();
	
	this.handler = function()
	{
		if (req.readyState == 4 )
		{
			document.body.style.cursor = "default";
			
			if (req.status == 200)
			{
				cartresp = JSON.parse(req.responseText);
				try
				{
					cartresp = cartresp.d;
				}
				catch(Error) { /* ignore */ }

				if (cartresp.FormattedHTML != null && cartresp.FormattedHTML.length > 0)
				{
					$(DIVID_CURRENTITEMSINCART).html(cartresp.FormattedHTML);
				}
				else if (cartresp.LineCount == 0 && cartresp.Total == 0)
				{
					$(DIVID_CURRENTITEMSINCART).html(cartEmptyMessage);
					$('#btn_continue').hide();
					
					 eraseCookie("FloridaUser");
                    $("#user-order-status").hide();
					      
				}
				else
					$(DIVID_CURRENTITEMSINCART).html(''); 
			}
			else
				alert("some other return status in show_cart_items: " + req.responseText );
		}	
	}


	if (sCommand == "changeLineItem")
	{
		alert("write this: " + sCommand);
	}
	else if (sCommand == "changeContribution")
	{
		toggle_contribution();
	}
	else
	{
		$('#remove' + iLineNo).hide();
		// do this for: removeLineitem, removeContribution
		
		if (req)
		{
			document.body.style.cursor = "wait";
			var sendobj = {};
			sendobj.item_no = iLineNo;
			req.open(HTTP_VERB, ( srvr + ROOT + WEBSERVICE + "RemoveItem"), true);
			req.setRequestHeader(CONTENT_TYPE, APP_JSON );
			req.setRequestHeader( ORGANIZATION_CODE_KEY, ORGANIZATION_CODE );
			req.onreadystatechange = this.handler;
			req.send(JSON.serialize(sendobj));
		}
	}

}

// ------------------------------------- LOGIN/ACCT MAINTENANCE HANDLING --------------------------------------------

function cancel_login()
{
	$('#cart_login_panel').slideUp('slow', function() 
		{
			if (PurchaseMode == "AllowAnonymousTransactionAccountOptional" )
			{
				$('#tbl_login').fadeOut();				
				$('#cart_login_options').show();
				var o = $g("cart_login_options")
				var inputarr = o.getElementsByTagName("input");
				for(var x=0; x < inputarr.length; x++)
					inputarr[x].checked = false;
			}
		}
	);
}

function tbl_login_fadein()
{
	$('#cart_login_panel').slideUp( 'slow', function() 
	{ 
		$('#cart_login_options').hide();
		$('#tbl_login').show();
		$('#cart_login_panel').slideDown();
	});
	current_user_visible_div = $g("cart_login_panel");
}

var acxy = {x:0, y:0};
var div_account_content;

var current_user_visible_div = null;

var horizadjust = 0 ;
try
{
	if(isIE) horizadjust = -1;
}
catch(err) { }

function show_login()
{
	div_account_content = $g("div_account_content");
	acxy = getxy(div_account_content);
	var cart_login_panel = $g("cart_login_panel");
	cart_login_panel.style.left = "" + ((acxy.x + horizadjust)-1) + "px";
	cart_login_panel.style.top = "" + acxy.y + "px";
	$(cart_login_panel).slideDown('normal', function() 
	{ 
	    try 
	    { 
	        $g("tbx_login_panel_username").focus(); 
        } catch(err) { }     
        cart_login_panel.style.height = "450px";
    });
}

function show_register(oToHide)
{
    var cart_login_panel = $g("cart_login_panel");
	
	div_account_content = $g("div_account_content");
	acxy = getxy(div_account_content);
	var cart_register_panel = $g("cart_register_panel");
	cart_register_panel.style.left = "" + (acxy.x + horizadjust)+ "px";
	cart_register_panel.style.top = "" + acxy.y + "px";
	if(oToHide)
	{   
		if (typeof(oToHide) == "string" )
			$( '#' + oToHide ).slideUp('normal', function() { $(cart_register_panel).slideDown(); });
		else
			$( oToHide ).slideUp('normal', function() { $(cart_register_panel).slideDown(); });	    
	}
	else
	{
		$(cart_register_panel).slideDown( function() { cart_register_panel.style.height = "450px"; });
		$(cart_login_panel).slideUp();
    }
}

var inAnonymousLogin = false;

function show_userinfo(oToHide,bShowRememberMe)
{
	div_account_content = $g("div_account_content");
	acxy = getxy(div_account_content);
	var cart_userinfo_panel = $g("cart_userinfo_panel");
	cart_userinfo_panel.style.left = "" + ((acxy.x + horizadjust)-1)+ "px";
	cart_userinfo_panel.style.top = "" + acxy.y + "px";
    		    
	if(oToHide)
	{
		if (typeof oToHide == "string" )
			$( '#' + oToHide ).slideUp('normal', function() { $(cart_userinfo_panel).slideDown( function() { cart_userinfo_panel.style.height = "450px"; } ); });
		else
			$( oToHide ).slideUp('normal', function() { $(cart_userinfo_panel).slideDown( function() { cart_userinfo_panel.style.height = "450px"; } ); });
	}
	else
	{
        $(cart_userinfo_panel).slideDown(function() { cart_userinfo_panel.style.height = "461px"; });
	}
	
	if( bShowRememberMe || PurchaseMode == "AllowAnonymousTransaction" )
	{
		$('#remember_me2').show();
		inAnonymousLogin = true;
	}
}

function show_forgot()
{
	div_account_content = $g("div_account_content");
	acxy = getxy(div_account_content);
	var cart_forgot_panel = $g("cart_forgot_panel");
	cart_forgot_panel.style.left = "" + (acxy.x  + horizadjust)+ "px";
	cart_forgot_panel.style.top = "" + acxy.y + "px";
	$('#cart_login_panel').slideUp('normal', function() { $(cart_forgot_panel).slideDown( function() { cart_forgot_panel.style.height = "450px"; }); });
}

function hide_register()
{
	$('#cart_register_panel').slideUp();
}

function hide_forgot()
{
	$('#cart_forgot_panel').slideUp();
}

function hide_login()
{
	$('#cart_login_panel').slideUp();
}

function hide_userinfo()
{
	$('#cart_userinfo_panel').slideUp();
}

function getDisplayFromFormData() {

    var cookiePresent = readCookie("lang");
    if (cookiePresent || location.search.indexOf("lang=") > -1)
	    cookiePresent = true;

	if (cookiePresent) {

	    var html = "<table class='simple'><tr><td>";
	    html += get_menu_val($g("ddl_salutation"));
	    html += " " + $g("tbx_fname").value.trim();
	    html += " " + $g("tbx_lname").value.trim();
	    html += "<br/>" + $g("tbx_addr1").value.trim();
	    var addr2 = $g("tbx_addr2").value.trim();
	    if (addr2.length > 0)
	        html += "<br/>" + addr2;
	    html += "<br/>" + $g("tbx_city").value.trim();
	    html += ", " + get_menu_val($g("ddl_statelist"));
	    html += " " + $g("tbx_postal_code").value.trim();
	    html += "</td><td>" + editAccountInfoLink;
	    html += "Correo Electr" + '\u00F3' + "nico: " + $g("tbx_email").value.trim();
	    html += "<br/>Tel" + '\u00E9' + "fono de D" + '\u00ED' + "a: " + $g("tbx_dayphone").value.trim();
	    html += "<br/>Tel" + '\u00E9' + "fono de Noche: " + $g("tbx_evephone").value.trim();
	    html += "</td></tr></table>";
	    $('#div_account_content').html(html);
	}
	else {
	    var html = "<table class='simple'><tr><td>";
	    html += get_menu_val($g("ddl_salutation"));
	    html += " " + $g("tbx_fname").value.trim();
	    html += " " + $g("tbx_lname").value.trim();
	    html += "<br/>" + $g("tbx_addr1").value.trim();
	    var addr2 = $g("tbx_addr2").value.trim();
	    if (addr2.length > 0)
	        html += "<br/>" + addr2;
	    html += "<br/>" + $g("tbx_city").value.trim();
	    html += ", " + get_menu_val($g("ddl_statelist"));
	    html += " " + $g("tbx_postal_code").value.trim();
	    html += "</td><td>" + editAccountInfoLink;
	    html += "E-mail: " + $g("tbx_email").value.trim();
	    html += "<br/>Day Phone: " + $g("tbx_dayphone").value.trim();
	    html += "<br/>Evening Phone: " + $g("tbx_evephone").value.trim();
	    html += "</td></tr></table>";
	    $('#div_account_content').html(html);
	}
}

function populateForm(oAI)
{
	set_selected_value("ddl_salutation", oAI.Prefix);
	$g("tbx_fname").value = oAI.NameFirst;
	$g("tbx_lname").value = oAI.NameLast;
	$g("tbx_addr1").value = oAI.Street1;
	$g("tbx_addr2").value = oAI.Street2;
	$g("tbx_city").value = oAI.City;
	set_selected_value($g("ddl_statelist"), oAI.State);
	$g("tbx_postal_code").value = oAI.PostalCode;
	$g("tbx_email").value = oAI.Email;
	$g("tbx_dayphone").value = oAI.PhoneDay;
	$g("tbx_evephone").value = oAI.PhoneEve;
	// $g("chk_contact_email").checked = oAI.CheckboxEmail;
	$g("chk_contact_phone").checked = oAI.CheckboxPhone;
	$g("chk_contact_mail").checked = oAI.CheckboxMail;
	getDisplayFromFormData();
}

function GetMailingListMembership() {
	var req = getreq();
	this.handler = function() {
		if (req.readyState == 4) {
			if (req.status == 200) {
				var rslt = JSON.parse(req.responseText);
				try {
					rslt = rslt.d;
				}
				catch (Error) { /* ignore */ }
				if (rslt.Success) {
					var chk_contact_email = $g("chk_contact_email");
					if (chk_contact_email.checked ) {
						var operaclique_holder = $g("operaclique_holder");
						$(operaclique_holder).slideDown("normal");
						var selectedIDs = eval(rslt.JS);
						var el = null;
						for (var x = 0; x < selectedIDs.length; x++) {
							el = $g('lit_operaclique_item' + selectedIDs[x]);
							if (el)
								el.checked = true;
						}
					}
				}
				else
					alert(rslt.ErrorMessage)
			}
		}
	}

	if ( req) {
		req.open(HTTP_VERB, (srvr + ROOT + WEBSERVICE + "GetMailingListMembership"), true);
		req.setRequestHeader(CONTENT_TYPE, APP_JSON);
		req.setRequestHeader(ORGANIZATION_CODE_KEY, ORGANIZATION_CODE);
		req.onreadystatechange = this.handler;
		req.send(""); // "{login: 'peter', password: 'test', remember_me: false}";
	}
	

}

var login_result;

function do_login()
{
	var req = getreq();
	this.handler = function () {
		if (req.readyState == 4) {
			$g("btn_do_login").disabled = false;
			document.body.style.cursor = "default";
			$('#btn_do_login').show();
			$('#img_login_wait').hide();
			if (req.status == 200) {
				var sobj = req.sendObj;
				var ajaxresult = JSON.parse(req.responseText);
				try {
					ajaxresult = ajaxresult.d;
				}
				catch (Error) { /* ignore */ }
				if (!ajaxresult.Success) {
					$('#btn_do_login').show();
					alert("Sorry, your login or password are not correct or you may not have an account.");
				}
				else {
					var emailIsBlank = false;
					if (typeof localStorage != "undefined" && sobj.remember_me) {
						var Userinfo = { "AccountInfo": ajaxresult.AccountInfo, "LoginInfo": ajaxresult.LoginInfo };
						var val = Base64.encode(JSON.serialize(Userinfo));
						localStorage.setItem(location.hostname + "userinfoB64", val);
					}

					var chk_change_password = $g('chk_change_password');
					if ((chk_change_password && chk_change_password.checked) || (ajaxresult.LoginInfo.Status != "P" && ajaxresult.UpgradeLoginPolicyRequires)) {
						login_result = ajaxresult;

						if (ajaxresult.LoginInfo.Status != "P")
							$('#div_temporary_password_message').show();

						if ($g('tbx_upgrade_login_email')) {
							$g('tbx_upgrade_login_email').value = ajaxresult.LoginInfo.CurrentEmail;
							if (ajaxresult.LoginInfo.CurrentEmail != null && ajaxresult.LoginInfo.CurrentEmail.length > 0 && email_validation(ajaxresult.LoginInfo.CurrentEmail)) {
								$g('tbx_upgrade_login_email').disabled = true;
								$g('tbx_updgrade_login_login').value = ajaxresult.LoginInfo.CurrentEmail;
							}
							else {
								$('#tr_new_login_row').hide();
								emailIsBlank = true;
								$('#tbx_upgrade_login_email').bind("blur", function () { $g('tbx_updgrade_login_login').value = $g("tbx_upgrade_login_email").value });
							}
						}
						// var div_account_content = $g("div_account_content");
						// var acxy = getxy(div_account_content);

						// $g('update_temporary_login_panel').style.left = SE + ((acxy.x + horizadjust) - 1) + px;
						// $g('update_temporary_login_panel').style.top = SE + acxy.y + px;
						// $('#cart_login_panel').slideUp("normal", function() { toggle_upgrade_login(); $g("tbx_upgrade_login_password1").focus();  });
						// return;
					}
					else if (sobj && sobj.login != ajaxresult.LoginInfo.CurrentLogin && ajaxresult.LoginInfo.Status == "P") {
						alert('You have logged in with a temporary login, however your account does have a permanent login, "' + ajaxresult.LoginInfo.CurrentLogin + '". You may wish to use this login in the future.');
					}



					if (typeof login_success_handler != "undefined")
						if (login_success_handler(ajaxresult))
							return;

					var currentItemsInCart = $g('currentItemsInCart');
					if (!currentItemsInCart) {
						alert("no cart");
						return;
					}

					// GetMailingListMembership();

					show_cart_items(formatterTypeName, styles);
					// alert(req.responseText);
					try {
						progress_account_info = true; // declared in cart_account.ascx
						user_logged_in = true; 		// declared in cart_account.ascx
						populateForm(ajaxresult.AccountInfo);
						if (ajaxresult.LoginInfo.Status == "P") {
							$('#ddl_order_source3_th').hide();
							$('#ddl_order_source3_td').hide();
							show_userinfo($g("cart_login_panel"));
						}
						else {
							$('#cart_login_panel').slideUp('normal', function () { toggle_upgrade_login(); if (emailIsBlank) $g("tbx_upgrade_login_email").focus(); else $g("tbx_upgrade_login_password1").focus(); });
						}
					}
					catch (err) {
						LogError("do_login", err.message ? err.message : err, "479");
						// alert("msg=" + (err.message ? err.message : err));
						$('#cart_login_panel').slideUp();
					}
					if (ajaxresult.Message && ajaxresult.Message.length > 0)
						ErrorMessage(ajaxresult.Message, "Promo Code Result");
						//alert(ajaxresult.Message);
				}
			}
		}
	};
	this.validate = function () {
	    var errmsg = "";
	    var retval = {};
	    var tbx_login_panel_username = $g("tbx_login_panel_username");
	    // if (email_validation(tbx_login_panel_username.value))
	    // 	retval.login = tbx_login_panel_username.value.trim();
	    if (tbx_login_panel_username.value.trim().length > 0)
	        retval.login = tbx_login_panel_username.value.trim();
	    else {
            //if spanish
	        if (readCookie("lang"))
	            errmsg = "EL nombre de usuario es invalido";
	        else
	            errmsg = "Login not valid";
	    }

	    var tbx_login_panel_password = $g("tbx_login_panel_password");
	    if (tbx_login_panel_password.value.trim().length > 0)
	        retval.passwd = tbx_login_panel_password.value.trim();
	    else {
        //if spanish
	        if (readCookie("lang"))
	        //La contrase�a no debe quedar en blanco

	            errmsg += "\r\nLa contrase" + '\u00F1' + "a no debe quedar en blanco";
	        else
	            errmsg += "\r\nPassword must not be blank";
	    

	    }
	    var tbx_login_panel_promocode = $g("tbx_login_panel_promocode");
//	    if (sessionItemsSourceNo != null) && (sessionItemsSourceNo > 0) {
//	        retval.promo_code = sessionItemsSourceNo;
//	    } else
	    if (!tbx_login_panel_promocode || tbx_login_panel_promocode.value == "")
	        retval.promo_code = get_menu_val("ddl_order_source");
	    else
	        retval.promo_code = tbx_login_panel_promocode.value.trim();

	    if (errmsg.length > 0) {
	        alert(errmsg);
	        return;
	    }

	    try {
	        retval.remember_me = $g("chk_remember_me").checked;
	    }
	    catch (err) {
	        retval.remember_me = false;
	    }

	    return retval;
	}
	
	var sendObj = this.validate();
	if (sendObj && req)
	{
		req.open(HTTP_VERB, ( srvr + ROOT + WEBSERVICE + "Login"), true);
		req.setRequestHeader(CONTENT_TYPE, APP_JSON);
		req.setRequestHeader( ORGANIZATION_CODE_KEY, ORGANIZATION_CODE );
		req.onreadystatechange = this.handler;
		req.send(JSON.serialize(sendObj)); // "{login: 'peter', password: 'test', remember_me: false}";
		$("btn_do_login").disabled = true;
		$('#btn_do_login').hide();
		$('#img_login_wait').show();
		document.body.style.cursor = "wait";
		req.sendObj = sendObj;
	}
}

function checkEnable_btn_do_login()
{
	$g("btn_do_login").disabled = ! (loginOK && passwrdOK);
}	

function check_email(sValue, sValidateField)
{
	if(sValue.length > 0)
	{
		if (! email_validation(sValue))
		{
			loginOK = false;
			$('#' + sValidateField).html("E-mail format not correct!&nbsp;");
			$g(sValidateField).style.display = "inline";
		}
		else
			loginOK = true;
	}
	else
		loginOK = false;
	checkEnable_btn_do_login();	
}
function check_passwrd(sValue)
{
	passwrdOK = (sValue.length > 0);
	checkEnable_btn_do_login();
}

function do_register(oCaller)
{
	var req = getreq();
	var caller = oCaller;

	this.validate = function () {
		var retval = {};
		var errmsg = "";
		var o = $g("tbx_register_email");
		if (!email_validation(o.value))
			errmsg = "\r\n- E-mail address is not valid";
		else {
			retval.email = o.value.trim();
			retval.login = o.value.trim();
		}
		o = $g("tbx_register_password");
		var passwd = o.value.trim();
		if (passwd.length == 0)
			errmsg += "\r\n- Password must not be blank";
		o = $g("tbx_register_password_repeat");
		if (o.value.trim() != passwd)
			errmsg += "\r\n- Passwords must match";
		retval.passwd = passwd;
		o = $g("tbx_register_fname");
		if (o.value.trim() == "")
			errmsg += "\r\n- First Name must not be blank.";
		retval.fname = o.value.trim();
		o = $g("tbx_register_lname");
		if (o.value.trim() == "")
			errmsg += "\r\n- Last Name must not be blank.";
		retval.lname = o.value.trim();

		o = $g("ddl_order_source2");
		if (sessionItemsSourceNo > 0) {
			retval.promo_code = sessionItemsSourceNo;
		}
		else if (o)
			retval.promo_code = o.options[o.selectedIndex].value;
		else
			retval.promo_code = 0;

		if (errmsg.length > 0) {
			alert("Please correct the following errors:" + errmsg);
			caller.disabled = false;
			return;
		}
		else
			return retval;
	}
	
	
	var sendObj = this.validate();

	this.handler = function() {
		if (req.readyState == 4) {
			$('#img_register_wait').hide();

			if (caller)
				caller.disabled = false;
			document.body.style.cursor = "default";
			// $('#btn_do_login').show();
			// $('#img_login_wait').hide();
			if (req.status == 200) {
				var rslt = JSON.parse(req.responseText);
				try {
					rslt = rslt.d;
				}
				catch (Error) { /* ignore */ }
				if (rslt.Success) {
					try {
						$g("tbx_fname").value = sendObj.fname;
						$g("tbx_fname").disabled = true;
						$g("tbx_lname").value = sendObj.lname;
						$g("tbx_lname").disabled = true;
						$g("tbx_email").value = sendObj.email;
						$g("tbx_email").disabled = true;
					}
					catch (err) { }
					show_userinfo($g('cart_register_panel'));
				}
				else {
					$('#btn_do_register').show();
					$('#btn_do_register_cancel').show();
					if (rslt.ErrorMessage && rslt.ErrorMessage.length > 0)
						alert(rslt.ErrorMessage);
					else
						alert("Sorry, we couldn't register an account with that e-mail. Please try a different e-mail address or use the \"Forgot Login\" function.");
				}
			}
			else {
				$('#btn_do_register').show();
				$('#btn_do_register_cancel').show();
				alert(req.responseText);
			}
		}
	}
	
	if (sendObj && req)
	{
		req.open(HTTP_VERB, ( srvr + ROOT + WEBSERVICE + "Register"), true);
		req.setRequestHeader(CONTENT_TYPE, APP_JSON);
		req.setRequestHeader( ORGANIZATION_CODE_KEY, ORGANIZATION_CODE );
		req.onreadystatechange = this.handler;
		req.send(JSON.serialize(sendObj));
		document.body.style.cursor = "wait";
		$('#btn_do_register').hide();
		$('#btn_do_register_cancel').hide();
		$('#img_register_wait').show();
		
	}

}

function do_forgotlogin()
{
	var emailaddr = $g("tbx_forgotlogin_email").value.trim();
	if (emailaddr.length == 0)
	{
		alert("Please enter an e-mail address!");
		$g("tbx_forgotlogin_email").focus();
		return;
	}
	if (!  email_validation(emailaddr))
	{
		alert("Please enter a valid e-mail address format.");
		$g("tbx_forgotlogin_email").focus();
		return;
	}
	
	var req = getreq();
	this.handler = function()
	{
		if (req.readyState == 4 )
		{
			$g("btn_do_forgotlogin").disabled = false;
			document.body.style.cursor = "default";
			// $('#btn_do_login').show();
			// $('#img_login_wait').hide();
			if(req.status == 200)
			{
				var ajaxresult = JSON.parse(req.responseText);
				try
				{
					ajaxresult = ajaxresult.d;
				}
				catch(Error) { /* ignore */ }
				$('#tbl_forgotlogin').hide();
				if	(ajaxresult.Success)
					$('#p_forgotlogin').html("Please check your e-mail for the message and try to login. <span class='action' onclick='hide_forgot();'>Close</span>");
				else
					$('#p_forgotlogin').html("Your e-mail address is not yet registered. <span class='action' onclick='show_register(\"cart_forgot_panel\");'>Click here to create a new account.</span>");
			}
			else
				alert(req.responseText);
		}	
	}
	if (req)
	{
		req.open(HTTP_VERB, ( srvr + ROOT + WEBSERVICE + "ForgotLogin"), true);
		req.setRequestHeader(CONTENT_TYPE, APP_JSON);
		req.setRequestHeader( ORGANIZATION_CODE_KEY, ORGANIZATION_CODE );
		req.onreadystatechange = this.handler;
		req.send("{ email:'" + emailaddr + "'}" );
		$g("btn_do_forgotlogin").disabled = true;
		document.body.style.cursor = "wait";
	}
}

function do_customer_info_submit() {

    var LangCookie = readCookie("lang");
    if (LangCookie == null)
        LangCookie = "";

    var missing_text = "Missing: ";
    var required_text = "Required items:";
    var email_text = "Email";
    var fname_text = "First name";
    var lname_text = "Last name";
    var street_text = "Street";
    var city_text = "City";
    var dayphone_text = "Phone";
    var zip_text = "Postal code";

    if (LangCookie == "ES") {
        missing_text = "Falta: ";
        required_text = "Art" + '\u00ED' + "culo Requerido:";
        email_text = "Email";
        fname_text = "Nombre";
        lname_text = "Apellido";
        street_text = "Direcci" + '\u00F3' + "n";
        city_text = "Ciudad";
        dayphone_text = "Tel" + '\u00E9' + "fono";
        zip_text = "Estado, C" + '\u00F3' + "digo Postal";
    }
      
	var req = getreq();
	this.formvalidate = function () {
	    var infoarr = [];
	    var x = 0;
	    var count = 0;
	    var errmsg = "";
	    var tbl_userinfo = $g("tbl_userinfo");
	    if (tbl_userinfo) {
	        infoarr = getObjectChildrenInput(tbl_userinfo);
	        for (var i = 0; i < infoarr.length; i++) {
	            if (infoarr[i].V == null || infoarr[i].V == "") {
	                if (infoarr[i].K == "Email")
	                    errmsg += ("\r\n" + missing_text + email_text); //errmsg += ("\r\n" + missing_text + infoarr[i].K);

	                if (infoarr[i].K == "NameFirst")
	                    errmsg += ("\r\n" + missing_text + fname_text);

	                if (infoarr[i].K == "NameLast")
	                    errmsg += ("\r\n" + missing_text + lname_text);

	                if (infoarr[i].K == "Street1")
	                    errmsg += ("\r\n" + missing_text + street_text);

	                if (infoarr[i].K == "City")
	                    errmsg += ("\r\n" + missing_text + city_text);

	                if (infoarr[i].K == "PhoneDay")
	                    errmsg += ("\r\n" + missing_text + dayphone_text);

	                if (infoarr[i].K == "PostalCode")
	                    errmsg += ("\r\n" + missing_text + zip_text);
	            }
	        }

	        if (errmsg != "")
	            alert(required_text + errmsg);
	        else
	            return { "userinfo": infoarr };
	    }
	}
	
	this.handler = function()
	{
		if (req.readyState == 4 )
		{
			document.body.style.cursor = "default";
			$("#btn_customer_info_submit").show();
			$("#img_customer_info_wait").hide();
			if (req.status == 200)
			{
				var rslt = JSON.parse(req.responseText);
				try
				{
					rslt = rslt.d;
				}
				catch(Error) { /* ignore */ }
				if (rslt.Success)
				{
					getDisplayFromFormData();
					hide_userinfo();
                    progress_account_info = true;
                                        					
					if (inCheckout)
						try_checkout();
				}
				else
					alert(rslt.ErrorMessage);
			}
			else
				alert(req.responseText);	
		}
	
	}
	var sendObj = this.formvalidate();
	
	if ( sendObj && req )
	{
		$g("btn_customer_info_submit").disabled = true;
		req.open(HTTP_VERB, ( srvr + ROOT + WEBSERVICE + "SubmitUserInfo"), true);
		req.setRequestHeader(CONTENT_TYPE, APP_JSON);
		req.setRequestHeader( ORGANIZATION_CODE_KEY, ORGANIZATION_CODE );
		req.onreadystatechange = this.handler;
		req.send( JSON.serialize(sendObj) );
		$("#btn_customer_info_submit").hide();
		$("#img_customer_info_wait").show();
		document.body.style.cursor = "wait";
	}
}

// ------------------------------------- CONTRIBUTION HANDLING --------------------------------------------


var contribution_panel_visible = false;
function toggle_contribution()
{
	if (contribution_panel_visible)
	{
		$('#contribution_panel_holder').fadeOut();
		contribution_panel_visible = false;
	}
	else
	{
		var xy = getwindowsize();
		
		var contribution_panel_holder = $g("contribution_panel_holder");
		if (contribution_panel_holder)
		{
			contribution_panel_holder.style.left = "" + Math.floor((xy.x - 350) / 2) + "px";
			contribution_panel_holder.style.top = "" + Math.floor((xy.y - 200)/2) + "px";
			$(contribution_panel_holder).fadeIn('normal', function() { addShadow("contribution_panel"); });
		}
		contribution_panel_visible= true;
	}
}

function handleContribution()
{
	var req = getreq();

	this.handler = function()
	{
		if (req.readyState == 4 )
		{
			document.body.style.cursor = "default";
			if(req.status == 200)
			{
				cartresp = JSON.parse(req.responseText);
				try
				{
					cartresp = cartresp.d;
				}
				catch(Error) { /* ignore */ }
				if (cartresp.Success && cartresp.FormattedHTML != null && cartresp.FormattedHTML.length > 0)
				{
					$(DIVID_CURRENTITEMSINCART).html(cartresp.FormattedHTML);
				}
				else if (cartresp.Success && cartresp.LineCount == 0 && cartresp.Total == 0)
				{
					$(DIVID_CURRENTITEMSINCART).html(cartEmptyMessage);
					$('#btn_continue').hide();
				}
				//else
				//	$(DIVID_CURRENTITEMSINCART).html(''); 
			}
			toggle_contribution();
			$('#btn_submit_contribution').show();
			$('#img_submit_contribution_wait').hide();
		}
	}
	if (req)
	{
		var val = $g("tbx_contribution_amount").value;
		val = val.replace(/[^0-9\.]/g, "");
		new_contribution_amount = parseFloat(val);
		var method = "AddContribution";
		if ( orig_contribution_amount > 0 )
			method = "ChangeContribution";
		if ( method == "AddContribution" ||  orig_contribution_amount != new_contribution_amount )
		{
			req.open(HTTP_VERB, ( srvr + ROOT + WEBSERVICE + method), true);
			req.setRequestHeader(CONTENT_TYPE, APP_JSON);
			req.setRequestHeader( ORGANIZATION_CODE_KEY, ORGANIZATION_CODE );
			req.onreadystatechange = this.handler;
			// alert(JSON.serialize(sendObj));
			req.send( "{ amount: " + new_contribution_amount + "}" );
			document.body.style.cursor = "wait";
			$('#btn_submit_contribution').hide();
			$('#img_submit_contribution_wait').show();
		}
		else
			toggle_contribution();
		if (method == "AddContribution")
			SetContributionHasBeenSolicited();
	}
	
}

// ------------------------------------- CHECKOUT --------------------------------------------

function updateButtonText()
{
	var btnstatus = false;
	try
	{
		btnstatus= progress_account_info && progress_shipping_set && progress_payment_info;
	}
	catch(err) { }

	if ( btnstatus )
	{
		try
		{
			$g("btn_continue").value = "Click here to Process Order";
			$g("msg_must_click_button").style.display = "block";
		}
		catch(err) { }
	}
	else
	{
		try
		{
			$g("btn_continue").value = "Continue \u00bb";
			$g("msg_must_click_button").style.display = "none";
		}
		catch(err) { }
	}
}

var inCheckout = false;

function try_checkout()
{
	if (cart_empty)
	{
		$('#btn_proceed').hide();
	}
	inCheckout = true;
	
    if (! progress_account_info)
    {
    	$('#cart_account').show();
    	show_login();
	    updateButtonText();
    }	
    else if (typeof progress_shipping_set != "undefined" && ! progress_shipping_set)
    {
    	$('#cart_shipping').show();
		show_shipping();
		updateButtonText();
	}
	else if (! progress_payment_info ) {

		if (typeof amt_to_charge != "undefined" && amt_to_charge == 0) {
			progress_payment_info = true;
		}
		else {
			$('#cart_payment').show();
			show_payment();
			updateButtonText();
		}
		
	}
	else if (progress_account_info && ( typeof progress_shipping_set == "undefined" || progress_shipping_set ) && progress_payment_info)
	{
		do_checkout();
	}
}

function do_checkout()
{
	var req = getreq()
	this.handler = function()
	{
		if (req.readyState == 4)
		{
			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)
				{
					window.location.href = ROOT + "/Cart/receipt.aspx";

					//					$('#span_edit_acct_info').hide();
					//					$('#span_edit_shipping_info').hide();
					//					$('#span_edit_payment_info').hide();
					//					
					//					$g('checkout_processing_message').style.display = "none";
					//					try
					//					{
					//						$('#checkout_completed_message').html(successfulCheckoutMessageHTML);
					//					}
					//					catch(err)
					//					{
					//						$('#checkout_completed_message').html("Your order was successfully processed.");
					//					}
				}
				else
				{
					$g('checkout_processing_message').style.display = "none";
					$('#checkout_completed_message').html(rslt.Message + hide_checkout_progress_link);
				}
			}
			else
			{
				var emsg = "Sorry, the checkout may have timed out, but your order may ";
				emsg += "have gone through. Please try submitting your order again: if you get ";
				emsg += "an error message back rather quickly, that's a strong indication that ";
				emsg += "the order was processed. We regret the ambiguity of this message. ";
				emsg += "Please check your e-mail for an order confirmation to avoid placing ";
				emsg += "a duplicate order.";
				alert(emsg);				
			}
		}
	};

	if (req)
	{
		$g('checkout_processing_message').style.display = "block";
		fadeInCheckoutProgress();
		$('#btn_proceed').hide();
		document.body.style.cursor = "default";

		req.open(HTTP_VERB, ( srvr + ROOT + WEBSERVICE + "Checkout"), true);
		req.setRequestHeader(CONTENT_TYPE, APP_JSON);
		req.setRequestHeader( ORGANIZATION_CODE_KEY, ORGANIZATION_CODE );
		req.onreadystatechange = this.handler;
		req.send("{ AmountToCharge: 0, AllowUnderpayment: false }" );
		document.body.style.cursor = "wait";	
	}
}

function fadeInCheckoutProgress()
{
	var checkout_progress_holder = $g("checkout_progress_holder");
	var xy = getxy('content_placeholder');
	checkout_progress_holder.style.left = "" + ( xy.x + 475 - (250/2) ) + "px";
	checkout_progress_holder.style.top = "210px";
	$(checkout_progress_holder).fadeIn('fast', function() { show_veil(); });
}

function fadeOutCheckoutProgress()
{
	$('#checkout_progress_holder').fadeOut(function() { $('#btn_proceed').show(); });
}

// ------------------------------------- SHIPPING HANDLING --------------------------------------------

function show_shipping()
{
	getShippingOptions();
}

function hide_shipping()
{
	$('#cart_shipping_panel').slideUp('normal');
}

var cart_shipping_label_loc = null;

function checkForSingleShippingMethod() {
	var cart_shipping_panel = $g("cart_shipping_panel");
	var shippingInputs = document.getElementsByTagName("input");
	var shippingMethods = [];
	for (var x = 0; x < shippingInputs.length; x++) {
		if (shippingInputs[x].id.substr(0, 15) == "shipping_method")
			shippingMethods.push(shippingInputs[x]);
	}
	if (shippingMethods.length == 1) {
		$(shippingMethods[0]).click();
	}
}


function fadeInShipping()
{
	var cart_shipping_panel = $g("cart_shipping_panel");
	if (cart_shipping_label_loc == null)
	{
		cart_shipping_label_loc = getxy("cart_shipping_label");
	}
	cart_shipping_panel.style.left = "" + ( cart_shipping_label_loc.x + horizadjust ) + "px";
	cart_shipping_panel.style.top = "" + ( cart_shipping_label_loc.y + 19 ) + "px";
	// alert("div_shipping_content (x,y): (" + xy.x + ", " + xy.y + ")");
	$(cart_shipping_panel).slideDown('normal', function() { checkForSingleShippingMethod(); });
	try
	{
		$g("btn_set_shipping").disabled = false;
	}
	catch(err) { }
}


function getShippingOptions()
{
	if (got_shipping_info)
	{
		fadeInShipping();
		return;
	}
	var req = getreq();
	
	this.handler = function()
	{
		if (req.readyState == 4 )
		{
			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)
				{
					$('#cart_shipping_panel').html(rslt.FormattedHTML);
					shipping_addresses = rslt.Addresses;	
					shipping_methods = rslt.Methods;
					got_shipping_info = true;
					fadeInShipping();
				}
				else
					alert(req.responseText);
			}
			else
				alert(req.responseText);	
		}
	}

	req.open(HTTP_VERB, ( srvr + ROOT + WEBSERVICE + "GetShippingMethodsAndAddresses"), true);
	req.setRequestHeader(CONTENT_TYPE, APP_JSON);
	req.setRequestHeader( ORGANIZATION_CODE_KEY, ORGANIZATION_CODE );
	req.onreadystatechange = this.handler;
	req.send("{ formatterTypeName: 'FloridaGrand.Lib.Common.FGOAddressAndShippingFormatter', styles: null }" );
	document.body.style.cursor = "wait";	
}

function select_shipping_address(iAddressNo) {
	if (selected_shipping_address != 0 && iAddressNo == 0 )
	{
		$('#new_address_holder').slideDown();
	}
	if (selected_shipping_address == 0 && iAddressNo > 0 )
	{
		$('#new_address_holder').slideUp();		
	}
	selected_shipping_address = iAddressNo;
}

function set_shipping_address_default() {
	if ( selected_shipping_address < 1 ) {
		var shipping_addresss_holder = $g('shipping_addresss_holder');
		var shipping_addresss_holder_radio = shipping_addresss_holder.getElementsByTagName("input");
		for ( var x=0; x < shipping_addresss_holder_radio.length; x++ ) {
			if (shipping_addresss_holder_radio[x].checked) {
				select_shipping_address = shipping_addresss_holder_radio[x].value;
				return;
			}
		}
		// if we get here, then nothing is yet selected;
		selected_shipping_address = shipping_addresss_holder_radio[0].value;
		shipping_addresss_holder_radio[0].checked = true;		
	}
}

function select_shipping_method(iMethodNo, sDescription) {
	if (sDescription == "Mail" && selected_shipping_method < 1 )
	    $('#shipping_addresss_holder').slideDown("normal", set_shipping_address_default);
    // CKP 10/25/2011 added to support multi-lingual, but left the above in case they every use just mail again.
	if (sDescription.indexOf("Mail") != -1)
	    $('#shipping_addresss_holder').slideDown("normal", set_shipping_address_default);
	if (iMethodNo < 0 && selected_shipping_method > 0)
		$('#shipping_addresss_holder').slideUp();
	selected_shipping_method = iMethodNo;
	if (select_shipping_method == -1) {
		var shipping_addresss_holder = $g('shipping_addresss_holder');
		var shipping_addresss_holder_radio = shipping_addresss_holder.getElementsByTagName("input");
		selected_shipping_address = shipping_addresss_holder_radio[0].value;
	}
}

function do_set_shipping()
{
	var req = getreq();

	this.validate = function () {
	    var errmsg = "";
	    var retval = {};

	    // CKP 10/10/2011 Added this code for multi-language translation but we do not have the text yet.
	    var LangCookie = readCookie("lang");
	    if (LangCookie == null)
	        LangCookie = "";

	    if (selected_shipping_method == 0) {
	        if (LangCookie == "ES")
	            errmsg += "- Please select a shipping method.\r\n";
	        else
	            errmsg += "- Please select a shipping method.\r\n";
	    }
	    retval.method = selected_shipping_method;
	    retval.address_no = (retval.method < 0) ? shipping_addresses[0].AddressNo : selected_shipping_address;

	    if (retval.address_no == -1)
	        errmsg += "- Select an address";
	    else if (retval.address_no == 0) {
	        retval.newaddress_street = $g("newaddress_street").value.trim();
	        if (retval.newaddress_street.length == 0)
	            errmsg += "- Please enter the new address Street\r\n";

	        retval.newaddress_city = $g("newaddress_city").value.trim();
	        if (retval.newaddress_city.length == 0)
	            errmsg += "- Please enter the new address City\r\n";

	        retval.newaddress_state = $g("newaddress_state").value.trim();
	        if (retval.newaddress_state.length == 0)
	            errmsg += "- Please enter the new address State\r\n";

	        retval.newaddress_postalcode = $g("newaddress_postalcode").value.trim();
	        if (retval.newaddress_postalcode.length == 0)
	            errmsg += "- Please enter the new address ZIP/Postal Code\r\n";
	    }
	    else {
	        retval.newaddress_street = null;
	        retval.newaddress_city = null;
	        retval.newaddress_state = null;
	        retval.newaddress_postalcode = null;
	    }
	    if (errmsg.length > 0) {
	        alert(errmsg);
	        return;
	    }
	    return retval;
	}
	this.handler = function() {

	    // CKP 10/10/2011 Added this code for multi-language translation but we do not have the text yet.
	    var LangCookie = readCookie("lang");
	    if (LangCookie == null)
	        LangCookie = "";

		if (req.readyState == 4 )
		{
			$('#img_set_shipping_wait').hide();
			$('#btn_set_shipping').show();

			document.body.style.cursor = "default";
			if(req.status == 200)
			{
				//alert(req.responseText);
				var rslt = JSON.parse(req.responseText);
				try
				{
					rslt = rslt.d;
				}
				catch(Error) { /* ignore */ }
				// build display information
				if (rslt.Success)
				{				    
					$('#div_shipping_content').html(editShippingLink + rslt.Message);
					progress_shipping_set = true;
					if (inCheckout && ! progress_payment_info )
						try_checkout();
					show_cart_items(formatterTypeName, styles);
				}
				else {
					if ( rslt.ErrorMessage && rslt.ErrorMessage.length > 0 )
						$('#div_shipping_content').html(rslt.ErrorMessage);
					else
						alert("An error has occurred while setting your shipping selection.");		
				}
			}
			else
				alert(req.responseText);

			$("#cart_shipping_panel").slideUp();
		}
	}
	
	var sendObj = this.validate();

	if (sendObj && req)
	{
		req.open(HTTP_VERB, ( srvr + ROOT + WEBSERVICE + "SetShipping"), true);
		req.setRequestHeader(CONTENT_TYPE, APP_JSON);
		req.setRequestHeader( ORGANIZATION_CODE_KEY, ORGANIZATION_CODE );
		req.onreadystatechange = this.handler;
		req.send(JSON.serialize(sendObj) );
		document.body.style.cursor = "wait";
		$('#img_set_shipping_wait').show();
		$('#btn_set_shipping').hide();
	}
}

// ------------------------------------------- PAYMENT ---------------------------------------------------

function show_payment()
{
	fadeInPayment();
    $("#btn_send_payment_info").get(0).disabled = false;
	
}

function hide_payment()
{
	$('#cart_payment_panel').slideUp();
}

function hide_account_info()
{
    $('#cart_userinfo_panel').slideUp();
}

var cart_payment_label_loc = null;

function fadeInPayment()
{
	var cart_payment_panel = $g("cart_payment_panel");
	if (cart_payment_label_loc == null)
		cart_payment_label_loc = getxy("cart_panel");
	cart_payment_panel.style.left = "" + ( cart_payment_label_loc.x + horizadjust ) + "px";
	cart_payment_panel.style.top = "" + ( cart_payment_label_loc.y + 19 ) + "px";
	$(cart_payment_panel).slideDown('normal', function() { cart_payment_panel.style.height = "300px"; });
}

function do_send_payment()
{
	var req = getreq();
	this.handler = function() {
		if (req.readyState == 4) {
			$('#img_send_payment_wait').hide();
			$('#btn_send_payment_info').show();
			document.body.style.cursor = "default";
			if (req.status == 200) {
				var rslt = JSON.parse(req.responseText);
				try {
					rslt = rslt.d;
				}
				catch (Error) { /* ignore */ }
				$('#div_payment_content').html(editPaymentLink + rslt.Message);
				hide_payment();
				if (rslt.Success) {
					progress_payment_info = true;
					updateButtonText();
				}
				else {
					if (rslt.ErrorMessage && rslt.ErrorMessage.length > 0)
						alert(rslt.ErrorMessage);
					else
						alert("An error has occurred while setting the payment. (Perhaps your cart has expired?)");
				}
			}
			else
				alert(req.responseText);
		}
	}
	this.verification = function () { //string cc_num, int payment_method, int exp_month, int exp_year, string cc_cvv, string cc_name
	    var errmsg = "";
	    var retval = {};
	    var o = $g("tbx_cc_num");
	    if (o.value.trim() == "")
	        if (readCookie("lang")) //'\u0021'
	            errmsg = "\r\n" + '\u0021' + "Por favor introduzca una tarjeta de cr" + '\u00E9' + "dito!";
	        else
	            errmsg = "Please enter a credit card!";
	    else
	        retval.cc_num = o.value.trim();

	    o = $g("tbx_cc_name");
	    if (o.value.trim() == "")
	        if (readCookie("lang"))
	            errmsg += "\r\n" + '\u0021' + "Por favor introduzca el nombre en la tarjeta de cr" + '\u00E9' + "dito!";
	        else
	            errmsg += "\r\nPlease enter the name on the card";

	    else
	        retval.cc_name = o.value.trim();

	    if (payment_method == 0)
	        if (readCookie("lang"))
	            errmsg += "\r\nfavor elija el tipo de tarjeta de cr" + '\u00E9' + "dito";
	        else
	            errmsg += "\r\nPlease select a card type";
	    else
	        retval.payment_method = payment_method;

	    o = $g("tbx_cvv");
	    if (o.value.trim() == "")
	        if (readCookie("lang"))
	            errmsg += "\r\nPor favor introduzca el c" + '\u00F3' + "digo de verificaci"+ '\u00F3'+ "n, lo cual se encuentra en la parte posterior de la tarjeta.";
	        else
	            errmsg += "\r\nPlease enter the verification code, usually on the card back.";
	    else
	        retval.cc_cvv = o.value.trim();

	    retval.exp_month = exp_month;
	    retval.exp_year = exp_year;

	    if (errmsg.length > 0)
	        alert(errmsg);
	    else
	        return retval;
	}
	var sendObj = this.verification();
	
	if(req && sendObj)
	{
		req.open(HTTP_VERB, ( srvr + ROOT + WEBSERVICE + "SetPayment"), true);
		req.setRequestHeader(CONTENT_TYPE, APP_JSON);
		req.setRequestHeader( ORGANIZATION_CODE_KEY, ORGANIZATION_CODE );
		req.onreadystatechange = this.handler;
		req.send(JSON.serialize(sendObj) );
		document.body.style.cursor = "wait";
		$('#img_send_payment_wait').show();
		$('#btn_send_payment_info').hide();
	}
}


// ----------------------- upgrade login -------------------------------


var pnl_upgrade_login_visible = false;

function toggle_upgrade_login()
{
	if (pnl_upgrade_login_visible)
	{
		$('#update_temporary_login_panel').slideUp();
		$('#ddl_order_source3_th').hide();
		$('#ddl_order_source3_td').hide();
		show_userinfo($g("cart_login_panel"));
		pnl_upgrade_login_visible = false;
	}
	else
	{
		div_account_content = $g("div_account_content");
		acxy = getxy(div_account_content);
		var update_temporary_login_panel = $g("update_temporary_login_panel");
		update_temporary_login_panel.style.left = "" + (acxy.x + horizadjust)+ "px";
		update_temporary_login_panel.style.top = "" + acxy.y + "px";
		$('#update_temporary_login_panel').slideDown();	
		pnl_upgrade_login_visible = true;
	}
}

var upgrade_login_email_ok = false;
var upgrade_login_login_ok = false;
var upgrade_login_password_ok = false;
var upgrade_login_match_ok = false;

function validate_upgrade_login(oTbxItem)
{
	upgrade_login_email_ok = email_validation($g("tbx_upgrade_login_email").value);
	upgrade_login_login_ok = ( $g("tbx_updgrade_login_login").value.length > 0 );
	var value = $g("tbx_upgrade_login_password1").value;
	upgrade_login_password_ok = ( value.length > 0 );
	upgrade_login_match_ok = ( value == $g("tbx_upgrade_login_password2").value );
	if (! upgrade_login_match_ok )
		$('#span_upgrade_login_password_match').show();
	else
		$('#span_upgrade_login_password_match').hide();
	
	var btn = $g("btn_upgrade_login_submit");
	if (btn)
	{
		btn.disabled = ! ( upgrade_login_email_ok &&  upgrade_login_login_ok && upgrade_login_password_ok && upgrade_login_match_ok );
	}
	
}

function do_upgradelogin(oCaller)
{
	var req = getreq();

	var sendObj = {};
	sendObj.login = $g("tbx_updgrade_login_login").value.trim();
	sendObj.password = $g("tbx_upgrade_login_password1").value.trim();
	sendObj.email = $g("tbx_upgrade_login_email").value.trim();


	this.handler = function() {
		if (req.readyState == 4) {
			document.body.style.cursor = "default";
			$('#img_upgrade_login_submit').hide();
			$('#btn_upgrade_login_submit').show();

			if (req.status == 200) {
				var rslt = JSON.parse(req.responseText);
				try {
					rslt = rslt.d;
				}
				catch (Error) { /* ignore */ }
				if (rslt.Success) {
					toggle_upgrade_login();
				}
				else {
					$('#p_required_upgrade_login').html(rslt.ErrorMessage);
					$('#btn_upgrade_login_submit').attr("disabled", "false");
				}
			}
			else
				alert(req.responseText);
		}
	}
	
	if (req)
	{
		req.open(HTTP_VERB, ( srvr + ROOT + WEBSERVICE + "UpdateLogin"), true);
		req.setRequestHeader(CONTENT_TYPE, APP_JSON);
		req.setRequestHeader( ORGANIZATION_CODE_KEY, ORGANIZATION_CODE );
		req.onreadystatechange = this.handler;
		req.send(JSON.serialize(sendObj) );
		document.body.style.cursor = "wait";
		$('#img_upgrade_login_submit').show();
		$('#btn_upgrade_login_submit').hide();
	}
}

function EvaluateForeignCountryComplete(oCountry) {
	var ddl_statelist = $g('ddl_statelist');
	var y = {};
	while ( ddl_statelist.options.length > 0 )
		ddl_statelist.remove(0);
	if (oCountry.use_state_field) {

		for (var x = 0; x < oCountry.StatesProvinces.length; x++) {
			if ( typeof user_account_information != "undefined" && user_account_information.State && user_account_information.State.length > 0 && user_account_information.State == oCountry.StatesProvinces[x].id )
				y = new Option(oCountry.StatesProvinces[x].description, oCountry.StatesProvinces[x].id, true, true); // new Option([text[, value[, defaultSelected[, selected]]]])
			else
				y = new Option(oCountry.StatesProvinces[x].description, oCountry.StatesProvinces[x].id); // new Option([text[, value[, defaultSelected[, selected]]]])
			
			try {
				ddl_statelist.add(y,null);
			}
			catch (e) { 
				ddl_statelist.add(y);			
			}
		}
		$g("ddl_statelist").disabled = false;        		
	}
	else {
		y = new Option("Not applicable", "");
		try {
			ddl_statelist.add(y,null);
		}
		catch (e) { 
			ddl_statelist.add(y);			
		}
		$g("ddl_statelist").disabled = true;
	}
}

function EvaluateForeignCountry( o )
{
    var country = o.options[o.selectedIndex].value;

    GetStatesProvinceMenuForCountry(country, EvaluateForeignCountryComplete)    
}

function SetContributionHasBeenSolicited()
{
	var req = getreq();
	if (req)
	{
		req.open(HTTP_VERB, (srvr + ROOT + WEBSERVICE + "SetContributionHasBeenSolicited"), true);
		req.setRequestHeader(CONTENT_TYPE, APP_JSON);
		req.setRequestHeader(ORGANIZATION_CODE_KEY, ORGANIZATION_CODE);
		req.send("");
	}
}

var order_comments_panel_visible = false;

function toggle_order_comments(caller, iPkgLineItemNo, sMsg ) {
    var panel_holder_width = 0;
    var panel_holder_height = 0;
    var panel_holder_mousepos;
    var panel_holder_zoomrect;
    var loc = getxy(caller);
    var order_comments_panel_holder = $g("order_comments_panel_holder");

    if (order_comments_panel_visible) {
    	animate.close("order_comments_panel_holder", function() { $("#order_comments_panel_holder").hide(); order_comments_panel_visible = false; }, null, panel_holder_mousepos, panel_holder_zoomrect);
    	if (current_renewal_change_lineitemno > 0) {
    		InsertCommentIntoCartDisplay(current_renewal_change_lineitemno);
    	}
    }  else {
    	if (order_comments_panel_holder) {
    		if (iPkgLineItemNo) {
    			var msg = "";
    			if (SUBS_RENEWAL_CART_CHANGE_MESSAGE && SUBS_RENEWAL_CART_CHANGE_MESSAGE.length > 0)
    				msg = SUBS_RENEWAL_CART_CHANGE_MESSAGE;
    			$('#renewal_change_message').html(msg);
    			$('#renewal_change_message2').show();
    			$g('tbx_order_comments').value = (line_notes["L" + iPkgLineItemNo]) ? (line_notes["L" + iPkgLineItemNo]) : (sMsg && sMsg.length > 0) ? Base64.decode(sMsg) : "";
    		}
    		else {
    			$('#renewal_change_message').text("Please enter your message below.");
    			$g('tbx_order_comments').value = (order_notes && order_notes.length > 0) ? Base64.decode(order_notes) : "";
    			current_renewal_change_lineitemno = 0;
    		}
    		var ww = getwindowsize();

    		$("#order_comments_panel_holder").css("left", "" + ((ww.x / 2) - 200) + "px");
    		$("#order_comments_panel_holder").css("top", "" + ((ww.y / 2) - 100) + "px");

    		panel_holder_zoomrect = { left: ((ww.x / 2) - 200), top: ((ww.y / 2) - 100), width: panel_holder_width, height: panel_holder_height };
    		panel_holder_mousepos = { x: loc.x, y: loc.y };
    		animate.open("order_comments_panel_holder", function() { $("#order_comments_panel_holder").show(); addShadow("order_comments_panel"); order_comments_panel_visible = true; }, null, panel_holder_mousepos, panel_holder_zoomrect);
    	}
    }
}

//

function handleOrderComments(remove) {

	handler = function() {
		if (req.readyState == 4) {
			$('#btn_submit_msg').show();
			$('#submit_msg_wait').hide();
			positionShadow("order_comments_panel");
			document.body.style.cursor = "default";
			if (req.status == 200) {
				rslt = JSON.parse(req.responseText);
				try {
					rslt = rslt.d;
				}
				catch (err) { }
				if (rslt.Success) {
					if (order_comments_panel_visible) {
						$('#order_comments_panel_holder').hide();
						order_comments_panel_visible = false;
						if ( ! remove)
							InsertCommentIntoCartDisplay(current_renewal_change_lineitemno);
					}
				}
			}
		}
	}

	form_validate = function() {
		// SimpleResponse AddLineitemSpecialRequest( int li_seq_no, string special_request, char line_type); 
		var errmsg = "";
		var retval = { li_seq_no: 0, special_request: "", line_type: "O" };

		var msg = $g("tbx_order_comments").value;
		if (!remove)
			retval.special_request = msg;
		retval.li_seq_no = current_renewal_change_lineitemno;
		retval.line_type = current_renewal_change_lineitemno == 0 ? "O" : "L";
		if (current_renewal_change_lineitemno > 0) {
			line_notes["L" + current_renewal_change_lineitemno] = msg;
			$('#PLI' + current_renewal_change_lineitemno + "notes").text = msg;
		}
		else
			order_notes = Base64.encode(msg);

		return retval;
	}
    
    var sendObj = form_validate();
    var req = getreq();
    req.open(HTTP_VERB, (srvr + ROOT + WEBSERVICE + "AddLineitemSpecialRequest"), true);
    req.setRequestHeader(CONTENT_TYPE, APP_JSON);
    req.onreadystatechange = this.handler;
    req.send(JSON.serialize(sendObj));
    $('#btn_submit_msg').hide();
    $('#submit_msg_wait').show();
    positionShadow("order_comments_panel");
   }

   var current_renewal_change_lineitemno = 0;
   var renewal_change_rect;


   function ChangeRenewalItem(iPkgLineItemNo, oCaller, sMsg ) {
   	current_renewal_change_lineitemno = iPkgLineItemNo;
   	toggle_order_comments( oCaller, iPkgLineItemNo, sMsg);
   	/*
   	var renewal_change = new DW.createFloat("renewal_change", 300, 200);
   	if (renewal_change) {
   	var oCallerXY = getxy(oCaller);
   	renewal_change.setXY(oCallerXY.x - 305, oCallerXY.y + 15);
   	renewal_change.openFrom(oCallerXY.x, oCallerXY.y);
   	renewal_change.Title = "Changing your renewal order...";
   	renewal_change.Add();
   	if ( SUBS_RENEWAL_CART_CHANGE_MESSAGE.length > 0 )
   	$('#renewal_change_form').html(SUBS_RENEWAL_CART_CHANGE_MESSAGE);
   	renewal_change_rect = { left: oCallerXY.x - 305, top: oCallerXY.y + 15, width: 300, height: 200 };
   	animate.open($g("renewal_change_holder"), function() { renewal_change.Show(); }, null, oCallerXY, renewal_change_rect);
   	}
   	*/
   }

   function ChangeRenewalItemContinue() {

   	var req = getreq();
   	this.handler = function() {
   		if (req.readyState == 4) {
   			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) {
   					location.href = "/subscriptions/index.aspx";
   				}
   				else {
   					alert(rslt.ErrorMessage);
   				}
   			}
   			else {
   				alert(req.responseText);
   			}
   		}
   	}

   	this.validate = function() {
   		var retval = { LineItemSeqNo: current_renewal_change_lineitemno };

   		return retval; // if no problems, otherwise return null and display alert!
   	}

   	var sendObj = this.validate();

   	if (req && sendObj) {
   		$('#renewal_change_holder').hide();
   		req.open("POST", (srvr + WEBSERVICE + "SetSubscriptionLineItemToChange"), true);
   		req.setRequestHeader(CONTENT_TYPE, APP_JSON);
   		req.onreadystatechange = this.handler;
   		document.body.style.cursor = "wait";
   		req.send(JSON.serialize(sendObj));
   	}

   }

function SetContributionHasBeenSolicited() {
	var req = getreq();
	req.open("POST", (srvr + WEBSERVICE + "SetContributionHasBeenSolicited"), true);
	req.setRequestHeader(CONTENT_TYPE, APP_JSON);
	req.send("");
}

function InsertCommentIntoCartDisplay(iPkgLineNo) {
	var msg = $g("tbx_order_comments").value;
	if ($g("CMT" + iPkgLineNo)) {
		if (msg.length > 0)
			$("#PLI" + iPkgLineNo + "notes").text("Special Request: " + msg);
		else
			$('#CMT' + iPkgLineNo).remove();
	}
	else if ( msg.length > 0 )
		$("#PKG" + iPkgLineNo).after("<tr id='CMT" + iPkgLineNo + "'><td colspan='5' id='PLI" + iPkgLineNo + "notes'>Special Request: " + msg + "</td></tr>");
}


