/**
 * app.js @ emocinisintelektas.lt
 */

if (typeof($app) == 'undefined'){ var $app = {}; };

jQuery.extend($app, {
	debug: 				true,
	initialized:		false,
	i18n:{},
	ajax:	{
		timeout:	15000,
		cache: 		false
	},	
	opts: {
		formValidation:	{
			'ceceabaebmoduleform_addregistration':{
				autoValidate: false,
				rules: {
					'ceceabaebname':	{ required:true, minlength:3, maxlength:125 },	
					'ceceabaebemail':	{ required:true, email:true, maxlength:125 },
					'ceceabaebatype':	{ required:true },
					'ceceabaebage' :	{ digits: true, minlength:1, maxlength:2},
					'ceceabaebphone' :	{ minlength:7, maxlength:125},
					'ceceabaebcomment': { maxlength:1000 }
				},
				messages:{},
				submitHandler: function(f){	$app.setup('formSubmitHandler',{form:f,container:'#formSeminarRegistrationContainer'}) }
			},
			'm08227moduleform_newsletter-signup':{
				autoValidate: true,
				rules: {
					'm08227email':	{ required:true, email:true }
				},
				messages:{},
				submitHandler: function(f){	$app.setup('formSubmitHandler',{form:f,container:'div.portlet.portlet-newsletter-signup'}) }
			}
		}
	},
	initialize: function() {		
		var args = arguments;
		if (typeof($app.base) != 'string')
			return false;		
		if (!$app.initialized){		
			jQuery.ajaxSetup($app.ajax);
			if(typeof($app.language) == 'string'){
				//$app.loadScript($app.base + 'js/app.i18n/i18n-' + $app.language + '.js');
				jQuery.ajax({url:$app.base + 'js/app.i18n/i18n-' + $app.language + '.js',type:'GET',dataType:'script',async:false,cache:true});
			}
			if(args.length){
				jQuery(document).ready(function(){
					jQuery.each(args,function(i,v){$app.setup(v);});
					jQuery.extend($app,{initialized:true});
				});
			}
		}
		return true;
	},
	loadScript: function(filename){
        $app.log('loadScript: filename=' + filename);
		if(jQuery.browser.safari) {
			jQuery.ajax({url:filename,type:'GET',dataType:'script',async:false,cache:true});
		} else {
			if (jQuery.browser.msie) {
				document.write('<script charset="utf-8" type="text/javascript" src="'+filename+'"></'+'script>');
			} else {
				var h = document.getElementsByTagName('head')[0], s = document.createElement('script');
				s.setAttribute('type', 'text/javascript');
				s.setAttribute('language', 'javascript');
				s.setAttribute('src', filename);				
				h.appendChild(s);
			}
		}
    },
	setup: function() {		
		var $appSetupCallbacks = {
			
			formValidationSetup: function(){				
				var formId = (arguments[0]||false);
				if($app.initialized == false){				
					var _i18nMsgs = false;					
					if(!jQuery.isEmptyObject($app.i18n) && (_i18nMsgs = jQuery.isPlainObject($app.i18n.formValidationDefaultMessages)))
							jQuery.extend(jQuery.validator.messages,$app.i18n.formValidationDefaultMessages);
					
					jQuery.validator.setDefaults({
						submitHandler: function(f) { f.submit(); }
					});
				}
				
				jQuery.each($app.opts.formValidation,function(f,opts){
					if((!formId && opts.autoValidate!==true) || (formId && formId != f))
						return;
					var f = jQuery('#'+f);
					if(f.length && opts.rules){
						f.validate(opts);
					}
				});				
			},
			
			formSetup: function(){
				var opts = arguments[0], elF = $('#'+opts.id);
				if(!elF.length)
					return;
				
				switch(opts.id){
					case 'ceceabaebmoduleform_addregistration':						
						$app.setup('formValidation',opts.id);
						elF.find('select[name=ceceabaebatype]').bind('change',function(){							
							elF.find('#atype_other')[((this.selectedIndex == 4)?'show':'hide')]();							
						});						
						break;
					case 'formSeminarFilter':
						
						elF.find('select[name=dddfafadfbeccgroup_id],select[name=dddfafadfbeccyearmonth]').bind('change',function(ev){
							ev.preventDefault();
							var aPs = [], 
								iA = $.trim(elF.find('select[name=dddfafadfbeccgroup_id] option[value!=""]:selected').val()), 
								iB = $.trim(elF.find('select[name=dddfafadfbeccyearmonth] option[value!=""]:selected').val()),
								sA = '';
							if(!elF.data('action'))
								elF.data('action',elF.attr('action'));	
							if(iA!=''){
								 aPs.push('kursas/'+iA); if(iB!='') aPs.push('data/'+iB);								 
							}
							aPs.push(opts.returnid);
							elF[0].action = elF.data('action')+aPs.join('/');
							elF.find('select[name=dddfafadfbeccgroup_id],select[name=dddfafadfbeccyearmonth]').attr('disabled','disabled');
							elF[0].submit();	
							return false;
						});
						
						break;
				}		
			},
			formSubmitHandlerSetup: function(o){
				var elF = $(o.form), 
					elC = $(o.container);
				if(!elF.length || !elC.length)
					return;
				var url = elF.attr('action'), 
					params = elF.serialize();
		
				elF.find('input[type=submit],button[type=submit]').attr('disabled','disabled');
				elC.html('<div class="message"><strong>Palaukite...</strong></div>');				
				//setTimeout(function(){ 
					jQuery.ajax({
						'url': url,
						'method': 'post',
						'data': params,
						'success': function(d){ elC.html(''); elC.html(d); },
						'error': function(){}
					});
				//}, 100);				
			},
			lightboxSetup: function(){				
				var els = $('a[rel=lightbox]');
				if (!els.length) return false;
								
				$(els).lightBox({ 
					txtImage: '',
					txtOf: ' / ',
					overlayBgColor: '#000000',
					overlayOpacity: 0.8,
					imageLoading:	$app.base + 'img/lightbox/ico-loading.gif',
					imageBtnClose:	$app.base + 'img/lightbox/btn-close.gif',
					imageBtnPrev:	$app.base + 'img/lightbox/btn-prev.gif',
					imageBtnNext:	$app.base + 'img/lightbox/btn-next.gif',
					imageBlank:		$app.base + 'img/lightbox/blank.gif'
				}).click(function(){
					$('#lightbox-nav-btnPrev').attr('title', '<<');
					$('#lightbox-nav-btnNext').attr('title', '>>');
					$('#lightbox-secNav-btnClose').attr('title', 'x');			
				});
								
				return true;
			}
		};
		
		var callback = arguments[0]+'Setup';
		if (jQuery.isFunction($appSetupCallbacks[callback]))
			$app.log('setup: call=$app.'+callback+': ret='+$appSetupCallbacks[callback](arguments[1]||null));			
	},
	log: function() {		
		if (window['loadFirebugConsole'] && $app.debug && window.console && window.console.log && arguments.length) window.console.log.apply($app, arguments);			
	}
	
});

$app.initialize('formValidation','lightbox');
