var $j = jQuery.noConflict();
$j(document).ready(function(){
     var bd = $j.browser.msie === true ? $j(document.body) : $j(document);
     bd.bind('scroll', function(){ 
         var x = $j.scrollOffset().top;
        $j('.price-info:visible').each(function(){
           var div = $j(this);
           var top = x <= div.offset().top && this.defaultTop != 0 ? this.defaultTop : x + 10;
           div.css('top',top);
        });
      });
});
var freetext = {};
document.observe('dom:loaded', function(){
     new Ajax.Request( 'http://'+window.location.hostname+scriptFrontend+'func=frontend.show&template=freetext_js&debug=off&languagecode='+LANGUAGE, {
         asynchronous: true,
         onSuccess: function(r){
            freetext = r.responseText.evalJSON();
            togglingInput();
            openNewWindow();
            forgotPassword();
            submenuList();
            ajax_category_menu();
            if ($('dynamic-search')) {
              $('dynamic-search').observe('submit', function(event) {
                Event.stop(event);
                ajaxSearch('','','');
              });
            }
         }
    });
});
String.prototype.iso2utf8 = function(){
   var self = this,
       pattern = [{"char":"æ", "replacement":"&aelig;"},{"char":"ø", "replacement":"&oslash;"},{"char":"å", "replacement":"&aring;"},{"char":"Æ", "replacement":"&AElig;"},{"char":"Ø", "replacement":"&Oslash;"},{"char":"Å", "replacement":"&Aring;"}];
       pattern.each(function(s){
            self = self.gsub(new RegExp(s.char), s.replacement);
       });
  return self;
};

function check_contact_form(){
    var district = document.contact_form.elements['district'].value;    
    var category = document.contact_form.elements['prod_cat'].value;
    var telephone = document.contact_form.elements['phone_number'].value;
    var company = document.contact_form.elements['company'].value;
    var str_phone = validate_phone(telephone);

    if(company == 'Firma'){
      $('error_message').update('Vennligst oppgi ditt firma');
      $('error_message').show(); 
      return false; 
    }else if (district == 'Navn') {
      $('error_message').update("Vennligst oppgi ditt navn");
      $('error_message').show(); 
      return false;
    } else if(str_phone){
      $('error_message').update(str_phone);
      $('error_message').show(); 
      return false; 
    } else if(category == 'Velg produktkategori'){
      $('error_message').update("Vennligst oppgi kategori");
      $('error_message').show(); 
      return false;     
    }

 $('error_message').update("");
 return true;
}

function validate_phone(telephone_str){

  var strPhone = telephone_str.split(' ').join('');
  var telephone_filter = /^([\d]+)$/i;
  var text;
  if (!telephone_filter.test(strPhone)){
    text ="Telefonnummeret kan bare inneholde tall";
  }
  else if(strPhone < 10000000 || strPhone > 99999999){
    text = "Telefonnummeret er ugyldig";
  }
 return text;
}


/*------------ Used in templates:  oppdater_firma, bli_kunde ----------*/
function check_company(){
    var contact     = document.company.elements['contact'].value;
    var companyname = document.company.elements['companyname'].value;
    var orgnu       = document.company.elements['orgnu'].value;
    var address     = document.company.elements['address'].value;
    var zipcode     = document.company.elements['zipcode'].value;
    var city        = document.company.elements['city'].value;
    //var telephone   = document.company.elements['telephone'].value;
    var email       = document.company.elements['from'].value;

    //-----Check for content-----
    if (!contact) {
      window.alert("Vennligst oppgi kontaktperson");
      return false;
    }
    else if (!companyname) {
      window.alert("Vennligst oppgi firmanavn");
      return false;
    }
    else if (!orgnu) {
      window.alert("Vennligst oppgi organisasjonsnummer");
      return false;
    }
    else if (!address) {
      window.alert("Vennligst oppgi adresse");
      return false;
    }
    else if (!zipcode) {
      window.alert("Vennligst oppgi postnummer");
      return false;
    }
    else if (!city) {
      window.alert("Vennligst oppgi poststed");
      return false;
    }
    else if (!email) {
      window.alert("Vennligst oppgi epostadresse");
      return false;
    }
    //else if (!telephone) {
    //  window.alert("Vennligst oppgi telefonnummer");
    //  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' or ''
// 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'
  exturl = exturl + '&zipcode=' + zipcode + '&languagecode=' + languagecode + '&language=' + languagecode;
  var url = '/wsp/rodin_co/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 = $(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;
}

