/*
    This javascript file contains all bdex specific functions
*/

// campaign navigation related variables and functions
var campaignNavigationTimeoutID;
var campaignNavigationTimeoutDuration = 250;
var showCampaigns = function () { $("#campaign-navigation").show(); }
var hideCampaigns = function () { $("#campaign-navigation").fadeOut("fast"); }

// used to get querystrings in url. usage: getUrlVars()["querystring"];
var getUrlVars = function () {
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++) {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
};

var signup_modal = function (){
    $("a#signup-modal-link").fancybox({
        padding:'0',
        overlayColor: '#000',
        modal: true,
        centerOnScroll: true,
        onComplete: function(){
            var body_height = $('body').height();
            $('#fancybox-overlay').css('height', body_height+'px');
            if($('#signup-modal-form input:not(:hidden):not(:submit)').val() != ""){
                $('#signup-modal-form label.inlined').addClass("hide");
            }
            $('#signup-modal-form input:not(:hidden):not(:submit)').focus();
        }
    });

    // automatically display signup modal
    $("a#signup-modal-link").trigger('click');

    $('#signup-modal-form input').focus(function(){
        $('#signup-modal-form label.inlined').addClass("focus");
    });

    $('#signup-modal-form input').keypress(function(){
        $('#signup-modal-form label.inlined').addClass("hide");
    });

    $('#signup-modal-form input').blur(function(){
        if($(this).val() == "") {
            $('#signup-modal-form label.inlined').removeClass("hide").removeClass("focus");
        }
    });

    $('#signup-modal-form').submit(function(event){
        if($('input#id_email1').length == 1){
            var email = $(this).find('input[type=text]').val();
            var email_regex = /^([A-Za-z0-9_\+\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
            if(email_regex.test(email)){
                $('#signup-modal-form ul.msgfield li').text("");
                //$.fancybox.close();
            }
            else{
                $('#signup-modal-form ul.msgfield li').text("Invalid email address");
                return false;
            }
        }
    });
};

$(document).ready(function(){

    // display any link that has a class name fancybox in a fancybox
    $("a.fancybox").fancybox({
        overlayColor : '#000'
    });

    $('input.datepicker').datepicker({ dateFormat: "yy-mm-dd", autoSize: true });

    $("ul.sf-menu").superfish({
        delay: 500
    }).find("ul").bgIframe({opacity:false});

    // call signup modal function
    signup_modal();

    // enable jquery ui tabs to all elements with class 'tabs'
    $(".tabs").tabs();

    // JQuery UI accordian
    $(".accordion").accordion({
        //collapsible: true,
        navigation: true,
        autoHeight: false,
        clearStyle: true,
        header: 'h3'
    });

    // Facebook Connect profile display
    var display_profile = function() {
        $("div#fb-connect-module div#anonymous").hide();
        FB.XFBML.parse($("div#fb-connect-module div#authenticated").show().get(0));
    };
    $("div#fb-connect-module-login-button").facebook_require_login(display_profile,{caption: gettext("Connect")});

    // Facebook invite functionality on sidebar
    $("div#fb-connect-module-invite-button p a").fancybox({
        overlayColor: '#000',
        margin: 15,
        autoScale: false,
        scrolling: 'no',
        centerOnScroll: true,
        autoDimensions: false,
        width:625,
        height: 553,
        onComplete: function(){
            $("div#fb-profile").facebook_invite(INVITATION_URL, {
                    profile_fbml: "",
                    action_text: gettext("Select your friends and invite them"),
                    project_name: SITE_NAME,
                    invitation_message: INVITE_MESSAGE
                    });
            $.fancybox.center();
        }
    });

  // Display the campaign navigation drop down list.
/*  $("#nav-campaign-list").hover(
      // hovered over campaigns menu item
      function(){showCampaigns();},
      // hovered out campaigns menu item
      function(){campaignNavigationTimeoutID = window.setTimeout(hideCampaigns, campaignNavigationTimeoutDuration);}
  );*/

  $("#campaign-navigation").hover(
      // hovered over dropdown menu
      function(){clearTimeout(campaignNavigationTimeoutID);},
      // hovered out dropdown menu
      function(){campaignNavigationTimeoutID = window.setTimeout(hideCampaigns, campaignNavigationTimeoutDuration);
  });

  // Make the whole area of the blog module on sidebar clickable
  $("#blog-module").click(function(){
     window.location.href = $("#blog-module a.blog-url").attr("href");
  });

  // Shipment Tracking link
  $(".shipment-tracking-link").click(function(e){
      e.preventDefault();
      $(this).siblings('.shipment-tracking-form').submit();
  });


  // Submit brand suggestions using AJAX
  $("#brandsuggestion-module form").submit(function(e) {
      // stop form from submitting normally
      e.preventDefault();
      // grab data
      var form_data = $(this).serialize();
      var url = $(this).attr("action");
      // post form using AJAX
      $.post(url, form_data, function(response) {
          $('input#brandsuggestion-textfield').val("");
          $('#brandsuggestion-text').hide();
          $('#brandsuggestion-module-content').hide();
          $('#brandsuggestion-success').show().delay(3000).fadeOut(function(){
                $('#brandsuggestion-text').fadeIn();
                $('#brandsuggestion-module-content').fadeIn();
              });
      });
  });

  // Autocomplete for brand suggestions
  var autocomplete_url = $("#brandsuggestion-module form input[name=\"autocomplete_url\"]").val();
  var split = function (v) {
      return v.split( /,\s*/ );
  };
  var extractLast = function (term) {
      return split(term).pop();
  };
  var cache = {}, lastXhr;
  $("#brandsuggestion-module form input[type=\"text\"]").autocomplete({
      delay: 500,
      source: function(request, response) {
          var term = extractLast(request.term);
          if (term in cache) {
              response(cache[term]);
              return;
          }
          lastXhr = $.getJSON(autocomplete_url, {term: extractLast(request.term)}, function( data, status, xhr ) {
              cache[term] = data;
              if (xhr == lastXhr) {
                  response(data);
              }
          });
      },
      search: function() {
          // custom minLength
          var term = extractLast(this.value);
          if ( term.length < 3 ) {
              return false;
          }
      },
      focus: function() {
          // prevent value inserted on focus
          return false;
      },
      select: function(event, ui) {
          var terms = split(this.value);
          // remove the current input
          terms.pop();
          // add the selected item
          terms.push(ui.item.value);
          // add placeholder to get the comma-and-space at the end
          terms.push("");
          this.value = terms.join(", ");
          return false;
      }
  });
  // bdex category listing options
  $("#product-list-options").change(function() {
      this.submit();
  });

/*
  // bdex category listing page set previously selected options
  if(window.location.pathname.indexOf('/store/category/') != -1){
      //if in store/category and querystring exists
      var filterSize = getUrlVars()["filter_by_size"];
      var sortPrice = getUrlVars()["sort_by_price"];

      $("form#product-list-options select option").each(function(){
          if($(this).attr('id') == "sort-by-price-"+sortPrice){
              $(this).attr('selected','selected');
          }
          else if($(this).attr('id') == "filter-by-size-"+filterSize){
              $(this).attr('selected','selected');
          }
          else{
              $(this).attr('selected','');
          }
      });
  }
*/
});



