function parseURL ( query ) {
   var Params = {};
   if ( ! query ) {return Params;}// return empty object
   var Pairs = query.split(/[;&]/);
   for ( var i = 0; i < Pairs.length; i++ ) {
      var KeyVal = Pairs[i].split('=');
      if ( ! KeyVal || KeyVal.length != 2 ) {continue;}
      var key = unescape( KeyVal[0] );
      var val = unescape( KeyVal[1] );
      val = val.replace(/\+/g, ' ');
      Params[key] = val;
   }
   return Params;
}


function tb_show(title, url, modal){
	if(modal != true && modal != false) modal = false;
	removeButtons();
	$("#dialogModal").css({'overflow' : 'hidden'});
	$('#dialogModal').dialog('option', 'title', title);
	var queryString = url.replace(/^[^\?]+\??/,'');
	var params = parseURL(queryString);
	if(!params['width']) params['width'] = 800;
	if(!params['height']) params['height'] = 500;
	$("#dialogModal").children().remove();	//Removing current dialog content
	//$(this).scroll(function() {centerDialog()});
	$("#dialogModal").dialog({modal : modal});

	//Normal window
	$("#dialogModal :input").attr("disabled","disabled");
	$("#dialogModal a").attr("href","javascript:void(0)");
	$("#dialogModal a").click(function() {void(0)});
	var hn = window.location.hostname;
	if(hn.indexOf('kmag') != -1)
		$.blockUI({message: '<img src="http://info.kmag.net/img/bfw/loadingAnimation.gif" alt="..." />',
	             css: {backgroundColor: '', border: ''}, overlayCSS: {backgroundColor: '#AAA', opacity: 0.3, zIndex : 10000}});
	$("#dialogModal").load(url += "&random=" + (new Date().getTime()),function(){
		$.unblockUI();
		$('#dialogModal').dialog('option', 'height', params['height'] * 1);
		$('#dialogModal').dialog('option', 'width', params['width'] * 1);
		$('#dialogModal').css({"width" : "auto", "overflow" : "auto", "height" : (params['height'] * 1) - 41});	//little height correction
		$('#dialogModal').dialog('open');
		$(".ui-widget-overlay").click(function(){removeDialog();})

		//redefineLinks();
		addButtons();

		$("#dialogModal area, #dialogModal input.thickbox, #dialogModal a").filter(function(index) {
			if($(this).attr('href') != '' && $(this).attr('href').indexOf('javascript')!=0 && $(this).attr('href').indexOf('#') == -1 && $(this).attr('href').indexOf('mailto:') == -1) {
				setupLinks($(this)); //I tried to send whole array of elements to setupLinks function, but there were some problems
			}
		});
		$("#dialogModal").dialog('enable');
		$('#dialogModal').bind('dialogclose', function(event, ui) {
			removeButtons();
		});
		autoResize($.cookie('kmagZoom'));
		if(params['buttons'] == 'off') removeButtons();
		if(params['resizeToContent'] == 1) {
			$('#dialogModal').css({"width" : "auto", "position" : "absolute"});
			$('#dialogModal').dialog('option', 'width', $("#dialogModal").innerWidth());
			$('#dialogModal').css({"position" : "relative"});
		}
			centerDialog();
		//if(params['resizeToContent']) $("#dialogModal").css({'width' : $("#dialogModal").innerWidth()});
	});
}


//zIndex is set to 999 because overlay from $.blockUI() has zIndex 1000 and is now shown over dialog
function createDialog() {
	$("body").append("<div id='dialogModal'></div>");
		$("#dialogModal").dialog({
				bgiframe: true,
				autoOpen: false,
				modal: true,
				zIndex: 999,
				resize: function(event, ui) {redefineLinks();}
		});
}

