var FrontLogic = {
  
  Init: function() { 
    MooTools.lang.setLanguage("sk-SK");       
    
    var ks = $(document.body).getElements('.accordionate'); 
    ks.each(function(el) {FrontLogic.SetupAccordion($(el).getElements('.aitem'));});
        
    if ($(document.body).get('id') == 'pg_kontakt') 
      FrontLogic.SetupKontaktSection();    
   
    var menu = $('mainnav');
    var uls = menu.getElements('ul');       
    
    // IE < 8 nedeteguje #comments
    var el = $(document.body).getElement('#qsearch_form input[type=text]');    
    if (el) new OverText(el, {positionOptions: {position:"upperRight",edge:"upperRight",offset:{x:-4,y:2}}});
    
    uls.each(function(item) {
      var container;
      if (!Browser.Engine.trident4) {
        container = new Element('div', {'class': 'submenu'});
        container.wraps($(item));      
        var sizey = container.scrollHeight;
        var el = new Element('div', {'class': 'shadow-right'});
        el.inject(container, 'top');
      }
      else
        container = item;
      
      var li = container.getParent('li');
      li.addEvent('mouseenter', function() {        
        container.setStyle('display', 'block');
        container.store('vis-mode', 1);                
        if (!Browser.Engine.trident4) el.setStyle('height', container.getSize().y - 16);                                 
      });
      
      li.addEvent('mouseleave', function() {
        container.store('vis-mode', 0);        
        (function(){ if (!container.retrieve('vis-mode')) container.setStyle('display', 'none');}).delay(50);        
      });
        
      if (!Browser.Engine.trident4) {      
        (new Element('div', {'class': 'shadow-bottom'})).inject(container, 'top');      
        (new Element('div', {'class': 'shadow-top'})).inject(container, 'top');
      }      
    });  
    
    if (Browser.Engine.trident4) {
      var lis = $(document.body).getElements('#mainnav > li');
      lis.each(function(item) {
        item.addEvent('mouseenter', function() {this.addClass('hover');});
        item.addEvent('mouseleave', function() {this.removeClass('hover');});
      });
    }
    
    if (document.recalc) document.recalc();
    
    if (window.ReMooz) {      
      ReMooz.assign('a.lightbox, a.remooz,div.fotogal-block a.fotolink', {
    		'origin': 'img', 'resizeFactor': 0.8, 'cutOut': false, 'dragging': false
    	});   
    }
      
    var forms = $(document.body).getElements("form.to-validate");
    forms.each(function(form) {
      var validator = new Form.Validator.Inline($(form), {serial: false, evaluateFieldsOnBlur: false});      
    });                     
  },
  
  AddPerson: function(elem) 
  {
    var parentForm = elem.getParent("form");
    var elems = $(parentForm).getElements("tr.dalsia_osoba");
    var osobaRowTemplate = elems[0];
    var cloned = $(osobaRowTemplate).clone();
    cloned.getElements('input').set('value', '');
    cloned.inject(elems[elems.length-1], "after");
    
    return false;       
  },
  
  changeHash: function(newhash) {
  	var tempid, el = $(newhash);
  	if (el) { tempid = el.get('id'); el.set('id', 'hashtemporary_id'); }
  	window.location.hash = '#' + newhash;
  	if (el) { el.set('id', tempid); }
  },
    
  SetupAccordion : function(selector) {
		var bloks = $type(selector) == 'string' ? $(document.body).getElements(selector) : selector;
		var showidx = 0, hdr = $$(bloks.getElements('.header'));
		
		if (!hdr.length) return;
		
    if (window.location.hash.length > 1) {
			var anch = $(window.location.hash.substr(1));
			if (anch) anch = anch.getElement('.header');
			if (anch) {
				var save = window.location.hash;
				window.location.hash = "#";
				showidx = hdr.indexOf(anch);
				if (showidx < 0) showidx = 0;
				( function() { window.location.hash = save; }).delay(100);
			}
		}

		var progAccordion = new Accordion(hdr, bloks.getElement('.body'), {
			show: showidx, display: showidx,
			alwaysHide: true, opacity: false, duration :(Browser.Engine.gecko ? 250 : 250),
			fps: 75 });
	   
		hdr[showidx].getElement('.wrapper').addClass('activated secbg');

		var len = progAccordion.togglers.length;
		for ( var i = 0; i < len; i++) {
			var toggler = progAccordion.togglers[i];
      toggler.set('title', MooTools.lang.get('Soitron', 'accordionHint'));    
		}
		
		progAccordion.addEvent('active', function(header) {
			header.getElement('.wrapper').addClass("activated secbg");
			(function() {var el = $(header).getParent('.aitem');
			if (el) FrontLogic.changeHash(el.get('id'))}).delay(10);
		});
		
		progAccordion.addEvent('background', function(header) {
			header.getElement('.wrapper').removeClass("activated secbg");
		});

	},
	
	SetupKontaktForm: function() {
	  // formular bezproblemovo degraduje bez javascriptu,  
    var form = $('contact-form');	
    if(form)
    {
      var validator = new Form.Validator.Inline(form, {serial: false, 
        evaluateFieldsOnBlur: false, evaluateOnSubmit: false});
    
      form.addEvent('submit', function(e) {
        if (e) e.preventDefault();    
        
        var validator = form.retrieve('validator');
        if (!validator || validator.validate(false))
        {
          var load = form.getElement('#ajax-loader').addClass('ajax-loading');    
          // spracovanie ajax requestu do stranky
          this.set('send', { 
            onComplete: function(response) {     
              load.removeClass('ajax-loading');    
              var res = $('response');        
              var type = response.substring(0,1);
              var message = response.substring(2);
    
              res.removeClass('form-error').removeClass('form-success').set('html', message);        
              res.set('reveal', {duration: '400', mode: 'vertical'});    
              if(type==0)              
                res.addClass('form-error').reveal();              
              else {            
                res.addClass('form-success').wink(5000);
                // vycistit formular 
                form.getElements("input[type=text], textarea").set('value', '');
              }                            
            }
          });    
          
          this.send();
        }
      });
    }    
  },
	
	SetupKontaktSection: function() {	  
    
    var page_holder = $('content_main');
    var anchor = null, btn;       
	  
    if (window.location.hash.length > 1) 
			var anchor = $(window.location.hash.substr(1));      							
		
		var sections = page_holder.getElements('.kontakt-section');
    var i, len = sections.length;		
    if (!anchor && len) anchor = sections[0];
    
    if (anchor) {
      btn = $('btn_'+anchor.get('id'));
      if (btn) btn.addClass('here');
      
      anchor.addClass("active");
    }        
    
    var elems = page_holder.getElements('.kontakt-mapa');
    for(i=0;i<elems.length;i++) {
      var m=elems[i];
      m.store('original', m.get('html'));
      m.set('html', '');      
    }      
    
    var clickBtn = function(id) {
      var btns = $('subnav').getElements('.kontakt-btn.here');
      var me = $('btn_'+id), block = $(id);
      me.addClass('here');      
      for(i=0;i<btns.length;i++) if (btns[i] != me) btns[i].removeClass('here');
      block.removeClass('inactive').addClass('active');
      for(i=0;i<len;i++) if (sections[i] != block) sections[i].removeClass('active').addClass('inactive');      
    }
    
    for(i=0;i<len;i++) {
      var section = sections[i];
      var sid = section.get('id');      
      if (section != anchor) section.addClass("inactive");      
      btn = $('btn_'+sid);
      if (btn) btn.addEvent('click', clickBtn.bind(this, sid));
    }    
    
    if (anchor) {
			window.location.hash = "#";				
			( function() { window.location.hash = "#" + anchor.get('id'); }).delay(100);
	  } 
	  
	  var clickShowMap = function(e) {
      e = new Event(e);
      var href = $(e.target).get('href');
      if (href) {
        var el = page_holder.getElement(href);
        if (el) {
          var html = el.retrieve('original');
          if (html) {
            el.set('html', html).store('original', '');
          }
        }
        e.target.setStyle('display', 'none');
      } 	  
      e.preventDefault();
      return false;
    }
    page_holder.getElements('a.show-map').addEvent('click', clickShowMap.bindWithEvent(this));       
    
    FrontLogic.SetupKontaktForm(); 
  }
	
};

window.addEvent('domready', FrontLogic.Init);