var HOST_NAME = window.location.hostname;
var URL_BASE = 'http://'+HOST_NAME+scriptFrontend;
var ajaxing = null;
var contentAjaxing = null;
var first_click = 0;
var MIN_SEARCH_CHAR = 1;
var REQUEST_COUNTER = 0;
var RESULT_CAT_COL = 3;
var RESULT_PRODUCT_COL = 8;

function showLargeImages(sef,event){
  sef.className = event == 'over' ? "big-img" : "small-img";
}
function showImages(sef){
   var checkBox = $('checkbox_images');
   var status;
      if(this.checked){
          $$('.big-img').invoke('show');
          $$('.small-img').invoke('hide'); 
          status = 'YES';    
       }else{
          $$('.big-img').invoke('hide');
          $$('.small-img').invoke('show');   
          status = 'NO';
       }

   url = scriptFrontend+'func=user.setproduct_image&product_large_image='+status;
   new Ajax.Request(url, {   
       method: 'get',   
       onLoading: function(){  
         $('checkbox_images').style.backgroundImage='url(/efa/frontend/ajax-loader.gif)';
         $('checkbox_images').style.backgroundPosition='40% 50%';
         $('checkbox_images').style.backgroundRepeat='no-repeat';
       },
       onSuccess: function(transport) {
         $('checkbox_images').style.backgroundImage='none';
      }
  }); 
}

function productTabs(){
  if($$('#product-tabs > li > a')){
    $$('#product-tabs > li > a').each(function(tab){
      tab.observe('click', function(e){
        Event.stop(e);
        var self = this,
            selectcls = 'selected';

        if(!self.hasClassName(selectcls)){
          var activecls = ''+self.classNames(),
              relatecls = 'for-tab',
              hiddencls = 'hidden';

          if(activecls.search(' ') != -1){
            activecls.split(' ').each(function(t){
              if(t.search('tab-') != -1){
                activecls = t;
              }
            });
          }

          if($$('.'+relatecls)){
            var relelem = $$('.'+relatecls);
            relelem.each(function(elem){
              if(elem.hasClassName(selectcls)){
                elem.removeClassName(selectcls);
              }else if(!elem.hasClassName(hiddencls)){ 
                elem.addClassName(hiddencls); 
              }
            });
          }

          self.addClassName(selectcls);
          $$('.'+activecls).each(function(elem){
            if(elem.hasClassName(hiddencls)){ elem.removeClassName(hiddencls); }
          });
        }
      });
    });
  }
}

function ajaxSearch(filter_group,filter_cat){

  var nohits = 0;
  var text = $('search-text').value.strip();
  var catalog_id = $('catalog_id').value;
  var form = $('search-form');

  var container = $('bd'); //$('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: '/efa/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 url = isSEF ? '/'+freetext.sef_search+'/?search_txt='+ escape(decodeURI(text)) +'&filter_group=' + escape(filter_group) + '&filter_cat=' +escape(decodeURI(filter_cat))+'&catalog_id='+catalog_id + '&input='+ escape(decodeURI(text)) : URL_BASE + 'func=search.ajax_search&debug=off&right_menu=CATEGORY&input='+ escape(decodeURI(text)) + '&filter_group=' + escape(filter_group) + '&filter_cat=' +escape(decodeURI(filter_cat))+'&catalog_id='+catalog_id

  if (filter_group != '' && filter_cat != "") {
      var params = { template: 'search', search_option: 'html', ajax: '2' };
      new Ajax.Request( url, {
          parameters: params,
          onSuccess: function(r){
              prod_monitor.update(r.responseText);
          }
      });
  } else {

      var params = { template: 'search', search_option: 'html', ajax: '1', page : arguments[2] };
      new Ajax.Request( url, {
          parameters: params,
          onSuccess: function(r){
              container.update(r.responseText);

              // update breadcrumb
              if($('breadcrumb-list')){
                  var bc_url = isSEF ? '/' + freetext.sef_search_breadcrumb + '/' : scriptFrontend + 'func=frontend.show&template=inc_breadcrumb&temp=search&ajax=yes&debug=off';
                  ajaxing2 = new Ajax.Request(bc_url, {
                      onSuccess: function (resp) {
                          $('breadcrumb-list').update(resp.responseText);
                      }
                  });
              }
          }
      });
  }

  return false;
}

