document.observe('dom:loaded', function () {
  submenuList();
  imagesRotation();
  var toggle_input = new togglingInputText();
  toggle_input.obsvTypeText('.sample-text');
  //toggle_input.obsvTypePassword('input[type="password"]'); // Removed 2011-10-27 HHA

  if ($('dynSearch')) {
    // Attach dynamic search to the search form
    try {
      Watch.watchForm('dynSearch', dynSearch);
    } catch (err) {
      //console.log(err);
    }
  }

  /* Not Sure They Are In Used */
  /*
  if($('front_category_list')){
    Event.observe('front_category_list', 'mouseover', swap_category);
    Event.observe('front_category_list', 'mouseout', swap_category);
  }

  if($$('.wo_linkbutton')){
    $$('.wo_linkbutton').each(function (oAnchor) {
      oAnchor.observe('click', linkbutton_navigate);
    });
  }

  if ($('quick_shop')) {
    try {
      Watch.watchForm('quick_shop', quick_shop);
    } 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=front/searchresult');
      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 zip = $('zipcode').value;
  var ziparea = $('ziparea').value;
  var telephone = $('cus_phone').value;
  var email = $('from').value;


  //-----Check for content-----
  if (!companyname) {
    alert("Vennligst oppgi firmanavn");
    return false;
  }
  else if (!contact) {
    alert("Vennligst oppgi kontaktperson");
    return false;
  }
  else if (!zip) {
    alert("Vennligst oppgi postnummer");
    return false;
  }
  else if (!ziparea) {
    //alert("Postnummeret er ikke i bruk, bør du endre det");
    //return false;
  }
  else if (!telephone) {
    alert("Vennligst oppgi telefonnummer");
    return false;
  }
  else if (!email) {
    alert("Vennligst oppgi epostadresse");
    return false;
  }

  //-----Check for valid content-----
  if(!validate_zipcode_no(zip)) {
      return false;
  }
  else if (!validate_telephone(telephone)) {
    return false;
  }
  if (!validate_email(email)) {
    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/norengros/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);
            if (json.status == 'zipcode_missing') {
                alert('Postnummeret er ikke I bruk');
            }
          }
        }
      }
    }
  });
  return retur;
}

function quick_shop(el) {
  alert("test");
}


/*****************************/
var REQUEST_COUNTER = 0;
var timer = 0;

var togglingInputText = Class.create({
  obsvTypeText: function (inp) {
    inp = $$(inp) || '';
    if (inp) {
      inp.each(function (i) {
        if (i.getValue().blank() && !i.title.blank()) {
          i.value = i.title;
        }
        i.observe('focus', function (e) {
          if (this.getValue() == this.title) {
            this.clear();
          }
        });
        i.observe('blur', function (e) {
          if (this.getValue().blank()) {
            this.value = this.title;
          }
        });
      });
    }
  },
  obsvTypePassword: function (inp) {
    inp = $$(inp) || '';
    cls = 'password-label';
    clsHidden = 'hidden';
    if (inp) {
      inp.each(function (i) {
        var iText = i.previous('input.' + cls, 0);
        if (iText) {
          iText.removeClassName(clsHidden);
          i.hide();
          iText.observe('focus', function (e) {
            iText.hide();
            i.show().focus();
            if (i.getValue() == i.title) {
              i.clear();
            }
          });
          i.observe('blur', function (e) {
            if (i.getValue().blank() || i.getValue() == i.title) {
              iText.show();
              i.hide();
              i.value = i.title;
            }
          });
        }
      });
    }
  }
});

function submenuList(){
  var mainnav = $$('#nav > li > a');
  if(mainnav){
    mainnav.each(function(a){
      var ul = a.next('ul', 0),
          timer = 0,
          closeSubmenu = function(submenu){ submenu.hide(); };
      if(ul){
        [a, ul].each(function(elem){
          elem.observe('mouseover', function(e){
               a.observe('click', function(e){
                   Event.stop(e);
               });
            window.clearTimeout(timer);
            ul.show();
          }).observe('mouseout', function(e){
            timer = closeSubmenu.delay(0.1, ul);
          });
        });
        ul.select('a').each(function(sublink){
          sublink.observe('mouseover', function(e){
            window.clearTimeout(timer);
          })
        });
      }
    });
  }
}

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;
        //No need right now
        //pageTracker._trackPageview('front/searchresult?search=' + str);
      } catch (err) {
        var msg = err.description ? err.description : err;
        alert(msg);
      }
    }

    //The encoding for ajax search must be solved in the same way it works when the page is reloaded. 
    //To keep below statement for future implementation
    //var url = script_ajax + '&template=front/ajax_search&decodeTo=latin1';
    var url = script_ajax + '&template=front/ajax_search&searchText='+escape(str);
    new Ajax.Request(url, {
      parameters: { debug: 'off' },
      onSuccess: handler
    });
  }
}

function clearSearch() {
  $('dynSearchContainer').innerHTML = '';
  var outerContainer = $$('.box_search');
  outerContainer[0].hide();
  $$('.productlisting').each(function (e) {
    e.hide()
  });
}

/*** function for Blekk/Toner guide ***/

