var Avizo = {
	applySelectMenu:function(obj){
		if (obj) {
			obj.find('select.selectmenu-template176').selectmenu({style:'dropdown',width:176,icons:null});
			obj.find('select.selectmenu-template250').selectmenu({style:'dropdown',width:250,icons:null});
		} else {
			$('select.selectmenu-template176').selectmenu({style:'dropdown',width:176,icons:null});
			$('select.selectmenu-template250').selectmenu({style:'dropdown',width:250,icons:null});
		}
	},
	login:function(form){
		jQuery.ajax({
			type: 'POST',
			data: jQuery(form).serialize(),
			url: '/user/login/',
			success:function(response){
				response = jQuery(response);
				if (response.find('error').length) {
					if (!jQuery(form).find('.errors').length) {
						jQuery(form).prepend('<div class="errors"></div>');
					}
					jQuery(form).find('.errors').append('<span>'+response.find('error').text()+'</span><br/>');
				} else {
					Avizo.refresh();
				}
			}
		});
	},
	loadChildrenDataByParent:function(parent, child, childValue){
		//jQuery.get('/ajax/podciselniky2/', {'type':parent.attr('name').replace('f_',''),'parent':parent.val()}, function(result){
		var childName = child;
		if (childName instanceof jQuery) {
			childName = child.attr('name');
		}

		jQuery.get('/ajax/ciselnik/', {'id':childName.substr(childName.indexOf('f_')+2),'id_parent_value':parent.val()}, function(result){
			if (!(child instanceof jQuery)) {
				child = $(child);
			}
			child.find('option').remove();
			var option = jQuery('<option>').attr('value', '').text('');
			child.append(option);
			for (var key in result) {
				option = jQuery('<option>').attr('value', key).text(result[key]);
				child.append(option);
			}
			if (parent.val()>0 && childValue>0) {
				child.val(childValue);
			}
		}, 'json');
	},
	initLoadChildrenDataByParent:function(parent, child, childValue){
		parent.change(function(){
			Avizo.loadChildrenDataByParent(parent, child);
		});
		if (parent.val()>0 && childValue>0) {
			//setTimeout(function(parent,child,childValue){return function(){
				Avizo.loadChildrenDataByParent(parent,child,childValue);
			//}}(parent,child,childValue),100);
		} else {
			Avizo.loadChildrenDataByParent(parent, child);
		}
	},
	logout:function(){
		jQuery.ajax({
			type: 'GET',
			url: '/user/logout/',
			success:function(){
				console.log('xxx');
				Avizo.refresh();
			}
		});
	},
	alert:function(text){
		var div = document.createElement('div');
		div.innerHTML=text;
		jQuery(div).dialog();
	},
	redirect:function(url) {
		window.location=url;
	},
	refresh:function() {
		// window.location.reload(true);
		window.location = (window.location+'').split('#',1)[0];
	},
	datepicker:function(el) {
		el.datepicker({
				dateFormat: 'dd. mm. yy',
				dayNames: ["Nede\u013ea", 'Pondelok', 'Utorok', 'Streda', "\u0160tvrtok", "Piatok", "Sobota"],
				dayNamesMin: ['Ne','Po','Ut','St','\u0160t','Pi','So'],
				dayNamesShort: ['Ne','Po','Ut','St','\u0160t','Pi','So'],
				monthNames: ["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"],
				monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'Máj', 'Jún', 'Júl', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'],
				firstDay: 1
				});
	},
	reklama:function(id) {
		var m3_u = (location.protocol=='https:'?'https://www1.avizo.sk/openx/www/delivery/ajs.php':'http://www1.avizo.sk/openx/www/delivery/ajs.php');
		var m3_r = Math.floor(Math.random()*99999999999);
		if (!document.MAX_used) document.MAX_used = ',';
		document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
		document.write ("?zoneid=" + parseInt(id));
		document.write ('&amp;block=1&amp;blockcampaign=1');
		document.write ('&amp;cb=' + m3_r);
		if (Avizo.Registry.get('kategoria_cesta2')) document.write ("&amp;category=" + encodeURI(Avizo.Registry.get('kategoria_cesta2')));
		if (document.MAX_used != ',') document.write ("&amp;exclude=" + document.MAX_used);
		document.write (document.charset ? '&amp;charset='+document.charset : (document.characterSet ? '&amp;charset='+document.characterSet : ''));
		document.write ("&amp;loc=" + escape(window.location));
		if (document.referrer) document.write ("&amp;referer=" + escape(document.referrer));
		if (document.context) document.write ("&context=" + escape(document.context));
		if (document.mmm_fo) document.write ("&amp;mmm_fo=1");
		document.write ("'><\/scr"+"ipt>");
	},
	najnovsie:function(object) {
		jQuery.get('/ajax/najnovsie', function(data, status) {
			if (typeof object == 'string') {
				object = jQuery('#'+object);
			}
			jQuery(object).html(data+'<div class="bgrFooter"></div>');
		});
	},
	nahodne:function(object) {
		jQuery.get('/ajax/nahodne', function(data, status) {
			if (typeof object == 'string') {
				object = jQuery('#'+object);
			}
			jQuery(object).html(data+'<div class="bgrFooter"></div>');
		});
	},
	processRepeatedFormItems:function(context){
		jQuery('.repeated-form-items',context).each(function(){
			var repeatedItemsTable = jQuery(this);
			repeatedItemsTable.find('.repeated-form-items-add-button').append(jQuery('<a href="javascript:void(0)">+</a>').click(function(repeatedItemsTable){
				return function() {
					var repeatedItemsPrefix=repeatedItemsTable.attr('id').replace('repeated_form_items_','');
					var prototypeRow = jQuery(repeatedItemsTable.find('tr').get(1));
					var newRow = prototypeRow.clone(false);
					newRow.find('.ui-selectmenu').remove();
					Avizo.applySelectMenu(newRow);

					var minus = jQuery('<a class="remove_row" href="javascript:void(0);">-</a>');
					minus.click(function(repeatedItemsTable){
						return function(){
							var repeatedItemsPrefix=repeatedItemsTable.attr('id').replace('repeated_form_items_','');
							newRow.remove();
							Avizo.renumberRepeatedFormItems(repeatedItemsTable.find('tr'),repeatedItemsPrefix);
						}
					}(repeatedItemsTable));
					newRow.append(jQuery('<td>').html(minus));

					newRow.find('input').val('');
					//newRow.find(':input').removeAttr('checked').removeAttr('selected'); //zatial asi netreba?

					repeatedItemsTable.find('tr:last').before(newRow);
					Avizo.renumberRepeatedFormItems(repeatedItemsTable.find('tr'),repeatedItemsPrefix);
				};
			}(repeatedItemsTable)));
		});
	},
	zabudnuteHesloSubmit:function(form){
		jQuery(form).find('span.error').text('');
		var email = jQuery(form).find('#mail');
		var result = true;
		if (!Avizo.isValidEmail(email.val())) {
			email.parent().find('span.error').text('Nesprávny formát emailu');
			email.focus();
			result = false;
		}
		return result;
	},

	registerSubmit:function(form){
		jQuery(form).find('span.error').text('');
		var email = jQuery(form).find('#f_email');
		var password = jQuery(form).find('#f_user_password');
		var ukoncitPredcasne = false;
		if (!password.val()) {
			password.parent().find('span.error').text('Nezadali ste heslo');
			password.focus();
			ukoncitPredcasne = true;
		}
		if (!Avizo.isValidEmail(email.val())) {
			email.parent().find('span.error').text('Nesprávny formát emailu');
			email.focus();
			ukoncitPredcasne = true;
		}

		if (ukoncitPredcasne) {
			return false;
		}


		jQuery.post('/user/register', jQuery(form).serialize(), function(data){
			if (data.status == "ok") {
				window.location = "/klientskaZona/profil";
				return;
			} else {
					if (!jQuery(form).find('.errors').length) {
						jQuery(form).prepend('<div class="errors"></div>');
					}

				for (var i in data.errors) {
					var el = jQuery(form).find('#'+i);
					jQuery(form).find('.errors').append('<span>'+data.errors[i]+'</span><br/>');
					// el.parent().find('span.error').text(data.errors[i]);
					el.focus();
				}
			}
		}, 'json');
		return false;
	},
	isValidEmail:function(mail){
		if (!mail) return false;

		var nameSeg = '[a-z0-9_-]+';
		var name = nameSeg+'(\\.'+nameSeg+'){0,6}';
		var domainSeg = '[a-z0-9_-]+';
		var domain = domainSeg+'(\\.'+domainSeg+'){0,6}';
		var tld = '[a-z]{2,6}';
		var pattern = new RegExp('^'+name+'@'+domain+'\\.'+tld+'$','i');
		//var pattern = new RegExp('^([A-Za-z0-9_.-])+@([A-Za-z0-9_.-])+\\.([A-Za-z]{2,6})$','i');
		console.log(mail);
		console.log(pattern);
		console.log(pattern.test(mail));
		if (!pattern.test(mail)){
			return false;
		}



		return true;
	},
	renumberRepeatedFormItems:function(repeatedInstanceContainers,repeatedItemsPrefix){ //mozem sa spolahnut ze repeatedInstanceContainers bude jQuery object?
		var counter=0;
		var nameRegExp=new RegExp('^'+repeatedItemsPrefix+'\\[([^\\]]*)\\]');
		repeatedInstanceContainers.each(function(){
			var repeatedFormElements=jQuery(this).find('input,textarea,select');
			repeatedFormElements.attr('name',function(){
				var result=this.name.replace(nameRegExp,repeatedItemsPrefix+'['+counter+']');
				return result;
			});
			if (repeatedFormElements.length>0) {
				counter++;
			}
		});
	},
	odpovedNaInzerat:function(id){
		var elem = jQuery('<div>');
		elem.dialog({title:'Odpoveď na inzerát'});
		jQuery.get('/inzerat/odpoved',{'id':id},function(response){
			elem.html(response);
			elem.dialog('open');
			var form = elem.find('form');
			form.submit(function(event){
				jQuery.post(form.attr('action'), form.serialize(), function(data) {
					try {
						if (data.status == "ok") {
							elem.text('Správa úspešne odoslaná.');
						} else if (data.status == 'error') {
							var h = jQuery('<span class="error">');
							h.html('Niekde sa stala chyba.');
							var ul = jQuery('<ul>');
							for (var i in data.errors) {
								ul.append(jQuery('<li>').text(data.errors[i]));
							}
							h.append(ul);
							form.append(h);
						}
					} catch(e){
						if (console) {
							console.log(e);
						}
					};
				}, 'json');
				return false;
			});
		},'html');
	},

	Ajax:{
		podatInzerat:function(form){
			try {
				form = jQuery(form);
				jQuery.ajax({
					url:form.attr('action'),
					data:form.serialize(),
					type:'POST',
					dataType:'json',
					success:function(data){Avizo.Ajax.podatInzeratResponse(data, this);}
				});
			} catch(err) {if (typeof console!="undefined") {console.log(err);}}
		},
		podatInzeratResponse:function(data, form) {
			form = jQuery(form);
			if (data.status!="ok") {
				Avizo.alert('chyba');
			} else {
				window.location = data.redirect;
			}
		}
	},

	vyberRubriky:function(url) {
		jQuery.get(url, [], function(data) {
			Avizo.Registry.vloz_inzerat_form.html(data);
			Avizo.applySelectMenu(Avizo.Registry.vloz_inzerat_form);
			//also check the code in jQuery('#pridatinzerat').click(
		});
	},

	tick:function() {
		jQuery.ajax({url:'/ticker.php'});
	},

	lightbox:function(selector) {
		var galleryElement = jQuery(selector);
		Avizo.Registry.set('gallery-lightbox-aktualny-obrazok', jQuery('a.mini:first'));
		galleryElement.find('a.big').unbind('click').click(function(){Avizo.Registry.get('gallery-lightbox-aktualny-obrazok').trigger('click');return false;});
		galleryElement.find('a.mini').lightBox({
			fixedNavigation:true,
			imageLoading:			'/static/js/lib/jquery-lightbox/images/lightbox-ico-loading.gif',
			imageBtnPrev:			'/static/js/lib/jquery-lightbox/images/lightbox-btn-prev.gif',
			imageBtnNext:			'/static/js/lib/jquery-lightbox/images/lightbox-btn-next.gif',
			imageBtnClose:			'/static/js/lib/jquery-lightbox/images/lightbox-btn-close.gif',
			imageBlank:				'/static/js/lib/jquery-lightbox/images/lightbox-blank.gif'
		});
	},

	galleryMouseOver:function(file1, file2, element) {
		jQuery("#gallery a.big img").attr('src', file1);
		jQuery("#gallery a.big").attr('href', file2);
		Avizo.Registry.set('gallery-lightbox-aktualny-obrazok', jQuery(element));
	},

	passwordIsWeak:function(string) {
		if (string.length < 5) {
			return "Heslo je príliš krátke";
		}
		return false;
	},

	handlePasswordWeakness:function(passwordElement) {
		passwordElement.keyup(function(){
			var result = Avizo.passwordIsWeak(passwordElement.val());
			var text;
			if (result) {
				text = result;
			} else {
				text = "";
			}
			passwordElement.parent().find('span.error').text(text);
		});
	},

	prihlasovaciButtonClick:function() {
		var el;
		if (typeof Avizo.Registry.login_form == 'undefined') {
			el=jQuery('#_login');
			el.css('display:block;');
			el.dialog({resizable:false,title:'Prihlásenie do www.avizo.sk', autoOpen:false});
			Avizo.Registry.login_form = el;
		}
		el = Avizo.Registry.login_form;

		el.dialog('open');
	},

	registrationButtonClick:function() {
		if (typeof Avizo.Registry.registration_form == 'undefined') {
			var rf = Avizo.Registry.registration_form = jQuery('<div style="text-align:left">');
			rf.load('/user/register/',[],function(){
				rf.dialog({resizable:false,title:'Registrácia na www.avizo.sk', autoOpen:true, width: "625px"}).bgiframe();
				Avizo.applySelectMenu(rf);
				Avizo.processRepeatedFormItems(rf);
			})
		} else {
			Avizo.Registry.registration_form.dialog('open');
		}
	},
	
	KlientskaZona:{
		reactivate:function(button) {
			button = jQuery(button);
			var form = button.closest('form');
			jQuery.post(
				form.attr('action'),
				form.serialize()+'&'+button.attr('name')+'=1',
				function(){
					button.css({color:'#999'})
					if (button.attr('name')=='reactivate') {
						form.closest('li').find('.klientskazona-inzerat-msg').text('Inzerát bol úspešne reaktivovaný, v zozname inzerátov sa posunul na prvé miesto. Zmeny sa v klientskej zóne prejavia po obnovení stránky.');
						form.closest('li')
							.removeClass('status-before-expiration status-active status-deactivated status-inactive status-expired')
							.addClass('status-active');
						form.closest('li').find('.inzerat-status-text')
							.removeClass('status-text-before-expiration status-text-active status-text-deactivated status-text-inactive status-text-expired')
							.addClass('status-text-active')
							.text('aktívny');
					} else if (button.attr('name')=='deactivate') {
						form.closest('li').find('.klientskazona-inzerat-msg').text('Inzerát bol úspešne deaktivovaný, odstránil sa zo zoznamu inzerátov. Zmeny sa v klientskej zóne prejavia po obnovení stránky.');
						form.closest('li')
							.removeClass('status-before-expiration status-active status-deactivated status-inactive status-expired')
							.addClass('status-deactivated');
						form.closest('li').find('.inzerat-status-text')
							.removeClass('status-text-before-expiration status-text-active status-text-deactivated status-text-inactive status-text-expired')
							.addClass('status-text-deactivated')
							.text('deaktivovaný');
					}
				},
				'text'
			);
			return false;
		},
		del: function(button) {
			button = jQuery(button);
			var form = button.closest('form');
			var formData = form.serialize()+'&'+button.attr('name')+'=1';
			var li = form.closest('li');
			var action = form.attr('action');
			var height = li.height();
			li.html('<img src="/static/img/ajax-loader.gif"/>');
			li.height(height);
			jQuery.post(action, formData, function(){
				li.remove();
			}, 'text');
			return false;
		},
		deactivate:function(button) {
			Avizo.KlientskaZona.reactivate(button);
			return false;
		}
	},

	Uploader:{
		_inProgressCount:0,
		startLoader:function(){
			Avizo.Uploader._inProgressCount++;
			jQuery('#loaderIcon').css({visibility:'visible'});
		},
		stopLoader:function() {
			Avizo.Uploader._inProgressCount--;
			if (Avizo.Uploader._inProgressCount>=0) {
				jQuery('#loaderIcon').css({visibility:'hidden'});
			}
		},
		onchange:function(input, form) {
			var iframeName = "fileUploadIframe" + (new Date().getTime());
			var iframe = Avizo.Uploader._createIframe(iframeName);
			input.after(iframe);
			iframe.onload=function(){
				Avizo.Uploader.stopLoader();
				window.setTimeout(function(){jQuery(iframe).remove()},1);
			};
			form.attr('target',iframeName);
			Avizo.Uploader.startLoader();
			form.submit();
			input.val('');
		},
		_createIframe:function(name) {
            if(window.ActiveXObject) {
                var io = document.createElement('<iframe id="' + name + '" name="' + name + '" />');
                if(typeof uri== 'boolean'){
                    io.src = 'javascript:false';
                }
                else if(typeof uri== 'string'){
                    io.src = uri;
                }
            }
            else {
                var io = document.createElement('iframe');
                io.id = name;
                io.name = name;
            }
            io.style.position = 'absolute';
            io.style.top = '-1000px';
            io.style.left = '-1000px';
			io.width = 1;
			io.height = 1;
            // document.body.appendChild(io);
            return io;
		},
		setList:function(array) {
			var div = jQuery('<div>');
			for (var i in array) {
				var img = jQuery('<img style="margin:2px;">');
				img.attr('src', '/podat/zobrazUploadnuty?id='+array[i]);
				img.click(function(i){return function(){jQuery.ajax({
						type: 'post',
						dataType:'json',
						data: {id:array[i]},
						url:'/podat/vymazUploadnuty',
						success:function(data){Avizo.Uploader.setList(data);}})}}(i));
				div.append(img);
			}
			jQuery('#uploadGalleryPreview').html(div);
		}
	},

	Ciselnik: {
		/**
		 * @static
		 */
		loadTo: function(idCiselnik, object, callback) {
			jQuery.get('/ajax/ciselnik/', {id: idCiselnik}, function(data) {
				data.sort();
				object.autocomplete({source:data});
			}, 'json');
		}
	},

	Registry:{
		get:function(name){return Avizo.Registry[name];},
		set:function(name, value){Avizo.Registry[name]=value;}
	}
};



