﻿/// <reference path="../../../jQuery1.3.2/jquery-1.3.2-vsdoc2.js"/>
/// <reference path="../../../YUI2.7/yahoo.js"/>
/// <reference path="../../../YUI2.7/event.js"/>
/// <reference path="../../../YUI2.7/dom.js"/>
/// <reference path="../../../YUI2.7/container.js"/>
/// <reference path="../../../YUI2.7/calendar.js"/>
/// <reference path="CCG.js"/>
/// <reference path="../../../YUI2.7/json.js"/>
var strSendErrNote = "An error occured trying to send your message, please try again. We apologise for any inconvenience.<br /><br />";
var strVldErrNote = "Errors were found, please ammend the following:";
var strConfNote = "Your enquiry has been received. We'll get back to you as soon as possible.<br /><br />";
var strFeedbackNote = "Thank you, your feedback has been received. If necessary, we will be in contact soon.<br /><br />";
var strSendingNote = "Sending message, please wait...<br /><br />";
var enqType = "General";
var rgxIsTxt = /^\w+(txt)\w+$/;
var rgxIsRgx = /^\w+(rev)\w+$/;
var rgxEM = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
var EnqStage = 0;
var FRESH = 0;
var GENERAL = 1;
var BRANCH = 2;
var TYPE = 3;
var ROOM = 4;
var TABLE = 5;
var HIRE = 6;
var ffAll, ffGeneral, ffBranch, ffRoom, ffTable, ffHire, rfvPDetails;
var currBranch, optBookRoom, optNA;
var dlgIcon, dlgHead, dlgNote;
var Dialog = new YAHOO.widget.Panel("pnlDialog", { width: "443px", draggable: true, visible: false, close: true, underlay: "none" });
Dialog.setHeader("<img id='dlgIcon' src='../images/status/ErrorIcon.png' alt='' /><span id='dlgHead' class='Red'>Attention!</span><br /><div class='fpRule'></div>");
Dialog.setBody("<p id='dlgNote'><p><ul id='bull' class='hdn'></ul>");
Dialog.setFooter("<input id='btnCloseDlg' type='image' src='../images/buttons/close.png' alt='Close' title='Click to close' />");
Dialog.beforeShowEvent.subscribe(function() { Dialog.center(); });
var Calendar = new YAHOO.widget.Panel("pnlCalendar", { visible: false, width: "162px", underlay: "none", close: false });
Calendar.setBody("<div id='pnlCal'></div>");
var Cal;

function VldRF(el)
{
	var vld = $(el).next();
	while(!vld.hasClass("vld"))
		vld = vld.next();
	if(el.value == "")
		vld.removeClass("vldOK");
	else
		vld.addClass("vldOK");
}

function VldDDL(el)
{
	var vld = $(el).next();
	if(el.selectedIndex == 0)
		vld.removeClass("vldOK");
	else
		vld.addClass("vldOK");
}

function VldRGX(el)
{
	var vld = $(el).next();
	if(!rgxEM.test(el.value))
		vld.removeClass("vldOK");
	else
		vld.addClass("vldOK");
}

function Validate(e)
{
	var tEl = e.target;
	if(rgxIsTxt.test(tEl.id))
	{
		var tVLD = $(tEl).next().get(0);
		if(!rgxIsRgx.test(tVLD.id))
			VldRF(tEl);
		else
			VldRGX(tEl);
	}
	else
	{
		VldDDL(tEl);
	}
}

function SetForm()
{
	switch(EnqStage)
	{
		case HIRE:
			{
				ffHire.removeClass("hdn");
				ffAll.not(ffHire).addClass("hdn");
				$(qp + "rfvMsg").addClass("hdn");
				break;
			}
		case TABLE:
			{
				ffTable.removeClass("hdn");
				ffAll.not(ffTable).addClass("hdn");
				$(qp + "rfvMsg").addClass("hdn");
				break;
			}
		case ROOM:
			{
				ffRoom.removeClass("hdn");
				ffAll.not(ffRoom).addClass("hdn");
				$(qp + "rfvMsg").addClass("hdn");
				break;
			}
		case TYPE:
			{
				if(currBranch == "CCRS")
				{
					optBookRoom.disabled = "disabled";
					optBookRoom.style.color = "#888";
				}
				else
				{
					optBookRoom.disabled = "";
					optBookRoom.style.color = "#fff9e9";
				}
				break;
			}
		case BRANCH:
			{
				ffBranch.removeClass("hdn");
				$(qp + "svBranch").removeClass("hdn");
				ffAll.not(ffBranch).addClass("hdn");
				optNA.disabled = "disabled";
				optNA.style.color = "#888";
				break;
			}
		case GENERAL:
			{
				ffGeneral.removeClass("hdn");
				ffAll.not(ffGeneral).addClass("hdn");
				$(qp + "rfvMsg").removeClass("hdn");
				$(qp + "svBranch").addClass("hdn");
				optNA.disabled = "";
				optNA.style.color = "#fff9e9";
				break;
			}
		default:
			{
				ffAll.addClass("hdn");
				break;
			}
	}
}

