/* jQuery Plugins */

/* MARQUEE */

/**
* author Remy Sharp
* url http://remysharp.com/tag/marquee
*/

(function ($) {
    $.fn.marquee = function (klass) {
        var newMarquee = [],
            last = this.length;

        // works out the left or right hand reset position, based on scroll
        // behavior, current direction and new direction
        function getReset(newDir, marqueeRedux, marqueeState) {
            var behavior = marqueeState.behavior, width = marqueeState.width, dir = marqueeState.dir;
            var r = 0;
            if (behavior == 'alternate') {
                r = newDir == 1 ? marqueeRedux[marqueeState.widthAxis] - (width*2) : width;
            } else if (behavior == 'slide') {
                if (newDir == -1) {
                    r = dir == -1 ? marqueeRedux[marqueeState.widthAxis] : width;
                } else {
                    r = dir == -1 ? marqueeRedux[marqueeState.widthAxis] - (width*2) : 0;
                }
            } else {
                r = newDir == -1 ? marqueeRedux[marqueeState.widthAxis] : 0;
            }
            return r;
        }

        // single "thread" animation
        function animateMarquee() {
            var i = newMarquee.length,
                marqueeRedux = null,
                $marqueeRedux = null,
                marqueeState = {},
                newMarqueeList = [],
                hitedge = false;
                
            while (i--) {
                marqueeRedux = newMarquee[i];
                $marqueeRedux = $(marqueeRedux);
                marqueeState = $marqueeRedux.data('marqueeState');
                
                if ($marqueeRedux.data('paused') !== true) {
                    // TODO read scrollamount, dir, behavior, loops and last from data
                    marqueeRedux[marqueeState.axis] += (marqueeState.scrollamount * marqueeState.dir);

                    // only true if it's hit the end
                    hitedge = marqueeState.dir == -1 ? marqueeRedux[marqueeState.axis] <= getReset(marqueeState.dir * -1, marqueeRedux, marqueeState) : marqueeRedux[marqueeState.axis] >= getReset(marqueeState.dir * -1, marqueeRedux, marqueeState);
                    
                    if ((marqueeState.behavior == 'scroll' && marqueeState.last == marqueeRedux[marqueeState.axis]) || (marqueeState.behavior == 'alternate' && hitedge && marqueeState.last != -1) || (marqueeState.behavior == 'slide' && hitedge && marqueeState.last != -1)) {                        
                        if (marqueeState.behavior == 'alternate') {
                            marqueeState.dir *= -1; // flip
                        }
                        marqueeState.last = -1;

                        $marqueeRedux.trigger('stop');

                        marqueeState.loops--;
                        if (marqueeState.loops === 0) {
                            if (marqueeState.behavior != 'slide') {
                                marqueeRedux[marqueeState.axis] = getReset(marqueeState.dir, marqueeRedux, marqueeState);
                            } else {
                                // corrects the position
                                marqueeRedux[marqueeState.axis] = getReset(marqueeState.dir * -1, marqueeRedux, marqueeState);
                            }

                            $marqueeRedux.trigger('end');
                        } else {
                            // keep this marquee going
                            newMarqueeList.push(marqueeRedux);
                            $marqueeRedux.trigger('start');
                            marqueeRedux[marqueeState.axis] = getReset(marqueeState.dir, marqueeRedux, marqueeState);
                        }
                    } else {
                        newMarqueeList.push(marqueeRedux);
                    }
                    marqueeState.last = marqueeRedux[marqueeState.axis];

                    // store updated state only if we ran an animation
                    $marqueeRedux.data('marqueeState', marqueeState);
                } else {
                    // even though it's paused, keep it in the list
                    newMarqueeList.push(marqueeRedux);                    
                }
            }

            newMarquee = newMarqueeList;
            
            if (newMarquee.length) {
                setTimeout(animateMarquee, 25);
            }            
        }
        
        // TODO consider whether using .html() in the wrapping process could lead to loosing predefined events...
        this.each(function (i) {
            var $marquee = $(this),
                width = $marquee.attr('width') || $marquee.width(),
                height = $marquee.attr('height') || $marquee.height(),
                $marqueeRedux = $marquee.after('<div ' + (klass ? 'class="' + klass + '" ' : '') + 'style="display: block-inline; width: ' + width + 'px; height: ' + height + 'px; overflow: hidden;"><div style="float: left; white-space: nowrap;">' + $marquee.html() + '</div></div>').next(),
                marqueeRedux = $marqueeRedux.get(0),
                hitedge = 0,
                direction = ($marquee.attr('direction') || 'left').toLowerCase(),
                marqueeState = {
                    dir : /down|right/.test(direction) ? -1 : 1,
                    axis : /left|right/.test(direction) ? 'scrollLeft' : 'scrollTop',
                    widthAxis : /left|right/.test(direction) ? 'scrollWidth' : 'scrollHeight',
                    last : -1,
                    loops : $marquee.attr('loop') || -1,
                    scrollamount : $marquee.attr('scrollamount') || this.scrollAmount || 2,
                    behavior : ($marquee.attr('behavior') || 'scroll').toLowerCase(),
                    width : /left|right/.test(direction) ? width : height
                };
            
            // corrects a bug in Firefox - the default loops for slide is -1
            if ($marquee.attr('loop') == -1 && marqueeState.behavior == 'slide') {
                marqueeState.loops = 1;
            }

            $marquee.remove();
            
            // add padding
            if (/left|right/.test(direction)) {
                $marqueeRedux.find('> div').css('padding', '0 ' + width + 'px');
            } else {
                $marqueeRedux.find('> div').css('padding', height + 'px 0');
            }
            
            // events
            $marqueeRedux.bind('stop', function () {
                $marqueeRedux.data('paused', true);
            }).bind('pause', function () {
                $marqueeRedux.data('paused', true);
            }).bind('start', function () {
                $marqueeRedux.data('paused', false);
            }).bind('unpause', function () {
                $marqueeRedux.data('paused', false);
            }).data('marqueeState', marqueeState); // finally: store the state
            
            // todo - rerender event allowing us to do an ajax hit and redraw the marquee

            newMarquee.push(marqueeRedux);

            marqueeRedux[marqueeState.axis] = getReset(marqueeState.dir, marqueeRedux, marqueeState);
            $marqueeRedux.trigger('start');
            
            // on the very last marquee, trigger the animation
            if (i+1 == last) {
                animateMarquee();
            }
        });            

        return $(newMarquee);
    };
}(jQuery));


/* SCROLLPANE */

