var prApplication = {

	load: function() {
		bodyId = document.body.id;

		//removes module_ from id
		this.module = bodyId.substring(7);

		prApplication.applicationInit();
		if(prApplication[this.module + 'Load']) {
			prApplication[this.module + 'Load']();
		}
	},


	applicationInit: function() {
	},

	//Loaders for modules {{
	homeLoad: function() {

		//retrive page width
		pageWidth = $('content').offsetWidth-6;

		//positionate pages
		pages = $$('.page');
		pageIndex = 1;
		$A(pages).each(
			function(page) {
				if (!page.hasClassName('primary')) {
					page.setStyle({'left': (pageWidth*pageIndex)+'px', 'display':'block'});
					pageIndex++;
				}
			}
		);

		//Assign effect to the menus		
		menuItems = $$('ul#menu li');
		pageIndex = 1;
		$A(menuItems).each(
			function(currentItem) {
				currentItem.pagePosition = pageIndex;
				Event.observe(currentItem, "click", function(e){
					prApplication.goToPageIndex(currentItem.pagePosition);
				});

				pageIndex++;
			}
		);

		//Assigning slider for media page
		slideshowWidth = $('slideshow').offsetWidth;
		mediaItems = $$('#slideshow ul li');
		itemIndex = 0;
		$A(mediaItems).each(
			function(currentItem) {
				currentItem.setStyle({'left': (slideshowWidth*itemIndex)+'px', 'display':'block'});
				itemIndex++;
			}
		);
		$('slideshow').currentSlide = 1;

		//Hiding media descriptions
		mediaDescriptionss = $$('#media .media_description');
		itemIndex = 1;
		$A(mediaDescriptionss).each(
			function(currentItem) {
				if (itemIndex>1) {
					currentItem.setStyle({'display':'none'});
				}
				itemIndex++;
			}
		);


		//Activating media scrollers
		Event.observe($('arrow_left'), "click", function(e){
			prApplication.goToSlideIndex($('slideshow').currentSlide-1);
		});

		Event.observe($('arrow_right'), "click", function(e){
			prApplication.goToSlideIndex($('slideshow').currentSlide+1);
		});


        //prApplication.shuffleNames();

		var itemIndex=0;
        $A($$('#names div')).each(
        	function(item) {        		if (itemIndex==0) {					//item.setStyle({'display': 'block'});
					Effect.Appear (item, { duration:1, from:0.0, to:1.0 });        		} else {	        		item.setStyle({'display': 'none'});
	       		}
        		itemIndex++;
        	}
        );
        this.currentNameIndex = 0;
        setInterval('prApplication.shuffleNames()', 2000);

		//prApplication.goToPageIndex(4);
	},

	shuffleNames: function() {
		if (!this.currentNameIndex) {			this.currentNameIndex = 0;	    }
		var slides = $A($$('#names div'));
		var nbSlides = slides.length;

		if (slides[this.currentNameIndex]) {
			Effect.Fade(slides[this.currentNameIndex], { duration:2, from:1.0, to:0.0 });
		}
		this.currentNameIndex++;		if (this.currentNameIndex>=nbSlides) {			this.currentNameIndex = 0;	    }



		var currentName = slides[this.currentNameIndex];
		//positionate names
		var maxWidth = document.width-100;
		var maxHeight = document.height-100;

		
		var contentWidth = $('content').offsetWidth+50;
		var contentHeight = $('content').offsetHeight+50;
		var contentLeft = $('content').offsetLeft;
		var contentTop = $('content').offsetTop;
		
		/*

		var blockRange = Array();
		blockRange[0] = Array(contentLeft+50, contentTop+50, contentLeft+contentWidth-100, contentTop+contentHeight-50);
		blockRange[1] = Array(contentLeft+50, contentTop+50, contentLeft+contentWidth-100, contentTop+contentHeight-50);
		blockRange[2] = Array(contentLeft+50, contentTop+50, contentLeft+contentWidth-100, contentTop+contentHeight-50);
		blockRange[3] = Array(contentLeft+50, contentTop+50, contentLeft+contentWidth-100, contentTop+contentHeight-50);


				//Random to 1 of 4 blocks (left, top, right, bottom)
				var blockIndex = Math.floor(Math.random() * (3+1));

				leftPos = Math.floor(Math.random( ) * (blockRange[blockIndex][2]-blockRange[blockIndex][0]+1))+blockRange[blockIndex][0];
				topPos = Math.floor(Math.random( ) * (blockRange[blockIndex][3]-blockRange[blockIndex][1]+1))+blockRange[blockIndex][1];

				leftPos -= currentName.offsetWidth;
				topPos -= currentName.offsetHeight;

				if (topPos>maxHeight) {
				  topPos = maxHeight-30;
				}

				if (topPos<0) {
					topPos = 0;
				}

				if (leftPos<0) {
	              leftPos = 0;
				}

				if (blockIndex==2) {
					if (leftPos<blockRange[blockIndex][0]) {
						leftPos = blockRange[blockIndex][0];
					}
				}
		*/
		
		leftPos = contentLeft+100 + Math.floor(Math.random( ) * 400);
		topPos = contentTop + Math.floor(Math.random( ) * 30);

		currentName.setStyle({'position':'absolute', 'z-index':'2000', 'left':leftPos+'px', 'top':topPos+'px'});

		Effect.Appear (currentName, { duration:1, from:0.0, to:1.0 });


	},

	goToPageIndex: function(pageIndex) {


		//retrive page width
		pageWidth = $('content').offsetWidth-6;

		slidingContent = $('sliding_content');
		new Effect.Morph(slidingContent,{
		    style:{
		    	left: '-'+(pageWidth*(pageIndex-1))+'px'
			},
		  	duration: 0.5
		});

		//regulars
		if (pageIndex==3) {
			this.intervalId = setInterval('prApplication.swapFade()', 3000);
			slideIndex = 1;
			fadeSlides = $$('#fading li');
			$A(fadeSlides).each(
				function(currentSlide) {
					if (slideIndex>1) {
						currentSlide.setStyle({'display':'none'});
					}
					slideIndex++;
				}
			);


			$('fading').currentSlideIndex = 1;
		}
		else{
			clearInterval(this.intervalId);
		}


		prApplication.shuffleNames();
		Effect.Appear ($('names'), { duration:1, from:0.0, to:1.0 });

	},

	swapFade: function() {
		fadeSlides = $$('#fading li');
		nbSlides = fadeSlides.length;
		slideId = $('fading').currentSlideIndex-1;
		nextSlideId = slideId+1;
		if (nextSlideId==nbSlides) {
			nextSlideId = 0;
		}

		currentSlide = $A(fadeSlides)[slideId];
		Effect.Fade   (currentSlide, { duration:1, from:1.0, to:0.0 });
		Effect.Appear ($A(fadeSlides)[nextSlideId], { duration:1, from:0.0, to:1.0 });


		$('fading').currentSlideIndex = nextSlideId+1;
	},

	goToSlideIndex: function(slideIndex) {

		nbSlides = $$('#slideshow ul li').length;
		if (slideIndex>nbSlides) {
			slideIndex = 1;
		}
		if (slideIndex<1) {
			slideIndex = nbSlides;
		}


		slideshowWidth = $('slideshow').offsetWidth;

		slidingContent = $$('#slideshow ul')[0];
		new Effect.Morph(slidingContent,{
		    style:{
		    	left: '-'+(slideshowWidth*(slideIndex-1))+'px'
			},
		  	duration: 0.5
		});

		//crossfading descriptions
		mediaDescriptions = $$('#media .media_description');


		Effect.Fade   ($A(mediaDescriptions)[$('slideshow').currentSlide-1], { duration:1, from:1.0, to:0.0 });
		Effect.Appear ($A(mediaDescriptions)[slideIndex-1], { duration:1, from:0.0, to:1.0 });



		$('slideshow').currentSlide = slideIndex;
	},


	//}} Loaders for modules

	destroy: function(e) {
  	}

};

Event.observe(window,'load',prApplication.load);