function SetEnqProg(e)
{
	var ddl;
	var ddlTemp;
	if(EnqStage >= FRESH)
	{
		ddl = $(qp + "ddlSubject").get(0);
		if(ddl.selectedIndex != 0)
		{
			if(e.target.id == ddl.id)
			{
				ddlTemp = $(qp + "ddlBranch").get(0);
				ddlTemp.selectedIndex = 0;
				VldDDL(ddlTemp);
			}
			if(ddl.value != "Reservation")
			{
				EnqStage = GENERAL;
				SetForm();
				enqType = ddl.value;
				return;
			}
			else
			{
				enqType = "General";
				EnqStage = BRANCH;
			}
		}
		else
		{
			EnqStage = FRESH;
		}
		if(EnqStage >= BRANCH)
		{
			ddl = $(qp + "ddlBranch").get(0);
			if(ddl.value != "- Select One -")
			{
				if(e.target.id == ddl.id)
				{
					ddlTemp = $(qp + "ddlBookType").get(0);
					ddlTemp.selectedIndex = 0;
					VldDDL(ddlTemp);
				}
				currBranch = ddl.value;
				EnqStage = TYPE;
			}
			else
			{
				EnqStage = BRANCH;
			}
			if(EnqStage >= TYPE)
			{
				ddl = $(qp + "ddlBookType").get(0);
				if(ddl.selectedIndex != 0)
				{
					switch(ddl.selectedIndex)
					{
						case 1:
							{
								EnqStage = TABLE;
								break;
							}
						case 2:
							{
								EnqStage = ROOM;
								break;
							}
						case 3:
							{
								EnqStage = HIRE;
								break;
							}
					}
				}
				else
				{
					EnqStage = TYPE;
				}
			}
		}
		SetForm();
	}
}

function ShowSending()
{
	dlgIcon.src = "../images/status/InfoIcon.png";
	dlgHead.className = "Gold";
	dlgHead.innerHTML = "Sending Message";
	dlgNote.innerHTML = strSendingNote;
	$("#bull").addClass("hdn");
	Dialog.show();
}

function ShowSent()
{
	dlgIcon.src = "../images/status/OkIcon.png";
	dlgHead.innerHTML = "Confirmation!";
	dlgHead.className = "Green";
	dlgNote.innerHTML = (enqType != "Feedback") ? strConfNote : strFeedbackNote;
	$("#bull").addClass("hdn");
	Dialog.show();
}

function ShowSendError()
{
	dlgIcon.src = "../images/status/ErrorIcon.png";
	dlgHead.innerHTML = "Error!";
	dlgHead.className = "Red";
	dlgNote.innerHTML = strSendErrNote;
	$("#bull").addClass("hdn");
	Dialog.show();
}

function ShowVldErrors(errorList)
{
	dlgIcon.src = "../images/status/ErrorIcon.png";
	dlgHead.innerHTML = "Attention!";
	dlgHead.className = "Red";
	dlgNote.innerHTML = strVldErrNote;
	$("#bull").removeClass("hdn").addClass("bullErrorSum Red").html(errorList);
	Dialog.show();
}

function btnSendClick(e)
{
	var invalids = $(".ff").not(".hdn").find(".vld").not(".vldOK, .hdn");
	if(invalids.size() > 0)
	{
		e.preventDefault();
		var Errors = new String();
		invalids.each(function() { Errors += "<li>" + this.title + "</li>"; });
		ShowVldErrors(Errors);
	}
	else
	{
		e.preventDefault();
		var msg = {
			name: $(qp + "txtName").get(0).value,
			phone: $(qp + "txtPhone").get(0).value,
			phone2: $(qp + "txtPhone2").get(0).value,
			email: $(qp + "txtEmail").get(0).value,
			subject: $(qp + "ddlSubject").get(0).value,
			branch: $(qp + "ddlBranch").get(0).value,
			type: $(qp + "ddlBookType").get(0).value,
			numPeople: $(qp + "txtNumPeople").get(0).value,
			room: $(qp + "ddlRoom").get(0).value,
			date: $(qp + "txtDate").get(0).value,
			time: $(qp + "ddlTime").get(0).value,
			msg: $(qp + "txtMsg").get(0).value,
			msgType: EnqStage
		};

		ShowSending();

		$.ajax({
			type: "POST",
			url: "MailProxy.asmx/SendMessage",
			data: YAHOO.lang.JSON.stringify(msg),
			contentType: "application/json; charset=utf-8",
			dataType: "json",
			success: function(res) { if(res.d) { ShowSent(); } else { ShowSendError(); } },
			error: function(XMLHttpRequest, textStatus, errorThrown)
			{
				ShowSendError();
			}
		});
	}
}

