var MIN_SEARCH_CHAR = 2; // minimum number of characters to trigger a search
var search_string = '';
var searchHistoryObj;
var ajaxworking = null;
var popup_company = 0;

var hist = {
    url: '',
    params: '',
    innerHTML: {}
};

// History handler
var isIE = BROWSER.browser == 'Explorer';
var isNotIE7 = !(isIE && BROWSER.version < 8);


function openPopUp(theUrl, w, h, s, r) {
    /***********************
     w=width
     h=height
     s=scrollbars: 1 for yes 0 for no
     r=resizable: 1 for yes 0 for no
     
     e.g. <a href="#" onclick="openPopUp('http://www.webon.net',200,400,1,1)">open pop up window</a>
     
     
     ***********************/
    window.open('frontend.cgi?' + theUrl, 'subwindow', '"scrollbars=' + s + ', resizable=' + r + ', height=' + h + ', width=' + w + '"');

}
document.observe('dom:loaded', function(){
 if($('logout-form')){
    var action = $('logout-form').readAttribute("action");
    $('logout-form').observe('submit',function(e){
        e.stop();
        $('logout-dialog').show();
        if($('coop-logout-info-url')){
            $('logout-form').submit();
        }else{   
            logoutAndRedirect(action);
        }
    });
  }
/*
    if($('login'))
    {
        $('login').observe('submit',function(e){
           deleteAllCookies();
         });
    }
*/
});

function showLogoutInfo()
{
  var action = $('logout-form').readAttribute("action");
  var logoutTemplate = $('logout-info-url').value;
  new Ajax.Request(logoutTemplate,{

    onSuccess:function(resp){
      $('logout-container').update(resp.responseText);
      logoutAndRedirect(action);
    }

  });

}


function logoutAndRedirect(url)
{

  new Ajax.Request(url,{

    onSuccess:function(){
       $('logout-dialog').hide();
        if($('coop-logout-info-url')){
            RedirectToUrl('http://www.wjshop.no/coop.html');
        }else{   
            RedirectToUrl('http://www.wj.no');
        }
        
    }

  });

}
function RedirectToUrl(redirectUrl){
   window.location = redirectUrl; 
}
/*
function RedirectToCoop(){
   window.location = "http://www.wjshop.no/coop.html"; 
}
function RedirectToWj(){
   window.location = "http://www.wj.no"; 
}
*/
function submitCheck(f, arg) { ///<form onsubmit="return submitCheck(form,'inputName_1,inputName_2,..,inputName_n')">
    if (arg == '') {
        return true;
    }
    var elem = arg.split(",");
    for (var i = 0; i < elem.length; i++) {
        if (f.elements[elem[i]].value == '' || f.elements[elem[i]].value.length < 1) {
            alert(freetext.input_required);
            return false;
        }
    }
    return true;
}

