// ***************************************************
// * jQuery.dbh.components: jquery.dbh.AjaxMail.js
// * version: 1.0
// * © 2011 Derek Hughes
// ***************************************************
(function($) 
{
	//-----------------------------------------------------
	// InitializeAjaxMail
	//-----------------------------------------------------
	$.fn.InitializeAjaxMail = function(callerSettings) 
	{
		if  (this[0] == undefined) return;

		var container;
		var settings;

		var settings = $.extend(
		{
			position: null,	top: null,		bottom: null, 	left: null, 	right: null,
			popWidth: 600,	popHeight: 500,
			border: 1,		borderColor: "#000000",			borderStyle: "solid",
//			title: "Send Email", subject: null, fields: null,
//			title: "Send Email", subject: null, fields: "First Name|65|125|200|1[+]Address|65|175|200|1[+]City|65|225|200|1",
			title: "Send Email", subject: null, fields: "Message|65|125|460|10",
			to: null,
			background_image: "url(/images/decor/frames/FrameSilver.jpg)"
		},callerSettings||{});

		container = "#" + this[0].id; 			
	
		// Setup the mouse click event handeler
		$(container).bind('click', function(event)
		{	
			EmailTagClicked(settings);
		});
	}
	
	$.fn.AjaxMail = function(callerSettings) 
	{
		var settings = $.extend(
		{
			position: null,	top: null,		bottom: null, 	left: null, 	right: null,
			popWidth: 600,	popHeight: 500,
			border: 1,		borderColor: "#000000",			borderStyle: "solid",
//			title: "Send Email", subject: null, fields: null,
			title: "Send Email", subject: null, fields: "Planet|100|125|200|1[+]Galaxy|100|175|400|1[+]Desc|100|225|400|5",
			to: null,
			background_image: "url(/images/decor/frames/FrameSilver.jpg)"
		},callerSettings||{});




		EmailTagClicked(settings);
	}


	//**********************************************************************************************************************
	//  ShadeScreenCreateMessageWindow 
	//**********************************************************************************************************************
	function ShadeScreenCreateEmailFormWindow(vis, settings) 
	{
		// Pass true to gray out screen, false to ungray
		var zindex = 10000;
		var opacity = .80;

		if ($("#mailScreenDarkLayer").length < 1)
		{
			// The dark layer doesn't exist. So we'll create it here and apply some basic styles.
			$("body").append($('<div id="mailScreenDarkLayer"></div>'));
			$("#mailScreenDarkLayer").css("position", "absolute").css("top", "0px").css("left", "0px");
			$("#mailScreenDarkLayer").css("overflow", "hidden").css("display", "none");
			$("#mailScreenDarkLayer").css("backgroundColor", "#000000");
			$("#mailScreenDarkLayer").css("zIndex", zindex).css("opacity", opacity );

			// Create the message div
			$("body").append($('<div id="mailScreen"></div>'));
			$("#mailScreen").css("position", "absolute").css("top", "50px").css("left", "100px").css("width", settings.popWidth+ "px").css("height", settings.popHeight+ "px");
			$("#mailScreen").css("overflow", "hidden").css("display", "none").css("border", "3px");
			$("#mailScreen").css("textAlign", "center").css("backgroundColor", "#FFFFFF");
			$("#mailScreen").css("fontSize", "20px").css("fontWeight", "bolder").css("color", "#800000");
			$("#mailScreen").css("zIndex", zindex + 1);
			$("#mailScreen").css("background-image", settings.background_image);
		}
	
		if (vis) 
		{

			// Calculate the page width and height 
			var pageHeight = $(document).height();
			var pageWidth = $(document).width();

			$("#mailScreenDarkLayer").css("display", "block");
			$("#mailScreenDarkLayer").css("width", pageWidth).css("height", pageHeight);

			// Calculate left position to center message div
			var centerLeft = (pageWidth - $("#mailScreen").width()) / 2;
			$("#mailScreen").css("left", centerLeft).css("display", "block");
		} 
		else 
		{
			$("#mailScreen").css("left", 0).css("width", 1)

			$("#mailScreenDarkLayer").css("display", "none");
			$("#mailScreen").css("display", "none");
			$("#mailScreenDarkLayer").remove();
			$("#mailScreen").remove();
		}
	}


	//-----------------------------------------------------
	// CheckFormVariables
	//-----------------------------------------------------
	function CheckFormVariables()
	{
		if($("#emailDivFromText").val() == "")
		{
			alert("Please enter a valid email address");
			return false;
		}

		return true;
	}

	//-----------------------------------------------------
	// EmailTagClicked
	//-----------------------------------------------------
	function EmailTagClicked(settings)
	{
		var recArray
		var fldArray
		recArray = settings.fields.split("[+]");

		// Shade the screen and display the cal info box
		ShadeScreenCreateEmailFormWindow(true, settings);

		// Calc inner div width
		var innerWidth = $("#mailScreen").width() - 10;


		$("#mailScreen").append('<div id="emailDivTitle">' + settings.title + '</div>');	

		$("#mailScreen").append('<div id="emailDivFrom">' + "From:" + '</div>');	
		$("#mailScreen").append('<input type="text" id="emailDivFromText"/>');	

		$("#mailScreen").append('<div id="emailDivSubject">' + "Subject:" + '</div>');	
		$("#mailScreen").append('<input type="text" id="emailDivSubjectText"/>');	

		$("#mailScreen").append('<img id="emailDivCancel" src="/images/decor/buttons/Grey_70x20_Cancel.jpg">');	
		$("#mailScreen").append('<img id="emailDivSend" src="/images/decor/buttons/Grey_70x20_Send.jpg">');	

		for (var x = 0; x < recArray.length; x++)
		{
			// Split each record into the appropriate fields
			fldArray = recArray[x].split("|");

			var goodName = fldArray[0]; goodName = goodName.replace(/\s/g, "_"); 
			var lblTop = parseInt(fldArray[2]); fldTop = parseInt(lblTop) + 18;
			var leftPos = parseInt(fldArray[1]) + "px";

			if (fldArray[0] != false)
			{
				// Add inner html to cal info box
				$("#mailScreen").append("<div id=\"emailFieldLabel" + goodName + "\" class=\"emailFieldTitles\">" + fldArray[0] + "</div>");	
				$("#emailFieldLabel" + goodName).css({position:"absolute", left:leftPos, top:lblTop + "px", "text-align":"left"} );
	
				// Check if single line or multiline field
				if (fldArray[4] >1)
				{	// Multiline so use <textarea>
					$("#mailScreen").append('<textarea id="emailFieldText' + goodName + '" class="emailFieldText" >' + "" + '</textarea>');	
					$("#emailFieldText" + goodName).css({position:"absolute", left:leftPos, top:fldTop + "px", "text-align":"left", width:fldArray[3] + "px", height:(fldArray[4] * 22) + "px"} );
				}
				else
				{	// Single line so use <input>
					$("#mailScreen").append("<input id=\"emailFieldText" + goodName + "\" class=\"emailFieldText\" type=\"text\"/>");	
					$("#emailFieldText" + goodName).css({position:"absolute", left:leftPos, top:fldTop + "px", "text-align":"left", width:fldArray[3] + "px"} );
				}
			}
		}

		// Check to see if subject is given if so set as read only
		if ( (settings.subject != "") && (settings.subject != null) )
		{
			// Put subject into subject field
			$("#emailDivSubjectText").val(settings.subject).attr("readonly", true);	
		}		

		// Setup the mouse click event handeler to cancel the email
		$("#emailDivCancel").bind('click', function(event)
		{	
			ShadeScreenCreateEmailFormWindow(false, settings);
		});


		// Setup the mouse click event handeler To send the email
		$("#emailDivSend").bind('click', function(event)
		{	
			SendButtonClicked(settings);
		});

	}

	//-----------------------------------------------------
	// SendButtonClicked
	//-----------------------------------------------------
	function SendButtonClicked(settings)
	{
			// Check if form filled out
			if (CheckFormVariables())
//			if (true)
			{
				var emailBody = "";
				// Make body from all supplied fields
				$(".emailFieldText").each(function(n)
				{
					var tmp2 = this.value;
					var tmp1 = this.id.substr(14);
					emailBody += tmp1 + ": " + tmp2 + "\r\n\r\n";
				});

				// Send the email
				var emailStatus, ajaxStatus, url, emailSubject, emailTo, emailFrom;

				emailFrom = $("#emailDivFromText").val();
				emailSubject = settings.subject;
				emailTo = settings.to;
				url = "/js/ajaxMail/ajaxMail.php";


				$.post(url, 
				{from:emailFrom, to:emailTo, subject:emailSubject, body:emailBody }, 
					function (emailStatus, ajaxStatus)
					{
						if ( (emailStatus == "OK") && (ajaxStatus = "success"))
						{
							alert("Your message has been sent ");

							// Close the form window
							ShadeScreenCreateEmailFormWindow(false, settings);
						}
						else
						{
							alert("Failure Sending email - Please try again later." + emailStatus + "   Ajax=" + ajaxStatus);
						}
					});
	
			}
	}

})(jQuery);