(function($) {

$.jScrollPane = {
	active : []
};
$.fn.jScrollPane = function(settings)
{
	settings = $.extend({}, $.fn.jScrollPane.defaults, settings);

	var rf = function() { return false; };
	
	return this.each(
		function()
		{
			var $this = $(this);
			// Switch the element's overflow to hidden to ensure we get the size of the element without the scrollbars [http://plugins.jquery.com/node/1208]
			$this.css('overflow', 'hidden');
			var paneEle = this;
			
			if ($(this).parent().is('.jScrollPaneContainer')) {
				var currentScrollPosition = settings.maintainPosition ? $this.position().top : 0;
				var $c = $(this).parent();
				var paneWidth = $c.innerWidth();
				var paneHeight = $c.outerHeight();
				var trackHeight = paneHeight;
				$('>.jScrollPaneTrack, >.jScrollArrowUp, >.jScrollArrowDown', $c).remove();
				$this.css({'top':0});
			} else {
				var currentScrollPosition = 0;
				this.originalPadding = $this.css('paddingTop') + ' ' + $this.css('paddingRight') + ' ' + $this.css('paddingBottom') + ' ' + $this.css('paddingLeft');
				this.originalSidePaddingTotal = (parseInt($this.css('paddingLeft')) || 0) + (parseInt($this.css('paddingRight')) || 0);
				var paneWidth = $this.innerWidth();
				var paneHeight = $this.innerHeight();
				var trackHeight = paneHeight;
				$this.wrap(
					$('<div></div>').attr(
						{'className':'jScrollPaneContainer'}
					).css(
						{
							'height':paneHeight+'px', 
							'width':paneWidth+'px'
						}
					).attr(
						'tabindex', 
						settings.tabIndex
					)
				);
				// deal with text size changes (if the jquery.em plugin is included)
				// and re-initialise the scrollPane so the track maintains the
				// correct size
				$(document).bind(
					'emchange', 
					function(e, cur, prev)
					{
						$this.jScrollPane(settings);
					}
				);
				
			}
			
			if (settings.reinitialiseOnImageLoad) {
				// code inspired by jquery.onImagesLoad: http://plugins.jquery.com/project/onImagesLoad
				// except we re-initialise the scroll pane when each image loads so that the scroll pane is always up to size...
				// TODO: Do I even need to store it in $.data? Is a local variable here the same since I don't pass the reinitialiseOnImageLoad when I re-initialise?
				var $imagesToLoad = $.data(paneEle, 'jScrollPaneImagesToLoad') || $('img', $this);
				var loadedImages = [];
				
				if ($imagesToLoad.length) {
					$imagesToLoad.each(function(i, val)	{
						$(this).bind('load readystatechange', function() {
							if($.inArray(i, loadedImages) == -1){ //don't double count images
								loadedImages.push(val); //keep a record of images we've seen
								$imagesToLoad = $.grep($imagesToLoad, function(n, i) {
									return n != val;
								});
								$.data(paneEle, 'jScrollPaneImagesToLoad', $imagesToLoad);
								var s2 = $.extend(settings, {reinitialiseOnImageLoad:false});
								$this.jScrollPane(s2); // re-initialise
							}
						}).each(function(i, val) {
							if(this.complete || this.complete===undefined) { 
								//needed for potential cached images
								this.src = this.src; 
							} 
						});
					});
				};
			}

			var p = this.originalSidePaddingTotal;
			var realPaneWidth = paneWidth - settings.scrollbarWidth - settings.scrollbarMargin - p;

			var cssToApply = {
				'height':'auto',
				'width': realPaneWidth + 'px'
			}

			if(settings.scrollbarOnLeft) {
				cssToApply.paddingLeft = settings.scrollbarMargin + settings.scrollbarWidth + 'px';
			} else {
				cssToApply.paddingRight = settings.scrollbarMargin + 'px';
			}

			$this.css(cssToApply);

			var contentHeight = $this.outerHeight();
			var percentInView = paneHeight / contentHeight;

			if (percentInView < .99) {
				var $container = $this.parent();
				$container.append(
					$('<div></div>').attr({'className':'jScrollPaneTrack'}).css({'width':settings.scrollbarWidth+'px'}).append(
						$('<div></div>').attr({'className':'jScrollPaneDrag'}).css({'width':settings.scrollbarWidth+'px'}).append(
							$('<div></div>').attr({'className':'jScrollPaneDragTop'}).css({'width':settings.scrollbarWidth+'px'}),
							$('<div></div>').attr({'className':'jScrollPaneDragBottom'}).css({'width':settings.scrollbarWidth+'px'})
						)
					)
				);
				
				var $track = $('>.jScrollPaneTrack', $container);
				var $drag = $('>.jScrollPaneTrack .jScrollPaneDrag', $container);
				
				
				var currentArrowDirection;
				var currentArrowTimerArr = [];// Array is used to store timers since they can stack up when dealing with keyboard events. This ensures all timers are cleaned up in the end, preventing an acceleration bug.
				var currentArrowInc;
				var whileArrowButtonDown = function() 
				{
					if (currentArrowInc > 4 || currentArrowInc % 4 == 0) {
						positionDrag(dragPosition + currentArrowDirection * mouseWheelMultiplier);
					}
					currentArrowInc++;
				};

				if (settings.enableKeyboardNavigation) {
					$container.bind(
						'keydown.jscrollpane',
						function(e) 
						{
							switch (e.keyCode) {
								case 38: //up
									currentArrowDirection = -1;
									currentArrowInc = 0;
									whileArrowButtonDown();
									currentArrowTimerArr[currentArrowTimerArr.length] = setInterval(whileArrowButtonDown, 100);
									return false;
								case 40: //down
									currentArrowDirection = 1;
									currentArrowInc = 0;
									whileArrowButtonDown();
									currentArrowTimerArr[currentArrowTimerArr.length] = setInterval(whileArrowButtonDown, 100);
									return false;
								case 32: // space
								case 33: // page up
								case 34: // page down
									// TODO
									return false;
								default:
									//console.log(e.keyCode);
							}
						}
					).bind(
						'keyup.jscrollpane',
						function(e) 
						{
							if (e.keyCode == 38 || e.keyCode == 40) {
								for (var i = 0; i < currentArrowTimerArr.length; i++) {
									clearInterval(currentArrowTimerArr[i]);
								}
								return false;
							}
						}
					);
				}

				if (settings.showArrows) {
					
					var currentArrowButton;
					var currentArrowInterval;

					var onArrowMouseUp = function(event)
					{
						$('html').unbind('mouseup', onArrowMouseUp);
						currentArrowButton.removeClass('jScrollActiveArrowButton');
						clearInterval(currentArrowInterval);
					};
					var onArrowMouseDown = function() {
						$('html').bind('mouseup', onArrowMouseUp);
						currentArrowButton.addClass('jScrollActiveArrowButton');
						currentArrowInc = 0;
						whileArrowButtonDown();
						currentArrowInterval = setInterval(whileArrowButtonDown, 100);
					};
					$container
						.append(
							$('<a></a>')
								.attr({'href':'javascript:;', 'className':'jScrollArrowUp', 'tabindex':-1})
								.css({'width':settings.scrollbarWidth+'px'})
								.html('Scroll up')
								.bind('mousedown', function()
								{
									currentArrowButton = $(this);
									currentArrowDirection = -1;
									onArrowMouseDown();
									this.blur();
									return false;
								})
								.bind('click', rf),
							$('<a></a>')
								.attr({'href':'javascript:;', 'className':'jScrollArrowDown', 'tabindex':-1})
								.css({'width':settings.scrollbarWidth+'px'})
								.html('Scroll down')
								.bind('mousedown', function()
								{
									currentArrowButton = $(this);
									currentArrowDirection = 1;
									onArrowMouseDown();
									this.blur();
									return false;
								})
								.bind('click', rf)
						);
					var $upArrow = $('>.jScrollArrowUp', $container);
					var $downArrow = $('>.jScrollArrowDown', $container);
					if (settings.arrowSize) {
						trackHeight = paneHeight - settings.arrowSize - settings.arrowSize;
						$track
							.css({'height': trackHeight+'px', top:settings.arrowSize+'px'})
					} else {
						var topArrowHeight = $upArrow.height();
						settings.arrowSize = topArrowHeight;
						trackHeight = paneHeight - topArrowHeight - $downArrow.height();
						$track
							.css({'height': trackHeight+'px', top:topArrowHeight+'px'})
					}
				}
				
				var $pane = $(this).css({'position':'absolute', 'overflow':'visible'});
				
				var currentOffset;
				var maxY;
				var mouseWheelMultiplier;
				// store this in a seperate variable so we can keep track more accurately than just updating the css property..
				var dragPosition = 0;
				var dragMiddle = percentInView*paneHeight/2;
				
				// pos function borrowed from tooltip plugin and adapted...
				var getPos = function (event, c) {
					var p = c == 'X' ? 'Left' : 'Top';
					return event['page' + c] || (event['client' + c] + (document.documentElement['scroll' + p] || document.body['scroll' + p])) || 0;
				};
				
				var ignoreNativeDrag = function() {	return false; };
				
				var initDrag = function()
				{
					ceaseAnimation();
					currentOffset = $drag.offset(false);
					currentOffset.top -= dragPosition;
					maxY = trackHeight - $drag[0].offsetHeight;
					mouseWheelMultiplier = 2 * settings.wheelSpeed * maxY / contentHeight;
				};
				
				var onStartDrag = function(event)
				{
					initDrag();
					dragMiddle = getPos(event, 'Y') - dragPosition - currentOffset.top;
					$('html').bind('mouseup', onStopDrag).bind('mousemove', updateScroll);
					if ($.browser.msie) {
						$('html').bind('dragstart', ignoreNativeDrag).bind('selectstart', ignoreNativeDrag);
					}
					return false;
				};
				var onStopDrag = function()
				{
					$('html').unbind('mouseup', onStopDrag).unbind('mousemove', updateScroll);
					dragMiddle = percentInView*paneHeight/2;
					if ($.browser.msie) {
						$('html').unbind('dragstart', ignoreNativeDrag).unbind('selectstart', ignoreNativeDrag);
					}
				};
				var positionDrag = function(destY)
				{
					destY = destY < 0 ? 0 : (destY > maxY ? maxY : destY);
					dragPosition = destY;
					$drag.css({'top':destY+'px'});
					var p = destY / maxY;
					$this.data('jScrollPanePosition', (paneHeight-contentHeight)*-p);
					$pane.css({'top':((paneHeight-contentHeight)*p) + 'px'});
					$this.trigger('scroll');
					if (settings.showArrows) {
						$upArrow[destY == 0 ? 'addClass' : 'removeClass']('disabled');
						$downArrow[destY == maxY ? 'addClass' : 'removeClass']('disabled');
					}
				};
				var updateScroll = function(e)
				{
					positionDrag(getPos(e, 'Y') - currentOffset.top - dragMiddle);
				};
				
				var dragH = Math.max(Math.min(percentInView*(paneHeight-settings.arrowSize*2), settings.dragMaxHeight), settings.dragMinHeight);
				
				$drag.css(
					{'height':dragH+'px'}
				).bind('mousedown', onStartDrag);
				
				var trackScrollInterval;
				var trackScrollInc;
				var trackScrollMousePos;
				var doTrackScroll = function()
				{
					if (trackScrollInc > 8 || trackScrollInc%4==0) {
						positionDrag((dragPosition - ((dragPosition - trackScrollMousePos) / 2)));
					}
					trackScrollInc ++;
				};
				var onStopTrackClick = function()
				{
					clearInterval(trackScrollInterval);
					$('html').unbind('mouseup', onStopTrackClick).unbind('mousemove', onTrackMouseMove);
				};
				var onTrackMouseMove = function(event)
				{
					trackScrollMousePos = getPos(event, 'Y') - currentOffset.top - dragMiddle;
				};
				var onTrackClick = function(event)
				{
					initDrag();
					onTrackMouseMove(event);
					trackScrollInc = 0;
					$('html').bind('mouseup', onStopTrackClick).bind('mousemove', onTrackMouseMove);
					trackScrollInterval = setInterval(doTrackScroll, 100);
					doTrackScroll();
					return false;
				};
				
				$track.bind('mousedown', onTrackClick);
				
				$container.bind(
					'mousewheel',
					function (event, delta) {
						initDrag();
						ceaseAnimation();
						var d = dragPosition;
						positionDrag(dragPosition - delta * mouseWheelMultiplier);
						var dragOccured = d != dragPosition;
						return !dragOccured;
					}
				);

				var _animateToPosition;
				var _animateToInterval;
				function animateToPosition()
				{
					var diff = (_animateToPosition - dragPosition) / settings.animateStep;
					if (diff > 1 || diff < -1) {
						positionDrag(dragPosition + diff);
					} else {
						positionDrag(_animateToPosition);
						ceaseAnimation();
					}
				}
				var ceaseAnimation = function()
				{
					if (_animateToInterval) {
						clearInterval(_animateToInterval);
						delete _animateToPosition;
					}
				};
				var scrollTo = function(pos, preventAni)
				{
					if (typeof pos == "string") {
						$e = $(pos, $this);
						if (!$e.length) return;
						pos = $e.offset().top - $this.offset().top;
					}
					$container.scrollTop(0);
					ceaseAnimation();
					var maxScroll = contentHeight - paneHeight;
					pos = pos > maxScroll ? maxScroll : pos;
					$this.data('jScrollPaneMaxScroll', maxScroll);
					var destDragPosition = pos/maxScroll * maxY;
					if (preventAni || !settings.animateTo) {
						positionDrag(destDragPosition);
					} else {
						_animateToPosition = destDragPosition;
						_animateToInterval = setInterval(animateToPosition, settings.animateInterval);
					}
				};
				$this[0].scrollTo = scrollTo;
				
				$this[0].scrollBy = function(delta)
				{
					var currentPos = -parseInt($pane.css('top')) || 0;
					scrollTo(currentPos + delta);
				};
				
				initDrag();
				
				scrollTo(-currentScrollPosition, true);
			
				// Deal with it when the user tabs to a link or form element within this scrollpane
				$('*', this).bind(
					'focus',
					function(event)
					{
						var $e = $(this);
						
						// loop through parents adding the offset top of any elements that are relatively positioned between
						// the focused element and the jScrollPaneContainer so we can get the true distance from the top
						// of the focused element to the top of the scrollpane...
						var eleTop = 0;
						
						while ($e[0] != $this[0]) {
							eleTop += $e.position().top;
							$e = $e.offsetParent();
						}
						
						var viewportTop = -parseInt($pane.css('top')) || 0;
						var maxVisibleEleTop = viewportTop + paneHeight;
						var eleInView = eleTop > viewportTop && eleTop < maxVisibleEleTop;
						if (!eleInView) {
							var destPos = eleTop - settings.scrollbarMargin;
							if (eleTop > viewportTop) { // element is below viewport - scroll so it is at bottom.
								destPos += $(this).height() + 15 + settings.scrollbarMargin - paneHeight;
							}
							scrollTo(destPos);
						}
					}
				)
				
				
				if (location.hash) {
					setTimeout(function() {scrollTo(location.hash);}, $.browser.safari ? 100 : 0);
				}
				
				// use event delegation to listen for all clicks on links and hijack them if they are links to
				// anchors within our content...
				$(document).bind(
					'click',
					function(e)
					{
						$target = $(e.target);
						if ($target.is('a')) {
							var h = $target.attr('href');
							if (h && h.substr(0, 1) == '#') {
								setTimeout(function() {scrollTo(h, !settings.animateToInternalLinks);}, $.browser.safari ? 100 : 0);
							}
						}
					}
				); 
				
				// Deal with dragging and selecting text to make the scrollpane scroll...
				function onSelectScrollMouseDown(e)
				{
				   $(document).bind('mousemove.jScrollPaneDragging', onTextSelectionScrollMouseMove);
				   $(document).bind('mouseup.jScrollPaneDragging',   onSelectScrollMouseUp);
				  
				}
				
				var textDragDistanceAway;
				var textSelectionInterval;
				
				function onTextSelectionInterval()
				{
					direction = textDragDistanceAway < 0 ? -1 : 1;
					$this[0].scrollBy(textDragDistanceAway / 2);
				}

				function clearTextSelectionInterval()
				{
					if (textSelectionInterval) {
						clearInterval(textSelectionInterval);
						textSelectionInterval = undefined;
					}
				}
				
				function onTextSelectionScrollMouseMove(e)
				{
					var offset = $this.parent().offset().top;
					var maxOffset = offset + paneHeight;
					var mouseOffset = getPos(e, 'Y');
					textDragDistanceAway = mouseOffset < offset ? mouseOffset - offset : (mouseOffset > maxOffset ? mouseOffset - maxOffset : 0);
					if (textDragDistanceAway == 0) {
						clearTextSelectionInterval();
					} else {
						if (!textSelectionInterval) {
							textSelectionInterval  = setInterval(onTextSelectionInterval, 100);
						}
					}
				}

				function onSelectScrollMouseUp(e)
				{
				   $(document)
					  .unbind('mousemove.jScrollPaneDragging')
					  .unbind('mouseup.jScrollPaneDragging');
				   clearTextSelectionInterval();
				}

				$container.bind('mousedown.jScrollPane', onSelectScrollMouseDown);

				
				$.jScrollPane.active.push($this[0]);
				
			} else {
				$this.css(
					{
						'height':paneHeight+'px',
						'width':paneWidth-this.originalSidePaddingTotal+'px',
						'padding':this.originalPadding
					}
				);
				// clean up listeners
				$this.parent().unbind('mousewheel').unbind('mousedown.jScrollPane').unbind('keydown.jscrollpane').unbind('keyup.jscrollpane');
			}
			
		}
	)
};

$.fn.jScrollPaneRemove = function()
{
	$(this).each(function()
	{
		$this = $(this);
		var $c = $this.parent();
		if ($c.is('.jScrollPaneContainer')) {
			$this.css(
				{
					'top':'',
					'height':'',
					'width':'',
					'padding':'',
					'overflow':'',
					'position':''
				}
			);
			$c.after($this).remove();
		}
	});
}

$.fn.jScrollPane.defaults = {
	scrollbarWidth : 10,
	scrollbarMargin : 5,
	wheelSpeed : 18,
	showArrows : false,
	arrowSize : 0,
	animateTo : false,
	dragMinHeight : 1,
	dragMaxHeight : 99999,
	animateInterval : 100,
	animateStep: 3,
	maintainPosition: true,
	scrollbarOnLeft: false,
	reinitialiseOnImageLoad: false,
	tabIndex : 0,
	enableKeyboardNavigation: true,
	animateToInternalLinks: false
};

// clean up the scrollTo expandos
$(window)
	.bind('unload', function() {
		var els = $.jScrollPane.active; 
		for (var i=0; i<els.length; i++) {
			els[i].scrollTo = els[i].scrollBy = null;
		}
	}
);

})(jQuery);



