// JavaScript Document

var App; if (!App) App = {};
var Init; if (!Init) Init = {};
var Options; if (!Options) Options = {};

if (!App.Init) App.Init = {};

App.Init.AjaxLogin = function(params,_opts) {
	
	_opts = jQuery.extend({
		'success' : function(data) { },
		'error' : function(data) { }
	}, _opts);
	
	$.post("/"+App.lang+"/login.json",params,function(data) {
		
		if(!data.error && data.username) {
			App.user = data;
			if(_opts.success && typeof(_opts.success) == "function") {
				_opts.success(data);
			}
		} else {
			if(_opts.error && typeof(_opts.error) == "function") {
				_opts.error(data);
			}
		}
		
	},"json");

};

App.Init.DropDownMenu = function(selector,_opts) {
	
	var $el = $(selector);
	if(!$el.length) { return; }
	
	_opts = jQuery.extend({
		'item' : 'li',
		'submenu' : '.submenu',
		'closeDelay' : 150,
		'showDelay' : 100,
		'effect' : 'fade',
		'effectDelay' : 50
	}, _opts);
	
	switch(_opts.effect) {
		case "slide":
			var showFunction = "slideDown";
			var hideFunction = "slideUp";
		break;
		case "fade":
			var showFunction = "fadeIn";
			var hideFunction = "fadeOut";
		break;
		default:
			var showFunction = "show";
			var hideFunction = "hide";
		break;
	}
	
	$el.find(_opts.item).each(function() {
		if($(this).find(_opts.submenu).length) {	   
			var menuHideTimeout = null;
			var menuShowTimeout = null;
			$(this).mouseover(function() {
				if(!menuShowTimeout) {
					if(menuHideTimeout) {
						window.clearTimeout(menuHideTimeout);
						menuHideTimeout = null;
					}
					var $li = $(this);
					menuShowTimeout = window.setTimeout(function() {
						if($li.find(_opts.submenu).length && !$li.find(_opts.submenu).is(":visible")) {
							if($li.is(".small")) {
								$li.find(_opts.submenu).css("backgroundImage","url(/statics/img/submenu_bg_small.png)");
								$li.find(_opts.submenu).css("backgroundPosition","-5px 0");
							} else {
								$li.find(_opts.submenu).css("backgroundImage","url(/statics/img/submenu_bg.png)");
								$li.find(_opts.submenu).css("backgroundPosition","-10px 0");
							}
							if($li.is(".prices")) {
								$li.find(_opts.submenu).css("backgroundPosition","-17px 0");
							}
							$li.find(_opts.submenu).css("backgroundRepeat","no-repeat");
							$li.find("a").eq(0).addClass("hover");
							
							$li.find(_opts.submenu).css("left",($li.find("a:eq(0)").offset().left-$li.parents("ul").offset().left)+"px");
							$li.find(_opts.submenu).css("top",($li.outerHeight()+10)+"px");
							$li.find(_opts.submenu)[showFunction](_opts.effectDelay,function() {
								$(this).css("filter","");
							});
						}
					},_opts.showDelay);
				}
			}).mouseout(function() {
				if(menuHideTimeout) {
					window.clearTimeout(menuHideTimeout);
					menuHideTimeout = null;
				}
				if(menuShowTimeout) {
					window.clearTimeout(menuShowTimeout);
					menuShowTimeout = null;
				}
				var $li = $(this);
				menuHideTimeout = window.setTimeout(function() {
					if($li.find(_opts.submenu).length && $li.find(_opts.submenu).is(":visible")) {
						$li.find("a").eq(0).removeClass("hover");
						$li.find(_opts.submenu).css("left",($li.find("a:eq(0)").offset().left-$li.parents("ul").offset().left)+"px");
						$li.find(_opts.submenu).css("top",($li.outerHeight()+10)+"px");
						$li.find(_opts.submenu)[hideFunction](_opts.effectDelay);
					}
				},_opts.closeDelay);
			});
		}
	});

};


App.Init.ImagePreview = function(selector) {
	
	var $el = $(selector);
	if(!$el.length) { return; }
	
	$el.qtip({
		content: "<img src='"+$el.attr("rel")+"' />",
		position: {
			corner: {
				target: 'bottomMiddle', // Position the tooltip above the link
				tooltip: 'topMiddle'
			},
			adjust: {
				screen: true // Keep the tooltip on-screen at all times
			}
		},
		show: { 
			when: 'mouseover', 
			solo: true // Only show one tooltip at a time
		},
		hide: 'mouseout',
		style: {
			tip: true, // Apply a speech bubble tip to the tooltip at the designated tooltip corner
			border: {
				width: 0,
				radius: 4
			},
			width:210,
			name: 'light',
			textAlign: 'center'
		}
	});
	
};


if (!App.Init.Forms) App.Init.Forms = {};
App.Init.Forms.Contact = function(selector) {
	
	var $el = $(selector);
	if(!$el.length) { return; }
	
	var $form = ($el.get(0).tagName.toLowerCase() == "form") ? $el:$el.find("form");
	
	$form.submit(function(e) {
		e.preventDefault();
		var form = $(this);
		form.find("div.success").remove();
		form.find("div.error").remove();
		if(form.validate()) {
			form.block(Options.block_contact);
			$.post("/"+App.lang+"/contact.json",form.serialize(),function(data) {
				form.unblock();
				if(!data.error && data.success) {
					if(App.Stats && App.Stats.event) { App.Stats.event("Contact", "Write", form.find("input[name=email]").val()); }
					form.prepend("<div class='success' style='cursor:pointer;'>"+data.msg+"</div>");
					form.find("textarea[name=message]").val("");
					form.find("input.hint").hint("show");
				} else {
					form.prepend("<div class='error'>"+data.error+"</div>");
				}
				form.find("div.success, div.error").css("cursor","pointer").click(function() { $(this).remove(); });
			}, "json");
		}
	});

};
