var RESULT_CAT_COL = 3;
var RESULT_PRODUCT_COL = 8;
var REQUEST_COUNTER = 0;
var last_search;

var first_click = 0;
var MIN_SEARCH_CHAR = 1;
var HOST_NAME = window.location.hostname;
var URL_BASE = 'http://'+HOST_NAME+scriptFrontend;
var ajaxing = null;
document.observe("dom:loaded", function() {
    var rightMenuLink = $$('a[rel="ajax-menu"]');
    if(rightMenuLink){
       rightMenuLink.each(function(a){
          a.observe('click', function(e){
             var duration = 0.3;
             Event.stop(e);
             var self = this;
             var params = self.readAttribute("href").toQueryParams();
             params.template = 'ajax_menu_get';
             var li = this.up('li');
             if(li.hasClassName('expanded')){
                li.removeClassName('expanded');
                li.addClassName('collapsed');
                if(li.down('ul.sub-menu')){
                    new Effect.BlindUp(li.down('ul.sub-menu'), { duration : duration, afterFinishInternal: function(){ li.down('ul.sub-menu').remove();} });
                }
            }else{
               if(ajaxing != null){
                    ajaxing.transport.abort();
                    $$('a[rel="ajax-menu"]').each(function(obj){ obj.setStyle({backgroundImage:'none'}); });
               }
               ajaxing = new Ajax.Request(scriptFrontend+'func=frontend.show&debug=off&show_levels=1', {
                 method: 'get',
                 parameters: params,
                 onCreate: function(){ 
                          if($$('.sub-menu')){ 
                            $$('.sub-menu').each(function(ul){ 
                               new Effect.BlindUp($(ul), { duration : duration, afterFinishInternal: function(){ $(ul).remove();} });
                            });} },
                 onLoading: function(){  self.setStyle({backgroundImage:'url(/microshop/frontend/ajax-loader.gif)', backgroundPosition: '98% 50%', backgroundRepeat: 'no-repeat'}); },
                 onSuccess: function(res){
                      self.setStyle({backgroundImage:'none'});
                      li.insert({'bottom':res.responseText});
                      var ul = li.down('ul');
                      ul.hide();
                      li.adjacent('li.expanded').each(function(l){
                         l.removeClassName('expanded');
                         l.addClassName('collapsed');
                      });
                      li.removeClassName('collapsed');
                      li.addClassName('expanded');
                      new Effect.BlindDown($(ul), { duration : duration});
                 }  
              });
           }
          });
       });
    }
    if ($('search_txt')) {
        $('search_txt').observe('click', function() {
            if (first_click < 1) {
                first_click = 1;
                $('search_txt').value = '';
            }
        }); 
    }
    if ($('dynamic-search')) {
        $('dynamic-search').observe('submit', function(event) {
            Event.stop(event);
            dynamicSearch('','');
        });
    }
    if ($('change_vat')) {
        $('change_vat').observe('click', function() {
             $('vat_form').submit(); 
        });
    }
    if ($$('.abo_select')){
        $$('.abo_select').each(
        function (obj) {
          obj.observe( 'click', aboSelect );
        });
    }
});
function aboSelect(){
     var regBtn = $('regis-btn'),
         params = regBtn.readAttribute('href').toQueryParams();

     params.abo_id = this.value;
     regBtn.writeAttribute({ href: '/wsp/microshop/frontend.cgi?session=wd324sjs4e3z79nte6tqkl2cffta1x&' + $H(params).toQueryString() });
}