function ajaxSearch_pagination(filter_group,filter_cat,page){
  var prod_monitor = $('prod_list_ajax');
  var text = $('search-text').value.strip();
  var catalog_id = $('catalog_id').value;
  var url = isSEF ? '/'+freetext.sef_search+'/?search_txt='+ escape(decodeURI(text)) +'&filter_group=' + escape(filter_group) + '&filter_cat=' +escape(decodeURI(filter_cat))+'&catalog_id='+catalog_id : URL_BASE + 'func=search.ajax_search&debug=off&right_menu=CATEGORY&input='+ escape(decodeURI(text)) + '&filter_group=' + escape(filter_group) + '&filter_cat=' +escape(decodeURI(filter_cat))+'&catalog_id='+catalog_id;
  var params = { template: 'search', search_option: 'html', ajax: '1', page : page, ajax_saa : 'yes' };

  new Ajax.Request( url, {
    parameters: params,
    onLoading: function(){ prod_monitor.update(freetext.s_please_wait+'...<br><br><br>'); prod_monitor.setStyle({backgroundImage:'url(/efa/frontend/ajax-loader.gif)', backgroundPosition: '0% 50%', backgroundRepeat: 'no-repeat'}); },
    onSuccess: function(r){
      prod_monitor.setStyle({backgroundImage:'none'});    
      prod_monitor.update(r.responseText);
    }
  });
  return false;
}

function setHeaderLink( content, text, side ) {
  var span = '';
  
  if ( side == 'left' ) {
    span = content ;
  } else if ( side == 'right' ) {
    var url = isSEF ? '/'+freetext.sef_search_catalog+'/?search_txt='+text+content+'&top_menu_sel='+freetext.pub_product_id : scriptFrontend+'func=catalog.search&table=PRODUCT&template=search&query=search_product&right_menu=CATEGORY&search_txt='+text+content+'&top_menu_sel='+freetext.pub_product_id;
    span = '<a href="'+url+'" title="sort '+content+'"><span>&nbsp;</span></a>';
  }

  return span;
}

function clear( element ) {
  // Remove all children of an element
  while ( element.firstChild != undefined ) {
    var e = element.removeChild( element.firstChild );
    clear( e );
  }
}

