$(function(){ jbox.init();});

jbox = {
	IE6 		: (navigator.appName == "Microsoft Internet Explorer" && navigator.appVersion.substr(22, 1) == "6") ? true : false,		//Checking for IE6
	reposition_speed : 250,
	opacity_speed : 300,
	j_left		: 0, j_top : 0, j_width : 0, j_height : 0,
	j_title		: null, j_modal	: false,
	j_gallery_id: null, j_id : null, j_img_id : null, animatable: false,

	init:function(){			//Initializing JBox
		$(".jbox").live("click", function(event){
			event.stopPropagation();
			jbox.show_jbox(this);
			//$(this).blur();
		});
		$(".remove_jbox").live("click", function(){jbox.remove_jbox();});		//Initializing remove JBox for remove_jbox class
		$(".close_jbox").live("click", function(){jbox.remove_jbox();});		//Initializing remove JBox for close_jbox id
	},
	
	jbox_parse_query:function(obj_query_string){								//Parsing query string and returning array of pairs between "|" name = value
		var obj_params = {};
		if (!obj_query_string) return obj_params;	// return empty object
		var pairs = obj_query_string.replace(/^[^\?]+\??/,'').replace(/\;.*/,'').split(/[|]/);
		for (var i = 0; i < pairs.length; i++ ){
			var key_val = pairs[i].split('=');
			if ( !key_val || key_val.length != 2 ) continue;
			obj_params[unescape(key_val[0])] = unescape(key_val[1]).replace(/\+/g, ' ');
		}
		return obj_params;
	},
	
	get_jbox_props:function(clicked_obj){										//Getting JBox properties
		var jbox_params 	= jbox.jbox_parse_query($(clicked_obj).attr("href") || $(clicked_obj).attr("rel") || null);
		jbox.j_modal		= eval(jbox_params['modal']) || false;
		jbox.j_gallery_id	= jbox_params['gallery_id'] || null;
		jbox.j_id			= jbox_params['jbox_id'] || "jbox_default";
		jbox.j_site			= jbox_params['site'] || null;
		jbox.j_default_div	= jbox_params['jbox_default_div'] || null;
		jbox.j_img_id		= jbox_params['img_id'] || null;
		jbox.j_title 		= $(clicked_obj).attr("title") || $(clicked_obj).attr("alt") || jbox_params['title'] || null;
		jbox.j_width 		= jbox_params['width'] || $("#" + jbox_params['jbox_id']).width();		// || $(clicked_obj).width();
		jbox.j_height 		= jbox_params['height'] || $("#" + jbox_params['jbox_id']).height();	// || $(clicked_obj).height();
		jbox.j_top 			= (($(window).height() < jbox.j_height) ? 50 : (($(window).height() - jbox.j_height) / 2)) + jbox.get_scroll();
		jbox.j_left 		= ($(window).width() - jbox.j_width) / 2;
	},
	
	get_scroll: function(){return window.pageYOffset || document.documentElement && document.documentElement.scrollTop || document.body.scrollTop;},
	
	jbox_modal:function(jbox_obj, _clicked_obj, modal_version, gallery_id){						//Enabeling Modal
		if (modal_version) jbox.close_button($(jbox_obj), true);
		$(document).keydown(function(event){
			switch (event.keyCode){
			case 27:
				jbox.remove_jbox();	//Enabeling close JBox on ESC
				break;
			case 37:
				$("#galleryControls a.lt").trigger("click");
				break;
			case 39:
				$("#galleryControls a.rt").trigger("click");
			}
		});
	},
		
	show_jbox:function(clicked_obj){
		jbox.get_jbox_props($(clicked_obj));
		if($("#jbox_bg").length == 0) $("body").append("<div id=\"jbox_bg\"></div>");
		$("#jbox_bg").animate({"opacity": 0.75}, jbox.opacity_speed);
		if(jbox.j_default_div != null) $("#" + jbox.j_id + ">div").hide().siblings("#" + jbox.j_default_div).show();

		var jbox_div = $("#" + jbox.j_id).length > 0 ? $("#" + jbox.j_id) : $("<div id=\"" + jbox.j_id + "\" class=\"hidden_jbox\"></div>");
		if(jbox.j_title != null) $(jbox_div).append("<div id=\"" + jbox.j_id + "_title\" class=\"jbox_title\">" + jbox.j_title + "</div>");
		if(jbox.j_site != null) $(jbox_div).html($("<iframe src=\"" + jbox.j_site + "\" frameborder=\"0\" width=\"" + jbox.j_width + "\" height=\"" + jbox.j_height + "\"></iframe>")); 
		$("body").append($(jbox_div).addClass("jbox_container").css({"top": jbox.j_top + "px", "left": jbox.j_left + "px", "width": jbox.j_width + "px", "height": jbox.j_height + "px"}).removeClass("hidden_jbox"));

		if(jbox.j_modal) jbox.jbox_modal($("#" + jbox.j_id), $(clicked_obj), jbox.j_modal, jbox.j_gallery_id);

		jboxReady($(clicked_obj), $(jbox_div));
		/*To Fix*/
		//$(window).resize(function(e){jbox.reposition_jbox(e);});				//Re-position Jbox on window resize
		//$(window).scroll(function(e){jbox.reposition_jbox(e);});				//Re-position Jbox on window scroll
	},
	
	reposition_jbox:function(e){
		/*To Fix*/
		var _top = (($(window).height() < jbox.j_height) ? 50 : (($(window).height() - jbox.j_height) / 2)) + jbox.get_scroll() + "px";
		var _left = ($(window).width() - $(".jbox_container").width())/2 + "px";
		//console.log("_top!!! = " + _top + " -.-.- _left!!! = " + _left);
		//console.log(e.target);
		if(!this.animatable){	//Re-position Jbox
			console.log("_top = " + _top + " -.-.- _left = " + _left + " -.-.- anim " + this.animatable);
			$("#" + this.j_id).animate({"top" : _top, "left" : _left}, jbox.reposition_speed, function(){
				jbox.animatable = false;
				if(e != undefined){
					var t = setTimeout("jbox.reposition_jbox()",500);
				}
			});
			this.animatable = true;
		}
		console.log("_top = " + _top + " -.-.- _left = " + _left);
	},
	
	loading_animation:function(obj_id, action){													//Creating Loading animation
		var loading_animation = document.createElement("div");
		$(loading_animation).addClass("loading_animation").css({"height": $(obj_id).height(), "width": $(obj_id).width()});
		action == "load" ? $(obj_id).append($(loading_animation)) : $(".loading_animation").remove();
	},

	remove_jbox:function(){																		//Removing JBox
		$(document).unbind("keydown");
		$("#" + this.j_id).fadeOut("fast", function(){
			$(this).remove();
			$("#jbox_bg").fadeOut("fast", function(){
				$(this).remove();
			});
		});
		$("#contact_us").show();
		$("#thank_you").hide();
	},
	
	close_button:function(_this, is_gallery){													//Creating Close button
		var jbox_close = $(".close_jbox").length > 0 ? $(".close_jbox") : ("<div class=\"close_jbox\" alt=\"Close\">Close [X]</div>");
		$("#jbox_bg").live("click", function(){jbox.remove_jbox();});
		

		if(is_gallery) $(jbox_close).css({"top" : "0px", "right" : "0px"});						//Close button for Non-Gallery JBox
		else $(jbox_close).html("Close [X]").css({"top"	: -($(".close_jbox").height() + jbox.get_padding(".close_jbox").height) + "px", "right"	: "0px"});
		$(jbox_close).show();
		$(_this).append($(jbox_close));															//Appending close button the JBox
	},

	get_padding:function(obj){															//Getting close button padding
		var paddingTop = $(obj).css("padding-top") ? parseInt($(obj).css("padding-top").replace(/px/,'')) : 0;
		var paddingBottom = $(obj).css("padding-bottom") ? parseInt($(obj).css("padding-bottom").replace(/px/,'')) : 0;
		var paddingLeft = $(obj).css("padding-left") ? parseInt($(obj).css("padding-left").replace(/px/,'')) : 0;
		var paddingRight = $(obj).css("padding-right") ? parseInt($(obj).css("padding-right").replace(/px/,'')) : 0;
		return ({height	: paddingTop + paddingBottom, width	: paddingLeft + paddingRight});
	}
}
