jQuery.noConflict();
jQuery(document).ready(function () {
    /* Initialize the main nav menu */
    jQuery('ul.sf-menu').superfish({
        autoArrows: false
    });

    /* Initialize the Finder accordion */
    if (jQuery("#finderUI").length > 0) {
        jQuery("#finderUI").accordion({
            alwaysOpen: false,
            clearStyle: true,
            autoHeight: false,
            header: "a.handle",
            selectedClass: "active"
            /*event: 'mouseover'*/
        });
    }

    /* Initialize expands/collapses */
    jQuery("#faq>dd").hide();
    jQuery("#faq>dt").click(function (event) {
        event.preventDefault();
        jQuery(this).next().slideToggle("slow");
    });
    /* This is for a "close" button within the box
    jQuery("#faq>dt").click(function(event) {
        event.preventDefault();
        jQuery(this).slideUp("slow");
    });
    */
    if (jQuery('#status').length > 0) {
        jQuery('#status').history(function (e, currentHash, previousHash) {
            var lHash = readCookie('lHash');
            //alert('cookie lHash->'+lHash);
            //alert (lHash.replace('%7C','|').replace('%2F','&') + '\n='+reverseParameters(currentHash));
            if (lHash.replace('%7C', '|').replace('%2F', '&') != reverseParameters(currentHash)) {
                loadslider(2);
                //   alert('currentHash->'+ currentHash);
                //   alert('array from eventmanager aSize ->'+eventMan.aSize);
                if (currentHash) {
                    updateEventManVectors(currentHash); //update evenMan.aVectors based on currentHash
                }
                ajaxAction('/catalogsearch/advanced/search4all/' + reverseParameters(currentHash), 'product_search4all');
                createCookie('lHash', currentHash, '');
                //ajaxaction goes here using currentHash//
            }
        });
    }

    /*jQuery('.ui-accordion-container li').click(function(){
        var accordionSelected=jQuery(this).attr('id');
        createCookie('accordion',accordionSelected,'10');
    }) */

});

var globalSlider; // yuck...

function resetVector(vector, insertion) {
    //  alert('resetVector  vector->'+vector+' ->'+insertion);
    vector.length = 0;
    for (var i = 0; i <= insertion.length - 1; i++) {
        vector.push(insertion[i]);
    }
    //   alert(vector);
}

function updateEventManVectors(currentHash) { // alert('updateEventManVectors->'+currentHash);
    eventMan.aColor.length = 0;
    eventMan.aSize.length = 0;
    eventMan.aWidth.length = 0;
    eventMan.aBrand.length = 0;
    eventMan.aActivity.length = 0;
    eventMan.aGender.length = 0;

    currentHash = currentHash.replace('%7C', '|');
    var hashVector = verifyString(currentHash, '&');
    //alert(hashVector);
    if (hashVector) {
        for (var i = 0; i <= hashVector.length - 1; i++) {
            var vecResponse;
            var pVec = verifyString(hashVector[i], '=');
            if (pVec) {
                vecPipe = verifyString(pVec[1], '|');
                if (vecPipe) {
                    vecResponse = vecPipe;
                } else vecResponse = pVec[1];
                //alert('vecResponse['+pVec[0]+']->'+vecResponse);
                switch (pVec[0]) {
                case 'color':
                    resetVector(eventMan.aColor, vecResponse);
                    break;
                case 'size':
                    resetVector(eventMan.aSize, vecResponse);
                    break;
                case 'width':
                    resetVector(eventMan.aWidth, vecResponse);
                    break;
                case 'brand':
                    resetVector(eventMan.aBrand, vecResponse);
                    break;
                case 'activity':
                    resetVector(eventMan.aActivity, vecResponse);
                    break;
                case 'gender':
                    resetVector(eventMan.aGender, vecResponse);
                    break;
                default:
                } //end switch
                // pipeVec.length=0;

            } //endif
        } //endfor
    }
}

function findParameter(param, url) { //returns the value of a parameter in a url
    var ret = null;
    var url = window.location.href;
    var hash = url.split('?');
    if (hash[1].split('#') > -1) {
        var vec2 = hash[1].split('#');
        hash[1] = vec2[0];
    }
    var result = hash[1].split('&');
    for (i = 0; i <= result.length - 1; i++) {
        var value = result[i].split('=');
        if (value[0] == param) ret = value[1];
    }
    //alert (ret);
    return ret;
}

function setLocationHistory() {
    var url = window.location.href;
    if (findParameter('gender', url) && findParameter('finder', url)) {
        createCookie('gender', findParameter('gender', url), 10);
        createCookie('finder', findParameter('finder', url), 10);
    }
}

