$(document).ready(function() {
  /* Disable text selection from triggers */
  $('.dropDownTrigger').disableSelection()
  
  /* Clears auto-filled text-boxes with placeholder text on laod */
  setPlaceholders();
  
  /* set click behavior for dropdowns */
  $(document).click( function(e) {
    var clear = true;
    $('.dropDownTrigger').each( function() {
      var dd = $($(this).attr("rel"));
      // No added behavior for clicks inside of dropdown
      if (dd.get(0) === e.target || $(dd).find($(e.target)).length > 0) {
        clear = false;
        return;
      }
      // If the clicked element is contained within a dropDownTrigger, toggle the dropdown
      if ($(this).get(0) === e.target || $(this).find($(e.target)).length > 0) {
        toggleDropDown(dd);
        clear = false;
      }
    });
    // Clear all dropdowns if none were clicked
    if (clear) 
      clearDropDowns();
  });
  
  /* nav scripts */
  var path = window.location.pathname;
  if ($('#main.appspage').length > 0)
  {
    $('#navTabApps').addClass('selected');
  }
  else if ($('#main.filespage').length > 0)
  {
    $('#navTabFiles').addClass('selected'); 
  }
  else if ($('#main.desktops').length > 0)
  {
    $('#navTabDesktops').addClass('selected');
  }
  else if ($('#main.homepage').length > 0)
  {
    $('#navTabHome').addClass('selected');
  }
  else if ($('#main.account').length > 0)
  {
  	$('#navTabLogin').addClass('selected');
  }
  else
  {
    $('#navTabStore').addClass('selected');
  }
});

/// Hides all dropdowns
function clearDropDowns() {
  $('.dropDownTrigger').each( function() {
    var dd = $($(this).attr('rel'));
    dd.addClass('hidden');
    dd.parents(".tab").removeClass("openedTab");
  })
}

/// Clears other dropdowns and toggles selected dropdown
function toggleDropDown(dd) {
  var toggle = $(dd).hasClass('hidden');
  // Clear all other drop downs
  clearDropDowns();
  if (toggle) 
  {
    dd.removeClass('hidden');
    dd.find('.action[type="submit"]').css('display', 'none').css('display', 'block'); //Fix IE8 button rendering bug
    dd.find('input:first').focus();
    dd.parents(".tab").addClass("openedTab");
  } 
  else 
  { 
    dd.addClass('hidden');
    dd.parents(".tab").removeClass("openedTab");
  }
}

/// Disables text selection on target elements
(function($){
  $.fn.disableSelection = function() {
      return this.each(function() {           
          $(this).attr('unselectable', 'on')
                 .css({
                     '-webkit-user-select': 'none',
                     '-khtml-user-select': 'none',
                     '-moz-user-select':'none',
                     '-webkit-user-select':'none',
                     'user-select':'none'
                 })
                 .each(function() {
                     this.onselectstart = function() { return false; };
                 });
      });
  };
})(jQuery);

$(document).ajaxComplete( setPlaceholders );

/// Sets placeholders
function setPlaceholders () {
  var nonEmpty = "non-empty";
  var phInputs = $('.placeholder input');
  var inputs = $('form input');
  
  function setLabelStyle () {
    var label = $(this);
    if (label.val().length || label.text().length) {
      label.addClass(nonEmpty);
    } else {
      label.removeClass(nonEmpty);
    }
  };

  phInputs.on('keydown', function () { $(this).addClass(nonEmpty); });
  phInputs.on('blur', setLabelStyle);
  phInputs.each(setLabelStyle);
  inputs.on('focus', function () { $(this).addClass("focus") })
  inputs.on('blur', function () { $(this).removeClass("focus") })
};
