﻿

function SelectAnswer(oSender)
{
	try
	{
		var oSubmit = document.getElementById("btnSaveQuestion");
		if (oSubmit != null)
		{
			oSubmit.disabled = false;
			oSubmit.src = "/assets/images/btn_save.png";
		}
	} catch (e) { throwException('SelectAnswer()', e.lineNumber, e, e.message); }
}

function SaveQuestion(oSender)
{
	try
	{
		var token = GetToken();
		if (ValidObj(token))
		{
			document.getElementById("progressIndicator").style.display = "block";
		
			oSender.disabled = true;
			oSender.src = "/assets/images/btn_save_disabled.png";
			oSender.style.cursor = "default";

			var path = "/includes/quizAjaxForm.aspx";
			var qs = { t: token, a: "save" };

			SendRequest
			(
				path
				, qs
				, function(result)
				{
					result = GetContent(result, "divInfoContainer", "DIV");
					document.getElementById("divInfoContainer").innerHTML = result;

					oSender.style.display = "none";
					document.getElementById("divInfo").style.display = "block";
					document.getElementById("btnNextQuestion").style.display = "";

					$('#pledgeConfirm').jqmAddTrigger(document.getElementById("spanPledgePoints").getElementsByTagName("A")[0]);

					UpdateTotalPoints(GetContent(result, "TotalPoints", "DIV"));

					$('.pledgeLinks').hover(ShowTooltip, HideTooltip);

					document.getElementById("progressIndicator").style.display = "none";
				}
			);
		}
	} catch (e) { throwException('SaveQuestion()', e.lineNumber, e, e.message); }

	return false;
}

function NextQuestion(oSender)
{
	try
	{
		var token = GetToken();
		if (ValidObj(token))
		{
			oSender.disabled = true;

			SendRequest
			(
				"/includes/quizAjaxForm.aspx"
				, { t: token, a: "next" }
				, function(result)
				{
					result = GetContent(result, "divQuestionContainer", "DIV");
					document.getElementById("divQuestionAjaxOutput").innerHTML = result;
				}
			);
		}
	} catch (e) { throwException('NextQuestion()', e.lineNumber, e, e.message); }

	return false;
}

function ConfirmPledge(oSender)
{
	try
	{	//do stuff
		var token = oSender.getAttribute("token");

		if (oSender.getAttribute("sweeps") == "1" && oSender.getAttribute("status") == "0")
		{	//Sweeps specific stuff. we want to trigger a traking hit once an entry has been made.
			//So, we need to find the iframe and change it's source.
			var div = document.getElementById("iframeContainer");
			var iframe;
			if(div)
			{
				iframe = document.getElementById(div.getAttribute("iframe"))
				if (iframe)
				{
					iframe.src = "http://altfarm.mediaplex.com/ad/bk/14790-97528-3840-0?sweepscomplete=1&mpuid=";
				}
			}
		}
		else if (oSender.getAttribute("sweeps") == "1" && oSender.getAttribute("status") == "1")
		{	//But, if the entry button is clicked but no entry is made (i.e. a share action), we do this instead.
			return false;
		}

		var path = "/includes/pledgeActionHandler.ashx";
		var qs = { t: token };
		
		SendRequest
		(
			path
			, qs
			, function(result)
			{
				UpdateTotalPoints(GetContent(result, "TotalPoints", "DIV"));
			}
		);

	} catch (e) { throwException('ConfirmPledge()', e.lineNumber, e, e.message); }

	return false;
}

function SharePledge(loc)
{
	try
	{	//do stuff
		var holder = document.getElementById("spanHolder");
		var token = holder.getAttribute("token");
		var type = holder.getAttribute("type");
		
		if (loc == 'twitter' || loc == 'facebook' || loc == 'email')
		{
			var valid = false;
			if (ValidObj(token) && ValidObj(type))
			{
				valid = true;
			}

			if(loc == 'email')
			{
				$(".vField").hide();

				var fn = Replace(document.getElementById("txtFirstNameInput").value, "[^\\w+?\\s]", "");
				if (!ValidObj(Trim(fn)))
				{
					valid = false;
					$("#vFirstName").show();
				}
				var ln = Replace(document.getElementById("txtLastNameInput").value, "^\w+?\s", "");
				ln = Trim(ln);
				var name = fn + (ValidObj(ln) ? " " + ln : "");

				if (!valid) {return false; }

				var em = document.getElementById("txtEmail").value;
				if (!ValidEmail(Trim(em)))
				{
					valid = false;
					$("#vEmail").show();
				}

				if (!valid) { return false; }

				SendEmail(name, em, type, token);
				return false;
			}
			else if (valid)
			{
				PassValues(token, type, loc);
			}
		}
	} catch (e) { throwException('SharePledge()', e.lineNumber, e, e.message); }

	return false;
}

