$(document).ready(function () {


  /*************************************/
  /*          GLOBALE FUNCTIES         */
  /*************************************/


  /* TOOLTIP FUNCTIONS */
  if ($.browser.msie)
    $('#tooltip').css({
      background: 'none',
      filter: 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../img/layout/tooltip_bg.png", sizingMethod="scale"),alpha(opacity=100)'
    });

  $('.tooltip').mouseenter(function (event) {
    event.preventDefault();
    var posTop = (($(this).offset().top) - 150);
    var posLeft = (($(this).offset().left));

    $('#tooltip').toggle('fast').css({ top: posTop, left: posLeft })
  });

  $('.tooltip').mouseleave(function (event) {
    $('#tooltip').toggle('fast');
  });


  if ($.browser.msie)
    $('#tooltip2').css({
      background: 'none',
      filter: 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../img/layout/tooltip_bg.png", sizingMethod="scale"),alpha(opacity=100)'
    });

  $('.tooltip2').mouseenter(function (event) {
    event.preventDefault();
    var posTop = (($(this).offset().top) - 315);
    var posLeft = (($(this).offset().left - 360));
    $('#tooltip2').slideToggle('fast').css({ top: posTop, left: posLeft })
  });

  $('#tooltip').mouseenter(function () {
    $('#tooltip2').show();
  });

  /*
  $('.tooltip2').mouseleave(function (event) {
  $('#tooltip2').slideToggle('fast');
  });
  */

  $('#tooltip2').mouseleave(function (event) {
    $('#tooltip2').slideToggle('fast');
  });

  /* TABS WISSELEN */
  $('#optionsTabs ul li a').click(function (event) {
    event.preventDefault();
    $('#optionsTabs ul li a').removeClass('activeTab');
    $(this).addClass('activeTab');

    var targetDiv = '.'; targetDiv += $(this).attr('id');
    $('.optiesContainer').removeClass('active');
    $(targetDiv).addClass('active');
  });

  /* OVERLAY KLIKGEDRAG SLUITEN */
  $('#overlayer #sluiten').live('click', function () {
    $('#overlayer').removeClass('active').addClass('hidden');
    $('#overlayer.bovag').removeClass('active').addClass('hidden');
    $('#overlayer.nap').removeClass('active').addClass('hidden');
    $('#resulaten').show();
    $('.ie6').show();
  });

  /* INPUTS UPDATES NA WIJZIGING */
  $('input').not('input#postcode').bind('click', function () { var valuesForm = $('#formZoeken').serialize(); try { updateQuery(this, 'other', valuesForm); } catch (Error) { } }); /* IE FIX = click event op inputs*/




  /*************************************/
  /*            ZOEKPAGINA             */
  /*************************************/

  if (navigator.userAgent.indexOf("Firefox") != -1) {
    var valuesForm = $('#formZoeken').serialize();
    try { /*updateQuery(this, 'select', valuesForm);*/ } catch (Error) { };
  }


  /* UPDATE VELDEN NA SELECTIE INPUTS(onchange) */
  $('#postcode').bind('click', function () { $('#postcode').numeric(); });
  $('#postcode').keyup(function () {
    if ($(this).attr('value').length > 3) {
      var valuesForm = $('#formZoeken').serialize();
      $(":select[name='afstand']").focus();
      try { updateQuery(this, 'other', valuesForm); } catch (Error) { };
    }
  });

  $('.selectSingle, .chkbox').bind('change', function () { var valuesForm = $('#formZoeken').serialize(); updateQuery(this, 'select', valuesForm); });
  $('.selectDouble, #postcode').bind('change', function () { var valuesForm = $('#formZoeken').serialize(); updateQuery(this, 'other', valuesForm); }); /* Door IE FIX afzonderlijke check op onchange voor kleine selects die niet updaten */

  $('.meerinfo').click(function (event) {
    event.preventDefault();
    $('.ie6').hide();

    $('#overlayer').removeClass('hidden').addClass('active');

  });

  $('#resultnr').click(function (event) {
    event.preventDefault();
    $('#submit').click();
  })

  // interactie om de submit knop te hiden, om dubbelklikken te voorkomen.
  $("#submit").show();
  $('#submit').click(function () {
    $(this).hide();
  });

  /* Verwijderen zoekselectie (kruisje) */
  $('.selectedValue img').live('click', function () {
    var selectTarget = $(this).parent().next();

    /* selected attribuut verwijderen */
    selectTarget.find('*[selected]').removeAttr('selected');

    /* selected attribuut op eerste optie zetten */
    $("option[value='']", selectTarget).attr('selected', true);



    if (selectTarget.attr('name') == 'merk') {
      $(this).parent('.selectedValue').remove();
      $(":select[name='model']").parent('.selectedValue').remove();

      selectTarget.removeClass('hidden blocked').addClass('show').show();
      $(":select[name='model']").removeClass('hidden blocked').addClass('show').show();
    } else {
      selectTarget.removeClass('hidden blocked').addClass('show').show();
      $(this).parent('.selectedValue').remove();
    }

    var valuesForm = $('#formZoeken').serialize();
    updateQuery(this, 'select', valuesForm);
  })


  /*************************************/
  /*         RESULTAATPAGINA           */
  /*************************************/

  /* TABLEROW FUNCTIONS */
  $('.resultRow').hover(function () {
    $('.activeRow').removeClass('activeRow');
    $(this).addClass('activeRow');
  }, function () {
    $(this).removeClass('activeRow');
  });

  /* KLIK GEDRAG OP DE RESULTAATREGEL */
  $('.resultRow').click(function () {

    window.location.href = $(this).attr('rel');
  });


  /* OVERLAY ZOEKOPDRACHT */
  $('.zoekopdracht').click(function (event) {
    event.preventDefault();
    $('#resulaten').hide();
    $('#overlayer.zoekopdracht').removeClass('hidden').addClass('active');

    /* VALIDATIE LIBRARY FORM */
    try { $("#zoekopdracht").validate(); } catch (Error) { };
  });

  /* OVERLAY ZOEKOPDRACHT(IN) */
  $('#overlayer.zoekopdracht #start_zoekopdracht').live('click', function (event) {
    event.preventDefault();
    if ($('#zoekopdracht').valid()) {
      var valuesForm = $('#zoekopdracht').serialize();
      sendZoekopdracht(this, valuesForm);
    }
  });

  function sendZoekopdracht(exTargetElement, valuesForm) {
    var loTargetElement = exTargetElement;

    $.ajax({
      type: "POST",
      url: "/asp/appmain.asp?appactie=zoekOpdracht",
      data: valuesForm,
      beforeSend: function () {
        //TODO: Blur indien langere wachttijd
        $('.zoekbottom').addClass('hidden');
        $('.zoekbg').html("<div id='load'>Een momentje geduld a.u.b. Uw zoekopdracht wordt opgeslagen<br><img src='/img/layout/load.gif'/></div>");
      },
      success: function (response) {

        var bemessage = $(response).find("RESULT CONTEXT PARAMETER[name='bemessage']").attr('value');
        var beresult = $(response).find("RESULT VRIJETEKST");

        if (beresult == '0') {
          $('.zoekbg').html("<div id='load'>" + bemessage + "</div>");
          $(':zoekbg').attr("disabled", false);
        } else {
          $('.zoekbg').html("<div id='load'>" + bemessage + "</div>");
        }
      },
      error: function (requestobject, errortype, exeptionobject) {
        $('.zoekbg').html("<div id='load'>We hebben uw zoekopdracht helaas <strong>niet</strong> kunnen verwerken.<br/>Onze excuses voor het ongemak. Probeert u het gerust later nog eens.</div>");
        // TODO: Error afhandeling
      }
    });
  }


  /*********************************************/
  /* WIJZIGEN VAN INSTELLINGEN RESULTAATREGELS */
  /*********************************************/

  $("select[name='resultaatAantal']").bind('change', function () { updatecallBackend(this, 'pag'); });
  $(".tableHeader .kolom").click(function (event) { event.preventDefault(); updatecallBackend(this, 'kolom'); });
  $(".tableHeader .nonactive").click(function (event) { event.preventDefault(); });
  $("#resultsNav #navbutton").live('click', (function (event) { event.preventDefault(); updatecallBackend(this, 'nav'); }));
  $("#navvorige").click(function (event) { event.preventDefault(); updatecallBackend(this, 'navvorige'); });
  $("#navvolgende").click(function (event) { event.preventDefault(); updatecallBackend(this, 'navvolgende'); });




  /*************************************/
  /*           DETAILPAGINA            */
  /*************************************/

  /* PRETTYPHOTO INIT & FUNCTIONALITEIT */
  try { $('#medium').prettyPhoto({ theme: 'facebook' }); } catch (Error) { };   /* ALLEEN WANNEER DIT ELEMENT BESTAAT */

  $('#images .medium').click(function () {
    var images = new Array();
    images = $.each($('.thumbnail'), function () { $('.thumbnail').attr('href'); });
    images[images.length] = $('.active').parent().attr('href');

    $.prettyPhoto.open(images, '', '');
  });
  /* OVERLAY BOVAG */
  $('#detailLogos .bovag').click(function (event) {
    event.preventDefault();
    $('#overlayer.bovag').removeClass('hidden').addClass('active');
  });
  /* OVERLAY NAP */
  $('#detailLogos .nap').click(function (event) {
    event.preventDefault();
    $('#overlayer.nap').removeClass('hidden').addClass('active');
  });

  var formTipContent = $('.tipbg').html();

  $('#qlinks a.mailtip').click(function (event) {
    event.preventDefault();
    $('.tipbg').html(formTipContent);
    $('#overlayer.mailtip').removeClass('hidden').addClass('active');

    /* VALIDATIE LIBRARY FORM */
    try { $("#mailtip").validate(); } catch (Error) { };

    /* TIP EEN VRIEND(IN) */
    $('#start_tipvriend').live('click', function (event) {
      event.preventDefault();
      var valuesForm = $('#mailtip').serialize();
      if ($('#mailtip').valid()) {
        sendMail(this, valuesForm);
      }
    });

    function sendMail(exTargetElement, valuesForm) {
      var loTargetElement = exTargetElement;

      $.ajax({
        type: "POST",
        url: "/asp/appmain.asp?appactie=mailVriend",
        data: valuesForm,
        beforeSend: function () {
          //TODO: Blur indien langere wachttijd
          $('.tipbg').html("<div id='load'>Uw tip wordt verzonden..<br><img src='/img/layout/load.gif'/></div>");
        },
        success: function (response) {
          var bemessage = $(response).find("RESULT CONTEXT PARAMETER[name='bemessage']").attr('value');
          var beresult = $(response).find("RESULT VRIJETEKST");

          if (beresult == '0') {
            $('.tipbg').html("<div id='load'>" + bemessage + "</div>");
          } else {
            $('.tipbg').html("<div id='load'>" + bemessage + "</div>");
          }
        },
        error: function (requestobject, errortype, exeptionobject) {
          $('.tipbg').html("<div id='load'>We hebben uw tip helaas <strong>niet</strong> kunnen verzenden.<br/>Onze excuses voor het ongemak. Probeert u het gerust later nog eens.</div>");
          // TODO: Error afhandeling
        }
      });
    }
  });


  $('#qlinks a.dealerEmail').click(function (event) {
    event.preventDefault();
    var targetElement = $(this)
    var bpnumber = $(this).attr('rel');

    $.ajax({
      type: "POST",
      url: "/asp/appmain.asp?appactie=deal-occ-getemail&bpnummer=" + bpnumber + "",
      beforeSend: function () {
      },
      success: function (response) {

        if (bpnumber != '') {
          var dealerEmailadres = $(response).find("EMAILADRES").text();

          if (dealerEmailadres == '') {
            dealerEmailadres = $(targetElement).attr('alt');
          }
        } else { dealerEmailadres = $(targetElement).attr('alt'); }

        location.href = "mailto:" + dealerEmailadres + "";

      },
      error: function (requestobject, errortype, exeptionobject) {

        // TODO: Error afhandeling
      }
    });
  });


  function fuTextToXml(s) {
    var x, ie = /msie/i.test(navigator.userAgent);
    try {
      var p = ie ? new ActiveXObject("Microsoft.XMLDOM") : new DOMParser();
      p.async = false;
    } catch (e) { throw new Error("XML Parser could not be instantiated") };
    try {
      if (ie) x = p.loadXML(s) ? p : false;
      else x = p.parseFromString(s, "text/xml");
    } catch (e) { throw new Error("Error parsing XML string") };
    return x;
  }






  /******************************/
  /* CAROUSEL & IMAGE FUNCTIES  */
  /******************************/
  try {
    $('#carousel').jcarousel({
      vertical: true,
      scroll: 1,
      initCallback: mycarousel_initCallback
    });
  } catch (Error) { };

  var aantalThumbs = $('.jcarousel-item').size();

  /* CALLBACK VOOR HET WEERGEVEN VAN GROTE ILLUSTRATIE */
  function mycarousel_initCallback(carousel, state) {
    if (state == 'init') {
      var targetThumb = $('.jcarousel-item-1');
      var urlThumb = $('a', targetThumb).attr('rel');

      $(targetThumb).addClass('selectedThumb');
      $('.medium').attr('src', urlThumb);
      $('img', targetThumb).addClass('active');
    }
    else if (state == 'reset') {
      alert('jCarousel was nog niet klaar')
    }
  };

  /* FOCUS OP VOLGENDE IMAGE */
  $('.jcarousel-next').bind('click', function () {
    if ($('.selectedThumb').attr('jcarouselindex') < $('#carousel').find("li:last").attr('jcarouselindex')) {
      var targetThumb = $('.selectedThumb');
      var newTarget = $(targetThumb).next();
      var urlThumb = $('a', newTarget).attr('rel');

      $(targetThumb).removeClass('selectedThumb');
      $('a img', targetThumb).removeClass('active');

      $(newTarget).addClass('selectedThumb');
      $('a img', newTarget).addClass('active');

      $('.medium').attr('src', urlThumb);
    }
  })

  /* FOCUS OP VORIGE IMAGE */
  $('.jcarousel-prev').bind('click', function () {
    if ($('.selectedThumb').attr('jcarouselindex') > $('#carousel').find("li:first").attr('jcarouselindex')) {
      var targetThumb = $('.selectedThumb');
      var newTarget = $(targetThumb).prev();
      var urlThumb = $('a', newTarget).attr('rel');

      $(targetThumb).removeClass('selectedThumb');
      $('a img', targetThumb).removeClass('active');

      $(newTarget).addClass('selectedThumb');
      $('a img', newTarget).addClass('active');

      $('.medium').attr('src', urlThumb);
    }
  })

  /* FOCUS OP GEKLIKTE IMAGE */
  $('.thumbnail').click(function (event) {
    event.preventDefault();
    var targetThumb = $('.selectedThumb');
    var newTarget = $(this).parent();
    var urlThumb = $('a', newTarget).attr('rel');

    $(targetThumb).removeClass('selectedThumb');
    $('a img', targetThumb).removeClass('active');

    $(newTarget).addClass('selectedThumb');
    $('a img', newTarget).addClass('active');

    $('.medium').attr('src', urlThumb);
  });


  /*******************************************/
  /* GOOGLE ANALYTICS METINGTRIGGERS         */
  /*******************************************/

  $(".spotlight").click(function (e) {
    _trackEvent("Spotlights", "Klik", "", $(this).attr("name").val(), false);
  });
});
