// if the scrollable area would scroll out of the viewport of the browser
// it scrolls the window in place to show it up right
// (c) 2011 Conception GmbH - Manuel Selbach

jQuery.fn.slideDownScrollPage=function(elToSlideDown,settings){return this.each(function(){findPos=function(obj){var curleft=curtop=0;if(obj.offsetParent){do{curleft+=obj.offsetLeft;curtop+=obj.offsetTop;}while(obj=obj.offsetParent);}
return[curleft,curtop];};getPageScroll=function(){var xScroll,yScroll;if(self.pageYOffset){yScroll=self.pageYOffset;xScroll=self.pageXOffset;}else if(document.documentElement&&document.documentElement.scrollTop){yScroll=document.documentElement.scrollTop;xScroll=document.documentElement.scrollLeft;}else if(document.body){yScroll=document.body.scrollTop;xScroll=document.body.scrollLeft;}
return[xScroll,yScroll]};findPosRelativeToViewport=function(obj){var objPos=this.findPos(obj)
var scroll=this.getPageScroll()
return[objPos[0]-scroll[0],objPos[1]-scroll[1]]};var vpOffTop=0;var posToScroll=0;$(this).hoverIntent(function(el){settings=jQuery.extend({after:null,before:null,speedSlideDown:'fast',speedSlideUp:'fast',speedScroll:'slow'},settings);if(settings.before!=null){settings.before(target);}
vpOffTop=findPosRelativeToViewport(this);var a_pageScroll=getPageScroll();var elHeight=$(this).find(elToSlideDown).outerHeight(true);elHeight=elHeight+$(this).outerHeight(true);vpOffTop[1]=vpOffTop[1];if(($(window).height()-vpOffTop[1])<elHeight){posToScroll=a_pageScroll[1]+elHeight;}
$(this).find(elToSlideDown).slideDown(settings.speedSlide).show('slow',function(){if(posToScroll>0){$('html, body').animate({scrollTop:posToScroll},settings.speedScroll);posToScroll=0;}});if(settings.after!=null){settings.after(target);}},function(el){$(this).find(elToSlideDown).slideUp(settings.speedSlideUp);});});};