function ShareFromFlash(SenderName, Values)
{
	var oObj = null;
	switch (SenderName.toLowerCase())
	{
		case "calculator":
			oObj = document.getElementById("calculatorPledge");
			oObj.setAttribute("token", "~" + Values);
			break;
	}
	
	if (oObj != null)
	{
		$("#calculatorPledge").click();
	}
}

function PassValues(value, type, loc)
{
	try
	{
		document.getElementById("ctl00_hValue").value = value;
		document.getElementById("ctl00_hType").value = type;
		document.getElementById("ctl00_hLocation").value = loc;

		var path = "/includes/pledgeActionHandler.ashx";
		var qs = { t: value, w: loc, o: type };

		SendRequest
		(
			path
			, qs
			, function(result)
			{
				UpdateTotalPoints(GetContent(result, "TotalPoints", "DIV"));
			}
		);

		if (loc != 'email')
		{
			$('#ctl00_btnSave').click();
		}
		$('#closeShare').click();

		return true;
	} catch (e) { throwException('PassValues()', e.lineNumber, e, e.message); }

	return false;
}

function SendEmail(name, email, type, token)
{
	var value = name + "|" + email + "|" + token;
	PassValues(value, type, 'email');
}

function UpdateTotalPoints(points)
{
	if(container = document.getElementById("visitorPoints"))
	{
		points = parseInt(points);
		if (!isNaN(points))
		{
			if (points > 0)
			{
				container.innerHTML = points;

				if(flyout = document.getElementById("visitorPointsFlyout"))
				{
					flyout.innerHTML = points;
				}
			}
		}
	}
}

function SaveCostOfWater(cost)
{
	SendRequest
	(
		"/includes/flashDataHandler.ashx"
		, { type: "costofwater", cow: cost }
	);
}


//-------------------------------------------------------------  AJAX  ----------------//

function SendRequest(sPath, oArgs, fCallback)
{
	try
	{
		$.get
		(
			sPath
			, oArgs
			, function(result) { fCallback(result); }
		);
	} catch (e) { throwException('SendRequest()', e.lineNumber, e, e.message); }
}


//-------------------------------------------------------------  UTILITY  ----------------//


function GetContent(result, id, tagname)
{
	var div = document.createElement("DIV");
	div.innerHTML = result;

	var elelist = div.getElementsByTagName(tagname.toUpperCase());
	var html = "";
	for (var i = 0; i < elelist.length; i++)
	{
		if (elelist[i].id == id)
		{
			html = elelist[i].innerHTML;
		}
	}

	return html;
}


function GetToken()
{
	var value = "";
	var input = document.getElementById("ulAnswers").getElementsByTagName("INPUT");
	for (var i = 0; i < input.length; i++)
	{
		if (input[i].checked)
		{
			value = input[i].parentNode.getAttribute("token");
			break;
		}
	}
	return value;
}

function ValidObj(arg)
{
	if (arg != "" && arg != null)
	{
		return true;
	}
	return false;
}

function ValidEmail(str)
{
	return /^([\w]+)(\.[\w]+)*@([\w\-]+)(\.[\w]{2,7})(\.[a-z]{2})?$/i.test(str);
}

function throwException(file_name, line_num, ex, msg)
{

	var msg = "Error in FILE: " + file_name + " LINE: " + line_num + "\n\nTYPE: " + ex + "\n\n" + msg + "\n\n" + ex.stack;

	if (document.getElementById('error_div'))
	{
		document.getElementById('error_div').innerHTML = "<pre class=\"error\">" + msg + "</pre>";
	} else
	{
		//alert(msg);
	}

}

function PathAndQuery(sPath, oQuery)
{
	var qs = "";
	for (var i in oQuery)
	{
		qs += "&" + i + "=" + oQuery[i];
	}
	return sPath + "?" + qs;
}
