jQuery(document).ready(function(){
    var hTimer = null;
    var houtTimer = null;
    var rTimer = null;
    var sTimer = null;
    var routTimer = null;
    var headerregionFadeOut = 0;
    var navK = false;
    var frow = '';
    var sUP = false;
    var sDONW = false;
    //var srow = '';
    
    // Das die Subnavi beim Laden immer den ersten aktiviert.
    if (jQuery(".firstrow div").length) { 
        var lcountElement = jQuery(".firstrow div").length;
        var firstrowElemets = jQuery(".firstrow div:first");
        var secondrowElemets = jQuery(".secondrow ul." + jQuery(firstrowElemets).attr("class")+ " li:first").find("a");

        //console.debug(firstrowElemets);
        //console.debug(secondrowElemets);
        
        //frow = jQuery(firstrowElemets).attr("class");
        frow = jQuery('.subNavi .firstrow a.aktiv').parent().attr("class");
        //srow = jQuery(secondrowElemets).attr("class");
        
        //console.debug(frow);
        //console.debug(srow);
        /*
        jQuery('.secondrow ul').css('display','none');
        jQuery('.secondrow ul li a').removeClass('aktiv');
        jQuery('.firstrow div a').removeClass('aktiv');
        jQuery(firstrowElemets).find('a').addClass('aktiv');
        jQuery('.secondrow ul.' + jQuery(firstrowElemets).attr("class")).css('display','block');
        jQuery('#detailcontent div.detail').css('display','none');
        jQuery("#detailcontent div.detail div." + jQuery(secondrowElemets).attr("class")).parents("div.detail").css('display','block');
        jQuery(".secondrow ul." + jQuery(firstrowElemets).attr("class") + " li a." + jQuery(secondrowElemets).attr("class")).addClass('aktiv');
         */
        
    }
      
    
    // Second Navi Zeitverzögerung
    jQuery('.firstrow div').mouseover(function(){
        var myElement  = this;
        
        window.clearTimeout(houtTimer);
        houtTimer = null;
        
        hTimer = window.setTimeout(function() {
            jQuery('.secondrow ul').css('display','none');
            jQuery('.firstrow div a').removeClass('aktiv');
            jQuery(myElement).find('a').addClass('aktiv');
            jQuery('.secondrow ul.' + jQuery(myElement).attr("class")).css('display','block');
            
        },100);
        navK = false;        
    }).mouseout(function(){  
        window.clearTimeout(hTimer);
        hTimer = null;
        
        window.clearTimeout(houtTimer);
        houtTimer = null;
        
    });
    
    jQuery('.subNavi').mouseleave(function(){
        // zurück zum Ausgangspunkt wenn nicht geklickt wurde
        //console.debug('out');
        
        houtTimer = window.setTimeout(function() {
            if (!navK) {
                //console.debug('back 1='+frow);
                jQuery('.firstrow div a').removeClass('aktiv');
                jQuery('.firstrow div.' + frow + ' a').addClass('aktiv');
                jQuery('.secondrow ul').css('display','none');
                jQuery('.secondrow ul.' + frow).css('display','block');
            }
        },200);
    });
    
    
    jQuery('#resortList div.buttonlink').click(function(event){
        //jQuery('#headernavi div a').removeClass('aktiv');
    });
    
    // Beim Klick auf die Subnavi First Row
    jQuery('.firstrow div').click(function(event){
        /*window.clearTimeout(houtTimer);
        houtTimer = null;
        navK = true;
        var firstrowElemets = this;
        var secondrowElemets = jQuery(".secondrow ul." + jQuery(firstrowElemets).attr("class")+ " li:first").find("a");
        
        //console.debug(firstrowElemets);
        //console.debug(secondrowElemets);
        
        frow = jQuery(firstrowElemets).attr("class");
        //console.debug(frow);
        
        jQuery('.secondrow ul').css('display','none');
        jQuery('.secondrow ul li a').removeClass('aktiv');
        jQuery('.firstrow div a').removeClass('aktiv');
        jQuery(firstrowElemets).find('a').addClass('aktiv');
        jQuery('.secondrow ul.' + jQuery(firstrowElemets).attr("class")).css('display','block');
        jQuery('#detailcontent div.detail').css('display','none');
        jQuery("#detailcontent div.detail div." + jQuery(secondrowElemets).attr("class")).parents("div.detail").css('display','block');
        jQuery(".secondrow ul." + jQuery(firstrowElemets).attr("class") + " li a." + jQuery(secondrowElemets).attr("class")).addClass('aktiv');
        
        
        event.preventDefault();
        */
    });
    
    // Detail
    jQuery('.secondrow ul li a').click(function(event){
        /*
        var myElement  = this;
        
        jQuery('.secondrow ul li a').removeClass('aktiv');
        jQuery('#detailcontent div.detail').css('display','none');
        
        var divCont = jQuery('#detailcontent div.' + jQuery(myElement).attr("class")).parents("div.detail");

        frow = jQuery(myElement).attr("class").substr(0,4)
        //console.debug(frow);
        
        jQuery(divCont).css('display','block');
        jQuery(myElement).addClass('aktiv');
        
        event.preventDefault();
        */
     });
     
/*     
    // Datum Unterkünfte
    jQuery(".hotelformular .row .datepicker").datepicker({
        showOn: 'button', 
        buttonImage: 'inc/css/img/kalender.jpg', 
        dateFormat: 'dd.mm.yy',
        monthNames: ['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'],
        firstDay: 1,
        dayNamesMin: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
        duration: 'slow',
        buttonImageOnly: true
        
    });
    */
    // Box für die Region auswahl
    jQuery('#headerregionbutton').click(function(event){
        
        if (headerregionFadeOut == 1 ) return false;
        //jQuery('#headerregioncontent').toggle("slow");
        jQuery('#headercontainerlanguage').removeClass('back');
        jQuery('#headercontainerlink').removeClass('back');
        jQuery('#headercontainerlinkcontent').hide();
        jQuery('#headercontainerlanguagecontent').hide();
        
        if (jQuery('#headerregioncontent').css('display') == 'none') { 
            jQuery('#headerregionbutton .button').html('<img src="fileadmin/templates/inc/img/b_navi2_up.png" />');
        } else {
            jQuery('#headerregionbutton .button').html('<img src="fileadmin/templates/inc/img/b_navi2_down.png" />');
        }
        jQuery('#headerregioncontent').slideToggle("slow");
        //event.preventDefault();
    });
    
    // Box für die Region auswahl mit Timer
    /*jQuery('#headerregionbutton').mouseover(function(){
        rTimer = window.setTimeout(function() {
            headerregionFadeOut = 1;
            jQuery('#headercontainerlanguage').removeClass('back');
            jQuery('#headercontainerlink').removeClass('back');
            jQuery('#headercontainerlinkcontent').hide();
            jQuery('#headercontainerlanguagecontent').hide();
        
            if (jQuery('#headerregioncontent').css('display') == 'none') { 
                jQuery('#headerregionbutton .button').html('<img src="fileadmin/templates/inc/img/b_navi_down.png" />');
            }
            jQuery('#headerregioncontent').slideDown("slow");
        },500);
    }).mouseout(function(){  
      window.clearTimeout(rTimer);
      rTimer = null;
      headerregionFadeOut = 0;
      //jQuery('#headerregioncontent').slideUp("slow");
    });
    
    jQuery('#headerregionback').mouseout(function(){
        routTimer = window.setTimeout(function() {
            if (jQuery('#headerregioncontent').css('display') == 'block') { 
                    jQuery('#headerregionbutton .button').html('<img src="fileadmin/templates/inc/img/b_navi_up.png" />');
            } 
            jQuery('#headerregioncontent').slideUp("slow");
        },500);
    }).mouseover(function(){  
      window.clearTimeout(routTimer);
      routTimer = null;
      //jQuery('#headerregioncontent').slideUp("slow");
    });*/
    
    //Box für die Anzahl der Treffer
    jQuery('.fieldsite .siteselect').live('click', function(event){
        jQuery('.fieldsite .siteshowhide').slideToggle();
    });
    
    //Box für die Lifte Show Hide
    jQuery('.liftgroup .text .updown a').click(function(event){ 
        var myElement = jQuery(this).parent('div.updown').parent('div.text').parent('div.liftgroup');
        if (myElement.next('div.liftgroupsh').css('display') == 'none') { 
            myElement.next('div.liftgroupsh').slideDown("slow");
            jQuery(this).find('img').replaceWith('<img src="fileadmin/templates/inc/img/b_navi_up.png" />');
        } else {
            myElement.next('div.liftgroupsh').slideUp("slow");
            jQuery(this).find('img').replaceWith('<img src="fileadmin/templates/inc/img/b_navi_down.png" />');
        }
        event.preventDefault();
    });
    
    
    
    jQuery('.result .testberichte .rowshowhide .link a').click(function(event){
        //event.preventDefault();
    });
    
    //Header Box mit Links
    jQuery('#headercontainerlink .button').click(function(event){
        jQuery('#headercontainerlanguage').removeClass('back');
        jQuery('#headercontainerlanguagecontent').hide();
        if (jQuery('#headercontainerlinkcontent').css('display') == 'none') { 
            jQuery('#headercontainerlink').addClass('back');
        } else {
            jQuery('#headercontainerlink').removeClass('back');
        }
        jQuery('#headercontainerlinkcontent').slideToggle();
    });
    
    //Header Box mit Sprachswitcher
    jQuery('#headercontainerlanguage .button').click(function(event){
        jQuery('#headercontainerlink').removeClass('back');
        jQuery('#headercontainerlinkcontent').hide();
        if (jQuery('#headercontainerlanguagecontent').css('display') == 'none') { 
            jQuery('#headercontainerlanguage').addClass('back');
        } else {
            jQuery('#headercontainerlanguage').removeClass('back');
        }
        jQuery('#headercontainerlanguagecontent').slideToggle();
    });
    
    //Highlights Box
    jQuery('#headernavi .nav3 a').click(function(event){
        return true;
        var myElement = jQuery('#headernavi .navshowhide');
        var myImage = jQuery(this).find('img');
        if (jQuery('#headernavi .navshowhide').css('display') == 'none') { 
            myImage.replaceWith('<img src="fileadmin/templates/inc/img/b_navi2_up.png" />');
            jQuery(this).addClass('aktiv');
        } else {
            myImage.replaceWith('<img src="fileadmin/templates/inc/img/b_navi2_down.png" />');
            jQuery(this).removeClass('aktiv');
        }
        myElement.slideToggle();
        event.preventDefault();
    });
    
    //Highlights Box Navi
    jQuery('#headernavi .navshowhide ul li a').click(function(event){ 
        //var myElement = this;
        var parentElement = jQuery(this).parent('li');
        if (jQuery(parentElement).hasClass('close')) { 
            jQuery(parentElement).removeClass('close');
            jQuery(parentElement).addClass('open');
            event.preventDefault();
        } else if (jQuery(parentElement).hasClass('open')) {
            jQuery(parentElement).removeClass('open');
            jQuery(parentElement).addClass('close');
            event.preventDefault();
        }
    });
    
    
    

    jQuery('.map div.arrowtop').mouseover(function(){
        var maxHeight = (jQuery('.map div.mapcontent').height() + 30) - jQuery('.map').height();
        var aktHeight = jQuery('.map div.mapcontent').css('top');
        
        jQuery(this).addClass('aktiv');
        //alert(aktHeight);
        //alert(maxHeight);
        sUP = true;
        jQuery.scrollUp(aktHeight,0);
    }).mouseout(function(){  
        sUP = false;
        jQuery(this).removeClass('aktiv');
        window.clearTimeout(sTimer);
        sTimer = null;
    });
    
    jQuery('.map div.arrowbottom').mouseover(function(){
        var maxHeight = (jQuery('.map div.mapcontent').height() + 30) - jQuery('.map').height();
        var aktHeight = jQuery('.map div.mapcontent').css('top');
        sDOWN = true;
        jQuery(this).addClass('aktiv');
        jQuery.scrollDown(aktHeight,maxHeight);
    }).mouseout(function(){ 
        sDOWN = false;
        jQuery(this).removeClass('aktiv');
        window.clearTimeout(sTimer);
        sTimer = null;
    });
    
    
    
    //zur Steuerung der Subnavi
    jQuery.extend({
        subnavi: function(first,second) {
            window.clearTimeout(houtTimer);
            houtTimer = null;
            navK = true;
                
            jQuery('.firstrow div a').removeClass('aktiv');
            jQuery('.secondrow ul li a').removeClass('aktiv');
            
            frow = 'nav' + first; 
            //console.debug(frow);
            
            jQuery('.firstrow div.nav' + first + ' a').addClass('aktiv');
            jQuery('.secondrow ul').css('display','none');
            jQuery('.secondrow ul.nav' + first ).css('display','block');
            jQuery('.secondrow ul.nav' + first + ' li a.nav' + first + '_' + second ).addClass('aktiv');
            jQuery('#detailcontent div.detail').css('display','none');
            jQuery("#detailcontent div.detail div.nav" + first + '_' + second).parents("div.detail").css('display','block');

            return false;
        },
        
        scrollUp: function (akt,max) {
            if (sUP) {
                //alert("max:" + max + " aktuell:" + parseInt(akt)*(-1));
                if ((parseInt(akt)*(-1))>= (max))
                { 
                    // Anfang nicht erreicht
                    jQuery('.map div.mapcontent').css('top', akt);
                    sTimer = window.setTimeout(function() {
                        jQuery.scrollUp((parseInt(akt) +1),max);
                    },10);
                }
            }
        },
        
        scrollDown: function (akt,max) {
            if (sDOWN) {
                //console.debug("max:" + max + " aktuell:" + parseInt(akt)*(-1));
                if ((parseInt(akt)*(-1))<= (max))
                { 
                    // Ende nicht erreicht
                    jQuery('.map div.mapcontent').css('top', akt);
                    sTimer = window.setTimeout(function() {
                        jQuery.scrollDown((parseInt(akt) -1),max);
                    },10);
                }
            }
        }
    });
    
    
    jQuery.fn.hoverscroll.params = jQuery.extend(jQuery.fn.hoverscroll.params, {
        vertical : true,
        width: 355,
        height: 212,
        arrows: true,
        debug: false
    });
    
    jQuery('#mapscroll').hoverscroll(); 


});

    (function(jQuery) {

/**
 * @method hoverscroll
 * @param    params {Object}  Parameter list
 *     params = {
 *         vertical {Boolean},    // Vertical list or not ?
 *         width {Integer},    // Width of list container
 *         height {Integer},    // Height of list container
 *      arrows {Boolean},    // Show direction indicators or not
 *      arrowsOpacity {Float},    // Arrows maximum opacity
 *         debug {Boolean}        // Debug output in firebug console
 *     };
 */
jQuery.fn.hoverscroll = function(params) {
    if (!params) { params = {}; }
    
    // Extend default parameters
    // note: empty object to prevent params object from overriding default params object
    params = jQuery.extend({}, jQuery.fn.hoverscroll.params, params);
    //console.debug('params' +params);
    // Loop through all the elements
    this.each(function() {
        var jQuerythis = jQuery(this);
        
        if (params.debug) {
            jQuery.log('[HoverScroll] Trying to create hoverscroll on element ' + this.tagName + '#' + this.id);
        }
        
        // wrap ul list with a div.listcontainer
        jQuerythis.wrap('<div class="listcontainer"></div>');
        
        jQuerythis.addClass('list');
        //.addClass('ui-helper-clearfix');
        
        // store handle to listcontainer
        var listctnr = jQuerythis.parent();
        
        // wrap listcontainer with a div.hoverscroll
        listctnr.wrap('<div class="hoverscroll"></div>');
        //listctnr.wrap('<div class="hoverscroll"></div>');
        
        // store hoverscroll container
        var ctnr = listctnr.parent();
        
        // Add arrow containers
        if (params.arrows) {
            if (!params.vertical) {
                listctnr.append('<div class="arrow left"></div>').append('<div class="arrow right"></div>')
                //.append('<div class="hoverZoneLeft"></div>').append('<div class="hoverZoneRight"></div>');
            }
            else {
                listctnr.append('<div class="arrow top"></div>').append('<div class="arrow bottom"></div>')
                //.append('<div class="hoverZoneTop"></div>').append('<div class="hoverZoneBottom"></div>');
            }
        }
        
        // Apply parameters width and height
        ctnr.width(params.width).height(params.height);
        listctnr.width(params.width).height(params.height);
        
        var size = 0;
        
        if (!params.vertical) {
            ctnr.addClass('horizontal');
            
            // Determine content width
            jQuerythis.children().each(function() {
                jQuery(this).addClass('item');
                
                if (jQuery(this).outerWidth) {
                    size += jQuery(this).outerWidth(true);
                }
                else {
                    // jQuery < 1.2.x backward compatibility patch
                    size += jQuery(this).width() + parseInt(jQuery(this).css('padding-left')) + parseInt(jQuery(this).css('padding-right'))
                        + parseInt(jQuery(this).css('margin-left')) + parseInt(jQuery(this).css('margin-right'));
                }
            });
            // Apply computed width to listcontainer
            jQuerythis.width(size);
            
            if (params.debug) {
                jQuery.log('[HoverScroll] Computed content width : ' + size + 'px');
            }
            
            // Retrieve container width instead of using the given params.width to include padding
            if (ctnr.outerWidth) {
                size = ctnr.outerWidth();
            }
            else {
                // jQuery < 1.2.x backward compatibility patch
                size = ctnr.width() + parseInt(ctnr.css('padding-left')) + parseInt(ctnr.css('padding-right'))
                    + parseInt(ctnr.css('margin-left')) + parseInt(ctnr.css('margin-right'));
            }
            
            if (params.debug) {
                jQuery.log('[HoverScroll] Computed container width : ' + size + 'px');
            }
        }
        else {
            ctnr.addClass('vertical');
            
            // Determine content height
            jQuerythis.children().each(function() {
                jQuery(this).addClass('item')
                
                if (jQuery(this).outerHeight) {
                    size += jQuery(this).outerHeight(true);
                }
                else {
                    // jQuery < 1.2.x backward compatibility patch
                    size += jQuery(this).height() + parseInt(jQuery(this).css('padding-top')) + parseInt(jQuery(this).css('padding-bottom'))
                        + parseInt(jQuery(this).css('margin-bottom')) + parseInt(jQuery(this).css('margin-bottom'));
                }
            });
            // Apply computed height to listcontainer
            jQuerythis.height(size);
            
            if (params.debug) {
                jQuery.log('[HoverScroll] Computed content height : ' + size + 'px');
            }
            
            // Retrieve container height instead of using the given params.height to include padding
            if (ctnr.outerHeight) {
                size = ctnr.outerHeight();
            }
            else {
                // jQuery < 1.2.x backward compatibility patch
                size = ctnr.height() + parseInt(ctnr.css('padding-top')) + parseInt(ctnr.css('padding-bottom'))
                    + parseInt(ctnr.css('margin-top')) + parseInt(ctnr.css('margin-bottom'));
            }
            
            if (params.debug) {
                jQuery.log('[HoverScroll] Computed container height : ' + size + 'px');
            }
        }
        
        // Define hover zones on container
        var zone = {
            1: { action: 'move', from: 0, to: 0.06 * size, direction: -1 , speed: 16 },
            2: { action: 'move', from: 0.06 * size, to: 0.15 * size, direction: -1 , speed: 8 },
            3: { action: 'move', from: 0.15 * size, to: 0.25 * size, direction: -1 , speed: 4 },
            4: { action: 'move', from: 0.25 * size, to: 0.4 * size, direction: -1 , speed: 2 },
            5: { action: 'stop', from: 0.4 * size, to: 0.6 * size },
            6: { action: 'move', from: 0.6 * size, to: 0.75 * size, direction: 1 , speed: 2 },
            7: { action: 'move', from: 0.75 * size, to: 0.85 * size, direction: 1 , speed: 4 },
            8: { action: 'move', from: 0.85 * size, to: 0.94 * size, direction: 1 , speed: 8 },
            9: { action: 'move', from: 0.94 * size, to: size, direction: 1 , speed: 16 }
        }
        
        // Store default state values in container
        ctnr[0].isChanging = false;
        ctnr[0].direction  = 0;
        ctnr[0].speed      = 1;
        
        
        /**
         * Check mouse position relative to hoverscroll container
         * and trigger actions according to the zone table
         *
         * @param x {Integer} Mouse X event position
         * @param y {Integer} Mouse Y event position
         */
        function checkMouse(x, y) {
            x = x - ctnr.offset().left;
            y = y - ctnr.offset().top;
            
            var pos;
            if (!params.vertical) { pos = x; }
            else { pos = y; }
            
            for (i in zone) {
                if (pos >= zone[i].from && pos < zone[i].to) {
                    if (zone[i].action == 'move') { startMoving(zone[i].direction, zone[i].speed); }
                    else { stopMoving(); }
                }
            }
        }
        
        
        /**
         * Sets the opacity of the left|top and right|bottom
         * arrows according to the scroll position.
         */
        function setArrowOpacity() {
            if (!params.arrows) { return; }
            
            var maxScroll;
            var scroll;
            
            if (!params.vertical) {
                maxScroll = listctnr[0].scrollWidth - listctnr.width();
                scroll = listctnr[0].scrollLeft;
            }
            else {
                maxScroll = listctnr[0].scrollHeight - listctnr.height();
                scroll = listctnr[0].scrollTop;
            }
            
            var opacity = (scroll / maxScroll);
            var limit = params.arrowsOpacity;
            
            if (isNaN(opacity)) { opacity = 0; }
            
            // Check if the arrows are needed
            // Thanks to <admin at unix dot am> for fixing the bug that displayed the right arrow when it was not needed
            var done = false;
            if (opacity <= 0) { jQuery('div.arrow.left, div.arrow.top', ctnr).hide(); done = true; }
            if (opacity >= limit || maxScroll <= 0) { jQuery('div.arrow.right, div.arrow.bottom', ctnr).hide(); done = true; }
            
            if (!done) {
                jQuery('div.arrow.left, div.arrow.top', ctnr).show().css('opacity', (opacity > limit ? limit : opacity));
                jQuery('div.arrow.right, div.arrow.bottom', ctnr).show().css('opacity', (1 - opacity > limit ? limit : 1 - opacity));
            } 
        }
        
        
        /**
         * Start scrolling the list with a given speed and direction
         *
         * @param direction {Integer}    Direction of the displacement, either -1|1
         * @param speed {Integer}        Speed of the displacement (20 being very fast)
         */
        function startMoving(direction, speed) {
            if (ctnr[0].direction != direction) {
                if (params.debug) {
                    jQuery.log('[HoverScroll] Starting to move. direction: ' + direction + ', speed: ' + speed);
                }
                
                stopMoving();
                ctnr[0].direction  = direction;
                ctnr[0].isChanging = true;
                move();
            }
            if (ctnr[0].speed != speed) {
                if (params.debug) {
                    jQuery.log('[HoverScroll] Changed speed: ' + speed);
                }
                
                ctnr[0].speed = speed;
            }
        }
        
        /**
         * Stop scrolling the list
         */
        function stopMoving() {
            if (ctnr[0].isChanging) {
                if (params.debug) {
                    jQuery.log('[HoverScroll] Stoped moving');
                }
                
                ctnr[0].isChanging = false;
                ctnr[0].direction  = 0;
                ctnr[0].speed      = 1;
                clearTimeout(ctnr[0].timer);
            }
        }
        
        /**
         * Move the list one step in the given direction and speed
         */
        function move() {
            if (ctnr[0].isChanging == false) { return; }
            
            setArrowOpacity();
            
            var scrollSide;
            if (!params.vertical) { scrollSide = 'scrollLeft'; }
            else { scrollSide = 'scrollTop'; }
            
            listctnr[0][scrollSide] += ctnr[0].direction * ctnr[0].speed;
            if (params.debug) {
                jQuery.log(listctnr[0]);
                jQuery.log(ctnr[0].direction * ctnr[0].speed);
            }
            ctnr[0].timer = setTimeout(function() { move(); }, 50);
        }
        
        // Bind actions to the hoverscroll container
        ctnr
        // Bind checkMouse to the mousemove
        .mousemove(function(e) { checkMouse(e.pageX, e.pageY); })
        // Bind stopMoving to the mouseleave
        // jQuery 1.2.x backward compatibility, thanks to Andy Mull!
        // replaced .mouseleave(...) with .bind('mouseleave', ...)
        .bind('mouseleave', function() { stopMoving(); });
        
        if (params.arrows) {
            // Initialise arrow opacity
            setArrowOpacity();
        }
        else {
            // Hide arrows
            jQuery('.arrowleft, .arrowright, .arrowtop, .arrowbottom', ctnr).hide();
        }
    });
    
    return this;
};


// Backward compatibility with jQuery 1.1.x
if (!jQuery.fn.offset) {
    jQuery.fn.offset = function() {
        this.left = this.top = 0;
        
        if (this[0] && this[0].offsetParent) {
            var obj = this[0];
            do {
                this.left += obj.offsetLeft;
                this.top += obj.offsetTop;
            } while (obj = obj.offsetParent);
        }
        
        return this;
    }
}



/**
 * HoverScroll default parameters
 */
jQuery.fn.hoverscroll.params = {
    vertical:    false,
    width:        400,
    height:        50,
    arrows:        true,
    arrowsOpacity:    0.7,
    debug:        false
};



/**
 * log to firebug console if exists
 */
jQuery.log = function(msg) {
    if (console && console.log) {
        console.log(msg);
    }
};


})(jQuery);