function checkstock(stock) {
 // if(stock.checkstockno.value < stock.quantity.value) {
 //   alert("alert_nostock");
 // }
 return true;
}

function updatebasket(pid,stock){
    var qty = 'quantity_'+pid;    
    var quantity;
    if($(qty).value == 0){
      $(qty).value = 1;
    }    
    var url = scriptFrontend+'func=shop.buy&func_id='+pid+'&quantity='+$(qty).value+'&template=ajax_top_basket&debug=off&option=add'; 
    new Ajax.Request(url, {   
       method: 'get',   
        onLoading: function(){  
         $('basket_box').style.backgroundImage='url(/rodin_co/frontend/ajax-loader.gif)';
         $('basket_box').style.backgroundPosition='90% 50%';
         $('basket_box').style.backgroundRepeat='no-repeat';
       },
       onSuccess: function(transport) {    
           if ($('title_'+pid).className == 'add-to-basket'){
             $('title_'+pid).className='prod-long-bg';
           }else if($('title_'+pid).className == 'baskt-icon'){
             $('title_'+pid).src='/rodin_co/frontend/design/icons/basket-icon-gr.gif';
           }else{
             $('title_'+pid).className='prod-bg';
           }
             $('title_'+pid).value='allready_in_basket';
           $(qty).value = 0;
           $('top_basket').update(transport.responseText);
       }
  }); 
  return false;
}

/** Toggle **/
function togglingInput(){
 if($$('.toggle')){
     $$('.toggle').each(function(i){
         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; }});
     });
  }
}

/** Image rotation **/
var bannerPE;
function imagesRotation(){

    if($$('img[rel="front-banner"]').length <= 0) {
        return;
    }

    //var url = isSEF ? '/'+freetext.sef_banner_rotate : '/wsp/rodin_co/frontend.cgi?func=frontend.show&template=banner_rotation_ajax&debug=off';
    var url = '/wsp/rodin_co/frontend.cgi?func=frontend.show&template=banner_rotation_ajax&debug=off';
    var div = $('teaser');
    var defaultDuration = 6.5;

    if(div) {
        div.setStyle({ "height":div.getHeight()+"px" });
    }

    new Ajax.Request(url, {
    
        onComplete: function(r){
            var j = r.responseText.evalJSON();
        
            j.each(function(obj){

                var p = new Element('p', {"duration" : obj.DURATION, "class":"rotation-image"}).hide();
                
                var img = new Element('img', {"class": "rotation-image ad", "rel": "front-banner", "src": '/rodin_co'+obj.IMG, "alt": obj.TXT });    
                var banner_text = new Element('strong', {'rel': 'banner-text', 'class':obj.BANNER_TXT.CLASSNAME}).update(obj.BANNER_TXT.TXT);
                
                p.insert({bottom:banner_text});   
                p.insert({bottom:img});
                
                $('teaser').insert({bottom:p});
            });
        
            var i=0;

            if(j.length>0){

                new PeriodicalExecuter(function(pe){
                    bannerPE = pe;
                    var p = $$('p.rotation-image');
                    if(!p || p.length == 0 || !p[0]){
                        pe.stop();
                    }
                    
                    try {
                        var duration = Math.round((parseFloat(isNaN(p[0].readAttribute("duration")) ? 0 : p[0].readAttribute("duration")) / 10)*10) > 0 ? parseFloat(p[0].readAttribute("duration")) : defaultDuration;
                    } catch(err) {
                        pe.stop();
                    }           
                    i++;
                    
                    var banner_textLink = (p[0]).select('strong[rel="banner-text"]')[0] ? (p[0]).select('strong[rel="banner-text"]')[0] : '';
                        
                    if(i==0){
                        if(banner_textLink){
                            banner_textLink.show();
                        }
                        $(p[0]).appear();
                    }

                    if(i == (duration * 10)-10){
                        (p[0]).fade();
                    }

                    if (i == (duration * 10)){
                        var clone = $(p[0]).cloneNode(true);
                        $(clone).select('*[id]').concat(clone).invoke('writeAttribute', { id: null });
                        var img = clone;
                        $('teaser').insert({bottom:img.hide()});
                        $(p[0]).remove();
                        i=-1;
                    }

                },0.1);
            }
        }
    });
}

