jQuery(document).ready(function($) {
  //$('a.event').easysttips();
  // parse sort links
  //parseLinks();
  // set click event on filter links
  $(".box-nav-event-inner-in a").click(function() {
    // reset and set parameter list with selected or unselected parameter
    // parsing for normal parameter
    // var param = $(this).attr('href').replace(/^.+&/, '').split('=');
    // parsing for rexseo parameter
    // parse parameters of filter url
    var paramFilter = $(this).attr('href').replace(urlEventOverview, '').replace('?', '').split('=');
    var paramFilterName = paramFilter[0];
    var paramFilterValue = paramFilter[1];

    // if filter parameter is reset, remove all parameters in current browser url
    if(paramFilterName == 'reset') {
      $("#searchstring").val('');
      $.address.value('/');
      return false;
    }

    // if filter parameter is reset, remove all parameters in current browser url
    if(paramFilterName == 'period') {
      if($.address.parameter(paramFilterName) == paramFilterValue) {
        $.address.parameter(paramFilterName, '');
      } else {
        $.address.parameter(paramFilterName, paramFilterValue);
      }
      return false;
    }    
    // get filter parameter already set in current browser url
    var urlParam = urlParamToArray($.address.parameter(paramFilterName));
    // if urlParam is empty set filter parameter and filter parameter value in current browser url
    // otherwise add or remove filter parameter value in current browser url
    if(urlParam.length < 1) {
      $.address.parameter(paramFilterName, paramFilterValue);
    } else { 
      // get position of filter parameter value already set in current browser url
      var arrayPos = $.inArray(paramFilterValue, urlParam);
      // if position is negative (value is not set), add value to filter parameter in current browser url
      // else position is positive (value is set), remove value from filter parameter in current browser url
      if(arrayPos == -1) {
        urlParam.push(paramFilterValue);
      } else {
        urlParam.splice(arrayPos, 1);
      }
      // if urlParam is empty, unset filter parameter in current browser url
      // else set filter parameter in current browser url 
      if(urlParam.length < 1) {
        $.address.parameter(paramFilterName, '');
      } else if(urlParam.length == 1) {
        $.address.parameter(paramFilterName, urlParam[0]);
      } else {
        $.address.parameter(paramFilterName, urlParam.join(','));
      }
    }
    return false;
  });
  
  if($.address.parameter('searchstring')){
    $("#searchstring").val($.address.parameter('searchstring'));
  }
  
  $("#searchevent").submit(function () {
    if($("#searchstring").val().length >= 0) {
      var arrNames = $.address.parameterNames();
      //for(strName in arrNames) {
      //  // $.address.parameter(arrNames[strName], '');
      //}
      $.address.parameter('searchstring', $("#searchstring").val());
    //  console.log("search");
    }
    return false;
   });

  // set change event on url changing
  $.address.change(function(evt) {
    // reset and set selection style for links according to parameter list
    if($(".box-nav-event-inner-in a").length > 0) {
      $(".box-nav-event-inner-in a").removeClass('current');
      if(evt.parameters['reset'] == undefined) {
        for (var arrParameter in evt.parameters){
          var urlParam = urlParamToArray(evt.parameters[arrParameter]);
          for (var intParameterValue in urlParam){
            var strQuery = arrParameter + '=' + urlParam[intParameterValue];
            $('a[href$="' + strQuery + '"]').addClass('current');
          }
        }
      }
      //console.log(document.location.href, String(document.location.href).length, evt.value);
      href = document.location.protocol + '//' + document.location.host + urlEventList;
      setAjaxCall(href, 'event-results', evt.parameters);
    }
  });
  
  // Show/Hide more artist details
  $("#artist-more-link").click(function () {
     $("#artist-more").slideToggle(1000);
     $(this).hide();
  });
  $("#artist-more-close").click(function () {
    $("#artist-more").slideToggle(1000);
    $("#artist-more-link").show();
  });
});

// Refresh div with ajax call results
function setAjaxCall(url, id, parameter) {
 $.get(url, parameter, function(data) {
   $('#'+id).html(data);
   parseLinks();
 });
}
// Replace links with correct url
function parseLinks(){
  $("#sortby a").each(function(){
    var href = $(this).attr('href').replace(urlEventList, urlEventOverview);
    $(this).attr("href", href);
    $(this).click(function() {
      var paramSort = $(this).attr('href').replace(urlEventOverview, '').replace('?', '').split('=');
      $.address.parameter(paramSort[0], paramSort[1]);
      return false;
    });
  });
}
// Transform url parameters to an array
function urlParamToArray(urlParam, strSeparator){ 
 if(strSeparator == undefined) strSeparator = ',';
 if(urlParam == undefined) {
   urlParam = [];
 } else if(urlParam.split(strSeparator).length > 0) {
   urlParam = urlParam.split(strSeparator);
 } else {
   urlParam = Array(urlParam);
 }
 return urlParam;
}
