var site = {};

(function($){

	var Site = function(){
		
		this.login = function(opts){
			
			var form = $(opts.form),
				email = form.find(opts.email),
				pass = form.find(opts.password);					
			
			form.find('input:submit').bind('click',function(e){
				e.preventDefault();				
				opts.debug && console.log && console.log('Form exist:' + form.length + ', e-mail:' + email.val() + ', password:' + pass.val());
				if(email.val() == '' || pass.val() == '')return;	
				$.ajax({
					cache:false,
					async:false,
					type:form.attr('method'),
					data:{email: email.val(), password: pass.val()},
					url:form.attr('action'),
					success:function(msg) {
						if(msg.toString() == 'login_error '){
							$('#user-login-error-message').hide();
							$('#user-login-error-message').fadeIn();
						}	
						else if(msg.toString() == 'login_success ')
							window.location.reload();
						else alert('Ismeretlen hiba történt, kérjük próbálja meg később!');
					}
				});
			});		
		}

		
		/** Display Message 1.0 - szoveges uzenetek az oldal tetejen.
		 *  site.display('Laoding...',2000,true);
		 *  message:   	plain text or html		
		 *  duration:   Delay in miliseconds before the message fade out. default value: 0 - infinite
		 *  loading:    Show loading gif animation,	default value: false
		 **/
		this.display = function(){ 
			var markup;			
			var queue = [];		
			var show = function(msg,duration,loading) {	
				if($('.displaymessage').length) {
					queue.push({msg:msg,dur:duration,loading:loading});			
				} else {
					var loader = (loading) ? '<div class="loading"></div>' : '';
					markup = $('<div class="displaymessage"><div class="body">' + loader + msg + '</div></div>');
					if(duration) {
						markup.prependTo('body').fadeIn().delay(duration).fadeOut('normal',function(){$(this).remove();processqueue()});									
					} else {
						markup.prependTo('body').fadeIn();
					}
				}
			} 
			var hide = function() {				
				markup.fadeOut().fadeOut('normal',function(){$(this).remove();processqueue()});
			} 			
			var processqueue = function(){
				if(queue.length){
					var obj = queue.shift();
					show(obj.msg,obj.dur,obj.loading);
				}
			}
			return {
				show:show,
				hide:hide
			}
		}();	

		// depends jquery.form.js
		this.validation = function(opts){			
			
			var urlap = $(opts.form);
			var button = urlap.find('.submitButton');
			
			var defaults = {	
				ajax:true,
				parentTag:'li',
				rules:null,
				messages:null,				
				errorElement:'label',
				test:{run:false,result:'success'},
				onProcess:function(){},
				onAfter:function(){},
				onSuccess:function(){},
				onError:function(){}
			};		
			
			var settings = $.extend({}, defaults, opts);
			
			var enable = function(button){
				button.bind('click',function(e){
					e.preventDefault();				
					urlap.submit();
				}).bind('mouseover',function(e){ // Fix - Trigger a form validation before submit
					$(this).focus(); 
				});					
			} 			
			var disable = function(button){
				button.unbind('click').bind('click',function(e){e.preventDefault()}).toggleClass('deactivated');				
			} 
			
			enable(button);	
			
			var validator = urlap.validate({
				onkeyup:false
				,errorElement:settings.errorElement
				,parentTag:settings.parentTag
				,rules:settings.rules
				,messages:settings.messages
				,submitHandler: function(form) {
					if(settings.ajax) 
					{
						disable(button);
						//console.log('Validator status: processing');
						settings.onProcess();					
						if (settings.test.run) {
							response = (settings.test.result == 'success') ? 1 : 0;
							setTimeout(function(){
								core(settings,response);																			
							},3000);									
						} else {								
							$(form).ajaxSubmit({
								success:function(response){
									core(settings,response);																									
								}	
							});
						}
					} else {
						form.submit();
					}
				}
			});	
			
			var core = function(settings,response){				
				//console.log('Validator status: After');
				settings.onAfter();
				if (parseFloat(response)===1) {		
					//console.log('Validator status: success');
					settings.onSuccess();
					//urlap.find('textarea').val('');							
				} else {
					//console.log('Validator status: Error');
					settings.onError();
				}
				enable(button);	
				button.toggleClass('deactivated');
			};		
		}
				
	};
	Site.call(site);	
	
	$('a[rel*="external"]').live('click',function(e){
		e.preventDefault();
		window.open($(this).attr('href'), '_blank');
	});
	$('a[rel*="goback"]').live('click',function(e){
		e.preventDefault();
		history.go(-1);
	});	
		
	$(document).ready(function() {	
	
		$('a[rel^="lightbox"]').lightbox({
			fitToScreen: true,
			imageClickClose: false,
			fileLoadingImage: '/includes/lightbox/images/loading.gif',
			fileBottomNavCloseImage: '/includes/lightbox/images/closelabel_hu.gif',
			strings: {
				help: ' \u2190 / P - previous image\u00a0\u00a0\u00a0\u00a0\u2192 / N - next image\u00a0\u00a0\u00a0\u00a0ESC / X - close image gallery',
				prevLinkTitle: 'előző kép',
				nextLinkTitle: 'következő kép',
				prevLinkText:  '&laquo; Előző',
				nextLinkText:  'Következő &raquo;',
				closeTitle: 'kép bezárása',
				image: 'kép ',
				of: ' / '
			}
			
		});

		$('input[placeholder],textarea[placeholder]').placeholder();	
		
		$('#main-slider').slides({
			preload:true,
			preloadImage:'/includes/loader_white.gif',
			effect:'fade',
			crossfade:true,
			fadeSpeed:800,
			hoverPause:true,
			pause:true,
			play:4000		
		});		
		
		$('#gallery-promo-slider').slides({
			preload:true,
			preloadImage:'/includes/loader_white.gif',
			hoverPause:true,
			pause:true,
			play:4000		
		});		
		if ($('#main-slider .slides_container img').length < 2) {
			$('#main-slider .prev').hide();
			$('#main-slider .next').hide();
		}
		
		if($('#promo-player').length) {
			flowplayer("promo-player", "/templates/cmlgist/js/flowplayer/flowplayer-3.2.5.swf", {
				clip: {autoPlay:false,autoBuffering:true},
				plugins: {
					controls: {
						url: '/templates/cmlgist/js/flowplayer/flowplayer.controls-3.2.3.swf',
						play:true,
						volume:true,
						mute:true,
						time:true,
						stop:true,
						playlist:false,
						fullscreen:false,
						scrubber: true
					}
				}
			});
		}
	 
	});		
		
})(jQuery);


	