window.onload=function(){   imagesRotation(); }

/***** Open new window *****/
function openNewWindow() {
   $$('a[rel="external"]').each(function(link){
     if(link.readAttribute('href') != '' && link.readAttribute('href') != '#'){
     link.writeAttribute('target','_blank');
     } 
   });
   $$('a[rel="top"]').each(function(link){
     if(link.readAttribute('href') != '' && link.readAttribute('href') != '#'){
     link.writeAttribute('target','_top');
     }
   });
}

function regis_validate_telephone(telephone_str){
  var telephone_filter = /^([\d]+)$/i;

  if (!telephone_filter.test(telephone_str)){
    return ("Telefonnummeret kan bare inneholde tall");
  }else if(telephone_str < 10000000 || telephone_str > 99999999){
    return ("Telefonnummeret er ugyldig");
  }else{
    return '';
  }
}

function regis_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)){
    return false;
  }else{
    return true;
  }
}

function regisValidate(form){
    var warning = '';
    var email = form.email.value;    
    var password = form.password.value;
    var cf_password = form.cf_password.value;
    var firstname = form.firstname.value;
    var lastname = form.lastname.value;
    var telephone = form.telephone.value;
    var companyid = form.companyid.value;

    if(companyid){
      if (!email || ($$('.checkuser-error') && $$('.checkuser-error').length > 0)) {
        warning = warning + freetext.w_validate_email +'<br />';
      }
      if(!password || !cf_password){
        warning = warning + freetext.w_validate_pwd + '<br />';
      }else if (password.length < 4 && cf_password.length < 4){
        warning = warning + freetext.w_validate_pwd_digits + '<br />';
      }else if (password != cf_password){
        warning = warning + freetext.w_validate_pwd_cf + '<br />';
      }
      if(!firstname){
        warning = warning + freetext.w_validate_firstname + '<br />'  ;
      }
      if(!lastname){
        warning = warning + freetext.w_validate_lastname + '<br />';
      }
      /*if(telephone){
        warning = warning + regis_validate_telephone(telephone);
      }*/
    }else{
      warning = warning + freetext.w_customer_id;
    }
    if (warning) {
      $('error_message').update(warning);
      $('error_message').show(); 
      return false;
    }else{
      return true;
    }
}

function regis_duplicate_user(email_str){
  var warning = $('user-exist');
  if(email_str){
    var params = { username: email_str, debug: 'off'};
    var filter = /true/gi;
    var url = isSEF ? '/'+freetext.sef_regis_chkuser : URL_BASE + 'func=user.valid';

    new Ajax.Request(url, {
      parameters: params,
      onLoading: function(){ warning.removeClassName('checkuser-error'); warning.update(freetext.s_please_wait).show(); },
      onSuccess: function(r){
        warning.removeClassName('checkuser-error');
        warning.hide();
        if (r.responseText.match(filter)){
          if(!regis_validate_email(email_str)){
            warning.addClassName('checkuser-error');
            warning.update(freetext.w_email_format).show();
          }else{
            warning.update(freetext.w_email_can).show();
          }
        }else{
          warning.addClassName('checkuser-error');
          warning.update(freetext.w_email_dup).show();
        }
      }
   });
  }else{
    warning.removeClassName('checkuser-error'); 
    warning.update('').hide();
  }
}

