var evenemang = {  
	
	// global variables
	filter: null,
	
	// global rotator variables
	rotatorArray: new Array(),
	rotatorCurrent: 0,
	startRotator: null,
	//rotateTime: 12000,
	// TODO: fix
	rotateTime: 12000,
	rotatorLoop: null,
	

	
	// newsticker variable
	newstickerArray: new Array(),
	newstickerCurrent: 0,
	startNewsticker: null,
	newstickerTime: 10000,
	newstickerLoop: null,
	newstickerIndex: 0,
	
	// init page
	init: function() {
		evenemang.bubbleEvt();
		if(evenemang.startRotator) {
			setTimeout("evenemang.rotatorauto()",evenemang.rotateTime);
		}
		if(evenemang.startNewsticker) {
			setTimeout("evenemang.newstickerauto()",evenemang.newstickerTime);
		}
	},
	
	// bubble events
	bubbleEvt: function() {
		
		// open link in new window
		jQuery("a.external").click(function(){
			this.target = "_blank";
		});
		
		// toggle visibility
		jQuery("a.toggle").click(function(){
			evenemang.toggle(this,"animate");
			return false;
		});
		
		// toggle filter list
		jQuery(".show-more-events").click(function(){
			var topparent = this.parentNode.parentNode.parentNode;
			var parent = this.parentNode;
			
			jQuery(parent).addClass("display-none");
			
			if (jQuery(topparent).children(".lvl2").hasClass("display-none-lvl2")) {
				jQuery(topparent).children(".lvl2").removeClass("display-none-lvl2");
			}else{
				jQuery(topparent).children(".lvl2").addClass("display-none-lvl2");
			}
			return false;
		});
		
		// toggle filter list
		jQuery(".toggle-month-list").click(function(){ 
			var parent = this.parentNode;
			if (jQuery(parent).children(".toggle").hasClass("display-none")) {
				jQuery(this).addClass('selected-month');
				jQuery(parent).children(".toggle").removeClass("display-none");
			}else{
				jQuery(parent).children(".toggle").addClass("display-none");
				jQuery(this).removeClass('selected-month');
			}
			return false;
		});		
		
		//toggle extra event info
		jQuery(".toggle-info-length").click(function() {
			evenemang.eventinfo(this);
			return false;
		});		
		
		// toggle hover effect on search result list rows
		jQuery(".result-category > .list > li").hover(function(e){
			jQuery(this).addClass("hover");
		}, function() {
  			jQuery(this).removeClass("hover");
		});
		
		// scroll rotator
		jQuery("a.scroll").click(function(){
			evenemang.rotator(this);
			return false;
		});
		
		// get rotator Item
		jQuery("a.rotatoritem").click(function(){
			evenemang.rotatoritem(this);
			return false;
		});
		
		//display extra info
		jQuery("a.extra-info").click(function(){
			evenemang.showExtraInfo(this);
			return false;
		});		
		
		
		// toggle visibility
		jQuery("a.favorites").click(function(){
			evenemang.favorites(this);
			return false;
		});
		
		// toggle visibility topmenu
		jQuery("a.topmenu").click(function(){
			evenemang.topmenu(this);
			return false;
		});
		
		// toggle extra info in right column
		jQuery("a.show-all-info").click(function(){
			evenemang.showAllInfo(this);
			return false;
		});
	},
	
	// Toggle event information
	eventinfo: function(e) {
		var parent = e.parentNode;
		if (!jQuery(e).hasClass("expanded")) {
			jQuery(e).addClass("expanded");
			// This text is set by GWT
			/*e.childNodes[0].innerHTML = evenemang.outEventToggle;*/
		}else{
			jQuery(e).removeClass("expanded");
			// This text is set by GWT
			//e.childNodes[0].innerHTML = evenemang.inEventToggle;
		}
		jQuery("#short-info-prefix").toggle();
		jQuery("#short-info-points").toggle();
		jQuery("#show-more-info").slideToggle("fast");
	},
	
	// toggle visibility on element
	toggle: function(e,event) {
		// get target elm
		var elm = e.className.replace(/.*elm-([\w-]+).*/, "$1");
		
		// check if it is a result category block
		if (jQuery(e).hasClass("result-category-header")) {
			jQuery("#" + elm +" > .list").slideToggle("fast");
		}else{
			// check if animation is needed
			if (event == "animate") { 
				jQuery("#"+elm).slideToggle("fast");
			}
		}
	},
	
	// scroll rotator
	rotator: function(e) {
		evenemang.startRotator = null;
		var elm
		var lastAnimation = parseInt(evenemang.rotatorArray.length  -3);
		var movemore = 3;
		var direction = e.className.replace(/.*scroll-([\w-]+).*/, "$1");
		
		// scroll to left
		if (direction == "left") {
			elm = evenemang.rotatorCurrent + 1;
			
			// loop all items
			for (var i = 0; i < evenemang.rotatorArray.length; i++) {
	            arrItem = evenemang.rotatorArray[i];
				if (arrItem < elm) {
					if (elm < lastAnimation) {
						jQuery("#rotator-item-small-" + arrItem).animate({ 
							marginLeft: "-176px"
						}, 900 );
					}
				}
	        }
			
			if (elm >= lastAnimation) {
				var move = parseInt(evenemang.rotatorCurrent) - 2;
				var item;
				
				for (var j = 0; j < evenemang.rotatorArray.length; j++) {
					item = evenemang.rotatorArray[j];
					if (item < move) {
					//	alert("ie")
						jQuery("#rotator-item-small-" + item).animate({ 
							marginLeft: "-176px"
						}, 900 );
					}
				}
			}

			// remove all selected classes
			jQuery("#rotator-bottom .rotatorItem").removeClass("selected");
			jQuery("#rotator-top .rotatorItem").addClass("display-none");

			// add selected class on current item
			jQuery("#rotator-item-small-" + elm).addClass("selected");
			jQuery("#rotator-item-large-" + elm).removeClass("display-none");

			// new current item in array
			evenemang.rotatorCurrent = evenemang.rotatorCurrent + 1;
			
			// if last item
			if (evenemang.rotatorCurrent >= evenemang.rotatorArray.length) {
				evenemang.rotatorCurrent = evenemang.rotatorArray.length - 1;
				jQuery("#rotator-item-small-" + evenemang.rotatorCurrent).addClass("selected");
			}
		}else{
			elm = evenemang.rotatorCurrent - 1;
			jQuery("#rotator-item-small-" + elm).animate({ 
				marginLeft: "-0px"
			}, 900 );
			
			// remove all selected classes
			jQuery("#rotator-bottom .rotatorItem").removeClass("selected");
			jQuery("#rotator-top .rotatorItem").addClass("display-none");

			// add selected class on current item
			jQuery("#rotator-item-small-" + elm).addClass("selected");
			jQuery("#rotator-item-large-" + elm).removeClass("display-none");
			
			// new current item in array
			evenemang.rotatorCurrent = evenemang.rotatorCurrent - 1;
			
			// if first item
			if (evenemang.rotatorCurrent < 0) {
				evenemang.rotatorCurrent = 0;
				jQuery("#rotator-item-small-" + evenemang.rotatorCurrent).addClass("selected");
			}
		}
		evenemang.rotatorarrows();
	},
	
	rotatorauto: function(direction) {
		if (evenemang.startRotator) {
			var loop;
			var totalAmmount = evenemang.rotatorArray.length;
			var endLoop = parseInt(evenemang.rotatorArray.length - 4);
			var elm;
			
			if (!direction) {
				elm = jQuery("#rotator-item-small-" + evenemang.rotatorCurrent);
				if (evenemang.rotatorCurrent < endLoop) {
					jQuery(elm).animate({ 
						marginLeft: "-176px"
					}, 1300 );
				}

				if (evenemang.rotatorCurrent != evenemang.rotatorArray.length-1) {
					evenemang.rotatorCurrent = evenemang.rotatorCurrent + 1;
					jQuery("#rotator-item-small-" + evenemang.rotatorCurrent).addClass("selected");
					jQuery("#rotator-item-small-" + parseInt(evenemang.rotatorCurrent - 1)).removeClass("selected");
					
					jQuery("#rotator-item-large-" + evenemang.rotatorCurrent).removeClass("display-none");
					jQuery("#rotator-item-large-" + parseInt(evenemang.rotatorCurrent - 1)).addClass("display-none");
					
					evenemang.rotatorLoop = setTimeout("evenemang.rotatorauto()",evenemang.rotateTime);	
				}else{
					evenemang.rotatorLoop = setTimeout("evenemang.rotatorauto(true)",evenemang.rotateTime);
				}
			}else{
				for (var i = 0; i < evenemang.rotatorArray.length; i++) {
		            elm = evenemang.rotatorArray[i];
					jQuery("#rotator-item-large-" + elm).addClass("display-none");
					jQuery("#rotator-item-small-" + elm).removeClass("selected");
					jQuery("#rotator-item-small-" + elm).animate({ 
						marginLeft: "+0px"
					}, 1300 );
		        }
				clearTimeout(evenemang.rotatorLoop);
				evenemang.rotatorCurrent = 0;
				jQuery("#rotator-item-small-" + evenemang.rotatorCurrent).addClass("selected");
				jQuery("#rotator-item-large-" + evenemang.rotatorCurrent).removeClass("display-none");
				setTimeout("evenemang.rotatorauto()",parseInt(evenemang.rotateTime * 2));
			}
			
			evenemang.rotatorarrows();			
		}else{
			clearTimeout(evenemang.rotatorLoop);
			return false;
		}
	},
	
	rotatoritem: function(e) {
		evenemang.startRotator = null;
		var lastAnimation = parseInt(evenemang.rotatorArray.length - 3);		
		var elm = e.className.replace(/.*rotator-item-([\w-]+).*/, "$1");

		// remove all selected classes
		jQuery("#rotator-bottom .rotatorItem").removeClass("selected");
		jQuery("#rotator-top .rotatorItem").addClass("display-none");

		// add selected class on current item
		jQuery("#rotator-item-small-" + elm).addClass("selected");
		jQuery("#rotator-item-large-" + elm).removeClass("display-none");
		
		// add class that indicates direct click on current item
		jQuery("#rotator-item-small-" + elm).addClass("direct");

		// new current item in array
		evenemang.rotatorCurrent = parseInt(elm);
		evenemang.rotatorarrows();
		
		// clear timer animation
		evenemang.rotatoranimation();
	},
	
	rotatoranimation: function() {
		var image =document.getElementById("timer");
		var temp=image.getAttribute("src");
		image.setAttribute("src",temp);
    },
	
	rotatorarrows: function() {
		var rightArrow = jQuery("#rotator-bottom .scroll-right");
		var leftArrow = jQuery("#rotator-bottom .scroll-left");

		if (evenemang.rotatorCurrent > 0) {
			rightArrow.removeClass("display-none");
		}
		
		if (evenemang.rotatorCurrent == 0) {
			rightArrow.addClass("display-none");
		}
		
		if (evenemang.rotatorCurrent >= evenemang.rotatorArray.length-1) {
			leftArrow.addClass("display-none");
		}else{
			leftArrow.removeClass("display-none");
		}
		
		// hide the timer image
		jQuery("#timer").addClass("display-none");
		
		evenemang.rotatoranimation();
	},
	
	newstickerauto: function() {
		if (evenemang.startNewsticker) {
				
            var totalAmmount = evenemang.newstickerArray.length;
            var endLoop = parseInt(evenemang.newstickerArray.length - 1);

            jQuery("#newsticker > p").fadeOut(0, function () {

         });

         jQuery("#ticker-" + evenemang.newstickerCurrent).fadeIn(500, function () {
           	if (evenemang.newstickerIndex < evenemang.newstickerArray.length-1) {
            	evenemang.newstickerIndex++;
            	evenemang.newstickerCurrent = evenemang.newstickerArray[evenemang.newstickerIndex];
            }else{
		       	evenemang.newstickerIndex = 0;
	           	evenemang.newstickerCurrent = evenemang.newstickerArray[evenemang.newstickerIndex];
            }
            evenemang.newstickerLoop =	setTimeout("evenemang.newstickerauto()",evenemang.newstickerTime);
          });
          }
       },


	
	
	applySifrOnFavorites: function() {
		jQuery("#favoriteslist > li > a").removeClass("sIFR-replaced");
		sifrFavorites();
	},
		 
	
	// toggle visibility on element
	favorites: function(e,event) {
		var elm = e.className.replace(/.*elm-([\w-]+).*/, "$1");
		
		jQuery("#blockFavorites .event-group-container").addClass("display-none");
		jQuery("#favoriteslist > li").removeClass("selected");
		
		jQuery("#"+elm).removeClass("display-none");
		jQuery(e.parentNode).addClass("selected");
		
		evenemang.applySifrOnFavorites();
	},
	
	topmenu: function (e) {
		var elm = e.className.replace(/.*elm-([\w-]+).*/, "$1");
		var parent = e.parentNode;
		
		if (!jQuery("#"+elm).hasClass("open")) {
			jQuery("#"+elm).addClass("open");
			jQuery("#"+elm).fadeIn("slow");
			jQuery(parent).addClass("selected");
		}else{
			jQuery("#"+elm).removeClass("open");
			jQuery("#"+elm).fadeOut("slow");
			jQuery(parent).removeClass("selected");
		}
	},
	
	showExtraInfo: function (e) {
			var parent = e.parentNode;
			if(!jQuery(e).hasClass('extra-info-close')) {
				if (jQuery(parent).children(".overlay-extra-info").hasClass("display-none")) {
					jQuery(parent).children(".overlay-extra-info").removeClass("display-none");
				}else{
					jQuery(parent).children(".overlay-extra-info").addClass("display-none");
				}
			}
			else {
				var closeparent = e.parentNode.parentNode;
				jQuery(closeparent).addClass("display-none");
			}
			return false;
	},
	
	showAllInfo: function (e) {
			var parent = e.parentNode.parentNode.parentNode;
			var linkClicked = e.parentNode.parentNode;

			if (jQuery(parent).children("tr").hasClass("display-none")) {
					jQuery(parent).children("tr").removeClass("display-none");
					jQuery(linkClicked).addClass("display-none");
			}
			return false;
	}			
}

jQuery(document).ready(function(){
	evenemang.init();
});