function loadProd(url) {

    //  alert('loadProd url->'+url);
    if (url.indexOf('#') > -1) {
        // alert('it has hash');
        $('discPicker').value = (readCookie('disc') != null) ? readCookie('disc') : '1';
        var vcsplt = url.split('#');
        var param = vcsplt[1];
        param = undisc(param);
        ajaxAction('/catalogsearch/advanced/search4all/' + reverseParameters(param) + '&discount_off_retail=' + $('discPicker').value, 'product_search4all');
        addHistoryEvent('/catalogsearch/advanced/search4all/' + reverseParameters(param) + '&discount_off_retail=' + $('discPicker').value, 'product_search4all');
    } else {
        // alert('it doesn\'t have hash');
        var vcsplt = url.split('?');
        var param = vcsplt[1];
        param = undisc(param);
        $('discPicker').value = (readCookie('disc') != null) ? readCookie('disc') : '1';
        param = reverseParameters(splitUrl(url));
        ajaxAction('/catalogsearch/advanced/search4all/' + param + '&discount_off_retail=' + $('discPicker').value, 'product_search4all');

        addHistoryEvent('/catalogsearch/advanced/search4all/' + param + '&discount_off_retail=' + $('discPicker').value, 'product_search4all');
    }

}

function loadslider(trig) {
    //alert('loadslider'+trig);
    var UA = navigator.userAgent.toLowerCase();
    if (UA.indexOf("firefox") == -1) {
        jQuery('#main4content').css('padding-top', '12px');
    }

    if (readCookie('gender') == null && readCookie('finder') == null) {
        setLocationHistory();
    }

    if (trig == '1') {
        var valueN;
        valueN = (readCookie('disc') != null) ? readCookie('disc') : 1;
        loadProd(window.location.href); //if ie do a load
    }

    var url = window.location.href;
    if (trig == '2') {
        var slPosition = findParameter('discount_off_retail', url);
        if (slPosition != '') {
            if (slPosition == null) {
                slPosition = '1';
            }
            createCookie('disc', slPosition, '10');
        } else if (readCookie('gender') == findParameter('gender', url) && readCookie('finder') == findParameter('finder', url)) {
            if (readCookie('disc') != null) {
                var val = readCookie('disc');
                loadProd(url);
            } else {
                createCookie('disc', 1, 1000);
                var val = 1;
                var url = window.location.href;
                loadProd(url);
            }
            setLocationHistory();
        }
    }
    trig = '1';
}

function undisc(param) {
    var vec = param.split("&");
    var result = new Array;
    for (i = 0; i <= vec.length - 1; i++) {
        if (vec[i].indexOf('discount_off_retail=') > -1) vec[i] = '*';
    }
    for (i = 0; i <= vec.length - 1; i++) {
        if (vec[i] != '*' && vec[i] != null && vec[i] != 'undefined') result.push(vec[i]);
    }
    return result.join('&');
}

function array_flip(vec) {
    //returns a string
    var key, tmp_vec = {};
    var str = '';
    for (key in vec) {
        tmp_vec[vec[key]] = key;
    }
    return str;
}

function createCookie(name, value, days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 2 * 60 * 1000));
        var expires = ""; //expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name, "", -1);
}

//verifies if a string contains a character, if it does, it will return a vector, if not returns false
function verifyString(str, car) {
    var response = false;
    if (!str) return false;
    if (str.indexOf(car) > -1) {
        if (str.split(car)) {
            response = str.split(car);
        }
    }
    return response;
}

function arrayEmpty(vector) { //checks if the vector is empty, returns true if empty and false if not
    if (vector.length < 1) return true
    else return false;
}

function arrayClean(vector) { //gets rid of empty cells
    var response = new Array;
    for (var i = 0; i <= vector.length - 1; i++)
    if (vector[i] != '') response.push(vector[i]);
    return response;
}

function findParameters(url, param) { // looks for a parameter in a url, returns something on this format param=value in an Array
    var intParams = verifyString(url, '/');
    if (intParams) for (var i = 0; i <= intParams.length - 1; i++) if (intParams[i] == param && param != '') {
        if (param == 'p') intParams[i] = 'page'; //only exception is page
        return intParams[i] + '=' + intParams[i + 1];
        break;
    }
    return false;
}

function convertArray(vec) {
    var result = '';
    for (var i = 0; i <= vec.length - 1; i++)
    result = result + vec[i];
    return result;
}

function flipflipArray(vector) { //eliminates repeated parameters
    var tempVector = new Array;
    for (var i = 0; i <= vector.length - 1; i++) {
        if (tempVector.indexOf(vector[i]) < 0) tempVector.push(vector[i]);
    }
    return tempVector;
}

