var site = {
	global: {
		init: function() {
			
			$(".close").click(function(){
				$("#"+$(this).attr("rel")).slideUp();
				$(".back").hide();
				return false;
			});
			
			$(".menu a").hover(function(){
				var rel = $(this).attr('rel'); 
				if ( rel ) {
					$("#"+rel).show();
				}
			},function(){
				var rel = $(this).attr('rel'); 
				if ( rel ) {
					$("#"+rel).hide();
				}
			});
			
			$(".submenu").hover(function(){ $(this).show() }, function(){ $(this).hide() })
			
			$("form.ajax").submit(function(){
				var form = $(this);
				
				if ( !site.utils.checkForm(form) ) return false;
				
				$.ajax({
					type: form.attr("method"),
					dataType: "json",
					url: form.attr("action"),
					data: form.serialize(),
					beforeSend: function() {
						
					},
					success: function(data){				
						switch (data.result) {
							case 'done':
								site.callbacks[form.attr("config:success")](data, form);
								break;
							case 'error':
								site.callbacks[form.attr("config:error")](data, form);
								break;
						}
					},
					error: function() {
					}
				});
		
				return false;
			});

			$("a.ajax").click(function(){
				var a = $(this);
				if ( a.attr('config:before') ) {
					var res = window[a.attr("config:before")](a);
					if ( !res ) return false;
				}
				$.ajax({
					type: "GET",
					dataType: 'json',
					url: a.attr('href'),			
					beforeSend: function() {
						
					},
					success: function(data){
						switch (data.result) {
							case 'error':
								site.callbacks[a.attr("config:error")](data, a);
								break;
							case 'done':
								site.callbacks[a.attr("config:success")](data, a);
								break;
						}
					},
					error: function() {
					}
				});
				return false;
			});

			$(".button.submit").click(function(){
				$("#"+$(this).attr("rel")).submit();
				return false;
			});
		}
	},
	
	designers: {
		init: function() {
		}
	},
	
	designer: {
		init: function() {
			$(".send-message").click(function(){
				$(".back").show();
				$("#send-message").slideDown();
				return false;
			});
		}
	},
	
	callbacks: {
		feedback_done: function(data, form) {
			form.hide();
			$("#feedback-done").show();
		}
	},
	
	utils: {
		checkForm: function(form) {
			var res = true;
			var current_res = true;
			$(":input.required", form).each(function() {
				current_res = true;
				if ( $(this).is('select') && (!$("option:selected", $(this)).length || $("option:selected", $(this)).val() == 0) ) {
					res = false;
					current_res = false;
					$("label[for='"+$(this).attr("name")+"']", form).addClass("required-error");
				}
				else if ( $(this).hasClass('with-label') && $(this).val() == $(this).attr('rel') ) {
					res = false;
					current_res = false;
				}
				else {
					if ( $(this).val() == '' ) {				
						res = false;
						current_res = false;
					}
					else if ( $(this).hasClass("email") ) {
						var emailTest = '^[_\\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z_-]+\\.)+[a-z]{2,4}$';
						var regex = new RegExp(emailTest);
						if ( $(this).val() != '' && !regex.test($(this).val()) ) {
							res = false;
							current_res = false;
						}
					}
				}
				
				if ( !current_res ) {
					if ( $(this).hasClass('with-label') )
						$(this).addClass("required-error");
					else
						//$("label[for='"+$(this).attr("name")+"']", form).addClass("required-error");
						$(this).addClass("required-error");
				}
			});
			$(":checkbox.required", form).each(function(){
				if ( !$(this).is(":checked") ) {
					res = false;
					$("label[for='"+$(this).attr("name")+"']", form).addClass("required-error");
				}
			})
			setTimeout(function() { 
				$('.required-error', form).removeClass("required-error");
				$('.email-error', form).removeClass("email-error"); 
			}, 5000);
			return res;
		}
	}

}

$(document).ready(site.global.init);

function showGalleryImage(id) {
	$(".gallery-image").hide();
	$("#image-"+id).fadeIn()
}