function initSkyscrapers() {
	var sirkaStranky = 970;
	var sirkaBanneru = 160;

	var getSciPosition = function() {
		var ww = jQuery(window).width();
		var res = ww > sirkaStranky ? Math.round((ww - sirkaStranky) / 2) - (sirkaBanneru) : -(sirkaBanneru+10);
		return res;
	};

	// skyscraper left
	jQuery(window).resize(function() {
		jQuery('#leftSky').css('left', getSciPosition() + 'px');
	});

	jQuery(window).scroll(function() {
	//	jQuery('#leftSky').css('top', (jQuery(window).scrollTop()+240) + 'px');
	});

	jQuery('#leftSky').css('left', getSciPosition() + 'px');

	// skyscraper right
	jQuery(window).resize(function() {
		jQuery('#rightSky').css('right', getSciPosition() + 'px');
	});

	jQuery(window).scroll(function() {
	//	jQuery('#rightSky').css('top', (jQuery(window).scrollTop()+240) + 'px');
	});

	jQuery('#rightSky').css('right', getSciPosition() + 'px');
}



//------------------------------------------------------------------------------ onload
var readyfunction = function() {
	jQuery("#prihlasovacibutton,#prihlasovacibutton2").click(function(e) {el.dialog("open");el.css({'background-color':'#fff','z-index':1000});return false;});
	jQuery("#tools .first-line .logoutbutton").click(function(e) {Avizo.logout();return false;});
	$('select#category').selectmenu({style:'dropdown',width:268,icons:null});

	jQuery('#registration-button').click(function(){
		if (typeof Avizo.Registry.registration_form == 'undefined') {
			var rf = Avizo.Registry.registration_form = jQuery('<div style="text-align:left">');
			rf.load('/user/register/',[],function(){
				rf.dialog({resizable:false,title:'Registrácia na www.avizo.sk', autoOpen:true, width: "625px"}).bgiframe();
				Avizo.applySelectMenu(rf);
				Avizo.processRepeatedFormItems(rf);
			})
		} else {
			Avizo.Registry.registration_form.dialog('open');
		}
	});

	//Avizo.applySelectMenu();

	Avizo.processRepeatedFormItems();

	jQuery('#pridatinzerat').click(
		function() {
			if (typeof Avizo.Registry.vloz_inzerat_form=='undefined') {
				var pif = Avizo.Registry.vloz_inzerat_form = jQuery('<div style="text-align:left">');
				//if (typeof Avizo.Registry.kategoria_id!="undefined") {
					var url = '/vyberRubriky/index/';
					if (typeof Avizo.Registry.kategoria_id != "undefined") {
						if (Avizo.Registry.kategoria_pocet_deti>0) {
							url = '/vyberRubriky/index/?rubrika='+parseInt(Avizo.Registry.kategoria_id);
						} else {
							url = '/podat/index/?rubrika='+parseInt(Avizo.Registry.kategoria_id);
						}
					}
					jQuery.get(url, [], function(data){
						pif.dialog({resizable:false,minHeight:500,height:'auto',title:'Podajte si inzerát na www.avizo.sk', autoOpen:true, width: "500px", modal: true}).bgiframe();
						pif.html(data);
						Avizo.applySelectMenu(pif);
						//see also Avizo.vyberRubriky()
					});

					/*
					jQuery.get(url, [], function(data) {
						Avizo.Registry.vloz_inzerat_form.html(data);
					});
					*/
			} else {
				Avizo.Registry.vloz_inzerat_form.dialog('open');
			}
		}
	);

	initSkyscrapers();

	window.setInterval(Avizo.tick, 10*60*1000); // 10 minut
}

jQuery(document).ready(readyfunction);

