/**
 * AUTHOR Ondrej Slamecka, oslamecka@gmail.com, http://numero.name
 * RIGHTS Ladislav Menyhart
 * SITE http://www.koktail.sk
 * MADE November 2009
 * 
*/  

/* jQuery rlz! */
jQuery.fn.exists = function(){return jQuery(this).length>0;}

$(function(){  

  /* Advanced Search box */
  
  var advancedsearchOpenButton = $( '<div id="advancedsearch-open"><a href="/abecedny-zoznam-koktailov/">Otvoriť<span> </span></a></div>' );
  var advancedsearchHeader = $( '#advancedsearch-header' );
    advancedsearchHeader.addClass( 'openadvancedsearch' );
  var advancedsearch = $( '#advancedsearch' );
  var advancedsearchOpenLink = $( 'a', advancedsearchOpenButton); // has .openadvancedsearch
  
    /* Opening box */        
    
    // First hide
    advancedsearch.hide();
    
    // Append opening button
    advancedsearchHeader.append( advancedsearchOpenButton );
    advancedsearchHeader.append( '<div class="clear"><hr /></div>' );
       
    // Opening button
    $('#advancedsearch-wrap .openadvancedsearch').click( function(el){

      // After confusion with toggle, I did this
      if( advancedsearchOpenLink.hasClass("open") )    
        advancedsearchOpenLink.removeClass("open");
      else
        advancedsearchOpenLink.addClass("open");
                
      advancedsearch.slideToggle( "fast" );
      
      el.preventDefault();          
    });
    
    /* Suggestions/autocomplete list */
    var searchingredience = $('input#searchingredience'); // input
    var suggestionslist = $( '<ul id="advancedsearch-suggestion"></ul>' );
      var suggestionslistwrap = $( '#advancedsearch-suggestionlist-wrap' );
      
    var lastsearch = null;
    var active = -1; 
    var ajaxloadlist = true;   
    
    searchingredience.keyup(function(event){

      ajaxloadlist = true;

      switch(event.keyCode) {
  			case 38: // Up
  				event.preventDefault();
  				ajaxloadlist = false;
  				moveSelect(-1);
  				break;
  			case 40: // Down
          event.preventDefault();
          ajaxloadlist = false;
  				moveSelect(1);
  				break;
  			case 13: // Enter
          addIngredience( $('#selectedsuggestion').html(), $('#selectedsuggestion').attr('ingredienceid') );
          break;
        default:
          if( searchingredience.val().length == 0 )
            suggestionslist.remove();
          break;
  		}
  		          
      if( (searchingredience.val().length > 0) && (lastsearch != searchingredience.val() || searchingredience.val().length == 1 ) && ajaxloadlist ){
      
        lastsearch = searchingredience.val();
         
        $.getJSON(
          '/tagautocomplete.php',
          { 'searchingredience' : $(this).val() },
          function( payload ){
          
            suggestionslist.html('');
            suggestionslist.remove();
          
            if( payload.suggestions.length )
              suggestionslistwrap.append( suggestionslist );            
                      
            for( var id in payload.suggestions ){  
              suggestionslist.append( '<li><a href="#" class="addIngredience" ingredienceid="'+payload.suggestions[id]['term_id']+'">'+payload.suggestions[id]['name']+'</a></li>' );
              $('.addIngredience').bind( 'click', function(el){ addIngredience( $(this).html(), $(this).attr('ingredienceid') ); el.preventDefault(); } );
            }
          }
        );
        
      }

    }); // searchingredience.keyup
    
    /* // We don't want this functionality
    searchingredience.blur(function(el){
      setTimeout( 'suggestionslist.remove()', 500);      
    });
    */
  
  var ingrediencelist = $('<ul id="ingrediencelist"></ul>');
  var ingrediencelistwrap = $('#ingrediencelist-wrap');
  var tagslist = $( '#tagslist' ); // hidden input
    
  function addIngredience( name, id ){
    if( name != null ){
      // Add to list
      
      // If there is no list, create it
      if( ingrediencelist.find('li').length == 0 )
        ingrediencelistwrap.append( ingrediencelist );
        
      ingrediencelist.append( '<li id="ingrediencelistli-'+id+'"><span class="name flleft">'+name+' </span><a href="#" class="removeIngredience" id="ingrediencelist-'+id+'" ><span>Odobrať</span></a></li>' );
      $('.removeIngredience').bind( 'mouseup', function(el){ removeIngredience( $(this) ); el.preventDefault(); } );   
      
      // PHP will take care of redundant ","
      tagslist.val( id + ',' + tagslist.val() );
                       
     
      // Defaultize :-)
      suggestionslist.remove();
      searchingredience.val('');
      lastsearch = null;
      active = -1;  

      // And reload list
      reloadCoctailslist();       
    }  
  }
  
  function removeIngredience( el ){
  
    var id = el.attr( 'id' );
    var nId = id.replace( 'ingrediencelist-' , '');
    var liId = 'ingrediencelistli-' + nId;
    
    tagslist.val(  tagslist.val().replace( nId+',' , '' )  );
    $( '#'+liId, ingrediencelist ).remove(  );
    
    reloadCoctailslist();       
  }    
    
  function moveSelect(step){

  	var sel = $("a", suggestionslist);
  	if (!sel) return;
  
    $(sel[active]).removeAttr( 'id' );
  
  	active += step;
  
    // Stay in list 
  	if (active < 0) {
  		active = 0;
  	} else if (active >= sel.size()) {
  		active = sel.size() - 1;
  	}
    
  	$(sel[active]).attr( 'id' , 'selectedsuggestion');
  
  };
  
  var coctailslistLoaded = $( '#coctailslistLoaded' );
  var coctailslistStatic = $( '#coctailslistStatic' );
    var coctailslistStaticWrap = $( '#coctailsliststatic-wrap' );
  var wppagenavi = $( '#content .wp-pagenavi' );
  var bottomlistadvert = $( '#bottomlistadvert' );
  
  function reloadCoctailslist(){
    $.get( '/coctailsbytags.php',
      { 'tagslist' : tagslist.val() },
      function( payload ){         
        
        if( payload.length > 0 && tagslist.val() != '' ){
                
          coctailslistStaticWrap.hide();
          wppagenavi.hide();
          coctailslistLoaded.show();        
          coctailslistLoaded.html( payload );
          $( 'ul.largelist' , coctailslistLoaded).append( bottomlistadvert );
                    
        }else{
        
          $( '#errorreport' ).hide();
          coctailslistLoaded.hide(); 
          wppagenavi.show();
          coctailslistStaticWrap.show();
          $( coctailslistStatic ).append( bottomlistadvert );
                         
        }
        
        //FB.XFBML.Host.parseDomTree(); //(document.getElementById('coctailslistLoaded'));
        FB.XFBML.parse(document.getElementById('coctailslistLoaded'));
        
      }          
    );  
  }
  
  $('#advancedsearchform').submit(function(el){
    
    //if( $('#selectedsuggestion').length > 0 )
      el.preventDefault();
      
    //searchingredience.val('');
  });
  
  // Open advanced search
  advancedsearchOpenLink.addClass("open");                
  advancedsearch.slideToggle( "fast" );
    
    
  /******* Autocomplete ends ********/
    

  /* jQuery Hint Plugin by Remy Sharp */
  $('input[title!=""]').hint();
  $('textarea').hint();
  
  /* jQuery smooth anchors - http://flesler.blogspot.com/2007/10/jqueryscrollto.html */
  $('a[href*=#]').click(function() {
    if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'')
    && location.hostname == this.hostname) {
      var $target = $(this.hash);
      $target = $target.length && $target 
      || $('[name=' + this.hash.slice(1) +']');
      if ($target.length) {
        var targetOffset = $target.offset().top;
        $('html,body')
        .animate({scrollTop: targetOffset}, 800);
       return false;
      }
    }
  });

  
  // jQuery cycle plugin
  $('#posts') 
  .before('<ul id="post-switcher">') 
  .cycle({ 
      fx:     'fade', 
      speed:  1000, 
      timeout: (8 * 1000), 
      pager:  '#post-switcher',
      
      pause: 1,
      
      
      pagerAnchorBuilder: function(idx) { 
        return '<li><a href="#" class="switch-button">'+(idx+1)+'. novinka<span></span></a></li>'; 
      },
      
      fit:           1,
      
      after : function (curr, next, opts, fwd){       
        var highest = $("#posts").height( );
        $( '.post .content-wrap' , this).height( highest-55 );
      }      
           
  });
  
  
  // Comment form submit validation
  
  
  // Based on this:  
  /***************************/
  //@Author: Adrian "yEnS" Mato Gondelle & Ivan Guardado Castro
  //@website: www.yensdesign.com
  //@email: yensamg@gmail.com
  //@license: Feel free to use it, but keep this credits please!					
  /***************************/
  
  //global vars
	var form = $("#commentform");
	var name = $("#author");
	var email = $("#email");
	var message = $("#comment");

  var errorName = $('<li id="error-meno">Meno</li>');
	var errorEmail = $('<li id="error-email">E-mail</li>');
	var errorMessage = $('<li id="error-comment">Text komentára</li>');
	 
    var errorNameId = $("#error-meno");
    var errorEmailId = $("#error-email");
    var errorMessageId = $("#error-comment");

	var listOfErrors = $('<ul id="listOfErrors"></ul>');
    var listOfErrorsId = $("#listOfErrors");
	var errorBlock = $('<div id="errorBlock">Prosím vyplňte vybrané pole: </div>');
    var errorBlockId = $("#errorBlock");
	
	errorBlock.append( listOfErrors );
	
	// If theres no - create errorBlock
	function createErrorBlock(){

    if( !errorBlockId.exists() ){

      errorBlock.css( "opacity", "0" );
      form.before( errorBlock );
      errorBlockId = $("#errorBlock");
      errorBlock.animate({ "opacity" : 1 }, 1500)
        
    }    
    return true;    
  }
  
  // If listOfErrors has no content - remove errorBlock
  function removeErrorBlockIfEmpty(){
  
    if( !listOfErrors.children().size() ){
      errorBlockId.animate({ "opacity" : 0 }, 1500, '', function() { $(this).remove(); }  );
      
    }    
  }

	
	// On blur	
	/*name.blur(validateName);
	email.blur(validateEmail);
	message.blur(validateMessage); */
	
	// On key press
	/*name.keyup(validateName);
	email.keyup(validateEmail);
	message.keyup(validateMessage); */
	
	// On Submitting
	$('#commentsubmit').click(function(){
		if( validateName() & validateEmail() & validateMessage() ){
			return true;
		}else{
			return false;
		}
	});
	
	// Validation functions
	function validateEmail(){		
		var a = email.val();
		var filter = /^[a-zA-Z0-9]+[a-zA-Z0-9_.-]+[a-zA-Z0-9_-]+@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{2,4}$/;
		
		//if it's valid email
		if(filter.test(a)){
		
      errorEmail.remove();
      removeErrorBlockIfEmpty();
      
			return true;
		}else{ //if it's NOT valid
    
      if( !errorEmailId.exists() ){
      
        createErrorBlock();
    	  listOfErrors.append( errorEmail );
    	  errorEmailId = $("#error-email");
    	  
      }   
      
      return false;
		}
	}
	
	function validateName(){
		//if it's NOT valid
		if( name.val().length < 3 || name.val() === 'Vaše meno'  ){
		
		  if( !errorNameId.exists() ){
  		  createErrorBlock();				
  	    listOfErrors.append( errorName );
  	    errorNameId = $("#error-meno");
			}
			
			return false;
		}
		//if it's valid
		else{
		
      errorName.remove();
      removeErrorBlockIfEmpty();
      
			return true;
			
		}
	}
	
	function validateMessage(){
		//it's NOT valid
		if(message.val().length < 2 || message.val() === 'Napíšte Váš komentár' ){
		
		  if( !errorMessageId.exists() ){
  		  createErrorBlock();
  			listOfErrors.append( errorMessage );
  			errorMessageId = $("#error-comment");
  		}
			
			return false;
		}
		//it's valid
		else{	
    		
			errorMessage.remove();
			removeErrorBlockIfEmpty();
			
			return true;
		}
	}
	
	/* ----------------------------- */ 
  
  // Show more categories - script used just to show more categories of post by clicking on 'see more...' button
  
    // First of all, we must show 'see more' button
    var $categoriesMorecategories = $( '.categories .morecategories' );
    $categoriesMorecategories.animate({'opacity' : 'toggle'});
    $categoriesMorecategories.before( '<a class="seemorecategories" href="#">viac&hellip;</a>' );
    
    // Click to show
    $( '.categories .seemorecategories' ).click(function(e){  

      e.preventDefault();
        
      //$(this).parent().children('.morecategories').show( "slow" );
      $(this).parent().children('.morecategories').animate({'opacity' : 'toggle'});
      $(this).hide();         
    
    });
    
  
  
  // Load google analytics
  $.ga.load('UA-11394917-1');

}); 