function regisGetCompany(form){

    var customer_id = form.customer_id.value;
    var err_msg = customer_id + ' ' + freetext.w_not_customer_id;
    var err_box = $('error_message');

    /* Clear detail */
    $('companyid').clear();
    $$('.company-detail input').each(function(input){ input.clear(); });
    if (err_box){err_box.hide();}
    $(form.customer_id).removeClassName('warning-block');

    if(/^([\d]+)$/i.test(customer_id) && parseInt(customer_id) != 0){
      var submit_btn = form.submit;
      var params = { customer_id: customer_id, debug: 'off', json: 'yes', encoding: 'iso-8859-1'};
      var url = isSEF ? '/'+freetext.sef_regis_search : URL_BASE + 'func=search.company';

      new Ajax.Request(url, {
        parameters: params,
        onLoading: function(){ submit_btn.value = freetext.s_please_wait; },
        onSuccess: function(r){
          try{

            submit_btn.value = freetext.regis_get_detail;

            /* Show detail if found*/        
            if (!r.responseText.blank() && r.responseText != 0){

              var info = r.responseText.evalJSON().information[0];
              $('companyid').value = info.COMPANY_ID;
              $('c_name').value = info.COMPANY == 'null' || info.COMPANY == null ? '' : info.COMPANY;
              $('c_postbox').value = info.PO_BOX == 'null' || info.PO_BOX == null ? '' : info.PO_BOX;
              $('c_post').value = info.ZIPCODE == 'null' || info.ZIPCODE == null ? '' : info.ZIPCODE;
              $('c_city').value = info.CITY == 'null' || info.CITY == null ? '' : info.CITY;
              $('c_address').value = info.ADDRESS == 'null' || info.ADDRESS == null ? '' : info.ADDRESS;
              $('c_telephone').value = info.TELEPHONE == 'null' || info.TELEPHONE == null ? '' : info.TELEPHONE;
              $('c_telefax').value = info.TELEFAX == 'null' || info.TELEFAX == null ? '' : info.TELEFAX;
              $('d_address').value = info.D_ADDRESS == 'null' || info.D_ADDRESS == null ? '' : info.D_ADDRESS;
              $('d_post').value = info.D_ZIPCODE == 'null' || info.D_ZIPCODE == null ? '' : info.D_ZIPCODE;
              $('d_city').value = info.D_CITY == 'null' || info.D_CITY == null ? '' : info.D_CITY;
              $('orgno').value = info.ORGNO == 'null' || info.ORGNO == null ? '' : info.ORGNO;
              $('contactperson').value = info.CONTACT == 'null' || info.CONTACT == null ? '' : info.CONTACT;

            }else{
              if (err_box){
                err_box.update(err_msg);
                err_box.show();
              }
              $(form.customer_id).addClassName('warning-block');
            }
          }catch(err){ alert(err); }
        }
     });
   }else if(customer_id.length != 0){
     if (err_box){
       err_box.update(err_msg);
       err_box.show();
     }
     $(form.customer_id).addClassName('warning-block');
   }
}

function forgotPassword() {
   var f = $$('.forgot-pw-link');
   if(f) {  
      f.each(function(a){
         a.observe('click', function(e){
            Event.stop(e);
            var url = this.readAttribute("href");
            GB_showCenter('', url, 220, 370);
         });
      });
   }
}
/*** Price info popup *****/
function showhide(id, link_id) {
    if ($j('.price-info[id!="' + id + '"]:visible').length > 0) {
        $j('.price-info:visible').hide();
    }
    var a = $j('#' + id);

    var duration = 350;
    var closeTxt = freetext.close;
    var btn = $j('<button type="button" id="close-popup-btn" class="hide-popup" title="' + closeTxt + '">' + closeTxt + '</button>');
    btn.bind('click', function (e) {
        a.fadeOut(duration);
    });

    if (a.children('#close-popup-btn').length == 0) {
        a.prepend(btn);
    }

    if (a.is(':hidden')) {
        a.fadeIn(duration, function () {
            document.getElementById(id).defaultTop = document.getElementById(id).defaultTop || a.offset().top;
            if (a.offset().top <= $j.scrollOffset().top) {
                a.animate({
                    'top': ($j.scrollOffset().top + 10) + 'px'
                }, 200)
            }
        });
    }
    if (link_id) {
        var link = document.getElementById(link_id);
        if (link) {
            link.href = "#";
        }
    }
    return true;
}
/*** Top catalog menu *****/
function submenuList(elem){
    if($('top_menu')){
        $('top_menu').observe('click', function(e){
            e.stop();
            if($('front-article')){$('front-article').addClassName('frontpage-border');}
            if(this.hasClassName('open')){
                this.removeClassName('open');
                this.removeClassName('selected');
                this.addClassName('close');
            }else{
                this.removeClassName('close');
                this.addClassName('open');
                this.addClassName('selected');
            }
            if($('sub-menu')){
                if ($('sub-menu').style.display == "none"){ 
                    $('sub-menu').show();
                }else{
                    closeSubmenu($('sub-menu'), this);
                }
            }  
        });
    }
    closeSubmenu = function(submenu, self){
        submenu.hide();
        if($('front-article')){$('front-article').removeClassName('frontpage-border');}
        if(self.hasClassName('open')){
            self.removeClassName('open');
            self.removeClassName('selected');
            self.addClassName('close');
        }else{
            self.removeClassName('close');
            self.addClassName('open');
        }
    }
}

