/*
 *	Airmalta Juery Modal
 *	Author: Alan Agius
 *
*	Last Updated: 04th June 2010
 *	Copyright 2010 Alert Communications
 *	www.alert.com.mt
 */

(function($){
//Generate Modale Box
$.fn.modaleBox = function(options){
	//Disable window scroll and Enable resize center function
	$(window).bind('scroll', function(){
		$().modaleBox.Center();
	}).bind('resize', function(){
		$().modaleBox.Center();
	})
	 
	
	//Create container if it's not hidden
	if(!$("#"+options.dialogueID + "-holder").length){
		strBodyHTML = "<div id=\""+ options.containerID +"\" style=\"display:none;opacity: 0.0\"></div>";
		strBodyHTML += "<div id=\""+ options.dialogueID +"-holder\" style=\"position:absolute; z-index:999; display:none\">";
		if(options.showCloseButton){
				strBodyHTML += "<div id=\""+ options.closeButtonID +"\" style=\"display:none;\"><!-- close button --></div>";
		}
		strBodyHTML += "<div id=\""+ options.dialogueID +"\" style=\"display:none;\"></div>";
		strBodyHTML += "<div id=\""+ options.dialogueID +"-border\" style=\"display:none; background-color:" + options.borderColor + "\"><!-- border --></div>";
		strBodyHTML += "</div>";
		
		$("body").append(strBodyHTML);
		strBodyHTML = null;
		
		//Close Button
		$("#" + options.closeButtonID, "#"+ options.dialogueID +"-holder").click(function(){
			$().modaleBox.Close();
		});
		
		//Get content
		if(options.contentHTMLID === undefined){
			//Load remote page
			$.ajax({
				url: options.url,
				cache: options.cache,
				success: function(strHTML){
					$("#" + options.dialogueID).html(strHTML);
				}
			});
		}else{
			//Load HTML from hidden element
			$("#" + options.dialogueID).html($("#" + options.contentHTMLID).html());
		}
	}
	
	//Create borders
	$().modaleBox.CreateBorder();	
	
	//Show Modale
	$().modaleBox.Show();
	
}

//Create Dialogue Box Border
$.fn.modaleBox.CreateBorder = function(){
	$("#"+ options.dialogueID +"-holder").css("top","-99999px").css("left","-99999px").show(function(){
		var objDialogue = $("#" + options.dialogueID);
		var intBorderDivHeight = objDialogue.outerHeight(true) + (options.borderWidth * 2),
			intBorderDivWidth = objDialogue.outerWidth(true) + (options.borderWidth * 2);
			
			$("#"+ options.dialogueID +"-border")
				.fadeTo(0, options.borderOpacity)
				.css("top", 0)
				.css("left", 0)
				.width(intBorderDivWidth)
				.height(intBorderDivHeight);
			
			objDialogue
				.css("top", options.borderWidth)
				.css("left", options.borderWidth);
	})
}

$.fn.modaleBox.Center = function(){
	var objDialogue = $("#" + options.dialogueID),
		intWindowHeight = $(window).height(),
		intWindowWidth = $(window).width(),
		intScrollY = 0,
		intScrollX = 0,
		strRegExpChrome = new RegExp("chrome");
		
    //Check if browser is Chrome
    if(strRegExpChrome.test(navigator.userAgent.toLowerCase())){
	    intScrollY = document.body.scrollTop;
		intScrollX = document.body.scrollLeft;        
    }else{
	    intScrollY = document.body.parentNode.scrollTop;
		intScrollX = document.body.parentNode.scrollLeft;
	}
	
	//Set new positions
	$("#" + options.dialogueID + "-holder")
	    .css("top", ((intWindowHeight - objDialogue.outerHeight(true)) / 2) + intScrollY)
	    .css("left", ((intWindowWidth - objDialogue.outerWidth(true)) / 2) + intScrollX);
	    
	$("#" + options.containerID)
	    .css("top", intScrollY)
	    .css("left", intScrollX)
	    .width(intWindowWidth)
	    .height(intWindowHeight);
}

//Show Modale Box
$.fn.modaleBox.Show = function(){
	// Show dialogue box, container, close button and border
	$("#"+ options.dialogueID +"-holder").show(function(){
		$().modaleBox.Center();
		$("#" + options.dialogueID).fadeIn(options.dialogueEasing);	
		$("#"+options.closeButtonID).fadeIn(options.dialogueEasing);	
		$("#"+ options.dialogueID +"-border").fadeIn(options.dialogueEasing);
		$("#"+ options.containerID).show().fadeTo(options.containerEasing, options.containerOpacity);
	})
}

//Close Modale Box
$.fn.modaleBox.Close = function(){
	$("#" + options.dialogueID).fadeOut(options.dialogueEasing);	
	$("#"+ options.dialogueID +"-border").fadeOut(options.dialogueEasing);
	$("#"+options.closeButtonID).fadeOut(options.dialogueEasing);

	$("#" + options.containerID).fadeOut(options.containerEasing, function(){
		if(options.hide){
			//Hide Container and Dialogue	
			$(this).fadeTo(0,0);
			$("#"+ options.dialogueID +"-holder")
				.css("top","-99999px")
				.css("left","-99999px")
				.hide();
		}else{
			//Remove Container and Dialogue
			$(this).remove();
			$("#"+ options.dialogueID +"-holder").remove();
		}
	});	
	
	//Enable window scroll and Disable resize center function
	$(window).unbind('scroll').unbind('resize');
}
})(jQuery);
