/********************************************************
	Netkata WEB SOLUTIONS
	visit www.netkata.com or email info@netkata.com
*********************************************************/

// namespace
if (!namespace) {
	var namespace = {};
		namespace.ui = {};		// user interface 
		namespace.ev = {};		// event publish / subscribe system
}

// event delegation
jQuery.fn.delegate = function(eventType, rules) {
  return this.bind(eventType, function(e) {
    var target = $(e.target);
    for(var selector in rules)
      if(target.is(selector)) 
        return rules[selector].apply(this, arguments)
  })
}


namespace.ui = new function() {
	var that = this;
	
	// set element heights and widths
	this.layout = new function() {	
		this.recalculate = function() {
			var h = $(window).height();
			// .. 
		}
	};
};

this.screenshotPreview = function(){	
	/* CONFIG */
		
	var	xOffset = -150;
	var	yOffset = 600;
		
		// these 2 variable determine popup's distance from the cursor
		// you might want to adjust to get the right result
		
	/* END CONFIG */
	$(".screenshot").hover(function(e){
		this.t = this.title;
		this.title = "";	
		var c = (this.t != "") ? "<br/>" + this.t : "";
		var tooltipImg = new Image();
		tooltipImg.src = $(this).attr('rel');
		var height = tooltipImg.height;
		var width = tooltipImg.width;
		$("body").append("<img id='screenshot' src='"+ $(this).attr('rel') +"' alt='url preview' />");			
		xOffset = -width/2;
		yOffset = height+45;
		$("#screenshot")
			.css("top",(e.pageY - yOffset) + "px")
			.css("left",(e.pageX + xOffset) + "px")
			.fadeIn("fast");						
    },function(){
		this.title = this.t;	
		$("#screenshot").remove();
    });	
	
	$(".screenshot").mousemove(function(e){
		$("#screenshot")
			.css("top",(e.pageY - yOffset) + "px")
			.css("left",(e.pageX + xOffset) + "px");
	});			
};


/********************************************************************** EVENTS */
// 	Global events pub/sub manager:
namespace.ev = new function() {
	var that = this;
	
	// app start
	$(document).bind("init.data", function(e, jsonData) {
		// eg. namespace.init(jsonData);
	});
			// to trigger an evet:
			// $(document).trigger("init.data", [someObject, Or, Variable]);
		
	// UI events bound to DOM nodes
	/* 
	this.bindDomEvents = function() {
		$("#top-menu").delegate("click", {
			"#top-menu-map" : function(e){ namespace.ui.view.setActive('map',e); },
			"#top-menu-fleet" : function(e){ namespace.ui.view.setActive('fleet',e); },
		});
	};
	*/
		
			
	// window resize (crazy timeouts for IE6)
	var resizeTimer = null;	
	$(window).resize( function() {
		if (resizeTimer) { clearTimeout(resizeTimer); };
//		resizeTimer = setTimeout(function() { namespace.ui.recalculate(); }, 100);
	});
};


/********************************************************************** APP INIT */
$(document).ready(initApp);

function initApp() {
	screenshotPreview();
}