function dynamicSearch(filter_group,filter_cat) {
  var text = $('search_txt').value.strip();
  var form = $('dynamic-search');
  for (var i = 0; i < form.search_option.length; i++) {
    if (form.search_option.options[i].selected) {
      break;
    }
  }
  var search_option = form.search_option.options[i].value;

  var container = $('main-content');
  var monitor = $('ajax_monitor');
  var prod_monitor = $('prod_list_ajax');

  if ( text.length < 1 ) return false; // first call when page loaded

  var product_wait = new Element ( 'b' ).update(freetext.s_please_wait+'...<br>' );
  var wait_image = new Element ( 'img', { src: '/microshop/frontend/ajax-loader.gif' });

  if (filter_group != '' && filter_cat != "") {
    clear( prod_monitor ); // clear the result panel if the search string is too short
    prod_monitor.appendChild( product_wait );
    prod_monitor.appendChild( wait_image );
    ++REQUEST_COUNTER; // kill any ongoing request if any
  }
  else if ( text.length < MIN_SEARCH_CHAR ) {
    ++REQUEST_COUNTER; // kill any ongoing request if any
    $('search_txt').style.backgroundColor='#ffffff'; // reset the background color of the input
    return false;
  }
  else {
    if ( monitor == undefined ) {
      // this is the first call to the search
      monitor = new Element ( 'div', { id: 'ajax_monitor' });
      if (filter_group == '' && filter_cat == '') { clear( container ); }
      container.insertBefore( monitor, container.firstChild );
    }
    else {
      clear( monitor ); // clear the result panel if the search string is too short
    } // end if ( monitor == undefined )

    monitor.appendChild( product_wait );
    monitor.appendChild( wait_image );
  } // end if (filterGroup == '' && filterCat)

  var thisCounter = ++REQUEST_COUNTER;

  var handler = function( hreq ) {
    var search_ext = '';
    if (search_option == '') {
        search_ext = '_product';
    }
    else {
        search_ext = '_crm';
    }
/*
    //track live google search
    var pageTracker = _gat._getTracker("UA-2170652-8");
    pageTracker._trackPageview('/search' + search_ext + '?input=' + text);
*/
    if ( REQUEST_COUNTER != thisCounter ) return false;

    if (search_option == '') {
        var json = hreq.responseText.split( '__boundary__' );// This is a hack to remove the comments added by $wo in the response
        //db(hreq.responseText);

        var main_category_id = eval("(" + json[1] + ")");
        var main_category_qty = eval("(" + json[2] + ")");
        var main_category_txt = eval("(" + json[3] + ")");
        var manufact_category_id = eval("(" + json[4] + ")");
        var manufact_category_qty = eval("(" + json[5] + ")");
        var manufact_category_txt = eval("(" + json[6] + ")");
        var data = eval("(" + json[7] + ")");

        if (filter_group != '' && filter_cat != "") {
          clear( prod_monitor );
        } else {
          clear( monitor );
          if ( data == undefined ) {
            // nothing found
            $('search_txt').style.backgroundColor='#ff9999';
            return false;
          } else {
            $('search_txt').style.backgroundColor='#ffffff';
          }

          var category = new Element ( 'div', { id: 'cat_list' } );
          var product_list = new Element ( 'div', { id: 'prod_list_ajax' } );

          monitor.appendChild( new Element ( 'h1' ).update(freetext.searchresult) );
          monitor.appendChild( new Element ( 'p' ).update( freetext.search+' "'+text+'" '+freetext.ga+data.length+freetext.results+':' ) );
          monitor.appendChild( category );
          monitor.appendChild( product_list );
          monitor.appendChild( document.createElement('br') );

          displayCategoryResult( main_category_id, main_category_txt, main_category_qty, manufact_category_id, manufact_category_txt, manufact_category_qty, category, RESULT_CAT_COL, text);

        } // end if (filter_group != '' && filter_cat != "")

        displaySearchResult( text, data, RESULT_PRODUCT_COL);

        mouseHover();
    }
    else
    {
        var data = hreq.responseText;
        clear( monitor );
        if ( data == undefined ) {
          // nothing found
          $('search_txt').style.backgroundColor='#ff9999';
          return false;
        }
        else {
          $('search_txt').style.backgroundColor='#ffffff';
        }
        var search_list_ajax = new Element ( 'div', { id: 'search_list_ajax' } );
        monitor.appendChild( new Element ( 'h1' ).update(freetext.searchresult) );
        monitor.appendChild( search_list_ajax );
        $('search_list_ajax').update( data );
    }

    last_search = text;
  };

  var url = URL_BASE + 'func=search.ajax_search&input='+ text + '&search_option='+ search_option +'&filter_group=' + filter_group + '&filter_cat=' + filter_cat+"&debug=off";
  new Ajax.Request( url, {
      onSuccess: handler
  });
  return false;
}