function innit_AJAX() {
    try {
        return new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {} //IE
    try {
        return new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e) {} //IE
    try {
        return new XMLHttpRequest();
    } catch (e) {} //Native Javascript 
    alert("XMLHttpRequest not supported");
    return null;
}

function serverReq(url, outputElem, nextLink) {
    if (ajaxworking != null) {
        ajaxworking.transport.abort();
    }
    ajaxworking = new Ajax.Request(url, {
        method: 'post',
        encoding: 'UTF-8',
        onLoading: function () {
            showResult(outputElem, freetext.now_updating);
        },
        onFailure: function() {
            showResult(outputElem, "Cannot connect to Server")
        },
        onComplete: function (resp) {
                showResult(outputElem, freetext.successful_updated);
                //setTimeout('document.location.href="' + nextLink + '"', 200);
                var objdate = new Date(); 
                var timepad =  objdate.getMinutes() + '' + objdate.getSeconds();
                setTimeout('window.location="' + nextLink + '&time='+ timepad +'"', 200);

        }
    });
}

function showResult(elem, str) {
    document.getElementById(elem).innerHTML = str;
}

var searching;
$(document).observe("dom:loaded", function () {
    ajaxSearch();
    companyCheck();
    userAjaxSearch();
    selectBasket();
    productTab();
    saveBasketName();
    
});
var timer;
var wait_image = new Element('img', {
    src: '/wj7/frontend/design/icons/ajax-loader.gif'
});

function ajaxSearch() {
    if ($("product-search")) {
        $("product-search").observe('submit', function (e) {
            if ($("search_phrase").value.strip() == "" || $("search_phrase").value.strip().length == 0) {
                alert(freetext.search_alert);
                Event.stop(e);
            }            
        });
    }
}

function userAjaxSearch() {
    if ($("user-search")) {


        $('user-search').observe('submit', function (e) {
            if ($("search_user").value.strip() != "" || $("search_user").value.strip().length > MIN_SEARCH_CHAR) {
                this.ajax.value = 'yes';
                searchQuery(this.action + "&ajax=" + this.ajax.value + "&keyword=" + escape(this.keyword.value), "user_list", false);
            } else {
                alert(freetext.search_alert);
            }
            Event.stop(e);
        });

        $("search_user").observe('keyup', function () {
            if (this.value.strip().length > MIN_SEARCH_CHAR && search_string != this.value.strip()) {
                this.form.ajax.value = 'yes';
                search_string = this.value.strip();
                try {
                    clearTimeout(timer);
                } catch (e) {}
                timer = function () {
                    searchQuery($("user-search").action + "&ajax=" + $("user-search").ajax.value + "&keyword=" + escape($("user-search").keyword.value), "user_list", false, function () {});
                }.delay(1);
            }
        });
    }
}

function trigger_search(callback) {
/*var pageTrackerSrc = _gat._getTracker("UA-1404533-1");
    pageTrackerSrc._trackPageview('/search.cgi?input=' + escape($("product-search").namenumber.value));*/
    searchQuery($("product-search").action + "&ajax=" + $("product-search").ajax.value + "&namenumber=" + escape($("product-search").namenumber.value) + "&limit_search=" + $("product-search").limit_search_value.value, "main", false, callback);
}

function ajaxListSubCat(link) {
    searchQuery(link.href + "&ajax=yes&debug=on", "ajax_sub_category_list", link);
    return false;
}

function ajaxListProduct(link) {
    searchQuery(link.href + "&ajax=yes&debug=on", "main", link);
    return false;
}

function ajaxDirectProduct(link, option, ajax_navi) {
    var target = {
        sub_category: 'ajax_sub_category_list',
        product: 'ajax_product_list'
    },   
    url = link.href + "&ajax=yes&debug=on";

    if (ajax_navi == '1') {
        url += "&ajax_navi=on";
    }
    searchQuery(url, target[option] || 'main', link);
    return false;
}

function searchQuery(url, area, link, callback) {
    if (searching != null) {
        searching.transport.abort();
    }
    //$(area).innerHTML = '';
    clear($(area));
    $(area).insert(wait_image);
    searching = new Ajax.Request(url, {
        method: 'get',
        encoding: 'UTF-8',
        onSuccess: function (transport) {
            $(area).update(transport.responseText);

            if (transport.responseText) {
                var hits = transport.responseText.match("no-hits");
                if (hits == 'no-hits') { /*alert('no-hit' + '/search.cgi?input=' + escape($("product-search").namenumber.value) + '&category=No_hits');*/
                    pageTracker._trackPageview('/search.cgi?input=' + escape($("product-search").namenumber.value) + '&category=No_hits');
                }
                else { /*alert('hit' + '/search.cgi?input=' + escape($("product-search").namenumber.value) + '&category=Hits');*/
                    pageTracker._trackPageview('/search.cgi?input=' + escape($("product-search").namenumber.value) + '&category=Hits');
                }
            }

            if (link && link.rel == 'main-category') {
                searchHistoryObj = $('main').innerHTML;
            }
            if (typeof(callback) == 'function') {
                callback();
            }
        }
    });
}

function clear(element) {
    // Remove all children of an element
    while (element.firstChild != undefined) {
        var e = element.removeChild(element.firstChild);
        clear(e);
    }
}

function search_product_submit() {
    this.form.submit();
    return false;
}

function searchHistory() {
    var result;
    if ($('histObj').getValue() != '') {
        result = unescape($('histObj').getValue());
    } else {
        result = searchHistoryObj
    }
    $("main").update(result);
}

function add_basket(f, namenumber) {
    $("right").appendChild(wait_image);
    var url = $(f).action + "&debug=off&template=inc_right";
    if ($(f).unit) {
        url = url + "&unit=" + $(f).unit.value;
    }
    if ($(f).price) {
        url = url + "&price=" + $(f).price.value;
    }
    if ($(f).stock) {
        url = url + "&stock=" + $(f).stock.value;
    }
    if ($(f).quantity) {
        url = url + "&quantity=" + $(f).quantity.value;
    }
    new Ajax.Request(url, {
        method: 'get',
        encoding: 'UTF-8',
        onComplete: function (resp) {
            Element.replace('right', resp.responseText);
        }
    });

    return false;
}

function productLink(a) {

    if ($('histObj')) {
        $('histObj').value = escape(searchHistoryObj);
    }
    var f = new Element('form', {
        'action': a.href,
        'style': 'display:none',
        'method': 'post'
    });
    f.insert({
        'bottom': '<input type="hidden" name="history" value="' + escape($("main").innerHTML) + '">'
    });
    $(document.body).insert({
        'bottom': f
    });
    f.submit();
    return false;
}

function restoreHistoryProd() {
    $("main").update(unescape($("history").getValue()));
    if ($('histObj')) {
        searchHistoryObj = unescape($('histObj').getValue());
    }
}

/**************** For multiple companies login Function **************/

function cancel_dialogue() {
    new Ajax.Request('/wsp/wj7/frontend.cgi?func=frontend.show&template=home&logout=yes', {
        onComplete: function () {
            activeDialog.close();
            location.href = '/wsp/wj7/frontend.cgi?func=frontend.show&template=home';
        }
    });
}

function companyCheck() { 
    var f = $("login");
     var paramArray = window.location.search.toQueryParams();
    if (f) {
        f.observe('submit', function (e) { 
            Event.stop(e);
            var url_template = f.url_template.value;
            new Ajax.Request('/wsp/wj7/frontend.cgi?', {
                parameters: {
                    password: $F('passward'),
                    username: $F('e_mail'),
                    func: 'user.company_no',
                    login: 'yes',
                    logincode: $F('logincode'),
                    debug: 'off',
                    login_template: 'login'
                },
                onComplete: function (response) {
                    if (parseInt(response.responseText) > 0) {
                        var GreyboxHead = "";
                        if (parseInt(response.responseText) > 1) {
                            GreyboxHead = freetext.multiple_comps_alert_head;
                            var parseHref = '/wsp/wj7/frontend.cgi?func=frontend.show&template=multiple_companies_alert&username=' + $F('e_mail');
                            var compAlertUrl = parseHref;
                            js_dialog('mybox', {
                                title: GreyboxHead,
                                width: 500,
                                height: 300,
                                ajax_url: compAlertUrl,
                                theme: 'blue'
                            });

                           if($$('input.dBtnClose')){

                              $$('input.dBtnClose').each(function(e){
                                 e.hide();
                              });

                           }

                        } else {
                            if (url_template) {
                                if (url_template == 'func=frontend.show&template=login_fail_info') { 
                                    url_template = "func=frontend.show&template=home";
                                }
                                location.href = '/wsp/wj7/frontend.cgi?' + url_template;
                            } else {
                                location.href = '/wsp/wj7/frontend.cgi?func=frontend.show&template=home';
                            }
                        }
                    } else {  
                        location.href = '/wsp/wj7/frontend.cgi?func=frontend.show&template=login_fail_info';
                    }

                }
            });
        });
    }
} /************************ log in from WJ.no *************************/

function companyCheckFromWj(user_email, isLogin, coop_login) {

    //var params = window.location.search.toQueryParams(); 
    if (user_email != '' && isLogin == 'yes' && popup_company == 0) {

        new Ajax.Request('/wsp/wj7/frontend.cgi?', {

            parameters: {
                username: user_email,
                func: 'user.company_no',
                coop_login: coop_login
            },
            onComplete: function (response) {
                if (parseInt(response.responseText) > 0) {
                    var GreyboxHead = "";
                    if (parseInt(response.responseText) > 1) {
                        GreyboxHead = freetext.multiple_comps_alert_head;
                        //var parseHref = '/wsp/wj7/frontend.cgi?func=frontend.show&template=multiple_companies_alert&username='+$F('e_mail'); 
                        var parseHref = '/wsp/wj7/frontend.cgi?func=frontend.show&template=multiple_companies_alert&username=' + user_email + '&coop_login=' + coop_login;
                        var compAlertUrl = parseHref;
                        js_dialog('mybox', {
                            title: GreyboxHead,
                            width: 500,
                            height: 300,
                            ajax_url: compAlertUrl,
                            theme: 'blue'
                        });
                        popup_company = 1;

                    } else {

                        location.href = '/wsp/wj7/frontend.cgi?func=frontend.show&template=home&selectedCompany=1';

                    }

                } else {

                    location.href = '/wsp/wj7/frontend.cgi?func=frontend.show&template=login_fail_info';

                }

            }

        });
    }
} /****************************** end *********************************/

function selectBasket() {

    if ($('baskettable') || $('userOrder')) {

        var selectedBasketline = $$(".selected_basketline");

        if ($('getBname')) {
            var bname = $('getBname').innerHTML;
        } /*** Get bname ***/
        if ($('getBid')) {
            var bid = $('getBid').innerHTML;
        } /*** Get bid ***/
        if ($('getTemplate')) {
            var template = $('getTemplate').innerHTML;
        } /*** Get template ***/
        if ($('getFunc')) {
            var func = $('getFunc').innerHTML;
        } /*** Get func ***/

        var nof_select = 0;
        bkSelect = new Array(); /*** Create new array ***/

        /*** Check all checkboxes as default ***/
        selectedBasketline.each(function (e) {
            if (!e.checked) {
                e.writeAttribute('checked', 'checked');
                e.checked = true;
                nof_select++;
                bkSelect.push(e.value);
            }
        });

        if (nof_select > 0) { /*** Add button on inc_basket_content1 ***/
            if ($('baskettable')) {
                var addLink = '<a onclick=\"serverReq(\'/wsp/wj7/frontend.cgi?func=shop.buy&option=copy&bname=' + bname + '&bkline_id=' + (bkSelect.join(',')).gsub(',', ':') + '\',\'func_query\',\'/wsp/wj7/frontend.cgi?func=shop.buy&option=add&bid=' + bid + '&template=' + template + '\')\" title=\"Legg til ' + bname + ' i din nåværende handlekurv\" class=\"button\">Legg til handlekurv<\/a>';

                //var delLink = '<a href=\"/wsp/wj7/frontend.cgi?func=shop.buy&option=new&bid=' + bid + '&template=basket_view&bkline_id=' + (bkSelect.join(',')).gsub(',',':') + '\" title=\"Slett handlekurven' + bname + '\" class=\"button\">Slett handleliste<\/a>';
                $('add-bkline').update(addLink);
                //$('del-bkline').update(delLink);      
            } /*** Add button on user_order_detail  ***/
            else if ($('userOrder')) {
                var addLink = '<a href=\"/wsp/wj7/frontend.cgi?func=frontend.show&option=buy&func_id=' + func + '&template=user_order_detail&ordline_id=' + (bkSelect.join(',')).gsub(',', ':') + '">Legg til </a> &nbsp;<a href="/wsp/wj7/frontend.cgi?func=frontend.show&option=buy&func_id=' + func + '&template=user_order_detail&ordline_id=' + (bkSelect.join(',')).gsub(',', ':') + '"><img src="/wj7/frontend/files/basket.gif" align="absmiddle" alt="checkout"></a>';
                $('add-bkline').update(addLink);
            }
        }
        else {
            if ($('baskettable')) {
                $('add-bkline').update();
                //$('del-bkline').update(); 
            } /*** Add button on user_order_detail  ***/
            else if ($('userOrder')) {
                $('add-bkline').update();
            }
        }

        /*** Click selectall checkbox to select all elements ***/
        $('selectall').observe('click', function (j) {
            if (!this.checked) {
                selectedBasketline.each(function (e) {
                    if (e.checked) {
                        e.removeAttribute('checked', 'checked');
                        if (nof_select > 0) {
                            nof_select--;
                        }
                        e.checked = false;
                        bkSelect = bkSelect.without(e.value);
                    }
                });
            }
            else if (this.checked) {
                selectedBasketline.each(function (e) {
                    if (!e.checked) {
                        e.writeAttribute('checked', 'checked');
                        e.checked = true;
                        nof_select++;
                        bkSelect.push(e.value);

                    }
                });
            }

            if (nof_select > 0) { /*** Add button on inc_basket_content1 ***/
                if ($('baskettable')) {
                    var addLink = '<a onclick=\"serverReq(\'/wsp/wj7/frontend.cgi?func=shop.buy&option=copy&bname=' + bname + '&bkline_id=' + (bkSelect.join(',')).gsub(',', ':') + '\',\'func_query\',\'/wsp/wj7/frontend.cgi?func=shop.buy&option=add&bid=' + bid + '&template=' + template + '\')\" title=\"Legg til ' + bname + ' i din nåværende handlekurv\" class=\"button\">Legg til handlekurv<\/a>';

                    //var delLink = '<a href=\"/wsp/wj7/frontend.cgi?func=shop.buy&option=new&bid=' + bid + '&template=basket_view&bkline_id=' + (bkSelect.join(',')).gsub(',',':') + '\" title=\"Slett handlekurven' + bname + '\" class=\"button\">Slett handleliste<\/a>';
                    $('add-bkline').update(addLink);
                    //$('del-bkline').update(delLink);
                } /*** Add button on user_order_detail  ***/
                else if ($('userOrder')) {
                    var addLink = '<a href="/wsp/wj7/frontend.cgi?func=frontend.show&option=buy&func_id=' + func + '&template=user_order_detail&ordline_id=' + (bkSelect.join(',')).gsub(',', ':') + '">Legg til </a> &nbsp;<a href="/wsp/wj7/frontend.cgi?func=frontend.show&option=buy&func_id=' + func + '&template=user_order_detail&ordline_id=' + (bkSelect.join(',')).gsub(',', ':') + '"><img src="/wj7/frontend/files/basket.gif" align="absmiddle" alt="checkout"></a>';
                    $('add-bkline').update(addLink);
                }
            }
            else {
                if ($('baskettable')) {
                    $('add-bkline').update();
                    //$('del-bkline').update(delLink); 
                } /*** Add button on user_order_detail  ***/
                else if ($('userOrder')) {
                    $('add-bkline').update();
                }
            }

        });

        /*** Select each element ***/
        selectedBasketline.each(function (element) {
            element.observe('click', function (e) {
                if (!this.checked) {
                    if (nof_select > 0) {
                        nof_select--;
                    }
                    bkSelect = bkSelect.without(this.value);
                }
                else if (this.checked) {
                    nof_select++;
                    bkSelect.push(this.value);
                }

                if (nof_select > 0) { /*** Add button on inc_basket_content1 ***/
                    if ($('baskettable')) {
                        var addLink = '<a onclick=\"serverReq(\'/wsp/wj7/frontend.cgi?func=shop.buy&option=copy&bname=' + bname + '&bkline_id=' + (bkSelect.join(',')).gsub(',', ':') + '\',\'func_query\',\'/wsp/wj7/frontend.cgi?func=shop.buy&option=add&bid=' + bid + '&template=' + template + '\')\" title=\"Legg til ' + bname + ' i din nåværende handlekurv\" class=\"button\">Legg til handlekurv<\/a>';

                        //var delLink = '<a href=\"/wsp/wj7/frontend.cgi?func=shop.buy&option=new&bid=' + bid + '&template=basket_view&bkline_id=' + (bkSelect.join(',')).gsub(',',':') + '\" title=\"Slett handlekurven' + bname + '\" class=\"button\">Slett handleliste<\/a>';
                        $('add-bkline').update(addLink);
                        //$('del-bkline').update(delLink);
                    } /*** Add button on user_order_detail  ***/
                    else if ($('userOrder')) {
                        var addLink = '<a href="/wsp/wj7/frontend.cgi?func=frontend.show&option=buy&func_id=' + func + '&template=user_order_detail&ordline_id=' + (bkSelect.join(',')).gsub(',', ':') + '">Legg til </a> &nbsp;<a href="/wsp/wj7/frontend.cgi?func=frontend.show&option=buy&func_id=' + func + '&template=user_order_detail&ordline_id=' + (bkSelect.join(',')).gsub(',', ':') + '"><img src="/wj7/frontend/files/basket.gif" align="absmiddle" alt="checkout"></a>';
                        $('add-bkline').update(addLink);
                    }
                }
                else {
                    if ($('baskettable')) {
                        $('add-bkline').update();
                        //$('del-bkline').update(delLink); 
                    } /*** Add button on user_order_detail  ***/
                    else if ($('userOrder')) {
                        $('add-bkline').update();
                    }
                }

            });

        });
    }
}


/**** Product Tab ****/

function productTab() {
    var container = 'product-tab';
    if ($(container)) {
        var cls_active = 'active-tab';
        var title = $$('span[id^="tab-title-"]');
        var content = $$('div[id^="tab-content-"]');
        title.each(function (span, i) {
            if (i != 0) {
                span.innerHTML = '<a onclick="activeProductTab(this);" title="' + span.innerHTML + '">' + span.innerHTML + '</a>';
            } else {
                span.addClassName(cls_active);
            }
        });
        content.each(function (div, i) {
            if (i != 0) {
                div.hide();
            }
        });
    }
}

function activeProductTab(o) {
    var obj = $(o);
    var cls_active = 'active-tab';
    var title = $$('span[id^="tab-title-"]');
    var content = $$('div[id^="tab-content-"]');
    var id = obj.up('span', 0).identify();
    id = id.substr(id.length - 1, 1);

    title.each(function (span) {
        if (span.identify().indexOf(id) == -1) {
            if (span.hasClassName(cls_active)) {
                span.innerHTML = '<a onclick="activeProductTab(this);" title="' + span.innerHTML + '">' + span.innerHTML + '</a>';
                span.removeClassName(cls_active);
            }
        } else {
            span.innerHTML = span.down('a', 0).innerHTML;
            span.addClassName(cls_active);
        }
    });
    content.each(function (div) {
        if (div.identify().indexOf(id) == -1) {
            div.hide();
        } else {
            div.show();
        }
    });
}

/**** end product tab ****/

/**** save basket popup ****/

function saveBasketName() {
    var select = $('basket_name_select');
    var inp = $('basket_name');
    var form = $('basket_save');
    if (select && inp) {
        select.observe('change', function (e) {
            if (select.value != '') {
                inp.value = select.value;
            }
        });
        inp.observe('blur', function (e) {
            inp.value = inp.value.strip();
            var value = inp.value;
            var i = 0;
            for (i = 0; i < select.length; i++) {
                if (value == select.options[i].text) {
                    select.selectedIndex = i;
                    break;
                }
            }
            if (i == select.length) {
                select.selectedIndex = 0;
            }
        });
    }
}

/**** end save basket popup ****/
function observeOci () {

  var ociForm = $('frmoci');

  if ( ociForm ) {

    ociForm.observe( 'submit',clearBasket() );
  }

}

function clearBasket () {

     new Ajax.Request( '/wsp/wj7/frontend.cgi?func=oci.clean' ); 

}

function deleteAllCookies() {
    var cookies = document.cookie.split(";");
    for (var i = 0; i < cookies.length; i++) {
        var cookie = cookies[i];
        var eqPos = cookie.indexOf("=");
        var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
        document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
    }
}

