startList = function() {
  if (document.all&&document.getElementById) {
     navRoot = document.getElementById("nav");
      for (i=0; i<navRoot.childNodes.length; i++) {
        node = navRoot.childNodes[i];
        if (node.nodeName=="LI") {
          node.onmouseover=function() {
          this.className+=" over";
         }
         node.onmouseout=function() {
         this.className=this.className.replace(" over", "");
         }
       }
      } 
    }
   }  

   document.observe('dom:loaded',function(){        
     startList();
     Event.observe('front_category_list', 'mouseover', swap_category); 
     Event.observe('front_category_list', 'mouseout', swap_category); 

     $$('.wo_linkbutton').each(
      function(oAnchor) {
        oAnchor.observe('click', linkbutton_navigate);
      }  
     );

     if ( $('dynSearch') ) {
       // Attach dynamic search to the search form
try {
       Watch.watchForm( 'dynSearch', dynSearch );
} catch (err) {
console.log(err);
}
     }
  });


function linkbutton_navigate (e)
 {

  var oA = Event.findElement(e,'a');
  if ( oA ) {
    var sTarget = oA.readAttribute('target');

    if (! sTarget) { sTarget='' };

    var sHref = oA.readAttribute('href');

    if ( oA.readAttribute('doSearch') == 1 ) {

      var str = $F('searchText');
      sHref = sHref.replace( /template=[^\&]*/, 'template=search_result' );
      sHref += '&str=' + encodeURIComponent(str);
    }

    if (sTarget == '_blank' || sTarget == '_new') {
      window.open(sHref);
    } 

    if (sTarget == '' || sTarget == '_top' || sTarget=='_self') {
     document.location.href=sHref;
    }

    Event.stop(e);

    return false;
  }
}

/*------------- button mouseover handling -------------*/

function swap_logout(){ 
 if($('logout_btn').hasClassName('logout_icon')){
  $('logout_btn').removeClassName('logout_icon');
  $('logout_btn').addClassName('logout_icon_over'); 
 }else if($('logout_btn').hasClassName('logout_icon_over')){
  $('logout_btn').removeClassName('logout_icon_over');
  $('logout_btn').addClassName('logout_icon');
 }
}
function swap_home(){
 if($('home_btn').hasClassName('home_icon')){
  $('home_btn').removeClassName('home_icon');
  $('home_btn').addClassName('home_icon_over'); 
 }else if($('home_btn').hasClassName('home_icon_over')){
  $('home_btn').removeClassName('home_icon_over');
  $('home_btn').addClassName('home_icon');
 }
}

function swap_basket(){
 if($('basket_btn').hasClassName('basket_icon')){
  $('basket_btn').removeClassName('basket_icon');
  $('basket_btn').addClassName('basket_icon_over'); 
 }else if($('basket_btn').hasClassName('basket_icon_over')){
  $('basket_btn').removeClassName('basket_icon_over');
  $('basket_btn').addClassName('basket_icon');
 }
}

function swap_category(e){ 

 var oElem = $(Event.element(e));

 if(oElem.hasClassName('category_bg')){
  oElem.removeClassName('category_bg');
  oElem.addClassName('category_bg_over'); 
 }else if(oElem.hasClassName('category_bg_over')){
  oElem.removeClassName('category_bg_over');
  oElem.addClassName('category_bg');
 }
}


/*------------ Used in templates:  oppdater_firma, bli_kunde, contact ----------*/

function check_contact(){

    var contact     = $('cus_company_contact').value;
    var companyname = $('cus_company').value;
    var telephone   = $('cus_phone').value;
    var email       = $('from').value;
    var zip         = $('zipcode').value;
    var city        = $('ziparea').value;

    //-----Check for content-----
    if (!companyname) {
      alert("Vennligst oppgi firmanavn");
      return false;
    }    
    else if (!contact) {
      alert("Vennligst oppgi kontaktperson");
      return false;
    }
    else if (!telephone) {
      alert("Vennligst oppgi telefonnummer");
      return false;
    }
    else if (!email) {
      alert("Vennligst oppgi epostadresse");
      return false;
    }
    else if (!zip) {
      alert("Vennligst oppgi postnummer");
      return false;
    }
    else if (!ziparea) {
      alert("Vennligst oppgi poststed");
      return false;
    }
    //-----Check for valid content-----

    if(!validate_email(email)){
      return false;
    }
    else if(!validate_telephone(telephone)){
      return false;
    }

    //-----Return true if everything is ok-----
    return true;
}

function check_company(){

    var contact     = $('cus_company_contact').value;
    var companyname = $('cus_company').value;
    var orgnu       = $('cus_orgnr').value;
    var address     = $('cus_company_address').value;
    var zipcode     = $('zipcode').value;
    var city        = $('ziparea').value;
    var telephone   = $('cus_phone').value;
    var email       = $('cus_company_email').value;

    //-----Check for content-----

    if (!orgnu) {
      alert("Vennligst oppgi organisasjonsnummer");
      return false;
    }
    else if (!companyname) {
      alert("Vennligst oppgi firmanavn");
      return false;
    }
    else if (!email) {
      alert("Vennligst oppgi epostadresse");
      return false;
    }
    else if (!contact) {
      alert("Vennligst oppgi kontaktperson");
      return false;
    }
    else if (!telephone) {
      alert("Vennligst oppgi telefonnummer");
      return false;
    }
    else if (!address) {
      alert("Vennligst oppgi adresse");
      return false;
    }
    else if (!zipcode) {
      alert("Vennligst oppgi postnummer");
      return false;
    }
    else if (!city) {
      alert("Vennligst oppgi poststed");
      return false;
    }

    //-----Check for valid content-----

    if(!validate_zipcode_no(zipcode)){
      return false;
    }
    else if(!validate_email(email)){
      return false;
    }
    else if(!validate_telephone(telephone)){
      return false;
    }
    //-----Return true if everything is ok-----
    return true;
}