function displaySearchResult ( text, data, columns ) {
  var data_table = '';
  var totalHits = 0;
  data_table += '<div class="product-lists">';

/*
  data_table += '<th id="searchTop" class="searchTop_icon mini-tag">'+setHeaderLink( '&nbsp;', text, 'left' )+'</th>';
  data_table += '<th id="searchTop" class="searchTop_prodNo">'+setHeaderLink( '&sort=PRODUCT.PRODUCTNU DESC', text, 'right' )+setHeaderLink( freetext.product_number, text, 'left' )+'</th>';
  data_table += '<th id="searchTop" class="searchTop_lprodNo">'+setHeaderLink( '&sort=PRODUCT.MFRPN DESC', text, 'right' )+setHeaderLink( freetext.lev_produktnummer, text, 'left' )+'</th>';
  data_table += '<th id="searchTop" class="searchTop_name">'+setHeaderLink( '&sort=PRODUCT.TXT DESC', text, 'right' )+setHeaderLink( freetext.name, text, 'left' )+'</th>';
  data_table += '<th id="searchTop" class="operater-col">'+freetext.abn+'</th>';
  data_table += '<th id="searchTop" class="searchTop_status search-col">'+freetext.status+'</th>';
  data_table += '<th id="searchTop" class="searchTop_price search-col">'+setHeaderLink( '&sort=PLTYPPROD.PRICE DESC', text, 'right' )+setHeaderLink( freetext.price, text, 'left' )+'</th>';
  data_table += '<th id="searchTop" class="searchTop_number search-col last">'+freetext.number+'</th>';
*/

  var inc_mva;
  for ( var i = 0; data[i] != undefined; i++ ) {
    var row = data[i];
    inc_mva = row.INC_MVA;

    data_table += '<div class="prod-list-item"><div class="prod-image">';
    if ( (row.IMAGE1_THUMB != '' && row.IMAGE1_THUMB != null) || (row.IMAGE3_THUMB != '' && row.IMAGE3_THUMB != null) ) {
      var thumb_path = '';
      if ( row.IMAGE1_THUMB != '' && row.IMAGE1_THUMB != null ) {
        if (Left(row.IMAGE1_THUMB, 5) == 'http:'){
          thumb_path = row.IMAGE1_THUMB;
        }else{
          thumb_path = '/microshop/frontend/files/PRODUCT/'+row.IMAGE1_THUMB;
        }
      var thumb_alt = row.IMAGE1_THUMB;
      }
      else if ( row.IMAGE3_THUMB != '' && row.IMAGE3_THUMB != null ){
        thumb_path = 'http://webshop.one2com.no/one2com/frontend/picts/thumbnail/'+row.IMAGE3_THUMB;
       var thumb_alt = row.IMAGE3_THUMB; 
      }
      data_table += '<a title="'+row.TXT+'" href="'+scriptFrontend+'func=catalog.show&amp;func_id='+row.PRODUCT_ID+'&amp;table=PRODUCT"><img class="thumb" alt="'+thumb_alt+'" width="130" src="'+thumb_path+'" /></a>';
    }
    data_table += '</div>';

    data_table += '<div class="prod-info"><table><tbody><tr>';
    data_table += '<td class="title-col" colspan="3"><h3><a title="'+row.TXT+'" href="'+scriptFrontend+'func=catalog.show&amp;func_id='+row.PRODUCT_ID+'&amp;table=PRODUCT">'+row.TXT+'</a>';
    
    if (row.DESCRIPTION != '' && row.DESCRIPTION != null){
      data_table += '<span class="sub_description">'+row.DESCRIPTION+'</span>';
    }
    data_table += '</h3></td>';
    data_table += '<td class="icon-col"/><td class="icon-col"/><td class="icon-col"/></tr>';

    data_table += '<tr><td class="detail-col">';

    if (row.ABO_NAME) {
      var abo_text = '';
      if (row.PHONE == 'yes' && row.ABOEXISTS > 0)
      data_table += '<p><i>'+row.ABO_NAME+'</i></p>';
    }
    var more_sub = '';
    if(row.ABOEXISTS > 0){
       more_sub = freetext.price_with_abo;
    }
    
    data_table += '<p><a title="'+freetext.more+'" href="'+scriptFrontend+'func=catalog.show&amp;func_id='+row.PRODUCT_ID+'&amp;table=PRODUCT">&raquo; '+freetext.more+more_sub+'</a></p>';
    /*data_table += '<p><label>'+freetext.pbr+'</label>'+row.PRODUCTNU+'</p>';
    data_table += '<p><label>'+freetext.lev_pnr+'</label>'+row.MFRPN+'</p>';*/

    data_table += '</td>';

    data_table += '<td class="pris-col"><b>';
    data_table += '<p><span class="prod-price"><label>'+freetext.price+'</label> ';

    if (row.ABOEXISTS > 0 && row.ABO_ID == 'nop'){
       data_table += freetext.without_abo;
    }
    else if (row.ABO_ID > 0){
       data_table += freetext.with_abo;
    }

    data_table += ':'+row.PRICE+'</span></p>';
    data_table += '<p class="status-price">';
  
    if (row.STOCK_STATUS == 'on') {
      data_table += '<label>'+freetext.status+':</label>';
      data_table += row.STOCK;
    }else {
      data_table += '&nbsp;';
    }

    data_table += '</p>';
    data_table += '</b></td>';
    data_table += '<td colspan="4" class="order-col">';

/*
    var url_submit = '';
    var url_status = '';
    if (row.BUY_TO_PROD == 'on' && row.PHONE == 'yes') {
      url_submit = scriptFrontend+'func=catalog.show&func_id='+row.PRODUCT_ID+'&table=PRODUCT';
      url_status = 'c';
    }
    else if (row.ABO_ID == 'nop') {
      url_submit = scriptFrontend+'func=microshop.basket_redirect&func_org=frontend.show&func_id='+row.PRODUCT_ID+'&template=search&search_txt='+text+'&filter_group='+row.FILTER_GROUP+'&filter_cat='+row.FILTER_CAT+'&pnr='+row.PRODUCT_ID+'&option=add';
      url_status = 'b';
    }
    else if (row.ABO_ID > 0) {
      url_submit = scriptFrontend+'func=frontend.show&template=register_subscription&product_id='+row.PRODUCT_ID+'&abo_id='+row.ABO_ID+'&agreement_id=3';
      url_status = 's';
    }
*/
    var url_submit = row.URL_SUBMIT;
    var url_status = row.URL_STATUS;

    data_table += '<form name="basket" action="'+url_submit+'" method="post" id="text_'+row.PRODUCT_ID+'" class="prod-stock" onsubmit="return updatebasket(\''+row.PRODUCT_ID+'\',\''+row.STOCK+'\');">';

    data_table += '<p><input type="hidden" value="'+row.PRODUCT_ID+'" name="product_id">';

    var basket_txt = '';
    if (row.CHECK_BASKET == 'true')
      basket_txt = 'value="'+freetext.already_in_basket+'" class="prod-bg" ';
    else
      basket_txt = 'value="'+freetext.order+'" class="book-btn" ';
    data_table += '<input type="submit" id="title_'+row.PRODUCT_ID+'" '+basket_txt+' id="title_'+row.PRODUCT_ID+'">';

    var qty,gty_status;
    if (row.ABO_ID > 0){
      qty = 1;
      gty_status = "readonly='readonly'";
    }else{
      qty = 0;
      gty_status = "";
    }
    data_table += '<label>Antall:</label><input type="text" id="quantity_'+row.PRODUCT_ID+'" '+gty_status+' class="input_bg number" maxlength="3" value="'+qty+'"  name="quantity">';
    data_table += '<input type="hidden" value="'+url_submit+'" name="url" id="url_'+row.PRODUCT_ID+'">';
    data_table += '<input type="hidden" value="'+url_status+'" name="url_status" id="status_'+row.PRODUCT_ID+'">';
    data_table += '</p></form></td></tr></table></div></div>';

    totalHits += 1;
  }

  data_table += '</div>';
  data_table += '<p class="vat">';
  if(inc_mva == 'yes'){
    data_table += freetext.include_vat;
  }else{
    data_table += freetext.without_vat;
  }
  data_table += '</p>';

  $('prod_list_ajax').update( data_table );
}

