// 1.1
// SWFobject for IPS by sveinung@idium.no Feb 2010
(function f(b){var d=window.ips=window.ips||{},c=b||{loading:false},e;if(d.queue===undefined)d.queue=[];if(typeof window.swfobject!=="undefined"&&typeof window.swfobject.embedSWF!=="undefined")c.loading=false;else if(d.queue.length>0){if(c.loading===false){b=document.createElement("script");b.type="text/javascript";b.async=true;b.src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js";(document.getElementsByTagName("head")[0]||document.getElementsByTagName("body")[0]).appendChild(b); c.loading=true}e=setTimeout(function(){f(c)},50)}if(c.loading===false&&d.queue.length>0)for(b=0;b<d.queue.length;b++){var a=d.queue[b];if(!a.loaded){a.loaded="true";swfobject.embedSWF(a.url,a.element,a.width,a.height,a.version,a.expressInstall,a.flashvars,a.params,a.attributes)}}if(c.loading===false&&typeof window.jQuery!=="undefined")e=setTimeout(function(){jQuery(document).one("ajaxStart",function(){e=setTimeout(function(){f(c)},100)})},2E3)})();


jQuery(document).ready(function($) {

//Webshop product variant handling
if($("body.webshop").size() > 0) {
  $("form.basket_action input[name='product_variant']").val($("select.product_variant").val());
  $("select.product_variant").unbind().bind("change", function() {
    $("form.basket_action input[name='product_variant']").val($(this).val());
  });
}

//Webshop registration group to join
$("select[name='customer_type']").unbind().bind("change", function(e) {
  $("input[name='groups']").val($(this).val());
  $("input.customer_type").val($(this).val());
});

//Webshop payment selector
$("input[name='payment']").unbind().bind("change", function(e) {
  $(this).siblings("a").children().click();
});

//Lokallag frontpage selector

$(".undersite_lokallag_fp .main_select").unbind().bind("change", function(e) {
  if($(".undersite_lokallag_fp .main_select option:selected").val() == -1) {
    $(".undersite_lokallag_fp .sub_select").hide();
  } else {
    $.ajax({
      url: ips.system.base + '?template=undersite_lokallag_fp&ajax=true&folderid=' + $(this).val(),
      cache: false,
      success: function(data) {
        $(".undersite_lokallag_fp  .sub_select").html(data);
        $(".undersite_lokallag_fp .sub_select").css("display", "block");
        $(".undersite_lokallag_fp .sub_select").show();
      }
    });
  }
});

$(".undersite_lokallag_fp .lokallag_submit").unbind().bind("click", function(e) {
  e.preventDefault();
  //No fylke selected
  if($(".undersite_lokallag_fp .main_select option:selected").val() == -1) {
    // Do nothing
  //Fylke and kommune selected
  } else if($(".undersite_lokallag_fp .sub_select option:selected").val() != -1) {
    window.location.replace(ips.system.base + $(".undersite_lokallag_fp .sub_select option:selected").attr("data-folderpath"));
  //Only fylke selected
  } else if($(".undersite_lokallag_fp .sub_select option:selected").val() == -1 || !($(".undersite_lokallag_fp .sub_select").is(":visible"))) {
    window.location.replace(ips.system.base + $(".undersite_lokallag_fp .main_select option:selected").attr("data-folderpath"));
  }
});

if( $(".gallery").length ) {
  $(".galleryMain").hide();
  $(".gallery_thumb").click(function(e) {
    e.preventDefault();

    $(".galleryMain").slideDown();

    var urlObj = {
      "module": "Files",
      "action": "FileFolder.publicDisplay",
      "id": $(this).attr("rel"),
      "template": "slideshowSmall",
      "_ips_encoding": "UTF-8",
      "lang": ips.system.lang
    }
    $(".galleryMain").load(ips.system.base + "?" + $.param(urlObj), function() {
      $("div.pics").before('<div class="pagnav"><a class="pagprev">Forrige</a><div class="pagpages"></div><a class="pagnext">Neste</a></div>').cycle({
        delay: -4000,
        pager: '.pagpages',
        next: '.pagnext',
        prev: '.pagprev',
        activePagerClass: 'active'
      });
    });
    /*$(".galleryMain").load(base + "?module=Files;action=FileFolder.publicDisplay;lang=" + ips.system.lang + ";id=" + id + ";template=slideshowSmall", function () {
      $("div.pics").before('<div class="pagnav"><a class="pagprev">Forrige</a><div class="pagpages"></div><a class="pagnext">Neste</a></div>').cycle({
        delay: -4000,
        pager: '.pagpages',
        next: '.pagnext',
        prev: '.pagprev',
        activePagerClass: 'active'
      });
    });*/
  });
}

/* Activate shoppingbasket */
 /*var basket = $.get(ips.system.base + "?template=simplebasket&nocache=true",function(data){
    $(".nav_main").append(data);
  });*/
  $.ajax({
    url: ips.system.base + '?template=simplebasket&amp;nocache=true',
    success: function(data){
      $(".nav_main").append(data);
    }
  });
  
  //basket.success();

// TOGGLE NEWSLETTER YOUTH
 $(".newsletter_youth a").click(function(e){
    e.preventDefault();
    $(this).parent().parent().children(".newsletterform_youth").toggle();
  });



$('.newsletterField').click(function() {
    $('.labelNewsletter').hide();
});

  // VALIDATE E-MAIL.
  var emailpattern = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

 // NEWSLETTER SIGN UP
  jQuery("#newsletterForm").submit(function(e){
    e.preventDefault();
    var $this = jQuery(this); //cache
    var $email = $this.find("input.email"); //cache
    if(!$this.find(".response").get()[0]) {
      jQuery("<p class='response' />").prependTo($this);
    }
    var $response = $this.find(".response"); // Cache
    if (emailpattern.test($email.val())) {
      $response.text("Sending...");
      $.ajax({
        url: "?template=newsletterResponse;ajax=true;",
        data: $this.serialize(),
        error: function() {
          $response.text("Feil / Error");
        },
        success: function(data) {
          $response.text("E-post er lagt til nyhetsbrevlisten");
          $email.removeClass("error").val("");
        }
      });
    } else {
      $email.addClass("error");
      $response.text("Vennligst skriv inn en gyldig epostadresse");
    }
  });






 // NEWSLETTER SIGN UP
  jQuery("#newsletterYouth").submit(function(e){
    e.preventDefault();
    var $this = jQuery(this); //cache
    var $email = $this.find("input.email"); //cache
    if(!$this.find(".response").get()[0]) {
      jQuery("<p class='response' />").prependTo($this);
    }
    var $response = $this.find(".response"); // Cache
    if (emailpattern.test($email.val())) {
      $response.text("Sending...");
      $.ajax({
        url: "?template=newsletterYouthResponse;ajax=true;",
        data: $this.serialize(),
        error: function() {
          $response.text("Feil / Error");
        },
        success: function(data) {
          $response.text("E-post er lagt til nyhetsbrevlisten");
          $email.removeClass("error").val("");
        }
      });
    } else {
      $email.addClass("error");
      $response.text("Vennligst skriv inn en gyldig epostadresse");
    }
  });
  
  // fast giver popup
  $(".fastgiver").fancybox({
   autoDimensions: false,
   width: 970,
   height: 750,
   onComplete: function () {
     $.getScript(ips.system.base + 'filestore/jwplayer.js', function () {
       $('#fornavn').example(function () {
         return $(this).attr('title');
       });
       $('#etternavn').example(function () {
         return $(this).attr('title');
       });
       $('#adr').example(function () {
         return $(this).attr('title');
       });
       $('#postnr').example(function () {
         return $(this).attr('title');
       });
       $('#mobil').example(function () {
         return $(this).attr('title');
       });
       $('#epost').example(function () {
         return $(this).attr('title');
       });
       $('#belop').example(function () {
         return $(this).attr('title');
       });
       jwplayer("theplayer").setup({
         flashplayer: ips.system.base + "filestore/player.swf",
         autostart: 'true',
         file: ips.system.base + "filestore/detektor2.mp4",
         height: 506,
         width: 900,
         events: {
           onComplete: function () {
             $('#theplayer').hide();
             $('#theform').fadeIn(1600);
           }
         }
       });
       var $form = $("#articles_articlecontent_17891_47");
       $form.unbind().bind("submit", function (event) {
         event.preventDefault();
         var thereAreErrors = false;
         if (!$form.find("input#epost").val().match(/[\w-]+@([\w-]+\.)+[\w-]+/)) {
           thereAreErrors = true;
           alert("Feil epost!")
         }
         if (!$form.find("input#belop").val().match(/[0-9]{3,}/)) {
           $form.find("input#belop").val("200");
         }
         $form.find("input[type='text']").each(function () {
           if ($(this).val().length == 0) {
             if (thereAreErrors == false) {
               console.log($(this));
               alert("Alle feltene skal fylles ut");
             }
             thereAreErrors = true;
           }
         });
         if (thereAreErrors == false) {
           $.post($(this).attr("action"), $(this).serialize(), function () {
             $form.find("#wrapper").children().remove();
             $('<div id="receipt" />').appendTo("#wrapper");
             $('#receipt').fadeIn(1600);
           });
         }
       });
     });
   }
  });
    if(openGiverMovie) $(".fastgiver").first().click();
}); // end of document ready


function fbs_click(fbs_title) {
  u = location.href;
  t = fbs_title;
  window.open('http://www.facebook.com/sharer.php?u=' + encodeURIComponent(u) + '&t=' + encodeURIComponent(t), 'sharer', 'toolbar=0,status=0,width=626,height=436');
  return false;
}

function twitter_click() {
  u = location.href;
  t = document.title;
  window.open('http://twitter.com/home?status=' + encodeURIComponent(u) + '&t=' + encodeURIComponent(t), 'sharer', 'toolbar=0,status=0,width=810,height=436');
  return false;
}

jQuery.fn.sort = (function () {

  var sort = [].sort;

  return function (comparator, getSortable) {

    getSortable = getSortable ||
    function () {
      return this;
    };

    var placements = this.map(function () {

      var sortElement = getSortable.call(this),
          parentNode = sortElement.parentNode,
          
          
          
          
          // Since the element itself will change position, we have
           // to have some way of storing it's original position in
           // the DOM. The easiest way is to have a 'flag' node:
          nextSibling = parentNode.insertBefore(
        document.createTextNode(''), sortElement.nextSibling);

      return function () {

        if (parentNode === this) {
          throw new Error("You can't sort elements if any one is a descendant of another.");
        }

        // Insert before flag:
        parentNode.insertBefore(this, nextSibling);
        // Remove flag:
        parentNode.removeChild(nextSibling);

      };

    });

    return sort.call(this, comparator).each(function (i) {
      placements[i].call(getSortable.call(this));
    });

  };

})();




//Fancy Selectboxes
(function ($) {
  $.fn.bSelect = function (options) {
    options = $.extend({}, $.fn.bSelect.defaults, options);

    return this.each(function () {
      var $select = $(this),
          code = "<ul class='bselect' rel=" + $select.attr("id") + ">",
          $opts = $select.find("option"),
          selopt = 0,
          timer;
      $opts.each(function (i) {
        var $cur = $(this).attr("id", "opt" + i);
        code += "<li rel='opt" + i + "'>" + $cur.text() + "</li>";
      });
      code += "</ul>";

      var $code = $(code).insertAfter($select).bind("click", function (e) {
        if ($code.hasClass("expanded")) {
          $code.removeClass("expanded");

          if (options.multiple) {
            // Remove first option from list
            $(this).find("li [rel=opt0]").detach();

            // Show selected options
            $("#selected" + $(this).attr("rel")).show();
            $("#selected" + $(this).attr("rel")).append("<li class='selectedOption'>" + $(e.target).text() + "<a href='#' class='remove' rel='" + $(e.target).attr('rel') + "'>Remove</a></li>").live("click", function (e) {
              e.preventDefault();

              // Remove attribute from original select
              $select.find("option[id=" + $(e.target).attr('rel') + "]").removeAttr("selected");

              // Remove class from selected element
              $(this).prev("ul").find("li[rel=" + $(e.target).attr('rel') + "]").removeClass("selected");
              $(this).prev("ul").find("li").sort(function (a, b) {
                return $(a).text() > $(b).text() ? 1 : -1;
              });

              // Remove selected element from selected elements list
              $(e.target).parent().slideUp(500, function () {
                $(e.target).parent().remove();
              });
            });
          }

          if (!options.multiple) {
            $(e.target).parent().find("li").removeClass("selected");
          }

          // Puts clicked element at top of list
          $(e.target).detach().prependTo(this);

          // Add class to selected element
          $(e.target).addClass("selected")

          // Add attribute to original select
          $(this).prev().find("option[id=" + $(e.target).attr('rel') + "]").attr("selected", "selected");

          // Animate container back to original size
          $code.animate({
            "height": options.minheight
          }, options.speed);
          $("ul.bselect").scrollTop(0);

        } else {
          $code.addClass("expanded");
          $code.animate({
            "height": options.maxheight
          }, options.speed);
        }
      }).mouseleave(function () {
        timer = setTimeout(function () {
          if ($code.hasClass("expanded")) {
            $code.removeClass("expanded");
            $code.animate({
              "height": options.minheight
            }, options.speed);
          }
        }, options.timer);
      }).mouseenter(function () {
        clearInterval(timer);
      });

/*$("a.remove").live("click", function(e) {
        e.preventDefault();
        
        // Remove attribute from original select
        $("#category").find("option[id=" + $(e.target).attr('rel') + "]").removeAttr("selected");

        // Remove class from selected element
        $("ul.bselect").find("li[rel=" + $(e.target).attr('rel') + "]").removeClass("selected");

        // Remove selected element from selected elements list
        $(e.target).parent().slideUp(500, function() {
	      $(e.target).parent().remove();
        });
        
      });*/
      $select.hide(); // Hides original select
    });
  };
  $.fn.bSelect.defaults = {};
})(jQuery);

(function ($) {
  var base = ips.system.base; //cache as local variable
  var lang = ips.system.lang; //cache as local variable
  var params = ips.system.parameters; //cache as local variable
  
  // ----------------- TIP A FRIEND ---------------------
  $("#triggerTipform").live("click", function () {
    $('.tipsForm').slideToggle('slow');
  });

  // TIP  A FRIEND AJAX SETUP AND VALIDATION
  var $tipsform = $(".tipsForm");
  var emailpattern = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

  $("a.forgotten_password").click(function(e) {
    e.preventDefault();
    $("form.forgotten_password").slideDown();
  });

  $tipsform.hide().live("submit", function (e) {
    e.preventDefault();
    var $this = $(this),
        
        
        //cache
        $response = $this.find("h3"),
        $sender = $this.find("#senderEmail"),
        $recipient = $this.find("#recipientEmail");

    if (!emailpattern.test($sender.val())) {
      $response.addClass("error").text(ips.strings.checkemail);
      $sender.addClass("error").focus();
      return false;
    } else if (!emailpattern.test($recipient.val())) {
      $response.addClass("error").text(ips.strings.checkemail);
      $recipient.addClass("error").focus();
      return false;
    }
    $response.text(ips.strings.sending);
    $(".tipsForm:visible input[name=ipsfm_url]").val(window.location.toString().replace(/\s+/igm, '+'));
    $.ajax({
      type: 'POST',
      url: './',
      data: $this.serialize(),
      success: function () {
        $response.text(ips.strings.sendt);
        $this.find("input[type=text]").val("");
        $tipsform.delay(5000).slideUp("slow");
      }
    });
  }); // END TIP A FRIEND
  // SHARE
  $("a.share").click(function (e) {
    e.preventDefault();
    $(this).parent().find("ul.shareWrapper").toggle();
  });

  //ADVERTS
  if ($("div.ad").length) {
    $("div.ad").load(base + "?module=Ads;action=AdFolder.publicGetRandomAd;template=ads");
  }

  //IMAGE SLIDESHOW
  if ($("div.picsWrapper").length) {
    var filefolderId = $("div.picsWrapper").attr("rel");
    $("div.picsWrapper").load(base + "?module=Files;action=FileFolder.publicDisplay;lang=" + ips.system.lang + ";id=" + filefolderId + ";template=slideshowSmall", function () {
      $("div.pics").before('<div class="pagnav"><a class="pagprev">Forrige</a><div class="pagpages"></div><a class="pagnext">Neste</a></div>').cycle({
        delay: -4000,
        pager: '.pagpages',
        next: '.pagnext',
        prev: '.pagprev',
        activePagerClass: 'active'
      });
    });
  }

  /* Main Article Slider */
  if ($("div.slider").length) {
    $("div.slider").cycle({
      delay: -4000,
      timeout: 5000,
      activePagerClass: 'active'
    });
  }


  //TOGGLE ARTICLE CONTENT
  if ($("a.toggleContent").length) {
    var expanded = false;
    $("a.toggleContent").click(function (e) {
      e.preventDefault();
      $(this).prev(".editor-content").slideToggle();
      if (expanded == false) {
        $(this).text(ips.strings.showless);
        expanded = true;
      } else {
        $(this).text(ips.strings.showmore);
        expanded = false;
      }
    });
  }

  $(".tweet").tweet({
    username: "norskfolkehjelp",
    join_text: "auto",
    //avatar_size: 32,
    count: 1,
    auto_join_text_default: "we said,",
    auto_join_text_ed: "we",
    auto_join_text_ing: "we were",
    auto_join_text_reply: "we replied to",
    auto_join_text_url: "we were checking out",
    loading_text: "loading tweets..."
  });

  // GOOGLE MAP COUNTRIES
  $("#fs_map").click(function (e) {
    e.preventDefault();
    $.fancybox({
      'padding': 10,
      'autoScale': true,
      'autoDimensions': true,
      'width': 680,
      'height': 495,
      'href': base + "?template=map",
      'onComplete': function () {
        initialize();
      }
    });
  });

  $("a.iframe").fancybox({
    'padding': 10,
    'autoScale': true,
    'autoDimensions': true,
    'width': 680,
    'height': 495,
    hideOnOverlayClick: true
  });

  $("a.ajax:not(a.splash)").fancybox({
    'padding': 0,
    'scrolling': 'no',
    'autoScale': true,
    'height': 1002,
    'width':618,
    'hideOnOverlayClick': true
  });
  var success = true;
  $("a.splash").fancybox({
    'padding': 0,
    'scrolling': 'no',
    'autoScale': false,
    'height': 1002,
    'width':618,
    'hideOnOverlayClick': true,
    'onComplete':function() {
       setTimeout(
         function() {
           if(success) {
             jQuery('a.splash').click();
             success = false;
           }
         },
         1000
       )
     }
  });


  var $eventCalendar = $(".column-1.last"); //CACHE
  if ($eventCalendar.length) {
    $eventCalendar.delegate(".calendar a.next, .calendar a.prev", "click", function (e) {
      e.preventDefault();
      $("div.calendar").load(base + $(this).attr("href") + "&get=calendar");
    });
  }

  function initialize() {
    var myLatlng = new google.maps.LatLng(-25.363882, 131.044922);
    var myOptions = {
      zoom: 1,
      center: myLatlng,
      navigationControl: true,
      mapTypeControl: false,
      navigationControlOptions: {
        style: google.maps.NavigationControlStyle.ZOOM_PAN
      },
      scaleControl: false,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    $.each(ips.countries, function (index, value) {
      var myLatlng = new google.maps.LatLng(value.longitude, value.langitude);
      var contentString = "<h1>" + value.name + "</h1><p>" + value.description + "</p><a href='" + value.link + "'>Les mer</a>";
      var infowindow = new google.maps.InfoWindow({
        content: contentString
      });
      var marker = new google.maps.Marker({
        position: myLatlng,
        title: value.name
      });
      marker.setMap(map);
      google.maps.event.addListener(marker, 'click', function () {
        infowindow.open(map, marker);
      });
    });
  } // END GOOGLE MAP COUNTRIES
  // EVENT DELEGATION - Not touching dom until click
  $(".externalLink").live("click", function () {
    $(this).attr("target", "_blank");
  });

  //PAGE RESULTATER
  var $results = $("div.resultater");
  if ($results.length) {
    var pagesize = 10;
    var layout;
    if (ips.system.currentFolderId == 3171) {
      $results.ajaxStart(function() {
        $(this).addClass("loading");
      }).ajaxComplete(function() {
        $(this).removeClass("loading");
      });
      $.ajax({
        type: "GET",
        url: base + "?" + "template=groovyResults&folderId=" + ips.system.currentFolderId + "&pagesize=1",
        success: function(data){
          $results.append(data);
        },
        error: function(){
          alert("Feilet"); 
        }
      });
      //$results.load(base + "?template=groovyResults&folderId=" + ips.system.currentFolderId + "&pagesize=1");
    }
    else {
    var qrootValue = '3169';

    var urlObj = {
      "module": "Search",
      "action": "Search.publicSearch",
      "qtype": "Articles.Article",
      "qroot": qrootValue,
      "lang": ips.system.lang,
      "template": "results",
      "_ips_encoding": "UTF-8",
      "pagesize": pagesize,
      "layout": layout,
      "query": "attribcategory:(" + ips.search.categories.replace(",", "") + ")"
    }
    $results.load(base + "?" + $.param(urlObj).replace(/%2B/ig, '+').replace(/%3A/ig, ':'));
    }
  }

  $(".paginator a").live("click", function(e) {
    e.preventDefault();
    //console.log($(this).attr("href").replace('searchResults', 'results'));
    $("div.results").load($(this).attr("href"));
  });

  var simpleSearch = false;

  // SEARCHFORM INTERACTION
  var $searchForm = $("#searchForm"),
  //CACHE
  $query = $searchForm.find(".query"),
  $label = $searchForm.find("label");

  if ($query.val() !== "") {
    $label.hide()
  }
  $searchForm.submit(function () {
    if ($query.val() === "") {
      return false
    }
  });
  $query.focus(function () {
    $label.hide()
  }).blur(function () {
    if ($(this).val() === "") {
      $label.show()
    }
  });
  $searchForm.find("label").click(function () {
    $query.focus();
  });

  if (params.query) {

    var qroot;
    var qtype = 'Articles.Article';

    if(ips.system.parameters.webshop == 'true') {
      qroot = 13;
      qtype = 'Webshop.Product';
    } else if(ips.system.lang == 'no') {
      qroot = 3169;
    } else {
      qroot = 3425;
    }

    simpleSearch = true;
    var urlObj = {
      "module": "Search",
      "action": "Search.publicSearch",
      "qtype": qtype,
      "qroot": qroot,
      "lang": ips.system.lang,
      "template": "searchResults",
      "_ips_encoding": "UTF-8",
      "query": params.query
    }
    $results.ajaxStart(function() {
      $(this).addClass("loading");
    }).ajaxComplete(function() {
      $(this).removeClass("loading");
    });

    $.ajax({
      type: "GET",
      url: base + "?" + $.param(urlObj).replace(/%2B/ig, '+').replace(/%3A/ig, ':'),
      success: function(data){
         $(".results").html(data);
      },
      error: function(){
        alert("Feilet"); 
      }
    });
    //$(".results").load(base + "?" + $.param(urlObj).replace(/%2B/ig, '+').replace(/%3A/ig, ':') + "&sizemode=large");
  }

  // Init search when directed from undersite
  if (params.categories || params.region) {
//console.log(params.lang); 
    /*
    if(params.lang == 'en') {
      var query = "+AND+attribcategory_en:('" + params.categories.replace(',', '+OR+') + "')+AND+attribregion_en:" + params.region;
    }
    else {
      var regionParamString = (params.region != undefined || params.region != 'Velg region') ? "+AND+attribregion:" + params.region : "" ; 
      var query = "+AND+attribcategory:('" + params.categories.replace(',', '+OR+') + "')"+ regionParamString ;
    }*/

    var query = "";
    if(params.categories != undefined) {
    query = "+AND+"
    query += params.lang == 'en' ? "attribcategory_en" : "attribcategory" ;
    query += ":('";
      query += params.categories.replace(',', '+OR+').replace('-', ' ') ;
      query += "')";
    }
    if(params.region != undefined && params.region != 'Velg region') {
      query += "+AND+";
      query += (params.lang == 'en') ? "attribregion_en:" : "attribregion:" ;
      query += params.region;
    }
    
    //var categories = params.categories.replace(',', '+OR+');
    //categories = "attribcategory:(" + categories + ")"; 
    var urlObj = {
      "module": "Search",
      "action": "Search.publicSearch",
      "qtype": "Articles.Article",
      "qroot": (ips.system.lang == 'no') ? 3169 : 3425,
      "lang": ips.system.lang,
      "template": "searchResults",
      "_ips_encoding": "UTF-8",
      "query": "public:true" + query
    }
    $(".results").load(base + "?" + $.param(urlObj).replace(/%2B/ig, '+').replace(/%3A/ig, ':') + "&sizemode=large");
  }

  // ADVANCED SEARCHFORM INTERACTION
  var $searchFormAdv = $("#searchFormAdvanced"); //CACHE
  if ($searchFormAdv.length) {
    // NEWSARCHIVE
    // Category Setup 
    var bSetup = {
      "minheight": "18",
      "maxheight": "200",
      "timer": 2000,
      "speed": "slow",
      "multiple": true
    }
    $("select[name='category']").bSelect(bSetup);

    // Region Setup
    bSetup2 = {
      "minheight": "18",
      "maxheight": "200",
      "speed": "slow",
      "timer": 2000
    }
    $("select[name='region']").bSelect(bSetup2);

    // Qroot Setup
    bSetup3 = {
      "minheight": "18",
      "maxheight": "36",
      "speed": "fast",
      "timer": 2000
    }
    $("select[name='qroot']").bSelect(bSetup3);

    // Submit
    $searchFormAdv.unbind().bind("submit", function (e) {
      e.preventDefault();

      var category = $searchFormAdv.find("select[name='category']").val(),
          region = $searchFormAdv.find("select[name='region']").val(),
          
          
          //query = $searchFormAdv.find("input[name='advquery']").val() ? $searchFormAdv.find("input[name='advquery']").val() + "+AND+" : "",
          query = $searchFormAdv.find("input[name='advquery']").val();

      var categories = "+AND+(attribcategory:(";

      if (category == "0" || !category) {
        categories = "";
      } else {
        for (var i = 0; i < category.length; i++) {
          if (category.length - 1 == i) {
            categories += category[i] + "))"
          } else {
            categories += category[i] + "+OR+";
          }
        }
      }

      if (region == "0") {
        region = "";
      } else {
        region = "+AND+attribregion:" + region;
      }
      var urlObj = {
        "module": "Search",
        "action": "Search.publicSearch",
        "qtype": "Articles.Article",
        "qroot": $searchFormAdv.find("select[name='qroot']").val() ? $searchFormAdv.find("select[name='qroot']").val() : 3425,
        "lang": ips.system.lang,
        "template": "searchResults",
        "_ips_encoding": "UTF-8",
        "query": query + categories + region
      }
      $(".results").ajaxStart(function() {
        $(this).addClass("loading");
      }).ajaxComplete(function() {
        $(this).removeClass("loading");
      });
      $.ajax({
        type: "GET",
        url: base + "?" + $.param(urlObj).replace(/%2B/ig, '+').replace(/%3A/ig, ':') + "&sizemode=large",
        success: function(data){
           $(".results").html(data);
        },
        error: function(){
          alert("Feilet"); 
        }
      });
      // LOAD RESULTS
      //$(".results").load(base + "?" + $.param(urlObj).replace(/%2B/ig, '+').replace(/%3A/ig, ':') + "&sizemode=large");
    });

    // SEARCH ALL ARTICLES WITH A GIVEN CATEGORY
    if (params.category) {
      var urlObj = {
        "module": "Search",
        "action": "Search.publicSearch",
        "qtype": "Articles.Article",
        "qroot": 3169,
        "lang": ips.system.lang,
        "template": "searchResults",
        "_ips_encoding": "UTF-8",
        "query": "public:true+AND+attribcategory:" + params.category
      }
    }
    // LOAD RESULTS
  //  $(".results").load(base + "?" + $.param(urlObj).replace(/%2B/ig, '+').replace(/%3A/ig, ':') + "&sizemode=large");
    if(!simpleSearch) {
      $.ajax({
        type: "GET",
        url: base + "?" + $.param(urlObj).replace(/%2B/ig, '+').replace(/%3A/ig, ':') + "&sizemode=large",
        success: function(data){
           $(".results").html(data);
        },
        error: function(){
          alert("Feilet"); 
        }
      });
    }
  }
  // END SEARCHFORM ADVANCED
  // SMALL SEARCH UNDERSITE TEMPLATE
  var $smallresults = $("div.results.small"); //CACHE
  if ($smallresults.length) {

    var searchCategories = ips.search.categories.replace(/,/ig, '"+OR+"');
    searchCategories = ('"' + searchCategories.substring(0, searchCategories.length - 6) + '"');
    var searchRegion = ips.search.region ? "attribregion:(" + ips.search.region.replace(/,/ig, '') + ")" : "";
    searchCategories = "attribcategory:(" + searchCategories + ")";
    if (searchCategories && searchRegion) {
      searchCategories += "+AND+";
    }
    var qroot;
    if (ips.system.lang == 'no') {
      qroot = 3169;
    } else {
      qroot = 3425;
    }
    //console.log(qroot);
    //console.log(ips.system.lang);
    var urlObj = {
      "module": "Search",
      "action": "Search.publicSearch",
      "qtype": "Articles.Article",
      "qroot": qroot,
      "lang": ips.system.lang,
      "template": "searchResults",
      "_ips_encoding": "UTF-8",
      "pagesize": 2,
      "query": "public:true+AND+" + searchCategories + searchRegion
    }

    //$(".results.small").load(base + "?" + $.param(urlObj).replace(/\+/ig, "%20").replace(/%2b/ig, "+") + "&sizemode=small");
    $(".results.small").load(base + "?template=groovyResults&sizemode=small&folderId=" + ips.system.currentFolderId + "&lang=" + ips.system.lang);
    //$(".results.small").load(base + "?" + urlObj.replace(/%2B/ig, '').replace(/%3A/ig, ':') + "&sizemode=small");
    $smallresults.ajaxStart(function () {
      $(this).addClass("loading");
    }).ajaxStop(function () {
      $(this).removeClass("loading");
    });
  }

  
  // IPS FORM validation by sveinung@idium.no March 2010
  $("form").bind("submit", function (e, l) {
    var $this = $(this),
        formid = $this.attr("id") + "",
        errors = [];
    
    // Start validation object
    //fix broken objects
    var ips = window.ips = window.ips || {};
    ips.validate = ips.validate || {};
    ips.validate[formid] = ips.validate[formid] || {};
    //end fix broken objects
    
    // Reset, and FIND/QUERY viable <li> tags. Must be typical <li> with input. If different, change next find().
    $this.find("span.error").remove().end().find("li:not(.submit,.form_labelfield)").removeClass("error")
    // START each - > iterate li`s
    .each(function (i) {
      // Needed vars and Cache selectors for convenience and "speed"
      var $li = $(this),
          $nextLi = $li.next(),
          $prevLi = $li.prev(),
          $field = $li.find("input,textarea,select").eq(0),
          fid = $field.attr("id"),
          fieldval = $field.val(),
          errorObj = {
          "id": fid,
          "$elem": $li,
          "message": ""
          };
      // Utilty function for checking regex values
      var checkFunc = function (regexObj, thisval, message, errorObj) {
        if (!regexObj.test(thisval)) {
          errorObj.message = message;
        } else {
          errorObj.valid = true; // used to make this rule more important than classes
        }
        return errorObj;
      }
      // Iterating and validation all regexes in the general object
      $.each(ips.validate.general, function (property) {
        if ($li.hasClass(property) && this.regex !== undefined) {
          errorObj = checkFunc(this.regex, fieldval, this.message, errorObj);
        }
      });
      // Check for validation object
      if (ips.validate[formid][fid] !== undefined && ips.validate[formid][fid].regex !== undefined) {
        var fieldvalObj = ips.validate[formid][fid],
            errorMgs = fieldvalObj.message !== undefined ? fieldvalObj.message : ips.strings.notvalid;
        errorObj = checkFunc(new RegExp(fieldvalObj.regex), fieldval, errorMgs, errorObj);
      } else {
        //fix missing objects
        ips.validate[formid][fid] = {};
      }
      if ($li.hasClass("form_password") && errorObj.message === '') {
        errorObj = checkFunc(ips.validate.general.password.regex, fieldval, ips.validate.general.password.message, errorObj);
        if (errorObj.message === "" && fieldval !== $li.find(".confirm").val()) {
          errorObj.id = $li.find(".confirm").attr("id");
          errorObj.message = ips.validate.general.password.message;
        }
      }
      // Check username if form has class .loggedout -> Forms get resubmitted if error from server
      if ($this.hasClass("loggedout") && $li.hasClass("username") && !(errorObj.valid)) {
        var searchedUsername = $.data($field[0], "username"),
            
            
            // get "cacge"
            availFromPrevSubmit = $.data($field[0], "avail"); // get "cache"
        $.data($field[0], "username", fieldval); // write "cache"
        // Check if new desired username isnt equal to previous ones or if no username has been checked
        if ((fieldval !== searchedUsername) || (availFromPrevSubmit === null)) {
          // Async - check param, then set value on elem and resubmit form
          $.get(ips.system.base + "?module=Users&amp;action=Ajax.isUsernameAvailable&amp;username=" + fieldval, function (data) {
            $.data($field[0], "avail", data);
            // 'false' is serverresponse in plain text
            if (data == 'false') {
              setTimeout(function () {
                $this.submit();
              }, 100);
            }
          });
        } else {
          // check if this is checked and username is not avail === false
          if (availFromPrevSubmit == "false") {
            errorObj.message = ips.strings.usernamenotavail;
          }
        }
      }
      // check if .required and 
      if (fieldval === '' && $li.hasClass("required")) {
        // If not already a error - add a error message
        if (errorObj.message === '') {
          errorObj.message = ips.strings.cannotbeempty;
        }
      } else if ($li.hasClass("required") && errorObj.message === '') {
        // if checkbox is required
        if ($field.is("input[type=checkbox]") && $field.attr("checked") === false) {
          errorObj.message = ips.validate[formid][fid].message || ips.strings.mustbechecked;
        }
      }
      // Todo, ADD : requiredIf - (e.g. email, checkbox )
      // Check for customclasses 'isequaltonext' and 'isequaltoprev' - > is in lowercase bacause of ips:classify
      if ($li.hasClass('isequaltonext') || $nextLi.hasClass('isequaltoprev')) {
        if (fieldval !== $nextLi.find("input").val()) {
          errorObj.message = $li.find("label").text() + ips.strings.mustbeequalto + $nextLi.find("label").text();
        }
      } else if ($li.hasClass('isequaltoprev') || $prevLi.hasClass('isequaltonext')) {
        if (fieldval !== $prevLi.find("input").val()) {
          errorObj.message = $li.find("label").text() + ips.strings.mustbeequalto + $prevLi.find("label").text();
        }
      }
      // Field is not required, NO error-msg should be generated
      if (fieldval === '' && !($li.hasClass("required"))) {
        errorObj.message = '';
      }
      // Push this errorObj if there is a message defined
      if (errorObj.message !== undefined && errorObj.message !== '') {
        errors.push(errorObj);
      }
    }); //END each li`s
    // Process errors if there is any
    if (errors.length > 0) {
      $(errors).each(function (i) {
        var $errorField = this.$elem.addClass("error").find("input,textarea,select").eq(0);
        if (i === 0) {;
          $errorField.focus();
        }
        $("<span class='error'>" + this.message + "</span>").insertAfter($errorField);
      });
      // default action of the event will not be triggered.
      e.preventDefault();
      // Keeps the rest of the handlers from being executed.
      e.stopImmediatePropagation();
    } else if (errors.length < 1 && $this.hasClass('comment_form')) {
      e.preventDefault();
      e.stopImmediatePropagation();
      
      $.ajax({
          type: 'post',
          contentType: "application/x-www-form-urlencoded; charset=utf-8",
          dataType: 'json',
          url: ips.system.base + '?_ips_encoding=UTF-8&template=dummy', //$this.attr('action'),
          data: $this.serialize(),
          beforeSend: function () {
   
            $this.find('input, select, textarea').attr('disabled', true);
          },
          success: function (data) {
 
            var title = $this.find("input[name='title']").val();
            var comment = $this.find('textarea.comment').val();

            pushObjectComments($this, title, comment);
            $this.find('input, select, textarea').attr('disabled', false);
          },
          error: function(err) {
            if (ips.system.parameters.debug) alert("error: " + err);
          }
      });
      
      //$this.attr('action', (ips.system.base + "?_ips_encoding=utf-8"));
      return false;
    }
  });
  //FORM END


})(jQuery)

$(window).load(function() {
  $('a.splash').click();
});

function pushObjectComments(form, title, text) {
  var $this = form,
      $comments = $('ul.comments'),
      now       = new Date(),
      year      = now.getFullYear() + '',
      month     = _pad(now.getMonth(), 2),
      day       = _pad(now.getDate(), 2),
      hours     = _pad(now.getHours(), 2),
      minutes   = _pad(now.getMinutes(), 2);
    
  var timeAttr = year + '-' + month + '-' + day;
  var timeText = day + '.' + month + '.' + year.substr(2, 2) + ' - ' + hours + ':' + minutes;
  
  $comments.prepend( $('<li><h4>'+title+'</h4><time datetime="'+timeAttr+'">'+timeText+'</time><p>'+text+'</p></li>').css({opacity: 0}) );
  $comments.find('li:first').animate({ opacity: 1 }, 600);
}

_pad = function (n, c) {
  if ((n = n + "").length < c) return new Array((++c) - n.length).join("0") + n;
  else
  return n;
}