function check_order(){
/* ----------midlertidig deaktivert-------------
    var d_fname       = document.orders.elements['ORDERS.D_FNAME'].value;
    var d_lname       = document.orders.elements['ORDERS.D_LNAME'].value;
    var d_zipcode     = document.orders.elements['ORDERS.D_ZIPCODE'].value;
    var d_city        = document.orders.elements['ORDERS.D_CITY'].value;
    var d_email       = document.orders.elements['ORDERS.D_EMAIL'].value;
    var d_telephone   = document.orders.elements['ORDERS.D_TELEPHONE'].value;

    //-----Check for content-----
    if (!d_fname) {
      window.alert("Vennligst oppgi fornavn");
      return false;
    }
    else if (!d_lname) {
      window.alert("Vennligst oppgi etternavn");
      return false;
    }
    else if (!d_zipcode) {
      window.alert("Vennligst oppgi postnummer");
      return false;
    }
    else if (!d_city) {
      window.alert("Vennligst oppgi poststed");
      return false;
    }

    else if (!d_email) {
      window.alert("Vennligst oppgi epostadresse");
      return false;
    }
    else if (!d_telephone) {
      window.alert("Vennligst oppgi telefonnummer");
      return false;
    }

    //-----Check for valid content-----
    if(!validate_zipcode_no(d_zipcode)){
      return false;
    }
    else if(!validate_email(d_email)){
      return false;
    }
    else if(!validate_telephone(d_telephone)){
      return false;
    }
*/
    //-----Return true if everything is ok-----
    return true;
}


function validate_email(email_str){
  var email_filter = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;

  if (!email_filter.test(email_str)){
    alert("Epostadressen er ikke gyldig: Eksempel på riktig adresse er: fornavn.etternavn@firma.no");
    return false;
  }
  else {
    return true;
  }
}

function validate_zipcode_no(zipcode_str){
  var zipcode_filter = /^([\d]+)$/i;

  if (!zipcode_filter.test(zipcode_str)){
    alert("Postnummeret kan bare inneholde tall");
    return false;
  }
  else if(zipcode_str < 1 || zipcode_str > 9999){
    alert("Postnummeret må være et tall mellom 0001 og 9999");
    return false;
  }
  else {
    return true;
  }
}

function validate_telephone(telephone_str){
  var telephone_filter = /^([\d]+)$/i;

  if (!telephone_filter.test(telephone_str)){
    alert("Telefonnummeret kan bare inneholde tall");
    return false;
  }
  else if(telephone_str < 10000000 || telephone_str > 99999999){
    alert("Telefonnummeret er ugyldig");
    return false;
  }
  else {
    return true;
  }
}

// Loop up ziparea from zipcode
// Takes 3 input parameters
// zipcode - The zipcode to look up
// languagecode - Supports several language codes, default is NO
// id - Id for field to display name of ziparea in
// NB! Requires Prototype to work
function ajaxzip(zipcode,languagecode,id) {
  var exturl = 'http://www.webon.net/wsp/webon_ekstranett/frontend.cgi?func=ajax_services.zipcode&debug=off&zipcode=' + zipcode + '&languagecode=' + languagecode + '&language=' + languagecode;
  var url = '/wsp/norengros3/frontend.cgi?func=ajax.call&ajax_func=get_url&debug=off&url=' + encodeURIComponent(exturl); 
  var retur = "";

  new Ajax.Request(url, {
    onSuccess: function(transport) {
      var ziparea = document.getElementById(id);
      if(ziparea) {
        var json = transport.responseText.evalJSON();
        if(json) {
          if(json.status == '') {
            $(ziparea).writeAttribute('value',json.ziparea);  
            retur = json.ziparea;
          }
          else {
            $(ziparea).writeAttribute('value','');  
            alert(json.status);
          }
        }
      }
    }
  });

  return retur;
}

var REQUEST_COUNTER = 0;
var timer = 0;
function dynSearch ( el ) {
  clearTimeout(timer);
  call = 'doDynSearch("' + el.value +'")';
  timer = setTimeout(call, 500);
}

function doDynSearch(str) {

  clearSearch();

  if ( str.length < 3 ) {
    
    ++REQUEST_COUNTER; // Ignore outstanding requests
    return false;

  } else {

    var outerContainer = $$('.box_search');
    outerContainer[0].show();
    var container = $('dynSearchContainer');
    if ( container == undefined ) {
      return false;
    }

    var thisCounter = ++REQUEST_COUNTER;
    var handler = function( hreq ) {

      try {

        if ( REQUEST_COUNTER != thisCounter ) {
          return;
        }

        container.innerHTML = hreq.responseText;
        pageTracker._trackPageview('/searchresult?search=' + str);


      } catch (err) {

      var msg = err.description ? err.description : err;
      alert( msg );
    }
    }

    var url = script_ajax + '&template=ajax_search_table&searchText=' + str;

    new Ajax.Request( url, { onSuccess: handler } );
  }
}

function clearSearch () {
  $('dynSearchContainer').innerHTML = '';
  var outerContainer = $$('.box_search');
  outerContainer[0].hide();
  $$('.productlisting').each( function(e) { e.hide() } );
}
