/* Copyright (c) 2008 Kean Loong Tan http://www.gimiti.com/kltan
 * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * Version: 1.1 (March 26, 2008)
 * Requires: jQuery 1.2+
 // GILMORE ADD:
		var myaddr = opts.addr;
		if (opts.addr.indexOf("@") == 0)
			myaddr = $(this).attr( opts.addr.substring(1) );
 */
 
(function($) {

	var dialogDisplayed = false;
	var currentPos = true;

	$.fn.createDialog = function(options) {

		// Extend our default options with those provided.
		var opts = $.extend({}, $.fn.createDialog.defaults, options);
// GILMORE delete click bind
		//$(this).click(
		//function(){ 
		
			currentPos = opts.center;
			if (!dialogDisplayed) { //display dialog if none is there
				$("body").prepend('<div id="jDialogOverlay"></div><div id="jDialogContainer"></div>');
				overlayPos(1);
				dialogDisplayed=true;
			}
			if (opts.local == true)
			{
				var msg = opts.content;
				if (opts.content.indexOf("#") == 0)
					msg = $(opts.content).html();
				
				$("#jDialogContainer").html(msg);
				if (currentPos)
					reposition();
			}
			// remoute-ajax data
			else
			{
				var myaddr = opts.addr;
				if (opts.addr.indexOf("@") == 0)
				myaddr = $(this).attr( opts.addr.substring(1) );

				$.ajax({
					type: opts.method,
					data: opts.data,
					url: myaddr,
					success: function(msg){
						$("#jDialogContainer").html(msg);
						if (currentPos)
							reposition();
					}
				});
			}

			//only IE6 needs this function
			if($.browser.msie && parseInt($.browser.version) < 7) {
				$(window).scroll(function(){
					if(dialogDisplayed==1) {
						overlayPos();
						if (currentPos)
							reposition();
					}
				});
			}
			$(window).resize(function(){
				if (dialogDisplayed==1) {
					overlayPos();
					if (currentPos)
						reposition();
				}
			});
			
			$(window).unload( function () {
				if (dialogDisplayed==1)
					$.closeDialog();
			});
			
			$(window).keydown(function(event){
				if (event.keyCode == 27) 
					$.closeDialog();
			});

		//}();
		
		//private function
		function overlayPos(init){
			var left = 0;
			var top = 0;
			var overlayWidth = $(window).width();
			var overlayHeight = $(document).height();
			var winHeight =  $(window).height();
		
			if ($.browser.msie && parseInt($.browser.version) < 7) { //if IE6
				$("#jDialogOverlay").css({
									  top: 0, 
									  left: 0, 
									  width: overlayWidth, 
									  height: overlayHeight, 
									  position: "absolute",
									  display: "block",
									  color: opts.bg,
									  zIndex: opts.index
								  });
			}
			else { //other browsers
				$("#jDialogOverlay").css({
									  top: 0, 
									  left: 0, 
									  width: overlayWidth, 
									  height: winHeight, 
									  position: "fixed",
									  display: "block",
									  background: opts.bg,
									  zIndex: opts.index
								  }).show();
			}
			
			if (init==1) {
				$("#jDialogOverlay").css("opacity", opts.opacity);
				$("embed, object").css("visibility", "hidden");
			}
		}
		
		//private function
		function reposition(){
			$.repositionDialog(opts.index);
		}
	};
	
	$.fn.createDialog.defaults = {
		progress: false,
		center: true,
		method: 'GET',
		data: '',
		opacity: 0.85,
		bg: '#FFFFFF',
		index: 2000
	};
	
	$.closeDialog = function(){
		dialogDisplayed=false;
		if($.browser.msie && parseInt($.browser.version) < 7) //IE6 bug
			$("select").show();
		//fade out and remove DOM nodes
		$("#jDialogContainer, #jDialogOverlay").remove();
		$("embed, object").css("visibility", "visible");
		
	};

	var dialogIndex = 0;
	$.repositionDialog = function(index){ //calculate the position
		if (index)
			dialogIndex = index;
		var left = 0;
		var top = 0;
		var winWidth = $(window).width();
		var winHeight =  $(window).height();
		var dialogHeight = $("#jDialogContainer").children().height();
		var dialogWidth = $("#jDialogContainer").children().width();

		if ($.browser.msie) {
			left = document.body.scrollLeft || document.documentElement.scrollLeft;
			top = document.body.scrollTop || document.documentElement.scrollTop;
		}
		else {
			left = window.pageXOffset;
			top = window.pageYOffset;
		}

		var topOff = top + winHeight/2 - dialogHeight/2; //offset for IE6
		var	leftOff = left + winWidth/2 - dialogWidth/2; //offset for IE6
		var topFixed = topOff - top;
		var	leftFixed = leftOff - left;
	
		if ($.browser.msie && parseInt($.browser.version) < 7) { // IE6
			//IE 6 fix
			$("select").hide();
			//IE 6 fix
			$("#jDialogContainer select").show(); 
			//IE6 doesn't support fixed position
			$("#jDialogContainer").children().css({
													  top: topOff,
													  left: leftOff,
													  position: "absolute",
													  zIndex: (dialogIndex+1)
												  }).show(); 
		}
		else{	// firefox and IE7
			$("#jDialogContainer").children().css({
													  top: topFixed, 
													  left: leftFixed, 
													  position: "fixed", 
													  zIndex: (dialogIndex+1)
												  }).show();
		}
		$("#jDialogContainer").ready(function()//TODO: HERE is HACK!
			{
				$(".modal_wnd .green_button").eq(0).focus();
			}
			// (ihoru saying:) I do not know, where i have to insert this! :(
		);
	};
	
})(jQuery);

//
function myalert(title, msg, onOk)
{
	message_box(title, msg, {
			buttons:{OK: $('#js_ok_msg').html()},
			actionbutton: "OK",
			yes: onOk
		}
	);
}

function myconfirm(title, msg, onOk, onCancel, id)
{
	if (!onCancel || onCancel == '')
		onCancel = function(){};
	message_box(title, msg, {
			buttons:{YES: $('#js_ok_msg').html(), NO: $('#js_cancel_msg').html()},
			actionbutton: "YES",
			yes: onOk,
			no: onCancel,
			elementId: id
		}
	);
}

function message_box(title, msg, opts)
{
	//var btns=jQuery("<p></p>");
	var btn_str = "";
	if (opts && opts.buttons)
	{
		var str = '';
		var k = 0;
		for (var i in opts.buttons)
		{
			str = opts.actionbutton == i ? opts.yes.toString() : (opts.no ? opts.no.toString() : '');
			if (opts.elementId)
				str = str.replace(/this/, '$("#'+opts.elementId+'")[0]');
			str = ' new ' + str.replace(/\n/, '');
			btn_str += '<span id="str_exec_'+k+'" class="hidden">$.closeDialog(); '+str+'; </span><input type="button" value="' +opts.buttons[i] + '" class="';
			if (i != 'YES' && i != 'OK')
				btn_str += 'red_button';
			else
				btn_str += 'green_button'; 
			btn_str += '" onclick="eval(untagfilter($(\'#str_exec_'+k+'\').html()));"> ';
			k++;
		}
		 btn_str = '<div class="center">' + btn_str + '</div>';
	}
	var text = $('#js_popup_tpl').html();
	text = text.replace(/@width/i, '20%');
	text = text.replace(/@header/i, title);
	text = text.replace(/@content/i, msg+btn_str);
	jQuery().createDialog({
   		local: true,
   		content: text,
   		bg: '#000000',
   		opacity: 0.5
	});
	
}