function btnCalClick()
{
	if(!Calendar.cfg.getProperty("visible"))
		ShowCal();
	else
		HideCal();
}

function ShowCal()
{
	Calendar.cfg.setProperty("context", ["btnCal", "tr", "br"]);
	Calendar.show();
	$("#btnCal").addClass("On").attr("title", "Hide calendar");
}

function HideCal()
{
	Calendar.hide();
	$("#btnCal").removeClass("On").attr("title", "Show calendar");
}

function DateClick(e, arg)
{
	var td = $(qp + "txtDate").get(0);
	td.value = arg[0][0][2] + "/" + arg[0][0][1] + "/" + arg[0][0][0];
	VldRF(td);
	btnCalClick();
}

$(document).ready(function()
{
	Dialog.renderEvent.subscribe(function()
	{
		$("#btnCloseDlg").click(function() { Dialog.hide(); });
		dlgIcon = $("#dlgIcon").get(0);
		dlgHead = $("#dlgHead").get(0);
		dlgNote = $("#dlgNote").get(0);
	});
	Dialog.render(document.body);

	$("#pnlContact").find(".vld").prev("input[type=text]").keyup(Validate).blur(Validate);
	$("#pnlContact").find(".vld").prev("textarea").keyup(Validate).blur(Validate);
	$("#pnlContact").find(".vld").prev("select").change(Validate);
	$(qp + "txtDate").keyup(Validate).blur(Validate);

	ffAll = $(qp + "ffBranch").add(qp + "ffBookType").add(qp + "ffNumPeople").add(qp + "ffRoom").add(qp + "ffDateTime").add(qp + "ffMsg");
	ffGeneral = $(qp + "ffBranch").add(qp + "ffMsg");
	ffBranch = $(qp + "ffBranch").add(qp + "ffBookType");
	ffRoom = $(qp + "ffBranch").add(qp + "ffBookType").add(qp + "ffRoom").add(qp + "ffDateTime").add(qp + "ffMsg");
	ffTable = $(qp + "ffBranch").add(qp + "ffBookType").add(qp + "ffNumPeople").add(qp + "ffDateTime").add(qp + "ffMsg");
	ffHire = $(qp + "ffBranch").add(qp + "ffBookType").add(qp + "ffDateTime").add(qp + "ffMsg");

	$(qp + "ddlSubject").change(SetEnqProg);
	$(qp + "ddlBranch").change(SetEnqProg);
	$(qp + "ddlBookType").change(SetEnqProg);

	optBookRoom = $(qp + "ddlBookType").get(0).options[2];
	var ddl = $(qp + "ddlBranch").get(0);
	optNA = ddl.options[ddl.options.length - 1];

	$(qp + "btnNext").css("display", "none");
	$(qp + "btnSend").removeClass("hdn").click(btnSendClick);

	EnqStage = parseInt($(qp + "hdnEnqType").get(0).value);
	SetForm();
	//	$(qp + "ddlBookType").change();

	Calendar.renderEvent.subscribe(function()
	{
		$("#btnCal").click(btnCalClick).removeClass("hdn");
		$(qp + "txtDate").click(btnCalClick);
		Cal = new YAHOO.widget.Calendar("Cal", "pnlCal", { MDY_DAY_POSITION: 1, MDY_MONTH_POSITION: 2 });
		Cal.addRenderer("12/25, 1/1", Cal.renderBodyCellRestricted);
		Cal.render();
		Cal.selectEvent.subscribe(DateClick);
	});
	Calendar.render(document.body);
	Calendar.cfg.setProperty("context", ["btnCal", "tr", "br"]);
	$(window.document).click(function(e)
	{
		if(Calendar.cfg.getProperty("visible"))
		{
			var tEl = e.target;
			while(tEl != document.body)
			{
				if(tEl.id == "pnlCalendar" || tEl.id == "btnCal" || tEl.id == p + "txtDate")
					break;
				else
				{
					tEl = tEl.parentNode;
					if(tEl == document.body)
					{
						HideCal();
					}
				}
			}
		}
	});
});