function autoResize(zoom) {
	$.cookie('kmagZoom', zoom);
	if(Boolean($.cookie('kmagZoom')) == true) {
		$('#dialogModal').dialog('option', 'width', $(this).width() - $(this).width()/20);
		$('#dialogModal').dialog('option', 'height', $(this).height() - $(this).height()/50);
		$('#dialogModal').css({"height" : $('#dialogModal').dialog('option', 'height') - 41});	//little height correction
		centerDialog();
		redefineLinks();
	}
		removeButtons();
		addButtons();
}

function centerDialog() {
	$('#dialogModal').dialog('option', 'position', 'center');

}

function addButtons() {
	//Print button
	$("<a id='tbPrintButton' href='javascript:void(0)' title='Print Window' />").addClass("ui-dialog-titlebar-close").addClass("ui-corner-all").css({'right' : '2em'}).hover(function(){$(this).addClass("ui-state-hover")}, function(){$(this).removeClass("ui-state-hover")}).click(function(){printWindow()}).append($("<span/>").addClass("ui-icon").addClass("ui-icon-print")).appendTo(".ui-dialog-titlebar");
	if(Boolean($.cookie('kmagZoom')) == false)
		//autoResize ZoomIn button
		$("<a id='tbZoomInButton' href='javascript:void(0)' title='Maximize Window' />").addClass("ui-dialog-titlebar-close").addClass("ui-corner-all").css({'right' : '3.6em'}).hover(function(){$(this).addClass("ui-state-hover")}, function(){$(this).removeClass("ui-state-hover")}).click(function(){autoResize(true)}).append($("<span/>").addClass("ui-icon").addClass("ui-icon-zoomin")).appendTo(".ui-dialog-titlebar");
	else
		//autoResize ZoomOut button
		$("<a id='tbZoomOutButton' href='javascript:void(0)' title='Cancel AutoResize' />").addClass("ui-dialog-titlebar-close").addClass("ui-corner-all").css({'right' : '3.6em'}).hover(function(){$(this).addClass("ui-state-hover")}, function(){$(this).removeClass("ui-state-hover")}).click(function(){autoResize('')}).append($("<span/>").addClass("ui-icon").addClass("ui-icon-zoomout")).appendTo(".ui-dialog-titlebar");
}

//IE7 HotFix
function positionFooter() {
	if($("#allContent")!=null) $("#allContent").css({'min-height' : $("#allContent").outerHeight()});
}


function removeButtons() {
	$('#tbPrintButton').remove();
	$('#tbZoomInButton').remove();
	$('#tbZoomOutButton').remove();
}

function removeDialog() {
	$('#dialogModal').dialog('close');
	removeButtons();
}

function tb_remove() {
	removeDialog();
}

function redefineLinks() {
		var dialogModal = document.getElementById('dialogModal');
		elements = dialogModal.getElementsByTagName('a');
  		for(i=0; i< elements.length; i++)	{
	  		dialogWidth = $("#dialogModal").width() + 24;
	  		dialogHeight = $("#dialogModal").height() + 41;
  			element = elements[i];
			var queryString = element.href.replace(/^[^\?]+\??/,'');
  			var arguments = parseURL(queryString);
  			var upWidth = parseInt(arguments['width']);
  			var upHeight = parseInt(arguments['height']);
			element.href = element.href.replace("width=" + upWidth, "width=" + dialogWidth);
			element.href = element.href.replace("height=" + upHeight, "height=" + dialogHeight);
  		}
	}

//Loading
$(document).ready(function(){
	tbSetup();
});

function tbSetup(){
		setTimeout("setupLinks($('area.thickbox, input.thickbox, a.thickbox')); createDialog();", 500);
		if($("#allContent")!=null) $("#allContent").resize(function() {positionFooter()});
}

function setupLinks(objectId) {
	if(objectId != null) {
		$(objectId).unbind('click');	//this line should be removed along with thickbox
		$(objectId).click(function(){
			tb_show($(this).text(), $(this).attr("href"), true);
			return false;
		});
	}
}