/*
  @z-indexing (keep synced with screen.css):
  tabs:               200s
  slideshow:          300s
  slides (plugin):      0+
  searchresults:      400s
  select:             500s
  employee-info:      899
  menu:               900s
  fancybox:          1000s
 */

$(document).ready(function() {

  //performance-improving variables
  var content = $('#content');
  var column = $('#column', content);
  var object = $('> div.object[id]', content);
  var self;

  //column form, show-hide
  $('dd.form', column).css('display','none');
  formButts = $('dt.form a', column);
  formButts.click(function() {
    self = $(this);
    self.parent().toggleClass('expanded');
    return false;
  })
  .toggle(
      function(){
        self.parent().next('dd.form').show(77).addClass('expanded');
      },
      function(){
        self.parent().next('dd.form').hide(77).removeClass('expanded');
      }
  );

  //stuff for sliders
  var activeSlide;
  function upSlide(n){
    activeSlide = n;
    slideVals();
  }
  function slideVals() {
  var priceVal = $("#priceslider .values");
  var bedVal = $("#bedroomslider .values");
    var output;

    if (activeSlide == 1) {
    var startVal = $('#handle_from').attr('aria-valuetext');
    var endVal = $('#handle_to').attr('aria-valuetext');

    if (startVal == endVal) {
      if (startVal == 0 && endVal == 'Ubegrenset'){
        output = 'Ubegrenset';
      } else {
        output = startVal;
      }
    } else if (startVal == 0 && endVal == 'Ubegrenset') {
      output = endVal;
    } else if (startVal != 0 && endVal == 'Ubegrenset') {
      output = startVal + ' +';
    } else if (startVal == 0 && endVal != 'Ubegrenset') {
      output = 'Opp mot ' + endVal;
    } else {
      output = startVal + ' til ' + endVal;
    }
    priceVal.text('Pris: ' + output);
    }else if(activeSlide == 2){
      var hbed = $('#handle_bedrooms').attr('aria-valuetext');
      bedVal.text('Minimum ant. soverom: ' + hbed);
    }

  }

  //price slider
  if($("#priceslider").length > 0){
    $('select.cost', column).selectToUISlider({
      labels: 6,
      tooltipSrc: 'value',
      labelSrc: 'text'
    });
    var priceSlider = $('.ui-slider-handle:not(#handle_bedrooms)', column);
    var priceStart = $('#from [selected]', column).val();
    var priceEnd = $('#to [selected]', column).val();
    if (priceStart != '0' && priceEnd != 'Ubegrenset') {
      priceSlider.parent().before('<div class="values">Pris: ' + priceStart + ' til ' + priceEnd + '</div>');
    } else {
      priceSlider.parent().before('<div class="values">Pris: ' + priceEnd + '</div>');
    }
    $(".ui-slider-label.ui-slider-label-show").mouseover(function() { activeSlide = 1; slideVals();} );
    priceSlider.mouseover(function() { activeSlide = 1; slideVals();} );
  }

  if($("#bedroomslider").length > 0){
    //select slider-replacement
    $('select.bedrooms', column).selectToUISlider( {
      labels: 5,
      tooltipSrc: 'value',
      labelSrc: 'text'
    });

    //slider values
    var roomSlider = $('.ui-slider-handle#handle_bedrooms', column);
    var bedrooms = $('#bedrooms [selected]', column).val();
    roomSlider.parent().before('<div class="values">Minimum ant. soverom: ' + bedrooms + '</div>');
    roomSlider.mouseover(function() { activeSlide = 2; slideVals();} );
    $(".ui-slider-label.ui-slider-label-show").mouseover(function() { activeSlide = 2; slideVals();} );

  }

  //radiocheck-replacement
  $('input[type=checkbox], input[type=radio]', content).prettyCheckboxes();

  //select-replacement
  $('select:not(.multiple)',content).selectbox();

  //select z-indexing for formpage
  var formpage = $('#formpage', content);
  $('.jquery-selectbox', formpage).each(function(i) {
    $(this).css('z-index', 599-i);
  });

  //scrollable + tabs (hackish to make them work together where needed)
  var tabs = $('#tabs-related', column);
  tabs.tabs();
  var tabsCont = $('.ui-tabs-panel', tabs);
  tabsCont.css('position','static');
  $('.item.scrollable .container', column).jScrollPane();
  tabsCont.removeAttr('style');

  //internet exploration
  $('.checklist .right', column).after('<li class="spacer"></li>');

  //column show-hide
  var togglable = $('.togglable', column);
  //$('.subitem', togglable).css('display','none');
  //$('.subitem', togglable).hide();
  togglable.each(function(){
   if($(this).hasClass('expanded')){
     $(this).children(".subitem").show(77);
   } else {
     $(this).children(".subitem").hide(77);
   }
  });
  $('.togglable:last', column).addClass('last');
  $('h3 a', togglable).click(function(event) {
    self = $(this);
    var par = self.parents('.togglable');
    if(par.hasClass('expanded')) {
      par.removeClass('expanded');
      par.children().each(function(){
        if($(this).hasClass('subitem')) {
          $(this).hide(77);
        } else {
          $(this).children('.subitem').hide(77);
        }
      });
    } else {
      par.addClass('expanded');
      par.children().each(function(){
          if($(this).hasClass('subitem')) {
            $(this).show(77);
          } else {
            $(this).children('.subitem').show(77);
          }
        });
    }
    return false;
  });

  $(".addFavorite").click(function(event){
    var addObject = $(this);
    var objectid = addObject.attr('name');
    var removeObject = $('#remove_' + objectid);
    $.ajax({
      method: "get",
      url: "proc/addToFavorites",
      data: "objectid=" + objectid + "&act=add",
      beforeSend: function(){
    }, //show loading just when link is clicked
    complete: function(){
      addObject.css('display','none');
    }, //stop showing loading when the process is complete
    success: function(html){ //so, if data is retrieved, store it in html
      if ( $("#favoritesLink").length > 0 ) {
        $("#favoritesLink").html("<a href='id/36'>Favoritter (" + html + ")</a>"); //show the html inside .content div
        removeObject.css('display','inline');
      }
    },
    error: function(res, errorTxt, something){
    }
    });
    event.preventDefault();
  });

  $(".removeFavorite").click(function(event){
    var removeObject = $(this);
    var objectid = $("#objectid").text();
    var objectid = removeObject.attr('name');
    var addObject = $('#add_' + objectid);
    $.ajax({
      method: "get",
      url: "proc/addToFavorites",
      data: "objectid=" + objectid + "&act=del",
      beforeSend: function(){
    }, //show loading just when link is clicked
    complete: function(){
      removeObject.css('display','none');
    }, //stop showing loading when the process is complete
    success: function(html){ //so, if data is retrieved, store it in html
      if ( $("#favoritesLink").length > 0 ) {
        if(html > 0) {
          $("#favoritesLink").html("<a href='id/36'>Favoritter (" + html + ")</a>");
        } else {
          $("#favoritesLink").empty();
        }
        addObject.css('display','inline');
      }
    },
    error: function(res, errorTxt, something){
    }
    });
    event.preventDefault();
  });

  $('.note .w-body ul',column).addClass('normalist');
  $('.note .w-body ol',column).addClass('normalist');

  $(".ui-slider-scale.ui-helper-reset").bind('mouseenter mouseleave',function(){
    upSlide(1);
    upSlide(2);
  });
  upSlide(1);
  upSlide(2);
});

function getPostcode(elm) {
    var $this = $(elm);
    $.getJSON("proc/postcode?zip_code=" + $this.val(),
    function(data) {
      $.each(data, function(i,item){
        $this.next("input").empty().val(item.zip_name);
      });
    });
  }