function reverseParameters(hash) {
    //alert('reverseParameters('+hash+')');
    //returns an array with 2 cells, one with this form /page/xx/order/xxxxx/dir/xxxx/p/xxx and the
    //other one gender=xxx&color=xxx...etc
    var result = new Array;
    var pArr = new Array('limit', 'order', 'dir', 'page'); //this are the internal parameters
    var dArr = new Array('gender', 'finder');
    var left, right = new Array;
    var allParams = flipflipArray(verifyString(hash, "&"));
    if (allParams) {
        for (var i = 0; i <= allParams.length - 1; i++)
        for (var j = 0; j <= pArr.length - 1; j++)
        if (allParams[i].indexOf(pArr[j]) > -1) {
            var tempVec = allParams[i].split('=');
            if (tempVec[0] == 'page') tempVec[0] = 'p';
            allParams[i] = tempVec[0] + '/' + tempVec[1] + '/';

        }

        for (var k = 0; k <= allParams.length - 1; k++) {
            if (allParams[k].indexOf('/') < 0) {
                allParams[k] = '?' + allParams[k];
                break
            }
        }
        for (var k = 0; k <= allParams.length - 1; k++) {
            if (allParams[k].indexOf('/') < 0 && allParams[k].indexOf('?') < 0) allParams[k] = '&' + allParams[k];
        }
    }
    //alert('allParams->'+ convertArray(allParams));
    return convertArray(allParams);
}

function standarizeUrl(url) {
    url = url.replace(/%7C/, '|');
    var result = "/catalogsearch/advanced/search4all/" + reverseParameters(splitUrl(url));
    //   result = result.replace('%7C','|').replace('%2F','&');
    return result;
}

function internalParameters(url) { //returns an array with parameters within the left side of ?
    var pArr = new Array('p', 'limit', 'order', 'dir'); //this are the internal parameters
    var pVal = new Array('1', '20', ' ', ' '); //this are the default values
    var parm = verifyString(url, '?');
    var response = new Array;
    if (parm) {
        var myurl = parm[0];
        for (var j = 0; j <= pArr.length - 1; j++) {
            var ptemp = findParameters(myurl, pArr[j]);
            if (ptemp) response.push(ptemp);
            else { if (pArr[j] != 'order' && pArr[j] != 'dir') {
                    if (pArr[j] == 'p') pArr[j] = 'page';
                    response.push(pArr[j] + '=' + pVal[j]); //will insert default values if it doesn't exist
                }
            }
        }
    }
    return response.sort();
}

function externalParameters(url) { //returns an array with parameters within the right side of ?
    var extArr = verifyString(verifyString(url, '?')[1], '&');
    if (extArr) {
        for (var i = 0; i <= extArr.length - 1; i++) {
            if (extArr[i].indexOf('__tmp') > -1) extArr[i] = '';
        }
        //alert (extArr);
        return extArr;
    } else {
        return false;
    }
}

function splitUrl(url) { //will find internal and external parameters and join them in a string
    var allPar = arrayClean(internalParameters(url)).concat(arrayClean(externalParameters(url))).join('&');
    return allPar;
}

function addHistoryEvent(testValue) { //url should be cleaned here
    testValue = testValue.replace('%7C', '|').replace('%2F', '&');
    //alert('addHistoryEvent ->'+ testValue);
    //      var testValue=jQuery(this).attr('steve');
    var lHash = splitUrl(testValue);
    //alert('adding to history ->'+lHash);
    // lHash should have this form param=xxx&param=XXXXX etc
    jQuery.history.add(lHash);
    testValue = standarizeUrl(testValue);
    var tempVec = testValue.split('/search4all/');
    if (tempVec) createCookie('lHash', tempVec[1], '10');
}

function array_flip(trans) {
    var key, tmp_ar = {};
    for (key in trans) {
        tmp_ar[trans[key]] = key;
    }
    return tmp_ar;
}

function memorizeSliders() //memorize the shoefinders position
{
    var accordion = readCookie('accordion');
    if (!accordion) accordion = 'size';
    /*  jQuery('.ui-accordion-container li').children().removeClass('active').hide();
            jQuery('.ui-accordion-container li').children('.pickContainer').hide();
            jQuery('.ui-accordion-container li').removeClass('active');
            jQuery('#'+accordion).addClass('active');
            jQuery('#'+accordion).children().addClass('active');
            jQuery('#'+accordion).children('.pickContainer').show(); */
}

jQuery(document).ready(function() {
    memorizeSliders();
    if (window.location.href.indexOf('shoebacca.com/catalogsearch/shoefinder/result/') > -1) {
        loadslider(1); // 1 means it will load the screen 2 means it will only update the slider position
        if (document['remember_selections']) {
            remember_selections();
        }
    }
});