/**
 * This code is included on all pages
 */
$(document).ready( function() {
	
	/** Change radio buttons style */
	$('.radio-button').jqTransRadio();
	
	/** 
	 * Destroy info message after timout 
	 **/
	var t = setTimeout("fadeMessage()", 5000);
	
	/**  IE 7 and previous IE version fix */
	if($.browser.msie) 
	{
		$(".fieldset-left-side, .fieldset-right-side, .fieldset-top-middle, .fieldset-bottom-middle")
			.append("<div class='ie-empty-element'></div>");
		$(".fieldset-top-middle, .fieldset-bottom-middle").css("height", "7px");
		$(".box-content").css("width", "auto");
		$(".box-content").css("padding-right", "0px");
		$(".box-content").css("margin-right", "0px");
		$(".main-hotel-listing").css("margin-right", "20px");
		if($.browser.version < 8)
		{	
			$(".box").css("width", "30%");
			$(".box-white").css("width", "100%");
		}
	}
	
	/**
	 * Load help
	 */
	$(".show-help").live("click", function(e) {
		isAuthed();
		var helpUrl = $(this).attr("href");
		if(helpUrl == undefined)
		{
			helpUrl = $("a", this).attr("href");
		}		
		helpUrl = helpUrl + "&time=" + timestamp(); /** Prevent caching */
		var title = TR.tr('Help');
		var self = $('.popup-container').load(helpUrl, function(){
			$('.popup-container').draggable();
			var width = $(".popup").css("width");
			$('.popup-container').css("width", width);
			$('.popup-container').css("display", "block");			
			$('.popup-container').css("top", (e.pageY - 50) + "px");
			$('.popup-container').css("left", (e.pageX - 50) + "px");
		});
		return false;
	});

	/**
	 * Show popup
	 */	
	$(".show-popup").live("click", function(e) {
		var inquiryId = $(this).attr("id").split("-")[1];
		$.blockUI(); 
		isAuthed();
		var helpUrl = $(this).attr("href");
		if(helpUrl == undefined)
		{
			helpUrl = $("a", this).attr("href");
		}		
		helpUrl = helpUrl + "&time=" + timestamp(); /** Prevent caching */
		var title = TR.tr('Help');
		var linkContainer = $(this).parent();
		linkContainer = $(linkContainer).parent();
		if($(".popup-container").size() == 0)
		{
			// If element is missing, add it
			$("body").append('<span class="popup-container" style="z-index: 999; margin: auto; position: absolute; display: none;"></span>');
		}
		else
		{
			// Clear container html
			$(".popup-container").html();
		}
		var self = $('.popup-container').load(helpUrl, function() {
			$.unblockUI();
			$('.popup-container').draggable();
			var width = $(".popup").css("width");
			$('.popup-container').css("width", width);
			$('.popup-container').css("display", "block");			
			$('.popup-container').css("top", (e.pageY - 50) + "px");
			$('.popup-container').css("left", (e.pageX - 50) + "px");
			var container = $(this);
			var form = $("div#res-inquiry-container-" + inquiryId, container);
			$(".called", container).live("click", function(){
				var userId = $("input[name=userId]", form).val();				
				
				$.blockUI();
				sendResInquiryResponse(inquiryId, userId, "", 'called', function() {
					$.unblockUI();						
					var content = $("span.inquiry-content", container).text();
					$(".popup-content", container).html("<span style='color: black'>" + TR.tr('InquiryWasResponsedByPhone') + "</span>");
					$(".message-container", container).addClass("message-style message-info").show();
					$(".sent-message-title").hide();
					$(".sent-message-container").hide();						
					$(".information-container", container).show();
					$(".close-popup", container).show();
					$("input.close-popup").live("click", function() {
						$('.popup-container').html("");
						return false;
					});
					$(form).html("");
					refreshResInquiries(inquiryId);
					self.remove();
				});
				/*
				$("form", container).ajaxSubmit( { 
					beforeSubmit: function() {
						$("form", container).append("<input type='hidden' name='called' value=''/>");
						$.blockUI(); 
					},
					success: function() {
						$.unblockUI();						
						var content = $("span.inquiry-content", container).text();
						$(".popup-content", container).html("<span style='color: black'>" + TR.tr('InquiryWasResponsedByPhone') + "</span>");
						$(".message-container", container).addClass("message-style message-info").show();
						$(".sent-message-title").hide();
						$(".sent-message-container").hide();						
						$(".information-container", container).show();
						$(".close-popup", container).show();
						$("input.close-popup").live("click", function() {
							$('.popup-container').html("");
							return false;
						});
						$("form", container).html("");
						refreshResInquiries(inquiryId);
					}
				});
				*/
			});
			$(".send-message", container).live("click", function() {			
				var userId = $("input[name=userId]", form).val();
				var message = $("textarea[name=message]", form).val();
				
				if(message.length < 10)
				{
					$(".popup-response-error-message").show().text(TR.tr('MessageMustBeAtLeast10CharsLong'));							
					setTimeout("fadeClasses('.popup-response-error-message')", 5000);							
					return false;
				}
				else
				{
					$.blockUI();
					sendResInquiryResponse(inquiryId, userId, message, 'message', function() {
						$.unblockUI(); 
						var email = $("span.email-address", container).text();
						var message = $("textarea[name=message]", container).val();
						$(".popup-content", container).html("<span style='color: black'>" + TR.tr('YourMessageWasSentToAddress') + "</span> " + email);
						$(".message-container", container).addClass("message-style message-info").show();
						$(".sent-message-container", container).text(message);
						$(".information-container", container).show();
						$(".close-popup", container).show();
						$("input.close-popup").live("click", function() {
							$('.popup-container').html("");
							return false;
						});
						$(form).html("");
						refreshResInquiries(inquiryId);
						self.remove();
					});
				}
				
				/*
				$(this).ajaxSubmit( {
					beforeSubmit: function() {
						alert("clicked inquiry id was : " + inquiryId + " and userId : " + $("input[name=userId]", form).val() + " - inquiryId : " + $("input[name=inquiry]", form).val());
						var message = $("textarea[name=message]", container).val();
						if(message.length < 10)
						{
							$(".popup-response-error-message").show().text(TR.tr('MessageMustBeAtLeast10CharsLong'));							
							setTimeout("fadeClasses('.popup-response-error-message')", 5000);							
							return false;
						}
						$.blockUI(); 
					},
					success: function() {
						$.unblockUI(); 
						var email = $("span.email-address", container).text();
						var message = $("textarea[name=message]", container).val();
						$(".popup-content", container).html("<span style='color: black'>" + TR.tr('YourMessageWasSentToAddress') + "</span> " + email);
						$(".message-container", container).addClass("message-style message-info").show();
						$(".sent-message-container", container).text(message);
						$(".information-container", container).show();
						$(".close-popup", container).show();
						$("input.close-popup").live("click", function() {
							$('.popup-container').html("");
							return false;
						});
						$("form", container).html("");
						refreshResInquiries(inquiryId);
					}
				});
				*/
				return false;
			});			
		});
		return false;
	});	
	
	/** Show blockUI */
	$(".show-blockui").live("click", function(){
		isAuthed();
		$.blockUI();
	});
	
	/** Close help */
	$("a.close").live("click", function() {
		$('.popup-container').html("");
		return false;
	});
	
	/**
	 * Confirm delete dialog
	 */
	$(".confirm-delete").live("click", function() {
		isAuthed();
		var title = $(this).attr("title");
		var item = $(this).attr("id");
		var self = $('<div id="dialog">' + TR.tr("SelectedItem") + ' <strong>' + item + '</strong></div>');
		var btns = {};
		btns[TR.tr('Delete')] = function() { 
			$.blockUI(); 
			self.dialog('close'); 
			$("#confirm-delete-form-" + item).submit(); 
		};
		btns[TR.tr('Cancel')] = function() { self.dialog('close'); };		
		self.dialog({
			title: title,
			bgiframe : true,
			resizable : false,
			height : 140,
			modal : true,
			buttons : btns
		});
		return false;
	});
	
	/** Initialize date pickers */
	$("input.date").datepicker({
		duration: 100,
		changeMonth: true,
		yearRange: '-60:+20',
		changeYear: true,
		buttonImage: baseurl() + "styles/images/calendar.png",
		buttonImageOnly: true,
		showOn: 'button'
	});
	
});

