﻿
// voor menu: son of suckerfish
sfHover = function() {
    var sfEls = document.getElementById("nav").getElementsByTagName("LI");
    for (var i = 0; i < sfEls.length; i++) {
        sfEls[i].onmouseover = function() {
            this.className += " sfhover";
        }
        sfEls[i].onmouseout = function() {
            this.className = this.className.replace(new RegExp(" sfhover\\b"), "");
        }
    }
}
if (window.attachEvent) window.attachEvent("onload", sfHover);




function doLog(msg) {
    try {
       // console.log(msg);
    } catch (e) { }   
}


function eolas() {
    for (var i = 0; i < arguments.length; i++) document.write(arguments[i]);
}


function fixBreadcrumPath() { 
    var lnk = jQuery('#divBreadcrumbs li:last a');
    if(lnk && lnk.size() > 0 && lnk.html() != '')
        jQuery('#divBreadcrumbs li:last').html(lnk.html()) 
}

/* Search Functions */



var BatavusSearch = (function($) {
    /** PRIVATE FUNCTIONS #1 */


    /** CONSTRUCTOR */
    return function(txtId, lnkId, searchUrl) {
        /** PRIVATE FUNCTIONS #2 */
        var inst = {
            txtId: false,
            lnkId: false,
            initialTextValue: '',
            searchUrl: false,
            init: function(txtId, lnkId, searchUrl) {
                this.txtId = txtId;
                this.lnkId = lnkId;
                this.searchUrl = searchUrl;
                this.initialTextValue = $('#' + this.txtId).get(0).value;
                doLog('init textfield ID: ' + txtId);
                doLog('init textfield with: ' + this.initialTextValue);
                this.initLink();
                this.initTextField();
            },
            setInitialTextValue: function(txtValue) {
                this.initialTextValue = txtValue;
            },
            initLink: function() {
            var that = this;
                $('#' + that.lnkId + ' a')
                    .data('clientsideonly',true)
                    .click(function(e) {
                    that.doSearch();
                    return false;
                });
                $('#' + that.lnkId)
                    .data('clientsideonly',true)
                    .click(function(e) {
                    that.doSearch();
                    return false;
                });
            },
            doSearch: function(searchTerm) {
                doLog('do search 1');
                if (typeof (searchTerm) == 'undefined' || searchTerm == '' || !searchTerm) {
                    doLog('do search 3 ' + this.txtId);
                    searchTerm = $('#' + this.txtId).get(0).value;
                }
                doLog('do search 2 ' + searchTerm);
                if (searchTerm != '' && searchTerm != this.initialTextValue) {
                    //do search...
                    var url = this.searchUrl + '?q=' + escape(searchTerm);
                    document.location.href = url;
                }
            },

            initTextField: function() {
                var that = this;
                var txtObj = $('#' + this.txtId).get(0);
                if (!txtObj) return;

                $('#' + this.txtId).blur(function(e) {
                    if (this.value == '')
                        this.value = that.initialTextValue;
                });
                $('#' + this.txtId).focus(function(e) {
                    if (this.value == that.initialTextValue)
                        this.value = '';
                    //else alert(this.value + "\n\n" + that.initialTextValue);
                });
                $('#' + this.txtId).keydown(function(e) {
                    if (e.charCode) {
                        if (e.charCode == 13) {
                            that.doSearch();
                            return false;
                        }
                    } else if (e.keyCode) {
                        if (e.keyCode == 13) {
                            that.doSearch();
                            return false;
                        }
                    }
                    return true;
                });
            }
        };

        inst.init(txtId, lnkId, searchUrl);

        /** PUBLIC FUNCTIONS */
        this.doSearch = function() {
            inst.doSearch.apply(inst, arguments);
        };
        this.setInitialTextValue = function() {
            inst.setInitialTextValue.apply(inst, arguments);
        };
    };
})(jQuery);


/* end Search Functions */


/** start faq functions */
var BatavusFaq = (function($) {
    //set WAIT_FOR_HIDE to true if you want the close animation to finish before starting the 'show' animation
    var WAIT_FOR_HIDE = false;
    var SPEED_HIDE = 'normal';
    var SPEED_SHOW = 'slow';


    function _toggleLi(state, obj) {
        //obj = $(obj).parent().get(0);

        //select obj...
        var objId = obj.id;
        var openLI = (state.selectedId != objId);
        var oldLI = state.selectedId;
        state.selectedId = ((openLI) ? objId : false);

        if (oldLI) {
            //deselect
            //root.find('#' + sharedState.selectedId).find('.faqItemContent').hide();
            $('#' + oldLI)
                .removeClass("faqItemSelected")
                .find('.faqItemContent')
                .hide(SPEED_HIDE, function() {
                    if (WAIT_FOR_HIDE && openLI) {
                        $(obj).addClass("faqItemSelected")
                            .find('.faqItemContent').show(SPEED_SHOW);
                    }
                });

        }
        if (openLI) {
            if (!WAIT_FOR_HIDE || !oldLI) {
                $(obj)
              .addClass("faqItemSelected")
              .find('.faqItemContent').show(SPEED_SHOW);
            }
        }
    }

    //constructor
    return function(rootId) {
        var state = {
            selectedId: false
        };
        var root = $("#" + rootId);
        root.find("li.faqItem")
        .find("h2")
        .css("cursor", "pointer")
        .click(function() {

            _toggleLi(state, $(this).parent("li.faqItem").get(0));
        });

        //init state
        var h = new String('' + document.location.hash);
        if (h && h.length > 6) {
            if (h.indexOf('#') == 0) h = h.substr(1);
            root.find("li").each(function() {
                var s = new String('' + this.id);
                var idx = s.indexOf(h);
                if (idx > 0 && (idx + h.length) == s.length) {
                    _toggleLi(state, this);
                    //cancel search:
                    return false;
                }
            });
        }
    };
})(jQuery);