function ajax_category_menu(){
  var rightMenuLink = $$('a[rel="ajax-menu"]');
  if(rightMenuLink){
    rightMenuLink.each(function(a){
      a.stopObserving('click');
      a.observe('click', function(e){
        Event.stop(e);
        var duration = 0.3,
            self = this,
            li = this.up('li'),
            params = self.readAttribute("href");
            
        if (!isSEF){
          params = params.toQueryParams();
          params.template = self.hasClassName('chapter') ? 'ajax_chapter_menu' : 'ajax_section_menu' ;
        }

        if(li.hasClassName('expanded')){
          if(this.hasClassName('select-menu')){ this.removeClassName('select-menu'); }
          li.removeClassName('expanded');
          if(li.hasClassName('sub-menu')) { li.removeClassName('sub-menu'); }
          li.addClassName('collapsed');
          if(li.down('ul.chapter-menu')){
            var ul = li.down('ul.chapter-menu');
            if (ul.down('li.expanded')){
              var li2 = ul.down('li.expanded');
              li2.removeClassName('expanded');
              li2.addClassName('collapsed');
              if (li2.down('ul.section-menu')){
                new Effect.BlindUp(li.down('ul.section-menu'), { duration : duration, afterFinishInternal: function(){ li.down('ul.section-menu').remove();} });
              }
            }
            new Effect.BlindUp(li.down('ul.chapter-menu'), { duration : duration, afterFinishInternal: function(){
              li.down('ul.chapter-menu').remove();
              if (li.down('div.chapter-boxes')){ li.down('div.chapter-boxes').remove(); }
            } });
          }else {
            if(li.down('ul.section-menu')){
              new Effect.BlindUp(li.down('ul.section-menu'), { duration : duration, afterFinishInternal: function(){ li.down('ul.section-menu').remove();} });
            }
          }
        }else{
          if(a.hasClassName('publish-content')){ updateCatalogContent(a); }
          if(ajaxing != null){
            ajaxing.transport.abort();
            $$('a[rel="ajax-menu"]').each(function(obj){ obj.setStyle({backgroundImage:'none'}); });
          }
          if(isSEF){
            var param1 = { ajaxtemplate: (self.hasClassName('chapter') ? 'ajax_chapter_menu':'ajax_section_menu'), debug: 'off', ajax: 1};
            var url = params;
          }else{
            var param1 = params;
            var url = scriptFrontend+'func=frontend.show&debug=off';
          }

          ajaxing = new Ajax.Request(url, {
            method: 'get',
            parameters: param1,
            onCreate: function(){ 

              if (self.hasClassName('chapter')){
                if($$('.chapter-menu')){ 
                  $$('.chapter-menu').each(function(ul){ 
                     new Effect.BlindUp($(ul), { duration : duration, afterFinishInternal: function(){ 
                         $(ul).up('div',1).remove();
                     } });
                  });
                }
              }
              if($$('.section-menu')){ 
                $$('.section-menu').each(function(ul){ 
                   new Effect.BlindUp($(ul), { duration : duration, afterFinishInternal: function(){ 
                   if($(ul).previous(0).hasClassName('select-menu')){
                     $(ul).previous(0).removeClassName('select-menu');
                     $(ul).remove();
                   }
                  } });
                });

              }
            },
            onLoading: function(){ self.setStyle({backgroundImage:'url(/efa/frontend/ajax-loader.gif)', backgroundPosition: '98% 50%', backgroundRepeat: 'no-repeat'}); },
            onSuccess: function(res){
              self.setStyle({backgroundImage:'none'});
              if(self.up('ul',0) && self.up('ul',0).hasClassName('chapter-menu')){
                $$('.chapter-menu a.select-menu').each(function(a){a.removeClassName('select-menu');});
              }
              self.addClassName('select-menu')
              li.insert({'bottom':res.responseText});
              var ul = li.down('ul');
              ul.hide();
              li.adjacent('li.expanded').each(function(l){
                l.removeClassName('expanded');
                if (l.hasClassName('sub-menu')) { l.removeClassName('sub-menu'); }
                l.addClassName('collapsed');
              });              
              li.removeClassName('collapsed');
              li.addClassName('expanded');

              if (self.hasClassName('chapter')){ li.addClassName('sub-menu'); }

              new Effect.BlindDown($(ul),{ duration : duration });
              ajax_category_menu();

              // #### Update breadcrumbs  ####
              if(isSEF){
                var param2 = { ajaxtemplate: 'inc_breadcrumb', debug: 'off', ajax: 'yes'};
                var bc_url = params;
              }else{
                var bc_chap_id = params.chap_id ? params.chap_id : '';
                var bc_sect_id = params.sect_id ? params.sect_id : '';
                var bc_url = scriptFrontend+'func=frontend.show&template=inc_breadcrumb&cat_id='+params.func_id+'&chap_id='+bc_chap_id+'&sect_id='+bc_sect_id+'&tab='+params.table+'&ajax=yes&debug=off';
              }
              ajaxing2 = new Ajax.Request(bc_url, {
                  parameters: (isSEF ? param2 : {}),
                  onSuccess: function(resp){ $('breadcrumb-list').update(resp.responseText); }
              });
            }
          });
        }
      });
    });
  }
}

function updateCatalogContent(elem){
  var container = $('content-area'),
      preloader;

  if(container && elem && elem.readAttribute('href')){
    var href = elem.readAttribute('href');

    if(contentAjaxing != null){
      try{ 
        contentAjaxing.transport.abort();
        preloader.hide();
        container.hide().appear();
      }catch(err){ }
    }

    contentAjaxing = new Ajax.Request(href, {
      parameters: {debug: 'off', ajax: 1, ajaxtemplate: 'catalog_content_preview'},
      onLoading: function(){ preloader = setPreloader(container); },
      onSuccess: function(r){
        preloader.hide();
        if(r && r.responseText.strip() != ''){
          container.hide().update(r.responseText).appear();
        }else{
          container.hide().appear();
        }
      }
    });
  }
}
function setPreloader(elem) {
    var preload = $('GlobaPreloader') || new Element('div', {
        id: 'GlobaPreloader'
    }).setStyle({
        position: 'absolute',
        zIndex: '12345',
        display: 'none',
        background: 'transparent none'
    }).insert({
        top: '<img src="/efa/frontend/loading-bar.gif" style="margin-top:25%">'
    });
    if (!$('GlobaPreloader')) {
        $(document.body).insert({bottom: preload});
    }
    new Position.clone(elem, preload);
    var conf = { duration: 0.2, to: 0.2 };
    elem.fade(conf);
    return preload.show();
}

