/**
 * Plan Selector.
 * @author NOSE
 *
 * @requires jquery.js 
 * 
 * @version 1.0.0	initial version			
 */
jQuery.fn.planselecta = function(op) {	
	// defaults
	var defaults =  {
		srcPrintHeader:"http://archhoefe.ch.goethe.ch-meta.net/images/print_header.jpg",
		srcPrintFooter:"http://archhoefe.ch.goethe.ch-meta.net/images/print_footer.jpg"
	};
	jQuery.extend(defaults, op);
	
	
	
	
	// PLAN
	var pids = new Array();
	var prooms = new Array();
	var pfloors = new Array();
	var pareas = new Array();
	var pusage = new Array();
	var pimages = jQuery(".plan img",this);
	var rows = new Array();
	
	// prepare
	var offset = 1; // header
	var allRows = jQuery("table tr",this);
	
	// parse data
	for (var i = offset; i < allRows.length; i++) {
		var ai = i-offset;
		
		// row
		var row = allRows[i];
		
		// data
		rows[ai] = row; 
		
		// id
		var tds = jQuery("td",row);
		var id = jQuery.trim(jQuery(tds[0]).html());
		var room = id;
		pids[ai] = id;
		prooms[ai] = id;
		
		// floor
		var f = jQuery.trim(jQuery(tds[1]).html());
		pfloors[ai] = f;
		
		// area
		var area= jQuery.trim(jQuery(tds[2]).html());
		pareas[ai] = area;
		
		// usage
		//var usage = jQuery.trim(jQuery("#subnavigation ul li.active a").html());
		var usage = jQuery.trim(jQuery("#subnavigation ul li.open a").html());
		pusage[ai] = usage;
		
		// prepare links
		jQuery("a",tds[3]).addClass("info");
		var cl = jQuery("a",tds[4]).attr("href");
		var clf = cl + "?contact="+usage+"&floor="+f+"&room="+room;
		jQuery("a",tds[4]).attr("href",clf);
		
		// event
		jQuery(row).bind("mouseenter",{"row":ai},selectaOver);
		jQuery(row).bind("mouseleave",{"row":ai},selectaOut);
		
	}
	
	
	
	
	/**
	* Selector over.
	*/
	function selectaOver(ev) {
		var index = ev.data.row;
		
		// hide images
		for (var i = 0; i < pimages.length; i++) {
			jQuery(pimages[i]).hide();	
		}
		
		// show image
		jQuery(pimages[index+1]).show();
		
		// hover
		jQuery(rows[index]).addClass("hover");
	}
	
	
	/**
	* Selector over.
	*/
	function selectaOut(ev) {
		var index = ev.data.row;
		
		// hide images
		for (var i = 0; i < pimages.length; i++) {
			jQuery(pimages[i]).hide();	
		}
		
		// show image
		jQuery(pimages[0]).show();
		
		// hover
		jQuery(rows[index]).removeClass("hover");
	}
	
	
	// BLOWUP
	generateMarkup();
	
	// self
	var self = this;
	var bContainer = jQuery("#blowup");
	var bWindow = jQuery("#bWindow");
	var bOverlay = jQuery("#bOverlay");
	var bContent = jQuery("#bContent");
	var bTitle = jQuery("#bTitle");
	var bClose = jQuery("#bClose");
	var bOverlay = jQuery("#bOverlay");
	var bPrint = jQuery("#bPrint");
	
	// plan info
	var pdRoomNb = jQuery("#pdRoomNb");
	var pdFloor = jQuery("#pdFloor");
	var pdArea = jQuery("#pdArea");
	var pdUsage = jQuery("#pdUsage");
	
	// print
	jQuery(bPrint).click(function(){window.print();});
	
	
	
	// hide
	bContainer.hide();
	bContainer.hide();
	
	
	// init
	var bItems = jQuery(".info");
	for (var i = 0; i < bItems.length; i++) {
		// item
		var bItem = bItems[i];
		
		// events
		jQuery(bItem).bind("click",i,showBlowup);
		
	}
	var itemIndex = 0;
	var itemTotal = bItems.length;
	
	// events
	bClose.bind("click",hideBlowup);
	bOverlay.bind("click",hideBlowup);
	
	// browser flags
	if (jQuery.browser.msie) {
		// ie
		jQuery("#blowup").addClass("ie");
		// version
		var v = jQuery.browser.version;
		var vc = "v"+v.charAt(0);
		jQuery("#blowup").addClass(vc);
	}
	if (jQuery.browser.safari) {
		jQuery("#blowup").addClass("safari");
	}
	var browserIE6 = false;
	if (jQuery.browser.msie && jQuery.browser.version < 7) {
		browserIE6 = true;
	}
	if (jQuery.browser.mozilla) {
		var fff = "ff2";
		if (jQuery.browser.version.substring(0,3) == "1.9") {
			fff = "ff3";
		}
		jQuery("#blowup").addClass(fff);
	}
	
	
	/**
	* Generates the markup.
	*/
	function generateMarkup() {
		// code
		var markup = "<div id='blowup'><div id='bOverlay'><!-- --></div><div id='bHeader'><img src='"+defaults.srcPrintHeader+"'/></div><div id='bWindow'><h3 id='bTitle'>Das von ihnen gew&auml;hlte Objekt:</h3><a href='#' title='schliessen' id='bClose'><!-- --></a><a href='#' title='drucken' id='bPrint'>drucken</a><div id='bDetails'><p><span class='pdLabel'>Ebene:</span> <span id='pdFloor'>0</span><br/><span class='pdLabel'>Raum:</span> <span id='pdRoomNb'>0</span><br/><span class='pdLabel'>Nutzung:</span> <span id='pdUsage'>0</span><br/><span class='pdLabel'>Mietfläche:</span> <span id='pdArea'>0</span></p></div><div id='bContent'></div></div><div id='bFooter'><img src='"+defaults.srcPrintFooter+"'/></div></div>";
		// append
		jQuery("body").append(markup);
		
		
	}
	
	/**
	* Shows the blowup.
	*/
	function showBlowup(e) {
		show(e.data);
		jQuery("body").addClass("blowup");
		return false;
	}
	
	/**
	* Hides the blowup.
	*/
	function hideBlowup() {
		bContainer.hide();
		jQuery("body").removeClass("blowup");
		return false;
	}
	
	/**
	* Shows the blowup.
	*/
	function show(i) {
		// check
		if (i >= 0 && i < itemTotal) {
			// show blowup
			bContainer.show();
			
			// index
			itemIndex = i;
			
			// remove data
			var bData = jQuery("#bData").remove();
				
				
			// href
			var bi = bItems[itemIndex];
			var h = jQuery(bi).attr("href");
			var data = "";
		
			// type
			var hType = h.substring(h.length-3,h.length);
		
		
			// images
			if (hType == "jpg" || hType == "png" || hType == "gif") {
				
				// preload
				var imgPreloader = new Image();
				imgPreloader.onload = function(){	
					// reset
					imgPreloader.onload = null;
					
					// data
					data = "<img id='bData' src='"+h+"' />";
					
					// append
					jQuery("#bContent").append(data);
					jQuery("#bData").hide();
			
					// update info
					pdRoomNb.html(prooms[itemIndex]);
					pdFloor.html(pfloors[itemIndex]);
					pdUsage.html(pusage[itemIndex]);
					pdArea.html(pareas[itemIndex]);
			
					
					// size
					var imgWidth = imgPreloader.width;
					var imgHeight = imgPreloader.height;
					resizeBlowup(imgWidth,imgHeight);
		
					// show
					jQuery("#bData").fadeIn("fast");
				}
				imgPreloader.src = h;
			}
		}
		
			
		// return 
		return false;
	}
	
	/*
	* Resizes the blowup.
	*/
	function resizeBlowup(imgWidth,imgHeight) {
		
		var paddingVertical = 0;
		var paddingHorizontal = 0;
		
		// paddings
		var pTop = jQuery(bContent).css("padding-top");
		if (pTop.indexOf('px') >= 0) {
			pTop = parseFloat(pTop.substring(0,pTop.indexOf('p')));
		}
		var pBottom = jQuery(bContent).css("padding-bottom");
		if (pBottom.indexOf('px') >= 0) {
				pBottom = parseFloat(pBottom.substring(0,pBottom.indexOf('p')));
		}
		paddingVertical = pTop + pBottom;
	
		var pLeft = jQuery(bContent).css("padding-left");
		if (pLeft.indexOf('px') >= 0) {
			pLeft = parseFloat(pLeft.substring(0,pLeft.indexOf('p')));
		}
		var pRight = jQuery(bContent).css("padding-right");
		if (pRight.indexOf('px') >= 0) {
			pRight = parseFloat(pRight.substring(0,pRight.indexOf('p')));
		}
		paddingHorizontal = pLeft + pRight;
		
		// size
		var nWidth = imgWidth+paddingHorizontal;
		var nHeight = imgHeight+paddingVertical;
					
		jQuery(bWindow).width(imgWidth+paddingHorizontal);
		jQuery(bWindow).height(imgHeight+paddingVertical);
					
		// position
		var bWidth = bWindow.width();
		var bHeight = bWindow.height();
		var sWidth = jQuery(window).width();
		var sHeight = jQuery(window).height();
		
		var ml = bWidth / 2;
		var mt = bHeight / 2;
		
		bWindow.css("margin-left",-ml+"px");
		if ( !browserIE6 ) { // take away IE6
			bWindow.css("margin-top",-mt+"px");
		}
	}
	
  
    // return
    return this;
};