/** Translate strings using the language of the logged in user */
var TR = new Object();
TR.tr = function(msg) {
	if(msg=='')
		return '';
	var m = this[msg];
	
	if(m===undefined) {
		var url = baseurl() + 'run/help/index.jsp';
		m = $.ajax({
			async: false,
			dataType: 'text',
			data: "translate=" + msg + "&time=" + timestamp(),
			url: url
		}).responseText;
		this[msg] = m;
	}
	return m;
};

/**
 * Fade info message
 * @return
 */
function fadeMessage()
{
	$(".message-ok,.message-info,.message-error").toggle(1000, function () {
        $(this).hide();
	});
}

/**
 * Send res. inquiry response
 * @param inquiryId
 * @param userId
 * @param message
 * @param type
 * @return
 */
function sendResInquiryResponse(inquiryId, userId, message, type, callbackFunction)
{
	var ajaxUrl = "index.jsp?inquiry=" + inquiryId + "&reservation_inqueries=" + userId + "&time=" + timestamp();	
	if(type == 'called')
	{
		$.post(ajaxUrl, { inquiryId: inquiryId, userId: userId, message: message, called: "true" }, callbackFunction);
	}
	else
	{	
		$.post(ajaxUrl, { inquiryId: inquiryId, userId: userId, message: message }, callbackFunction);
	}
}

/**
 * Refresh res. inquiries
 * @param inquiryId
 * @return
 */
function refreshResInquiries(inquiryId)
{
	$("#showInquiry-" + inquiryId).closest("tr").remove();
	if($("table.reservation-inquiry-table tbody tr").size() == 0)
	{
		var noResInquiries = TR.tr('NoClosedReservationInquiries');
		var message = "<div class='message-content'>" + noResInquiries + "</div>";
		$("div.box-content-without-padding.res-inquiries-box-content").html(message);
	}
}

/**
 * Fade given classes
 */
function fadeClasses(classes)
{
	$(classes).toggle(1000, function () {
        $(this).hide();
	});	
}

/**
 * Get baseurl
 */
var _baseurl;
function baseurl() {
	if(_baseurl==null) {
		_baseurl = $("meta[name=baseurl]").attr("content");
	}
	return _baseurl;
}

/**
 * Is authed
 */
function isAuthed()
{
	var url = baseurl() + "run/help/";
	var response = $.ajax({
		async: false,
		dataType: 'text',
		data: "auth=isAuthed&time=" + timestamp(),
		url: url
	}).responseText;
	if(response != 'true')
	{
		location.reload();
	}
}

/**
 * Get the milliseconds since epoch
 */
function timestamp(){    
    return new Date().getTime();
}
