/* Author: Jason S  
 * 
*/

$(function() {  

  var email_regex = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;

  $("body").delegate('#newsletter-sign-up', 'ajax:beforeSend', function(event, data, xhr){
    if (!$("#email").val().match(email_regex)) {
   
      $("#sign-up-message").text("Please enter a valid email address");
      $("#sign-up-message").show();
      return false;
    }
  });
  
  $("body").delegate('#newsletter-sign-up', 'ajax:success', function(event, data, xhr){
    email = data
    if (email != "") {
      $("#newsletter-sign-up").hide();
      $("#sign-up-message").text("Thanks!");
    } else {
      $("#sign-up-message").text("Please enter an email address");
    }
    $("#sign-up-message").show();
    return false;
  });
  

  $("#showreel-filter-form").submit(function(event) {
    var company_type = $("#select-company-type").val();
    var job_grade = $("#select-job-grade").val();
    window.location = "/showreels/company_type/"+company_type+"/job_grade/"+job_grade
    event.stopImmediatePropagation();
    return false;
  });
  
  $("#companies-filter-form").submit(function(event) {
    var company_type = $("#select-company-type").val();
    window.location = "/directory/companies/company_type/"+company_type
    event.stopImmediatePropagation();
    return false;
  });
  
  $("#people-filter-form").submit(function(event) {
    var job_grade = $("#select-job-grade").val();
    window.location = "/directory/people/job_grade/"+job_grade
    event.stopImmediatePropagation();
    return false;
  });
  
	// adds cross browser support for the placeholder attribute 
	$('input[placeholder], textarea[placeholder]').placeholder();  
  
  $(".custom").customSelect({
  	topOffset				: 7
  });
  
  /* SHOWREELS REEL FILTERING */
  
  //tags list slide-down section 
  $("#search-filter").delegate(".more", "click", function(event) {
    $("#tag-list-box").slideDown();
    $(this).removeClass("more").addClass("less").html("Hide Tags List");
    return false;
    
    // clicking outside to close doesn't currently work
    if($('#tag-list-box').is(":hidden")){
      $(".more").unbind('click');
    }
    else{
      $(document).click(function(){
        $('#tag-list-box').stop(true, true).slideUp();
      }); 
    }
  });
  
  $("#search-filter").delegate(".less", "click", function(event) {
    $("#tag-list-box").slideUp();
    $(this).addClass("more").removeClass("less").html("Show Tags List");
    return false;
  });
  
  //prevent tag list box from closing when clicked (because of click event bound to document)
  $('#tag-list-box').click(function(){ return false; });
  $('#tags').click(function(){ return false; });     
       
  //add new tag filters 
  $('#filter-input').keyup(function(event){
    if(event.keyCode === 13){
      var tag = $(this).val();
      var tagID = "active_tag-" + createTagID(tag);
      var idTest = "#" + tagID;
            
      if(tag.length > 0 && $(idTest).length === 0){
        $('#tags').append('<li><a href="#" id="' + tagID + '">' + tag + '</a></li>');
        $('#filter-input').val('');
      }     
    }    
  });
  
  //add new tag filters from tag list
  $('#tag-list-box a').click(function(){
    var tagName = $(this).html();
    var newID = createTagID(tagName);
    var idTest = "#active_tag-" + newID; //selector id to test if one already exists
    
    if($(idTest).length === 0){ //prevent more than one of the same tag being created
      $('#tags').append('<li><a href="#" id="' + 'active_tag-' + newID + '">' + tagName + '</a></li>');
      $(this).addClass('hit');
    }
  });
  
  //removes special characters and spaces
  function createTagID(tag){
    tag = tag.replace(/[^\w]/gi, "");
    return tag;
  } 
  
  //removing tags    
  $('#tags').delegate("a", "click", function(){
    var tagID = $(this).attr("id");
    //remove active tag from bar
    $(this).remove();
    //get unique part of the id
    var index = tagID.indexOf("-");
    var id = tagID.substring(index + 1);
    //remove hit class from tag list box
    var tagListID = "#tag_list-" + id;
    $(tagListID).removeClass('hit');
  });
  
  
  /* TOOLTIPS */
  /* Client Directory */
  $('.trigger').each(function(){
    $(this).hover(
      function(){
        var leftOffset = $(this).width();
                        
        $(this).next().css('left', leftOffset + 20);
        $(this).next().stop(true, true).animate({
          opacity: 1
        }, 300, 'swing'
        );
        
        var position = $(this).next().offset();        
      },
      function(){
        $(this).next().stop(true, true).animate({
          opacity: 0
        }, 200, 'swing'
        );

      }
    );    
  });
    
  /* FEATURED SLIDESHOW using jQuery Cycle */  
  var transitionSpeed = 900; //time between transitioning slides
  var pauseTime = 10000; //time the slide stays still
  var descFadeIn = 300; //time for reel description to fade in
  var descFadeOut = 300; //time for reel description to fade out
  var easeFunction = "easeOutQuad"; //for more options go to http://gsgd.co.uk/sandbox/jquery/easing
  var hasBegun = false; //slide 
  
  if ($('#featured-slider > div').length > 0) {
  
    $('#featured-slider > div').cycle({
      fx: 'scrollHorz',
      easing: easeFunction,
      speed: transitionSpeed, // transition speed
      timeout: pauseTime, 
      pause: 1, // pause on mouseover
      before: onBefore,
      after: onAfter,
      pager:  '#featured-slider nav' //id of navigation container
    });
  }
    
  function onBefore(){
    if(hasBegun){
      $('#featured-slider article div').fadeOut(descFadeOut); 
      $(this).find('div').hide(); //hide the next slide (needed to overide plugin)
    }      
  }  
  function onAfter(){
    if(hasBegun){
    	if($("html").hasClass("no-opacity")){
    		$(this).find('div').fadeTo(descFadeIn, 0.8);
    	} else{
    		$(this).find('div').fadeIn(descFadeIn); 
    	}
      
    }     
     hasBegun = true;
  }    

  $('#featured-slider nav a').html(""); //remove default numbers on pager links
  $('#featured-slider nav a').addClass("png-bg");
  //$('#slides_container').cycle('stop');
  
  /* REEL CAROUSELS - "For You" and "New to SohoSoHo" using jCarousel Lite */
  var easing = "easeOutQuad"; //for more options go to http://gsgd.co.uk/sandbox/jquery/easing/
  var slideSpeed = 500; //time between transitioning slides
  var textFadeOut = 0; //time for reel credits to fade out
  var textFadeIn = 200; //time for reel credits to fade in
  
  //Left Viewer
  $('.left-viewer').jCarouselLite({
    easing: easing,
    speed: slideSpeed,
    scroll: 1,
    circular: true,       
    btnNext: "#next-reel-left",
    btnPrev: "#prev-reel-left",
    afterEnd: function(a){
      $('.left-viewer .credits').fadeOut(textFadeOut);
      $(a[1]).children('.left-viewer .credits').fadeIn(textFadeIn);
    }     
  });

  $('.left-viewer').css('left', '-165px');
  $('.left-viewer .credits').hide();
  $('.left-viewer .active').show();
    
  //Right Viewer						
  $('.right-viewer').jCarouselLite({
    easing: easing,
    speed: slideSpeed,
    scroll: 1,
    circular: true,    
    btnNext: "#next-reel-right",
    btnPrev: "#prev-reel-right",
    afterEnd: function(a){
      $('.right-viewer .credits').fadeOut(textFadeOut);
      $(a[1]).children('.right-viewer .credits').fadeIn(textFadeIn);
    }     
  });
  
  $('.right-viewer').css('left', '-165px');
  $('.right-viewer .credits').hide();
  $('.right-viewer .active').show();
  
  /* PLAYER PAGE PLAYLIST */ 
  $('#prev-reels').hide();
  
  $('.playlist').jCarouselLite({
    easing: "easeOutQuad",
    speed: 800,
    btnNext: "#next-reels",
    btnPrev: "#prev-reels",
    visible: 5,
    scroll: 5,
    circular: false,
    afterEnd: function(a) {
      var last_item = $(a[4]);
      var first_item = $(a[0]);
      nextReels = last_item.nextAll().length;
      prevReels = first_item.prevAll().length;
      
      //alert("Next reels amount: " + nextReels + " Previous reels amount: " + prevReels);
      
      if(nextReels != 0){
        $('#next-reels').fadeIn(300);
      }
      else if(nextReels === 0){
        $('#next-reels').fadeOut(300);
      }
      if(prevReels != 0){
        $('#prev-reels').fadeIn(300);
      }
      else if(prevReels === 0){
        $('#prev-reels').fadeOut(300);
      }
    }
    
  });   

  function S4() {
    return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
  }
      
  function guid() {
    return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
  }

  $("body").delegate("#spot-info a.more", "click", function(event) {
    $("#spot-info .spot-info-details:visible dl:nth-child(2)").slideDown();
    $(this).removeClass("more").addClass("less").html("Hide");
    return false;
  });
  
  $("body").delegate("#spot-info a.less", "click", function(event) {
    $("#spot-info .spot-info-details:visible dl:nth-child(2)").slideUp(function() {
      $(".playlist").css("position", "static");
    });
    $(this).addClass("more").removeClass("less").html("More");
    return false;
  }); 
  
  $(".reel-links").delegate(".more", "click", function(event) {
    $(this).closest("section").find(".additional-reels").slideDown('300','easeOutCubic');
    $(this).removeClass("more").addClass("less").html("Hide");
    return false;
  });
  
  $(".reel-links").delegate(".less", "click", function(event) {
    $(this).closest("section").find(".additional-reels").slideUp('300','easeOutCubic');
    $(this).addClass("more").removeClass("less").html("Show All");
    return false;
  });
        
}); 