/** end faq functions */

/** start custom checkbox dropdownlist */

var BatavusCbDDL = (function($) {
        //shared private vars + functions
        function findMinWidth(state) {
            var offset = state.txtObj.offset().left;
            var imgOffset = state.imgObj.offset().left;
            var imgW = state.imgObj.width();
            var calcWidth = (imgOffset + imgW) - offset;
            //hack:
            calcWidth -= 2;
            return calcWidth;
        }
        function findTop(state) {
            var offset = state.txtObj.offset().top;
            var off1 = offset + state.txtObj.height();
            
            offset=state.imgObj.offset().top;
            var off2 = offset + state.imgObj.height();
            return Math.max(off1, off2);
        }
        function findLeft(state) {
            var off1 = state.txtObj.offset().left;  
            var off2 =state.imgObj.offset().left; 
            return Math.min(off1, off2);
        }
        function toggleList(state) { 
            if(state.isOpen) {
                //close
                updateTextField(state);
                state.cbListObj.hide();
            } else {
                
                var w=findMinWidth(state);
                if(w && w > 0) {
                    state.cbListObj.css("min-width", w + 'px');
                    state.cbListObj.css("width", w + 'px');
                }
                state.cbListObj.css("top", findTop(state) + 'px');
                state.cbListObj.css("left", findLeft(state) + 'px');
                
                state.cbListObj.show(); 
            }
            state.isOpen = !state.isOpen;
        }
        function updateTextField(state) { 
                var txt = '';
                state.cbListObj.find("input[type=checkbox]").each(function() {
                    if(this.checked) txt += ((txt == '')?this.value:(','+this.value)); 
                });
                if(txt == '') txt = state.textWhenEmpty;
                state.txtObj.get(0).value = txt; 
        }
        
        //constructor:
        return function(dvMainId, txtId, imgId, cbListId) {
            //unshared private vars + functions
            var state = {
                dvMain : $('#' + dvMainId),
                txtObj : $('#' + txtId),
                imgObj : $('#' + imgId),
                cbListObj : $('#' + cbListId),
                isOpen : false,
                textWhenEmpty : ''
            }; 
            
            if(state.txtObj.size() == 0) {
                //textfield not found
                
                //do not initialize the rest
                return;
            }
            
            state.textWhenEmpty = state.txtObj.get(0).value;
            
            state.txtObj.css('cursor', 'pointer');
            state.imgObj.css('cursor', 'pointer');
            
           
            //do not allow to select/edit the text
            state.txtObj.get(0).onfocus = function() { this.blur()};
            //the textfield can't be disabled, because than the onclick won't work
            state.txtObj.get(0).disabled = false; 
            
            //setup events
            state.txtObj.click(function() { 
                toggleList(state);
            });
            state.imgObj.click(function() {
                toggleList(state);
            }); 
            function doCbOnchange() {
               updateTextField(state); 
            }
             state.cbListObj.find("input[type=checkbox]").change(function() {
               // console.log('sel = ' + this.checked);
                doCbOnchange();
             });
              state.cbListObj.find("input[type=checkbox]").click(function() {
               // console.log('sel = ' + this.checked);
                doCbOnchange();
             });
             
             //initialize...
             updateTextField(state);
            
             
        }; 
    })(jQuery);
  
/** end custom checkbox dropdownlist */

/** fietsvergelijker */

function toggleFietsvergelijkerSpecs(lnkObj, sluit, meer) {
    //Meer specificaties
    if (lnkObj.innerHTML == sluit) {
       jQuery('tr.morespecs').hide();
       lnkObj.innerHTML = meer;
       jQuery(lnkObj).attr('class', 'moreSpecsClosed');
       $("ul.backLink").css("margin-top", ""); 
    } else {
    lnkObj.innerHTML = sluit;
       jQuery(lnkObj).attr('class', 'moreSpecsOpened');
        jQuery('tr.morespecs').show();
        
       $("ul.backLink").css("margin-top", "25px"); 
    }
    return false; 
}

/** end fietsvergelijker */