function ajax_publish_menu() {
    var rightMenuLink = $$('a[rel="ajax-menu-publish"]');
    if (rightMenuLink) {
        rightMenuLink.each(function (a) {
            a.stopObserving('click');
            a.observe('click', function (e) {
                var duration = 0.3;
                Event.stop(e);
                var self = this;

                if (ajaxing != null) {
                    ajaxing.transport.abort();
                    $$('a[rel="ajax-menu-publish"]').each(function (obj) {
                        obj.setStyle({
                            backgroundImage: 'none'
                        });
                    });
                }

                var url = isSEF ? self.readAttribute("href") : URL_BASE; //+ self.readAttribute("href");
                var have_child = self.hasClassName('have-child') ? 1 : 0;
                var params = isSEF ? {} : self.readAttribute("href").toQueryParams();
                params.debug = 'off';
                params.ajax_temp = 'yes';

                if (params.local_template == 'yes' || params.template == '') delete params.template;

                var li = this.up('li');
                var needload = 1;
                // close all open first
                $$('.expanded').each(function (li_expanded) {
                    if (!a.up('li.expanded')) ajax_publish_menu_close(li_expanded, duration);
                });

                if (have_child == 1) {
                    var currentTemplate = params.template;// || 'artikkel_ajax';
                    if (li.hasClassName('expanded')) {
                        // should remove and hide
                        ajax_publish_menu_close(li, duration);
                        needload = 0;
                    }else{
                        li.addClassName('expanded');
                        li.addClassName('sub-menu');
                        params.template = 'ajax_publish_menu';
                    }
                }/*else if(isSEF){
                    params.template = 'artikkel_ajax';
                }*/

                if (needload) {
                    ajaxing = new Ajax.Request(url, {
                        method: 'get',
                        parameters: params,
                        onLoading: function () {
                            self.setStyle({
                                backgroundImage: 'url(/efa/frontend/ajax-loader.gif)',
                                backgroundPosition: '98% 50%',
                                backgroundRepeat: 'no-repeat'
                            });
                        },
                        onSuccess: function (res) {

                            //alert(res.responseText);
                            if (have_child == 1) {
                                li.insert({
                                    'bottom': res.responseText
                                });
                                var ul = li.down('ul');
                                ul.hide();
                                ajax_publish_menu(); // rebuild update menu                            
                                new Effect.BlindDown($(ul), {
                                    duration: duration
                                });
                                // load content
                                params.template = currentTemplate;
                                ajaxing3 = new Ajax.Request(url, {
                                    method: 'get',
                                    parameters: params,
                                    onLoading: function () {},
                                    onSuccess: function (res) {
                                        $("content-area").update(res.responseText);
                                    }
                                });

                            }else{
                                //content now 
                                $("content-area").update(res.responseText);
                            }

                            self.setStyle({
                                backgroundImage: 'none'
                            });
                        }
                    });

                } // end need load
                else {
                    if (have_child == 1) {
                        ajaxing3 = new Ajax.Request(url, {
                            method: 'get',
                            parameters: params,
                            onLoading: function () {
                                self.setStyle({
                                    backgroundImage: 'url(/efa/frontend/ajax-loader.gif)',
                                    backgroundPosition: '98% 50%',
                                    backgroundRepeat: 'no-repeat'
                                });
                            },
                            onSuccess: function (res) {
                                $("content-area").update(res.responseText);
                                self.setStyle({
                                    backgroundImage: 'none'
                                });
                            }
                        });
                    }

                } // end else need load
                // #### Update breadcrumbs  ####
                var bc_url = (isSEF ? url + '?' : scriptFrontend + 'func=frontend.show&p1=' + params.p1 + '&p2=' + params.p2 + '&p3=' + params.p3 + '&') + 'template=inc_breadcrumb&table=PUBLISH&ajax=yes&debug=off';
                ajaxing2 = new Ajax.Request(bc_url, {
                    onSuccess: function (resp) {
                        $('breadcrumb-list').update(resp.responseText);
                    }
                });
            }); // end observe click
        }); // end each right
    }
}
function ajax_publish_menu_close(li_expand, duration)
{
    var div1 = li_expand.down('div');
    var div2 = div1.down('div');                    
    var ul   = div2.down('ul');
    new Effect.BlindUp($(ul), { duration : duration, afterFinishInternal: function(){ 
        li_expand.removeClassName('expanded'); 
        li_expand.removeClassName('sub-menu');                         
        ul.remove();
        div2.remove();                        
        div1.remove();
     } });    
}