function get_model() {
   getValueById('producer','model');
}

function getValueById(elemId,model){

  var mod_id = $(elemId).value;
  var url = script_ajax + 'ofunc=neShop.getModel&func_id=' + mod_id;

  new Ajax.Request(url , {
    onSuccess : function(resp) {

      var oHashes = resp.responseText.evalJSON();

      var oSelect = $(model);
      oSelect.options.length = 0;

      for (var i=0;i<oHashes.length;i++) {
        var elem = oHashes[i];
        oSelect.options[i] = new Option(elem.TXT,elem.ID,false);
      }
    },
    onFailure : function(resp) {
      //alert(resp.responseText)
    }
  });
}
function checkBlankField(){
  var cust_companyname     = $('firmname').value;
  var cust_companyid = $('orgnu').value;
  var invoiceaddress   = $('invoiceaddress').value;
  var deliveryaddress        = $('deliveryaddress').value;
  var company_email   = $('company_email').value;
  var cust_contact      = $('contact').value;
  var cust_phone         = $('phone').value;

  //-----Check for content-----
  if (!cust_companyname) {
    alert("Vennligst oppgi firmanavn");
    return false;
  }
  else if (!cust_companyid) {
    alert("Vennligst oppgi organisasjonsnummer");
    return false;
  }
  else if (!invoiceaddress) {
    alert("Vennligst oppgi fakturaadresse");
    return false;
  }
  else if (!deliveryaddress) {
    alert("Vennligst oppgi Leveringsadresse");
    return false;
  }
  else if (!company_email) {
    alert("Vennligst oppgi epostadresse");
    return false;
  }
  else if (!cust_contact) {
    alert("Vennligst oppgi kontaktperson");
    return false;
  }
  else if (!cust_phone) {
    alert("Vennligst oppgi telefonnummer");
    return false;
  }

  if (!validate_email(company_email)) {
    return false;
  }
  else if (!validate_telephone(cust_phone)) {
    return false;
  }

  return true;
}
function checkCustomerForm() {

    var contact     = $('contact').value;
    var org_nr      = $('org_nr').value;
    var companyname = $('firmname').value;
    var telephone   = $('phone').value;
    var email       = $('company_email').value;
    var zip         = $('zipcode').value;

  //-----Check for content-----
    if (!companyname) {
        alert("Vennligst oppgi firmanavn");
        return false;
    }
    else if (!org_nr) {
        alert("Vennligst oppgi Org.nr");
        return false;
    }
    else if (!contact) {
        alert("Vennligst oppgi kontaktperson");
        return false;
    }
    else if (!email) {
      alert("Vennligst oppgi epostadresse");
      return false;
    }
    else if (!telephone) {
      alert("Vennligst oppgi telefonnummer");
      return false;
    }
    else if (!zip) {
      alert("Vennligst oppgi postnummer");
      return false;
    }

    if (!validate_orgno(org_nr)) {
        return false;
    }
    else if (!validate_email(email)) {
        return false;
    }
    else if (!validate_telephone(telephone)) {
        return false;
    }
    else if (!validate_zipcode_no(zip)) {
        return false;
    }

    return true;
}

function validate_orgno(org_nr){
    var orgno_filter = /^(\d{9})$/i;
    if (!orgno_filter.test(org_nr)){
        alert("Org nr. kan bare inneholde tall, 9 siffer.");
        return false;
    } else {
        return true;
    }
}

function imagesRotation(){
   if($$('a[rel="front-banner"]').length > 0){
   var url = script_ajax + 'template=front/banner_rotation_ajax&debug=off';
   var div = $('teaser');
   var defaultDuration = 6.5;
   new Ajax.Request(url, {
       onComplete: function(r){
            var j = r.responseText.evalJSON();
                j.each(function(obj){
                  var p = new Element('p', { "duration" : obj.DURATION}).addClassName("rotation-image").hide();
                  var a = new Element('a', { "rel": "front-banner", "title": obj.TXT, "href": obj.URL }).addClassName("rotation-image");
                  a.update('<img src="'+obj.IMG+'" alt="'+obj.TXT+'">');
                  p.insert({bottom:a});
                  $('teaser').insert({bottom:p});
                 });
        var i=0;
        if(j.length>0){
       new PeriodicalExecuter(function(pe){
           var a = $$('p.rotation-image');
           var duration = Math.round((parseFloat(isNaN(a[0].readAttribute("duration")) ? 0 : a[0].readAttribute("duration")) / 10)*10) > 0 ? parseFloat(a[0].readAttribute("duration")) : defaultDuration;
           if(!a[0]){ pe.stop(); }
            i++;
            if(i==0){ $(a[0]).appear(); }
            if(i == (duration * 10)-10){
               (a[0]).fade();
            }
            if (i==(duration * 10)){
              var clone = $(a[0]).cloneNode(true);
              $(clone).select('*[id]').concat(clone).invoke('writeAttribute', { id: null });
              var img = clone;
              $('teaser').insert({bottom:img.hide()});
              $(a[0]).remove();
              i=-1;
            }
        },0.1);
        }
       }
   });
}
}