/* KEYS */

(function(B){B.fn.__bind__=B.fn.bind;B.fn.__unbind__=B.fn.unbind;B.fn.__find__=B.fn.find;var A={version:"0.7.8",override:/keydown|keypress|keyup/g,triggersMap:{},specialKeys:{27:"esc",9:"tab",32:"space",13:"return",8:"backspace",145:"scroll",20:"capslock",144:"numlock",19:"pause",45:"insert",36:"home",46:"del",35:"end",33:"pageup",34:"pagedown",37:"left",38:"up",39:"right",40:"down",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12"},shiftNums:{"`":"~","1":"!","2":"@","3":"#","4":"$","5":"%","6":"^","7":"&","8":"*","9":"(","0":")","-":"_","=":"+",";":":","'":'"',",":"<",".":">","/":"?","\\":"|"},newTrigger:function(E,D,F){var C={};C[E]={};C[E][D]={cb:F,disableInInput:false};return C}};if(B.browser.mozilla){A.specialKeys=B.extend(A.specialKeys,{96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9"})}B.fn.find=function(C){this.query=C;return B.fn.__find__.apply(this,arguments)};B.fn.unbind=function(H,E,G){if(B.isFunction(E)){G=E;E=null}if(E&&typeof E==="string"){var F=((this.prevObject&&this.prevObject.query)||(this[0].id&&this[0].id)||this[0]).toString();var D=H.split(" ");for(var C=0;C<D.length;C++){delete A.triggersMap[F][D[C]][E]}}return this.__unbind__(H,G)};B.fn.bind=function(J,F,K){var H=J.match(A.override);if(B.isFunction(F)||!H){return this.__bind__(J,F,K)}else{var N=null,I=B.trim(J.replace(A.override,""));if(I){N=this.__bind__(I,F,K)}if(typeof F==="string"){F={combi:F}}if(F.combi){for(var M=0;M<H.length;M++){var D=H[M];var G=F.combi.toLowerCase(),E=A.newTrigger(D,G,K),L=((this.prevObject&&this.prevObject.query)||(this[0].id&&this[0].id)||this[0]).toString();E[D][G].disableInInput=F.disableInInput;if(!A.triggersMap[L]){A.triggersMap[L]=E}else{if(!A.triggersMap[L][D]){A.triggersMap[L][D]=E[D]}}var C=A.triggersMap[L][D][G];if(!C){A.triggersMap[L][D][G]=[E[D][G]]}else{if(C.constructor!==Array){A.triggersMap[L][D][G]=[C]}else{A.triggersMap[L][D][G][C.length]=E[D][G]}}this.each(function(){var O=B(this);if(O.attr("hkId")&&O.attr("hkId")!==L){L=O.attr("hkId")+";"+L}O.attr("hkId",L)});N=this.__bind__(H.join(" "),F,A.handler)}}return N}};A.findElement=function(C){if(!B(C).attr("hkId")){if(B.browser.opera||B.browser.safari){while(!B(C).attr("hkId")&&C.parentNode){C=C.parentNode}}}return C};A.handler=function(E){var O=A.findElement(E.currentTarget),I=B(O),D=I.attr("hkId");if(D){D=D.split(";");var G=E.which,Q=E.type,P=A.specialKeys[G],N=!P&&String.fromCharCode(G).toLowerCase(),H=E.shiftKey,C=E.ctrlKey,M=E.altKey||E.originalEvent.altKey,F=null;for(var R=0;R<D.length;R++){if(A.triggersMap[D[R]][Q]){F=A.triggersMap[D[R]][Q];break}}if(F){var J;if(!H&&!C&&!M){J=F[P]||(N&&F[N])}else{var L="";if(M){L+="alt+"}if(C){L+="ctrl+"}if(H){L+="shift+"}J=F[L+P];if(!J){if(N){J=F[L+N]||F[L+A.shiftNums[N]]||(L==="shift+"&&F[A.shiftNums[N]])}}}if(J){var S=false;for(var R=0;R<J.length;R++){if(J[R].disableInInput){var K=B(E.target);if(I.is("input")||I.is("textarea")||K.is("input")||K.is("textarea")){return true}}S=S||J[R].cb.apply(this,[E])}return S}}}};window.hotkeys=A;return B})(jQuery);

/* HOVER Intent */

(function($){$.fn.hoverIntent=function(f,g){var cfg={sensitivity:7,interval:100,timeout:0};cfg=$.extend(cfg,g?{over:f,out:g}:f);var cX,cY,pX,pY;var track=function(ev){cX=ev.pageX;cY=ev.pageY;};var compare=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);if((Math.abs(pX-cX)+Math.abs(pY-cY))<cfg.sensitivity){$(ob).unbind("mousemove",track);ob.hoverIntent_s=1;return cfg.over.apply(ob,[ev]);}else{pX=cX;pY=cY;ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}};var delay=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);ob.hoverIntent_s=0;return cfg.out.apply(ob,[ev]);};var handleHover=function(e){var p=(e.type=="mouseover"?e.fromElement:e.toElement)||e.relatedTarget;while(p&&p!=this){try{p=p.parentNode;}catch(e){p=this;}}if(p==this){return false;}var ev=jQuery.extend({},e);var ob=this;if(ob.hoverIntent_t){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);}if(e.type=="mouseover"){pX=ev.pageX;pY=ev.pageY;$(ob).bind("mousemove",track);if(ob.hoverIntent_s!=1){ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}}else{$(ob).unbind("mousemove",track);if(ob.hoverIntent_s==1){ob.hoverIntent_t=setTimeout(function(){delay(ev,ob);},cfg.timeout);}}};return this.mouseover(handleHover).mouseout(handleHover);};})(jQuery);



/* LAZYLOAD */

(function($){$.fn.lazyload=function(options){var settings={threshold:0,failurelimit:0,event:"scroll",effect:"show",container:window};if(options){$.extend(settings,options);}
var elements=this;if("scroll"==settings.event){$(settings.container).bind("scroll",function(event){var counter=0;elements.each(function(){if(!$.belowthefold(this,settings)&&!$.rightoffold(this,settings)){$(this).trigger("appear");}else{if(counter++>settings.failurelimit){return false;}}});var temp=$.grep(elements,function(element){return!element.loaded;});elements=$(temp);});}
return this.each(function(){var self=this;$(self).attr("original",$(self).attr("src"));if("scroll"!=settings.event||$.belowthefold(self,settings)||$.rightoffold(self,settings)){if(settings.placeholder){$(self).attr("src",settings.placeholder);}else{$(self).removeAttr("src");}
self.loaded=false;}else{self.loaded=true;}
$(self).one("appear",function(){if(!this.loaded){$("<img />").bind("load",function(){$(self).hide().attr("src",$(self).attr("original"))
[settings.effect](settings.effectspeed);self.loaded=true;}).attr("src",$(self).attr("original"));};});if("scroll"!=settings.event){$(self).bind(settings.event,function(event){if(!self.loaded){$(self).trigger("appear");}});}});};$.belowthefold=function(element,settings){if(settings.container===undefined||settings.container===window){var fold=$(window).height()+$(window).scrollTop();}
else{var fold=$(settings.container).offset().top+$(settings.container).height();}
return fold<=$(element).offset().top-settings.threshold;};$.rightoffold=function(element,settings){if(settings.container===undefined||settings.container===window){var fold=$(window).width()+$(window).scrollLeft();}
else{var fold=$(settings.container).offset().left+$(settings.container).width();}
return fold<=$(element).offset().left-settings.threshold;};$.extend($.expr[':'],{"below-the-fold":"$.belowthefold(a, {threshold : 0, container: window})","above-the-fold":"!$.belowthefold(a, {threshold : 0, container: window})","right-of-fold":"$.rightoffold(a, {threshold : 0, container: window})","left-of-fold":"!$.rightoffold(a, {threshold : 0, container: window})"});})(jQuery);

/* COOKIE */

jQuery.cookie = function(name, value, options) {
    if (typeof value != 'undefined') { // name and value given, set cookie
        options = options || {};
        if (value === null) {
            value = '';
            options = $.extend({}, options); // clone object since it's unexpected behavior if the expired property were changed
            options.expires = -1;
        }
        var expires = '';
        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
            var date;
            if (typeof options.expires == 'number') {
                date = new Date();
                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
            } else {
                date = options.expires;
            }
            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
        }
        // NOTE Needed to parenthesize options.path and options.domain
        // in the following expressions, otherwise they evaluate to undefined
        // in the packed version for some reason...
        var path = options.path ? '; path=' + (options.path) : '';
        var domain = options.domain ? '; domain=' + (options.domain) : '';
        var secure = options.secure ? '; secure' : '';
        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
    } else { // only name given, get cookie
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
};


/* CAROUSEL */

(function($){$.fn.scrollme=function(o){o=$.extend({btnPrev:null,btnNext:null,btnGo:null,mouseWheel:false,auto:null,speed:200,easing:null,vertical:false,circular:true,visible:3,start:0,scroll:1,beforeStart:null,afterEnd:null},o||{});return this.each(function(){var b=false,animCss=o.vertical?"top":"left",sizeCss=o.vertical?"height":"width";var c=$(this),ul=$("ul",c),tLi=$("li",ul),tl=tLi.size(),v=o.visible;if(o.circular){ul.prepend(tLi.slice(tl-v-1+1).clone()).append(tLi.slice(0,v).clone());o.start+=v}var f=$("li",ul),itemLength=f.size(),curr=o.start;c.css("visibility","visible");f.css({overflow:"hidden",float:o.vertical?"none":"left"});ul.css({margin:"0",padding:"0",position:"relative","list-style-type":"none","z-index":"1"});c.css({overflow:"hidden",position:"relative","z-index":"2",left:"0px"});var g=o.vertical?height(f):width(f);var h=g*itemLength;var j=g*v;f.css({width:f.width(),height:f.height()});ul.css(sizeCss,h+"px").css(animCss,-(curr*g));c.css(sizeCss,j+"px");if(o.btnPrev)$(o.btnPrev).click(function(){triggerCount("blaettern.dynastopper",curr);return go(curr-o.scroll)});if(o.btnNext)$(o.btnNext).click(function(){triggerCount("blaettern.dynastopper",curr);return go(curr+o.scroll)});if(o.btnGo)$.each(o.btnGo,function(i,a){$(a).click(function(){return go(o.circular?o.visible+i:i)})});if(o.mouseWheel&&c.mousewheel)c.mousewheel(function(e,d){return d>0?go(curr-o.scroll):go(curr+o.scroll)});if(o.auto)setInterval(function(){go(curr+o.scroll)},o.auto+o.speed);function vis(){return f.slice(curr).slice(0,v)};function go(a){if(!b){if(o.beforeStart)o.beforeStart.call(this,vis());if(o.circular){if(a<=o.start-v-1){ul.css(animCss,-((itemLength-(v*2))*g)+"px");curr=a==o.start-v-1?itemLength-(v*2)-1:itemLength-(v*2)-o.scroll}else if(a>=itemLength-v+1){ul.css(animCss,-((v)*g)+"px");curr=a==itemLength-v+1?v+1:v+o.scroll}else curr=a}else{if(a<0||a>itemLength-v)return;else curr=a}b=true;ul.animate(animCss=="left"?{left:-(curr*g)}:{top:-(curr*g)},o.speed,o.easing,function(){if(o.afterEnd)o.afterEnd.call(this,vis());b=false});if(!o.circular){$(o.btnPrev+","+o.btnNext).removeClass("disabled");$((curr-o.scroll<0&&o.btnPrev)||(curr+o.scroll>itemLength-v&&o.btnNext)||[]).addClass("disabled")}}return false}})};function css(a,b){return parseInt($.css(a[0],b))||0};function width(a){return a[0].offsetWidth+css(a,'marginLeft')+css(a,'marginRight')};function height(a){return a[0].offsetHeight+css(a,'marginTop')+css(a,'marginBottom')}})(jQuery);


/* END PLUGINS */ 

/*
function blendout() {
document.getElementById("resSel").style.display="none";
} 

function blendin() {
document.getElementById("resSel").style.display="block";
}*/

function checkAll(field) {
if (field[1].checked == true) {
for (i = 0; i < field.length; i++)
	field[i].checked = false ;
}
else
{
for (i = 0; i < field.length; i++)
	field[i].checked = true ;
}
}

function checkAllRes(fieldName, cBool) {
	var field = document.getElementsByName(fieldName);
    for (i = 0; i < field.length; i++) {
		field[i].checked = cBool ;
	}
}

function enableDate() {
var af = document.getElementsByClassName('datesel');
for (i = 0; 0 < af.length; i++) 
af[i].disabled = false; 
}

function disableDate() {
var af = document.getElementsByClassName('datesel');
for (i = 0; 0 < af.length; i++) {
af[i].options[0].selected = true; 
af[i].disabled = true; 
}
}


//  End -->

function confirmDel(action, id) {
	Check = confirm("Wollen Sie diesen Artikel aus Ihrem Artikelarchiv löschen?");
	if (Check == true)
		window.location.href="articlebox.do?action="+action+"&id=" + id;
}

function show(file,width,height) {
if (width) {
window.open(""+file+"","_blank","width="+width+",height="+height+",toolbar=no,status=no,menubar=no,scrollbars=yes,resizeable=no"); }
else {
window.open(""+file+"","_blank","width=400,height=600,toolbar=no,status=no,menubar=no,scrollbars=yes,resizeable=no");
}
}

function showPopupWindow(operation, file, width, height, id, picID, redirectURL, titleD, textD) {
file1 = file + '?newURL=' + escape(redirectURL) + '&titleD=' + escape(titleD) + '&textD=' + escape(textD) + '&daid=' + operation;
if (width) {
	window.open(""+file1+"","_blank","width="+width+",height="+height+",toolbar=no,status=no,menubar=no,scrollbars=no,resizeable=no"); }
else {
	window.open(""+file1+"","_blank","width=400,height=600,toolbar=no,status=no,menubar=no,scrollbars=no,resizeable=no");
}
}

function PopupPic(content, sPicURL) {
window.open(content + "/flex/templates/diashow_layouts/diashow_zoom.jsp?" + sPicURL, "","toolbar=no,status=no,menubar=no,scrollbars=no,resizeable=no");
} 

function go(formid)
{
	destination = formid.options[formid.selectedIndex].value;
	if (destination) location.href = destination;
}


function printIt() {
self.print();
}


function charCountdown(input, output, maxlang)
{ 
	var formfeld="";
	var feld = document.getElementById(input);
	
	if (feld.value.length>maxlang) {
		feld.value = feld.value.substring(0, maxlang);
	} else {
		formfeld=feld.value;
		document.getElementById(output).value=maxlang-feld.value.length;
	}
}

function eMake(a, c) {
var b = "&#64;";
document.write("<a href=\"&#109;&#97;&#105;&#108;&#116;&#111;&#58;"+a+b+c+"\">"+a+b+c+"</a>");
}

function eMakeText(a, c, d) {
var b = "&#64;";
document.write("<a href=\"&#109;&#97;&#105;&#108;&#116;&#111;&#58;"+a+b+c+"\">"+d+"</a>");
}

function writeArticleTitle(id){
	document.title = document.getElementById(id).innerHTML + ' « DiePresse.com';
}



function setActiveStyleSheet(title) {
  var i, a, main;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
      a.disabled = true;
      if(a.getAttribute("title") == title) a.disabled = false;
    }
  }
}

function getActiveStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title");
  }
  return null;
}

function getPreferredStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1
       && a.getAttribute("rel").indexOf("alt") == -1
       && a.getAttribute("title")
       ) return a.getAttribute("title");
  }
  return null;
}

function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else 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;
}

window.onload = function(e) {
  var cookie = readCookie("style");
  var title = cookie ? cookie : getPreferredStyleSheet();
  setActiveStyleSheet(title);
}

window.onunload = function(e) {
  var title = getActiveStyleSheet();
  createCookie("style", title, 365);
}

var cookie = readCookie("style");
var title = cookie ? cookie : getPreferredStyleSheet();
setActiveStyleSheet(title);


function createCookie(name,value,days){
	if (days){
		var date = new Date();
		date.setTime(date.getTime() + (days * 24 * 60 * 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);
}

function parseCookie(cookievalues){
	if (cookieValues.length > 0){
		var cookieValuesArray = new Array(3);
		var CookiesArray = cookievalues.split("&");
		for (var i = 0; i < CookiesArray.length; i++){
			var v = CookiesArray[i].split(":");
			cookieValuesArray[i] = v[1];
		}
		return cookieValuesArray;
	} else {
		return null;
	}
}

var cookieValues = new Array(3);
var cv = readCookie("presseuserdata");
if (cv){
	cookieValues = parseCookie(cv);
} else {
	createCookie("presseuserdata","columnMode:3&fontSize:12&clippings:",7);
	cv = readCookie("presseuserdata");
	if (cv){
		cookieValues = parseCookie(cv);
	} else {
		cookieValues[0] = "3";
		cookieValues[1] = "12";
		cookieValues[2] = "";
	}
}

var activeClippingsMenu = false;
function displayClippings(status){
	
	var cv1 = readCookie("presseuserdata");
	cookieValues = parseCookie(cv1);
	var clippings = cookieValues[2].split("~");
	var clippingsarea = document.getElementById("clippingsarea");
	var clippingsmenu = document.getElementById("clippingsmenu");
	activeClippingsMenu = true;
	
	if (status=="hide")
	$('#clippingsmenu').hide();
	else
	$('#clippingsmenu').toggle();
	
	if (cookieValues[2] == "") {
		var html = "<div style=\"font-size:11px;padding:5px;\"><span style=\"font-weight:normal;font-family:Verdana,sans-serif;line-height:14px;\">Ihre Merkliste ist derzeit leer. Um einen Artikel hier abzulegen, klicken Sie <span style=\"color:red\">\"Artikel merken\"</span> über dem gewünschten Artikel.</span></div>"; }
		else {
		var html = "";
		}
	for (var i = 0; i < (clippings.length - 1); i++){
		var clippingsVals = clippings[i].split("^");
		if (clippingsVals[2] == 1){
			html = html + '<a href="' + clippingsVals[2] + '" onmousedown="javascript:markAsRead(' + "'" + clippingsVals[0] + "'" + ');"><span style="color: #6e81a0">' + unescape(clippingsVals[1]) + '</span></a><a href="javascript:delStory(' + "'" + clippingsVals[0] + "'" + ');" class="art_del"><img src="/img/icons/ic_del.gif" alt="entfernen" border="0"> entfernen</a><div class="hline"><hr /></div>';
		} else {
			html = html + '<a href="' + clippingsVals[2] + '" onmousedown="javascript:markAsRead(' + "'" + clippingsVals[0] + "'" + ');">' + unescape(clippingsVals[1]) + '</a><a href="javascript:delStory(' + "'" + clippingsVals[0] + "'" + ');" class="art_del"><img src="/img/icons/ic_del.gif" alt="entfernen" border="0"> entfernen</a><div class="hline"><hr /></div>';
		}
	}
	clippingsarea.innerHTML = html;
}

function displayClippingsMenu(display) {
	var cv1 = readCookie("presseuserdata");
	cookieValues = parseCookie(cv1);
	var clippings = cookieValues[2].split("~");
	var clippingsarea = $('#clippingsarea');
	var clippingsmenu = $('#clippingsmenu');
	activeClippingsMenu = true;
	if(display!="hide") {
		$('#meinarchiv').addClass('hoverant');
		$('#meinarchiv').removeClass('hover');
		clippingsmenu.show();
	}
	var html = "";
	for (var i = 0; i < (clippings.length - 1); i++){
		var clippingsVals = clippings[i].split("^");
		if (clippingsVals[2] == 1){
			html = html +  '<a href="' + clippingsVals[2] + '" onmousedown="javascript:markAsRead(' + "'" + clippingsVals[0] + "'" + ');">' + unescape(clippingsVals[1]) + '</a><a href="javascript:delStory(' + "'" + clippingsVals[0] + "'" + ');" class="art_del"><img src="/img/icons/ic_del.gif" alt="entfernen" border="0"> entfernen</a><div class="hline"><hr /></div>';
		} else {
			html = html + '<a href="' + clippingsVals[2] + '" onmousedown="javascript:markAsRead(' + "'" + clippingsVals[0] + "'" + ');">' + unescape(clippingsVals[1]) + '</a><a href="javascript:delStory(' + "'" + clippingsVals[0] + "'" + ');" class="art_del"><img src="/img/icons/ic_del.gif" alt="entfernen" border="0"> entfernen</a><div class="hline"><hr /></div>';
		}
	}
	clippingsarea.html(html);
}

var bm_count = -2; var mb_blinking; var blink_color = "";

function addClipping(url,headline,obj,urly){
	obj=$(obj);
	if (headline.indexOf("|039|") != -1) {
		headline = headline.replace(/\|039\|/g, "&#039;");
	}
	var cv1 = readCookie("presseuserdata");
	cookieValues = parseCookie(cv1);
	var newclippingstring = cookieValues[2];
	var clippings = cookieValues[2].split("~");
	for (var i = 0; i < (clippings.length - 1); i++){
		var clippingsVals = clippings[i].split("^");
		if (clippingsVals[0] == url){
			return;
		}
	}		
	var newclipping = url + "^" + escape(headline) + "^" + urly + "^" + "0~";
	newclippingstring = newclippingstring + newclipping;
	var cv = "columnMode:" + cookieValues[0] + "&fontSize:" + cookieValues[1] + "&clippings:" + newclippingstring;
	createCookie("presseuserdata",cv,7);
	if (obj.css('display')!='none') {
			obj.css('background','none');
			obj.parent().css('color','#a6b6cd');
			obj.parent().html("<span class=gemerkt>gemerkt</span>");
	}
	countClippings();	
if (!mb_blinking) mb_blinking = window.setInterval("blink_myclip()", 300);
window.setTimeout('displayClippingsMenu()', 600)

}

var blink_myclip = function () {
	bm_count--;
	if (bm_count < 0) {
		bm_count = 5;
		blink_color = "";
	}
	to = "#1b498e"; 
	from = "#1b498e";
	bg_to = "#1b498e"; 
	bg_from = "#1b498e";
	el = $("#clipper");
	if (blink_color == to || bm_count <= 0) {
		el.css('color',from);
		blink_color = from;
		el.css('textDecoration','underline');
		if (bm_count <= 0) window.clearInterval(mb_blinking);
	} else {
		el.css('color',to);
		el.css('textDecoration','none');
		blink_color = to;
	}
}


function markAsRead(url){
	var newclippingstring = "";
	var cv1 = readCookie("presseuserdata");
	cookieValues = parseCookie(cv1);
	var clippings = cookieValues[2].split("~");
	for (var i = 0; i < (clippings.length - 1); i++){
		var clippingsVals = clippings[i].split("^");
		var newclipping = "";
		if (url == clippingsVals[0]){
			newclipping = clippingsVals[0] + "^" + clippingsVals[1] + "^" + clippingsVals[2] + "^" + "0~";
		} else {
			newclipping = clippingsVals[0] + "^" + clippingsVals[1] + "^" + clippingsVals[2] + "^" + "0~";
		}
		newclippingstring = newclippingstring + newclipping;
	}
	var cv = "columnMode:" + cookieValues[0] + "&fontSize:" + cookieValues[1] + "&clippings:" + newclippingstring;
	createCookie("presseuserdata",cv,7);
}

function removeAllClippings(){
	var cv1 = readCookie("presseuserdata");
	cookieValues = parseCookie(cv1);
	var clippings = cookieValues[2].split("~");
	for (var i = 0; i < (clippings.length - 1); i++){
		var clippingsVals = clippings[i].split("^");
		if (document.getElementById(clippingsVals[0]) != null){
			document.getElementById(clippingsVals[0]).style.background = "#fff url(/images/icons/clipping-icon_on.gif) no-repeat center";
		}
	}
	var cv = "columnMode:" + cookieValues[0] + "&fontSize:" + cookieValues[1] + "&clippings:";
	createCookie("presseuserdata",cv,7);
	countClippings();
	displayClippings();
	window.location.reload();
}

function removeAllReadClippings(){
	var newclippingstring = "";
	var cv1 = readCookie("presseuserdata");
	cookieValues = parseCookie(cv1);
	var clippings = cookieValues[2].split("~");
	for (var i = 0; i < (clippings.length - 1); i++){
		var clippingsVals = clippings[i].split("^");
		var newclipping = "";
		if (clippingsVals[3] == 0){
			newclipping = clippingsVals[0] + "^" + clippingsVals[1] + "^" + clippingsVals[2] + "^" + "0~";
		} else {
			if (document.getElementById(clippingsVals[0]) != null){
				document.getElementById(clippingsVals[0]).style.visibility = "visible";
			}
		}
		newclippingstring = newclippingstring + newclipping;
	}
	var cv = "columnMode:" + cookieValues[0] + "&fontSize:" + cookieValues[1] + "&clippings:" + newclippingstring;
	createCookie("presseuserdata",cv,7);
	countClippings();
	displayClippings();
}

function delStory(storyId){
	var newclippingstring = "";
	var cv1 = readCookie("presseuserdata");
	cookieValues = parseCookie(cv1);
	var clippings = cookieValues[2].split("~");
	for (var i = 0; i < (clippings.length - 1); i++){
		var clippingsVals = clippings[i].split("^");
		var newclipping = "";
		if (clippingsVals[0] == storyId){
			newclipping = "";
			if (document.getElementById(clippingsVals[0]) != null){
			document.getElementById(clippingsVals[0]).style.background = "#fff url(/images/icons/clipping-icon_on.gif) no-repeat center";
			}
		} else {
		newclipping = clippingsVals[0] + "^" + clippingsVals[1] + "^" + clippingsVals[2] + "^" + "0~";
		}
		newclippingstring = newclippingstring + newclipping;
	}
	var cv = "columnMode:" + cookieValues[0] + "&fontSize:" + cookieValues[1] + "&clippings:" + newclippingstring;
	createCookie("presseuserdata",cv,7);
	countClippings();
	displayClippings();
	hideClippedStories();
	displayClippingsMenu();
}

function hideClippedStories(){
	var clippings = cookieValues[2].split("~");
	for (var i = 0; i < clippings.length; i++){
		var clippingsVals = clippings[i].split("^");
		for (var j = 0; j < availableClippings.length; j++){
			var obj = $('#'+availableClippings[j]);
			var objj = availableClippings[j];
			if (clippingsVals[0] == availableClippings[j]){
			if (obj.css('display')!='none') {
				obj.css('background','none');
				obj.parent().css('color','#a6b6cd');
				obj.parent().html("<span class=gemerkt>gemerkt</span>");
			}
}
		}
	}
}

function countClippings(){
	var cv1 = readCookie("presseuserdata");
	cookieValues = parseCookie(cv1);
	var totalclippings = 0;
	if (cookieValues[2] == ""){
		totalclippings = 0;
	} else {
		var clippings = cookieValues[2].split("~");
		clippings.pop();
		var totalclippings = clippings.length;
	}
	$('#numOfClippings').html(totalclippings);	
}

function menuOut(){
	document.onclick = eventHideMenu;
	if (document.all){
		event.cancelBubble = true;
	}
}


function eventHideMenu(){
	document.onclick = null;
	if (activeClippingsMenu == true){
		var obj = $("#clippingsmenu");
		obj.style.visibility = "hidden";
		obj.style.display = "none";
	}
}

function initClippingsMenu(){
	var menuobj = $("#clippingsmenu");
	menuobj.onmouseout = menuOut;
	if ($.cookie('archivAlert')!="undefined"){
	if($.cookie('archivAlert')=="1")
	$('#archivalert').hide();
	}
}


function siteStat() {
	var NewPixNedstat = document.createElement("img");
  	NewPixNedstat.setAttribute("SRC","http://de.sitestat.com/styria/diepresse/s?homepage.diashows.thumbnail&Category=homepage_diashows_thumbnail&d="+(new Date()).getTime()+"", "false");
  	NewPixNedstat.setAttribute("width","1", "false");
  	NewPixNedstat.setAttribute("height","1", "false");
  	document.getElementById("footer").appendChild(NewPixNedstat);
	
	}   	

	var displayWaitMessage=true;
  	
   		
	var activeImage = false;
	var imageGalleryLeftPos = false;
	var imageGalleryWidth = false;
	var imageGalleryObj = false;
	var maxGalleryXPos = false;
	var slideSpeed = 0;
	var imageGalleryCaptions = new Array();
	function startSlide(e)
	{
		if(document.all)e = event;
		var id = this.id;
		this.getElementsByTagName('IMG')[0].src = '/images/diashow/' + this.id + '_over.gif';	
		if(this.id=='arrow_right'){
			slideSpeedMultiply = Math.floor((e.clientX - this.offsetLeft) / 5);
			slideSpeed = -1*slideSpeedMultiply;
			slideSpeed = Math.max(-10,slideSpeed);
		}else{			
			slideSpeedMultiply = 10 - Math.floor((e.clientX - this.offsetLeft) / 5);
			slideSpeed = 1*slideSpeedMultiply;
			slideSpeed = Math.min(10,slideSpeed);
			if(slideSpeed<0)slideSpeed=10;
		}
	}
	
function releaseSlide()
	{
		var id = this.id;
		this.getElementsByTagName('IMG')[0].src = '/images/diashow/' + this.id + '.gif';
		slideSpeed=0;
	}
		
	function gallerySlide()
	{
		if(slideSpeed!=0){
			var leftPos = imageGalleryObj.offsetLeft;
			leftPos = leftPos/1 + slideSpeed;
			if(leftPos>maxGalleryXPos){
				leftPos = maxGalleryXPos;
				slideSpeed = 0;
				
			}
			if(leftPos<minGalleryXPos){
				leftPos = minGalleryXPos;
				slideSpeed=0;
			}
			
			imageGalleryObj.style.left = leftPos + 'px';
		}
		setTimeout('gallerySlide()',20);
		
	}
	
	function showImage()
	{
		if(activeImage){
			activeImage.style.filter = 'alpha(opacity=50)';	
			activeImage.style.opacity = 0.5;
		}	
		this.style.filter = 'alpha(opacity=100)';
		this.style.opacity = 1;	
		activeImage = this;	
	}
	
	function initSlideShow()
	{
		if ($('#arrow_left') == null) {
			return;
		}
		$('#arrow_left').onmousemove = startSlide;
		$('#arrow_left').onmouseout = releaseSlide;
		$('#arrow_right').onmousemove = startSlide;
		$('#arrow_right').onmouseout = releaseSlide;
		
		imageGalleryObj = $('#theImages');
		imageGalleryLeftPos = imageGalleryObj.offsetLeft;
		imageGalleryWidth = $('#galleryContainer').offsetWidth - 80;
		maxGalleryXPos = imageGalleryObj.offsetLeft; 
		minGalleryXPos = imageGalleryWidth - $('#slideEnd').offsetLeft;
		var slideshowImages = $('#theImages img');
		for(var no=0;no<slideshowImages.length;no++){
			slideshowImages[no].onmouseover = showImage;
		}
		
		var divs = $('#theImages div');
		for(var no=0;no<divs.length;no++){
			if(divs[no].className=='imageCaption')imageGalleryCaptions[imageGalleryCaptions.length] = divs[no].innerHTML;
		}
		gallerySlide();
	}
	
	function showPreview(imagePath, imageIndex, elm, elm1, titleD, elm2, textD){
		var subImages = $('#previewPane img');
		if(subImages.length==0){
			var img = document.createElement('IMG');
			$('#previewPane').appendChild(img);
		}else img = subImages[0];
		
		if(displayWaitMessage){
			$('#waitMessage').style.display='inline';
		}
		$('#largeImageCaption').style.display='none';
		img.onload = function() { hideWaitMessageAndShowCaption(imageIndex-1); };
		img.src = imagePath;
		
		//alert('start');
		var indexImgTag = document.getElementById(elm);
		if(indexImgTag != null) {
			indexImgTag.value = imageIndex;
		}
		
		var indexTitleTag = document.getElementById(elm1);
		if(indexTitleTag != null) {
			indexTitleTag.value = titleD;
		}
		
		var indexTextTag = document.getElementById(elm2);
		if(indexTextTag != null) {
			indexTextTag.value = textD;
		}
		
siteStat();
	}
	
	function hideWaitMessageAndShowCaption(imageIndex)
	{
		$('#waitMessage').style.display='none';	
		$('#largeImageCaption').innerHTML = imageGalleryCaptions[imageIndex];
		$('#largeImageCaption').style.display='block';
		
	}
	window.onload = initSlideShow;


		var availableClippings = new Array();


function toggleSend(send, id, picID, redirectURL, titleD, textD) {
var x = $("#"+"send"+send);
$("span.blend").html("");

if (x.html("")) {
if (send == 1) {
x.html("<form name=\"article_comment\" action=\"send.do\" method=\"get\"><fieldset class=\"dia_send\"><legend>Bild versenden</legend><fieldset class=\"article_inner\"><h4>Versenden Sie einen Link zu diesem Bild:</h4><br /><label for=\"name\" class=\"extended\">Ihr Name*</label> <input id=\"name\" type=\"text\" name=\"name\" value=\"\" / class=\"normalinput\"><br /><br /><label for=\"email\" class=\"extended\">Ihre Email*</label> <input id=\"email1\" type=\"text\" name=\"email1\" value=\"\" / class=\"normalinput\"><br /><br /><label for=\"email\" class=\"extended\">Empf&auml;nger E-Mail*</label> <input id=\"email\" type=\"text\" name=\"email\" value=\"\" / class=\"normalinput\"><br /><br /><label for=\"commentext\" class=\"extended\">Nachricht</label><textarea id=\"commentext\" type=\"text\" name=\"commentext\" value=\"\" / class=\"sendtextarea\" onkeyup=\"javascript:z();\"></textarea><br /></fieldset><div class=\"sendfunctionbuttons\"><input type=\"button\" value=\"Formular schlie&szlig;en\" onClick=\"toggleSend("+send+");\" id=\"reset\" /> <input type=\"submit\" value=\"Absenden\" class=\"submit\" /><br /><small>*) Pflichtfelder</small></div></fieldset><input type=\"hidden\" id=\"daid\" name=\"daid\" value=\""+send+"\"><input type=\"hidden\" id=\"gId\" name=\"gId\" value=\""+id+"\"><input type=\"hidden\" id=\"pId\" name=\"pId\" value=\""+picID+"\"><input type=\"hidden\" id=\"newURL\" name=\"newURL\" value=\""+redirectURL+"\"><input type=\"hidden\" id=\"titleD\" name=\"titleD\" value=\""+titleD+"\"><input type=\"hidden\" id=\"textD\" name=\"textD\" value=\""+textD+"\"></form><br />");
x.html("<form name=\"article_comment\" action=\"send.do\" method=\"get\"><fieldset class=\"dia_send\"><legend>Bild versenden</legend><fieldset class=\"article_inner\"><h4>Versenden Sie einen Link zu diesem Bild:</h4><br /><label for=\"name\" class=\"extended\">Ihr Name*</label> <input id=\"name\" type=\"text\" name=\"name\" value=\"\" / class=\"normalinput\"><br /><br /><label for=\"email\" class=\"extended\">Ihre E-Mail*</label> <input id=\"email1\" type=\"text\" name=\"email1\" value=\"\" / class=\"normalinput\"><br /><br /><label for=\"email\" class=\"extended\">Empf&auml;nger E-Mail*</label> <input id=\"email\" type=\"text\" name=\"email\" value=\"\" / class=\"normalinput\"><br /><br /><label for=\"commentext\" class=\"extended\">Nachricht</label><textarea id=\"commentext\" type=\"text\" name=\"commentext\" value=\"\" / class=\"sendtextarea\" onkeyup=\"javascript:z();\"></textarea><br /></fieldset><div class=\"sendfunctionbuttons\"><input type=\"button\" value=\"Formular schlie&szlig;en\" onClick=\"toggleSend("+send+");\" id=\"reset\" /> <input type=\"submit\" value=\"Absenden\" class=\"submit\" /><br /><small>*) Pflichtfelder</small></div></fieldset><input type=\"hidden\" id=\"daid\" name=\"daid\" value=\""+send+"\"><input type=\"hidden\" id=\"gId\" name=\"gId\" value=\""+id+"\"><input type=\"hidden\" id=\"pId\" name=\"pId\" value=\""+picID+"\"><input type=\"hidden\" id=\"newURL\" name=\"newURL\" value=\""+redirectURL+"\"><input type=\"hidden\" id=\"titleD\" name=\"titleD\" value=\""+titleD+"\"><input type=\"hidden\" id=\"textD\" name=\"textD\" value=\""+textD+"\"></form><br />");
} else {
x.html("<form name=\"article_comment\" action=\"send.do\" method=\"get\"><fieldset class=\"dia_send\"><legend>Galerie versenden</legend><fieldset class=\"article_inner\"><h4>Versenden Sie einen Link zu dieser Bildergalerie:</h4><br /><label for=\"name\" class=\"extended\">Ihr Name*</label> <input id=\"name\" type=\"text\" name=\"name\" value=\"\" / class=\"normalinput\"><br /><br /><label for=\"email\" class=\"extended\">Ihre E-Mail*</label> <input id=\"email1\" type=\"text\" name=\"email1\" value=\"\" / class=\"normalinput\"><br /><br /><label for=\"email\" class=\"extended\">Empf&auml;nger E-Mail*</label> <input id=\"email\" type=\"text\" name=\"email\" value=\"\" / class=\"normalinput\"><br /><br /><label for=\"commentext\" class=\"extended\">Nachricht</label><textarea id=\"commentext\" type=\"text\" name=\"commentext\" value=\"\" / class=\"sendtextarea\" onkeyup=\"javascript:z();\"></textarea><br /></fieldset><div class=\"sendfunctionbuttons\"><input type=\"button\" value=\"Formular schlie&szlig;en\" onClick=\"toggleSend("+send+");\" id=\"reset\" /> <input type=\"submit\" value=\"Absenden\" class=\"submit\" /><br /><small>*) Pflichtfelder</small></div></fieldset><input type=\"hidden\" id=\"daid\" name=\"daid\" value=\""+send+"\"><input type=\"hidden\" id=\"gId\" name=\"gId\" value=\""+id+"\"><input type=\"hidden\" id=\"pId\" name=\"pId\" value=\""+picID+"\"><input type=\"hidden\" id=\"newURL\" name=\"newURL\" value=\""+redirectURL+"\"><input type=\"hidden\" id=\"titleD\" name=\"titleD\" value=\""+titleD+"\"><input type=\"hidden\" id=\"textD\" name=\"textD\" value=\""+textD+"\"></form><br />");
}

 }
else  {
x.html("");
}

}

function toggleTab(thisTab, otherTab) {
Element.show(thisTab);
Element.hide(otherTab);
Element.addClassName(thisTab+'Tab', 'activetab');
Element.removeClassName(otherTab+'Tab', 'activetab');
}


function sndReq(vote,id_num,section,timer) {

var xmlHttp = null;
if (typeof XMLHttpRequest != 'undefined') {
    xmlHttp = new XMLHttpRequest();
}

if (!xmlHttp) {
    try {
        xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
        try {
            xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
        } catch(e) {
            xmlHttp  = null;
        }
    }
}

if (xmlHttp) {
    xmlHttp.open('get', '/rating.do?rating='+vote+'&itemId='+id_num+'&section='+section+'&timer='+timer, true);
    xmlHttp.onreadystatechange = function () {
        if (xmlHttp.readyState == 4) {
		var element = document.getElementById('unit_long'+id_num);
        element.innerHTML = 'Danke f&uuml;r Ihre Stimme!';
        }
    };
    xmlHttp.send(null);
}

setCount("http://de.sitestat.com/styria/diepresse/s?homepage.votings&Category=homepage_votings","http://diepress.oewabox.at/cgi-bin/ivw/CP/Community/ForenUndChats/Service/Website/Uebersichtsseite/Votings");

}





function send(vote,articleId,id_num,section,timer,reqUrl) {

if ($.cookie("voting_used_"+section+"_"+id_num)==null) {


var xmlHttp = null;

if (typeof XMLHttpRequest != 'undefined') {

    xmlHttp = new XMLHttpRequest();

      xmlHttp2 = new XMLHttpRequest();

}

 

if (!xmlHttp) {

    try {

        xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");

    } catch(e) {

        try {

            xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");

        } catch(e) {

            xmlHttp  = null;

        }

    }

}

 

if (!xmlHttp2) {

    try {

        xmlHttp2  = new ActiveXObject("Msxml2.XMLHTTP");

    } catch(e) {

        try {

            xmlHttp2  = new ActiveXObject("Microsoft.XMLHTTP");

        } catch(e) {

            xmlHttp2  = null;

        }

    }

}

 

if (xmlHttp) {

    xmlHttp.open('get', '/rating.do?rating='+vote+'&itemId='+id_num+'&section='+section+'&timer='+timer+'&articleId='+articleId, true);

      var element = $('#commentvote'+id_num);

     //element.html('<img src="/img/load.gif" style="position:absolute;right:5px;top:21px;" />');

    element.append('<img src="/img/t.gif" style="position:absolute;right:0;top:21px;width:37px;height:40px;" id="t" />');

      xmlHttp.onreadystatechange = function () {

        if (xmlHttp.readyState == 4) {         

        //element.html('Danke!');

            //location.reload();

            $('#t').fadeOut();

            xmlHttp2.open('get', '/flex/templates/voting/voting_output.jsp?reg=1&layout=5&itemId='+id_num+'&section='+section+'&timer='+timer+'&articleId='+articleId+'&reqUrl='+reqUrl, true);

                  xmlHttp2.onreadystatechange = function () {

                  if (xmlHttp2.readyState == 4) {

                        element.html(xmlHttp2.responseText);

                  }

            }

                  xmlHttp2.send(null);

            }

    };

    xmlHttp.send(null);

}

 } else {
alert("Sie haben diesen Kommentar bereits bewertet.");
}


}





function changeText( div2show, text ) {
    var IE = (document.all) ? 1 : 0;
    var DOM = 0; 
    if (parseInt(navigator.appVersion) >=5) {DOM=1};
    if (DOM) {
        var viewer = document.getElementById(div2show)
        viewer.innerHTML=text
    }
    else if(IE) {
        document.all[div2show].innerHTML=text
    }
}

function refreshImg(path) {
	var imageNew = document.getElementById('validateImg');
	if(imageNew != null) {
		var datum = new Date();
		imageNew.src = path+"?ts="+datum.getTime()
	}
}


var timerID = 0;



function newWindowAttach(url, size, x, y) {		
		var properties = "";
		properties += ",location=no";		
		properties += ",menubar=0";	
		properties += ",toolbar=no";
		properties += ",directories=no";		
		if(size)
		{
			properties += ",status=no";
			properties += ",scrollbars=no";
			properties += ",resizable=no";
			properties += ",top=150";
			properties += ",left=660";
			properties += ",width=" + x;
			properties += ",height=" + y;
		}
		else
		{
			properties += ",resizable=yes";
			properties += ",status=yes";
		}
			
    	var w = window.open(url, 'Article', properties);
    	w.focus();
}

function openExtWindow(url, popup_type, size_x, size_y)
{
	if(popup_type == 'popup_same')
		location.href = url;
	else if(popup_type == 'popup_size')
		newWindowAttach(url, true, size_x, size_y);
	else if(popup_type == 'popup_new')
		newWindowAttach(url, false, 0, 0);
	else
		location.href = url;
}

function openDiashowPopup(url, type) {
	if(type == 'edp')
		newWindowAttach(url, true, 740, 650);
	else
		newWindowAttach(url, true, 740, 550);
}

function openExtWindowInPopup(url, size_x, size_y, proc)
{
	var screenW = 640, screenH = 480;
	if (parseInt(navigator.appVersion)>3) {
		screenW = screen.width;
		screenH = screen.height;
	}
	else if (navigator.appName == "Netscape" 
	    && parseInt(navigator.appVersion)==3
	    && navigator.javaEnabled()
	   ) 
	{
		var jToolkit = java.awt.Toolkit.getDefaultToolkit();
		var jScreenSize = jToolkit.getScreenSize();
		screenW = jScreenSize.width;
		screenH = jScreenSize.height;
	}
	
	var popupX = Math.round(screenW / 100 * proc);
	var popupY = Math.round(screenH / 100 * proc);
	size_x = popupX;
	size_y = popupY;
	posX = Math.round((screenW  - size_x) / 2);
	posY = Math.round((screenH  - size_y) / 2);
	
	var properties = "";
	properties += "location=no";		
	properties += ",menubar=0";	
	properties += ",toolbar=no";
	properties += ",directories=no";		
	properties += ",scrollbars=no";
	properties += ",top=" + posY;
	properties += ",left=" + posX;
	properties += ",width=" + size_x;
	properties += ",height=" + size_y;
	properties += ",resizable=yes";
	properties += ",status=yes";
		
   	var w = window.open(url, 'Article', properties);
   	w.focus();
   	
   	return false;	
}

var loadingImage = '/files/lightbox/loading.gif';		
var closeButton = '/files/lightbox/close.gif';		


function getPageScroll(){

	var yScroll;

	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){
		yScroll = document.documentElement.scrollTop;
	} else if (document.body) {
		yScroll = document.body.scrollTop;
	}

	arrayPageScroll = new Array('',yScroll) 
	return arrayPageScroll;
}



function getPageSize(){
	
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { 
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;
	if (self.innerHeight) {
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { 
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { 
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}

	if(xScroll < windowWidth){	
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}


	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}


function pause(numberMillis) {
	var now = new Date();
	var exitTime = now.getTime() + numberMillis;
	while (true) {
		now = new Date();
		if (now.getTime() > exitTime)
			return;
	}
}


function getKey(e){
	if (e == null) {
		keycode = event.keyCode;
	} else {
		keycode = e.which;
	}
	key = String.fromCharCode(keycode).toLowerCase();
	
	if(key == 'x'){ hideLightbox(); }
}


function listenKey () {	document.onkeypress = getKey; }

function showLightbox(objLink)
{


	var objOverlay = document.getElementById('overlay');
	var objLightbox = document.getElementById('lightbox');
	var objCaption = document.getElementById('lightboxCaption');
	var objImage = document.getElementById('lightboxImage');
	var objLoadingImage = document.getElementById('loadingImage');
	var objLightboxDetails = document.getElementById('lightboxDetails');

	
	var arrayPageSize = getPageSize();
	var arrayPageScroll = getPageScroll();

	if (objLoadingImage) {
		objLoadingImage.style.top = (arrayPageScroll[1] + ((arrayPageSize[3] - 35 - objLoadingImage.height) / 2) + 'px');
		objLoadingImage.style.left = (((arrayPageSize[0] - 20 - objLoadingImage.width) / 2) + 'px');
		objLoadingImage.style.display = 'block';
	}

	objOverlay.style.height = (arrayPageSize[1] + 'px');
	objOverlay.style.display = 'block';

	imgPreload = new Image();

	imgPreload.onload=function(){
		objImage.src = objLink.href;

		var lightboxTop = arrayPageScroll[1] + ((arrayPageSize[3] - 35 - imgPreload.height) / 2);
		var lightboxLeft = ((arrayPageSize[0] - 20 - imgPreload.width) / 2);
		
		objLightbox.style.top = (lightboxTop < 0) ? "0px" : lightboxTop + "px";
		objLightbox.style.left = (lightboxLeft < 0) ? "0px" : lightboxLeft + "px";


		objLightboxDetails.style.width = imgPreload.width + 'px';
		
		if(objLink.getAttribute('title')){
			objCaption.style.display = 'block';
			objCaption.innerHTML = objLink.getAttribute('title');
		} else {
			objCaption.style.display = 'none';
		}
		
		if (navigator.appVersion.indexOf("MSIE")!=-1){
			pause(250);
		} 


		if (objLoadingImage) {	objLoadingImage.style.display = 'none'; }

		selects = document.getElementsByTagName("select");
        for (i = 0; i != selects.length; i++) {
                selects[i].style.visibility = "hidden";
        }

	
		objLightbox.style.display = 'block';

		arrayPageSize = getPageSize();
		objOverlay.style.height = (arrayPageSize[1] + 'px');
		
		listenKey();

		return false;
	}

	imgPreload.src = objLink.href;
	
}





function hideLightbox()
{
	objOverlay = document.getElementById('overlay');
	objLightbox = document.getElementById('lightbox');

	objOverlay.style.display = 'none';
	objLightbox.style.display = 'none';

	selects = document.getElementsByTagName("select");
    for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "visible";
	}

	document.onkeypress = '';
}

function initLightbox()
{
	
	if (!document.getElementsByTagName){ return; }
	var anchors = document.getElementsByTagName("a");

	for (var i=0; i<anchors.length; i++){
		var anchor = anchors[i];

		if (anchor.getAttribute("href") && (anchor.getAttribute("rel") == "lightbox")){
			anchor.onclick = function () {showLightbox(this); return false;}
		}
	}


	var objBody = document.getElementsByTagName("body").item(0);
	
	var objOverlay = document.createElement("div");
	objOverlay.setAttribute('id','overlay');
	objOverlay.onclick = function () {hideLightbox(); return false;}
	objOverlay.style.display = 'none';
	objOverlay.style.position = 'absolute';
	objOverlay.style.top = '0';
	objOverlay.style.left = '0';
	objOverlay.style.zIndex = '9998';
 	objOverlay.style.width = '100%';
	objBody.insertBefore(objOverlay, objBody.firstChild);
	
	var arrayPageSize = getPageSize();
	var arrayPageScroll = getPageScroll();

	var imgPreloader = new Image();
	
	imgPreloader.onload=function(){

		var objLoadingImageLink = document.createElement("a");
		objLoadingImageLink.setAttribute('href','#');
		objLoadingImageLink.onclick = function () {hideLightbox(); return false;}
		objOverlay.appendChild(objLoadingImageLink);
		
		var objLoadingImage = document.createElement("img");
		objLoadingImage.src = loadingImage;
		objLoadingImage.setAttribute('id','loadingImage');
		objLoadingImage.style.position = 'absolute';
		objLoadingImage.style.zIndex = '9998';
		objLoadingImageLink.appendChild(objLoadingImage);

		imgPreloader.onload=function(){};

		return false;
	}

	imgPreloader.src = loadingImage;

	var objLightbox = document.createElement("div");
	objLightbox.setAttribute('id','lightbox');
	objLightbox.style.display = 'none';
	objLightbox.style.position = 'absolute';
	objLightbox.style.zIndex = '9999';	
	objBody.insertBefore(objLightbox, objOverlay.nextSibling);
	
	var objLink = document.createElement("a");
	objLink.setAttribute('href','#');
	objLink.setAttribute('title','Zum Schließen klicken');
	objLink.onclick = function () {hideLightbox(); return false;}
	objLightbox.appendChild(objLink);

	var imgPreloadCloseButton = new Image();

	imgPreloadCloseButton.onload=function(){

		var objCloseButton = document.createElement("img");
		objCloseButton.src = closeButton;
		objCloseButton.setAttribute('id','closeButton');
		objCloseButton.style.position = 'absolute';
		objCloseButton.style.zIndex = '9999';
		objLink.appendChild(objCloseButton);

		return false;
	}

	imgPreloadCloseButton.src = closeButton;

	var objImage = document.createElement("img");
	objImage.setAttribute('id','lightboxImage');
	objLink.appendChild(objImage);
	
	var objLightboxDetails = document.createElement("div");
	objLightboxDetails.setAttribute('id','lightboxDetails');
	objLightbox.appendChild(objLightboxDetails);

	var objCaption = document.createElement("div");
	objCaption.setAttribute('id','lightboxCaption');
	objCaption.style.display = 'none';
	objLightboxDetails.appendChild(objCaption);

	var objKeyboardMsg = document.createElement("div");
	objKeyboardMsg.setAttribute('id','keyboardMsg');
	objKeyboardMsg.innerHTML = 'Drücken Sie <a href="#" onclick="hideLightbox(); return false;"><kbd>x</kbd></a> zum Schließen';
	objLightboxDetails.appendChild(objKeyboardMsg);


}

function addLoadEvent(func)
{	
	var oldonload = window.onload;
	if (typeof window.onload != 'function'){
    	window.onload = func;
	} else {
		window.onload = function(){
		oldonload();
		func();
		}
	}

}


/************ FUNKTION BLAETTERN START ***************/
function initBoxes(box) {

var query=home;
if (channel!=""&&channel!="index.do") query+="."+channel;
if (ressort!=""&&ressort!="index.do") query+="."+ressort;
var aktuell=0;


$('div.jcarousel-clip').each( function() {
	ii=0;
	iii=0;
$(this).children().children('li').each(
	function() {		
		ii=ii+1;
		iii=Math.ceil(ii/2);
		$(this).children("a").each(function(){
		//console.log("page="+iii);
		$(this).attr("tabindex",iii);
		$(this).click(function() {
			window.location.href=($(this).attr('href'))+"?from="+query+"."+"ds.p"+$(this).attr('tabindex');
			return false;
		});
	  });
	});
});


$('#s4 '+box+' .boxContent').each( function() {
			$(this).children().children('li').each(
			function() {
					$(this).children().children("a").click(function() {
									if($(this).attr('href').indexOf("javascript")==-1) {
									var page=aktuell+1;
									window.location.href=($(this).attr('href'))+"?from="+query+"."+"sc.p"+page;
									return false;
									}
					});
				});
									 
		if ($(this).children().children('li').length!=1) {
			if ($(this).parent().attr("class")=="box both") {
				$(this).parent().css("padding-bottom","20px");
				$(this).append('<span class="counter" style="top:auto;bottom:5px;"></span>');
			$(this).append('<a class="weiter" style="top:auto;bottom:5px;"></a>');
			$(this).append('<a class="zurueck" style="top:auto;bottom:5px;"></a>');
				}
			$(this).append('<span class="counter"></span>');
			$(this).append('<a class="weiter"></a>');
			$(this).append('<a class="zurueck"></a>');
			$(this).children('span.counter').html('1 / '+$(this).children().children('li').length);
		}
});

/******************* KLICK NACH RECHTS *********************/

$('.box a.weiter').click(function(){
this.blur();
aktuell=0;
el=$(this).parent().children().children('li');
boxid = $(this).parent().attr("id");

for (i=0;i<el.length;i++) {
	if ($(el[i]).css("display")!="none") aktuell=i+1;
}

if (aktuell>=el.length) aktuell=0;
	$(this).parent().children('a.weiter').show();
	for (i=0;i<el.length;i++) {
		if ($(el[i]).css("display")!="none") $(el[i]).hide();
	}
	$(el[aktuell]).fadeIn();
	$(el[aktuell]).css('display','block');
	$(this).parent().children('span.counter').html(aktuell+1+' / '+el.length);
	page=aktuell+1;
	triggerCount("blaettern.supercontent",boxid+"."+page); 
});


/******************* KLICK NACH LINKS *********************/

$('.box a.zurueck').click(function(){
this.blur();
aktuell=0;
el=$(this).parent().children().children('li');
boxid = $(this).parent().attr("id");

for (i=0;i<el.length;i++) {
	if ($(el[i]).css("display")!="none") aktuell=i-1;
}

if (aktuell<0)aktuell=el.length-1;
	for (i=0;i<el.length;i++) {
		if ($(el[i]).css("display")!="none") $(el[i]).hide();
	}
	$(el[aktuell]).fadeIn();
	$(el[aktuell]).css('display','block');
	$(this).parent().children('span.counter').html(aktuell+1+' / '+el.length);
	page=aktuell+1;
	triggerCount("blaettern.supercontent",boxid+"."+page);
});


/************ FUNKTION BLAETTERN AUS ***************/
}




function onScroll(typus){
var scrollPos;
var tf = $("#topfeatures");
var n = $("#nav");
var topnavi = $("#topnavi");
var navi = $("#navi");
navihtml=$("#navi").html();
topnavihtml=$("#topnavi").html();

if (typeof window.pageYOffset != 'undefined') {
   scrollPos = window.pageYOffset;
}
else if (typeof document.compatMode != 'undefined' &&
     document.compatMode != 'BackCompat') {
   scrollPos = document.documentElement.scrollTop;
}
else if (typeof document.body != 'undefined') {
   scrollPos = document.body.scrollTop;
}

if (scrollPos > abstand+40) {
if (checker1 != 1) {
tf.hide();
tf.addClass('fix');
$("#atoz, #minilogo, #tfbut").show();

tf.css('padding-bottom','30px');
navihtml='<div id="nav">'+$("#nav").html()+'</div>';
topnavi.html(navihtml);

$("#datum, #headic").hide();

if ($.cookie('featurePane')=="0") {
	
	$('#topfeatures').addClass("fixclosed");
	$('#topfeatures').removeClass("fix");
	$('#topnavi, #atoz').hide();
	$('#tfbut').css('background-image','url(/images/icons/zumpfi.gif)');
	$('#tfbut').css('top','3px');
	tf.show();
} else {
$('#topfeatures,#tfbut,#topnavi, #atoz').show();
$.cookie('featurePane','1',{ path: '/' });
}

checker1 = 1;
checker2 = 0;
}
} else {
if (checker2 != 1) {
tf.hide();
tf.removeClass('fix');
tf.removeClass('fixclosed');
tf.css('padding-bottom','4px');
$("#toplink, #atoz, #minilogo, #klappe, #tfbut").hide();
$("#datum, #headic").show();
n.removeClass('fix');
n.removeClass('fixclosed');
//navi.html(topnavihtml);
topnavi.html('');
if ($.cookie('featurePane')=="0") {
	$('#topfeatures').removeClass("fixclosed");
	$('#topfeatures').removeClass("fix");
	$('#topnavi, #atoz').hide();
	$('#tfbut').hide();
}
tf.show();
if($('#footer').css("position")=="fixed") showAll();
checker1 = 0;
checker2 = 1;
}
}

} // Funktionsende


function nothing() {}

function showAll() {
if($('#footer').css("position")!="fixed") {
$('#footer').hide();
$('#footer').addClass('fix');
$('#closebutton').show();
$('#footer').slideDown('fast');
} else {
$('#footer').slideUp(300);
function doIt() {
$('#closebutton').hide();
$('#footer').removeClass('fix');
$('#footer').show();
}
setTimeout(doIt, 500);
}
}

function rand( min, max ) {
if( min > max )return( -1 );
if( min == max ) return( min );
return( min + parseInt( Math.random() * ( max-min+1 ) ) );
} 
