
$(document).ready(function() {
	bcbOverlayInit("a.bcboverlay");
});


function bcbOverlayInit(domElements) {
	$(domElements).click( function() {
		bcbOverlayShow(this.href);
		this.blur();
		return false;
	});
}

function bcbOverlayShow(url) {
	try {
		// add base elements
		if (document.getElementById("bcb-overlay") === null) {
			$("body").append("<div id=\"bcb-overlay\"></div><div id=\"bcb-window\"></div>");
			$("#bcb-overlay").css("cursor", "pointer").one("click", bcbOverlayRemove);
		}
		
		//TODO: overlay load image?!?
		$("body").append("<div id=\"bcb-load\"><div id=\"bcb-load-panel\"><span class=\"bcb-load-icon\"></span></div>");
		$("#bcb-load").show();
		
		var baseUrl = (url.indexOf("?") != -1) ? url.substr(0, url.indexOf("?")) : url;
		var queryString = url.replace(/^[^\?]+\??/,'');
		var params = bcbOverlayParseQuery( queryString );
		
		iframeWidth = (params['width']*1) || 520;
		overlayWidth = iframeWidth + 160;
		iframeHeight = (params['height']*1) || 400;
		overlayHeight = iframeHeight + 160;
		
		var closetext = "schliessen";
		var lang = "de";
		var baseUrlLength = baseUrl.length;
		if (baseUrlLength > 7) {
			lang = baseUrl.substr(baseUrlLength - 7, 2);
			if (lang == "en") {
				closetext = "close";
			} else if (lang == "fr") {
				closetext = "fermer";
			} else if (lang == "it") {
				closetext = "concludere";
			}
		}
		

		// create inner frame
		$("#bcb-window").append("<div id=\"bcb-window-content\"><iframe id=\"bcb-iframe\" name=\"bcb-iframe"+Math.round(Math.random()*1000)+"\" src=\"" + baseUrl + "\" onload=\"bcbOverlayShowIframe()\" style=\"width:" + (iframeWidth) + "px;height:" + (iframeHeight) + "px;\" frameborder=\"0\" hspace=\"0\"></iframe><div id=\"bcb-window-close\"><a id=\"bcb-window-close-linkicon\" onclick=\"bcbOverlayRemove()\" href=\"javascript:void(0);\"></a><br/><p id=\"bcb-window-close-linktext\"><a onclick=\"bcbOverlayRemove()\" href=\"javascript:void(0);\">"+closetext+"</a></p></div></div>");
		bcbOverlayPosition(overlayWidth, overlayHeight);
	} catch (e) {
		// do nothing
		console.log(e);
	}
}
function bcbOverlayShowIframe() {
	$("#bcb-load").remove();
	$("#bcb-window").fadeIn("slow");
//	$("#bcb-window").css( { display: "block" } );
}

function bcbOverlayRemove() {
	// TODO: unbind close button click
	$("#bcb-window").fadeOut("slow", function() {
		$("#bcb-window,#bcb-overlay").trigger("unload").unbind().remove();
	});
	$("#bcb-load").remove();
	return false;
}

function bcbOverlayPosition(width, height) {
	$("#bcb-window").css( { 
		marginLeft: '-' + parseInt((width / 2),10) + 'px', 
		width: width + 'px'
	});
	if ( !(jQuery.browser.msie && jQuery.browser.version < 7)) { // take away IE6
		$("#bcb-window").css( { marginTop: '-' + parseInt((height / 2),10) + 'px' } );
	}
}


function bcbOverlayParseQuery (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;
}