function setHeaderLink( content, text, side ) {
  var span = '';
  
  if ( side == 'left' ) {
    span = content ;
  } else if ( side == 'right' ) {
    span = '<a href="'+scriptFrontend+'func=catalog.search&table=PRODUCT&template=search&query=search_product&search_txt='+text+content+'&top_menu_sel='+freetext.pub_product_id+'" title="sort '+content+'"><span>&nbsp;</span></a>';
  }

  return span;
}

function displayCategoryResult( main_id, main_txt, main_qty, manu_id, manu_txt, manu_qty, category, columns, text) {
    var url = URL_BASE + 'func=frontend.show&template=search&table=PRODUCT&query=search_product&sort=PRODUCT.TXT ASC&input='+ text;
    var i = 0;

    var table_text = '';
    for (i = 0; main_id[i] != undefined; ++i ) {
      if ( i == 0 )
        table_text = '<td colspan="3">';
      table_text += '<p><span> ('+main_qty[ i ]+')</span> <a href="'+url+'&filter_group=main&filter_cat='+main_id[ i ]+'" title="'+main_txt[ i ]+'" onclick="dynamicSearch(&#39;main&#39;,&#39;'+main_id[ i ]+'&#39;);return false;">'+main_txt[ i ]+'</a></p>';
    }
    if ( i > 0 ) table_text += "</td>";

    for (var i = 0; manu_id[i] != undefined; ++i ) {
      if ( i == 0 )
        table_text += '<td colspan="3" class="last">';
      table_text += '<p><span> ('+manu_qty[ i ]+')</span> <a href="'+url+'&filter_group=manu&filter_cat='+manu_id[ i ]+'" title="'+manu_txt[ i ]+'" onclick="'+'dynamicSearch(&#39;manu&#39;,&#39;'+manu_id[ i ]+'&#39;);return false;">'+manu_txt[ i ]+'</a></p>';
    }
    if ( i > 0 ) table_text += "</td>";

    var cat_header;
    if ( table_text != '' )
      cat_header = '<tr><th colspan="3">'+freetext.main_category_header+'</th><th colspan="3" class="last">'+freetext.manufact_heade+'</th></tr>';
    if ( table_text != '' )
      $(category).update( '<table class="data-lists">' + cat_header + '<tr class="search_prod">' + table_text + '</tr>' + '</table>' );
}

function clear( element ) {
  // Remove all children of an element
  while ( element.firstChild != undefined ) {
    var e = element.removeChild( element.firstChild );
    clear( e );
  }
}

function Left(str, n){
  if (n <= 0)
    return "";
  else if (n > String(str).length)
    return str;
  else
    return String(str).substring(0,n);
}

