/**
 * $Id: javascript.js 209 2010-04-07 20:03:56Z matthieu $
 */
 

//HACK POUR OPERA: mise a jour par DOM pour rafraichir l'affichage
var Ajax = Ajax.extend({

	onComplete: function(){
		if (this.options.update) {

			var toUpdateNode=$(this.options.update);
			var nextNode=toUpdateNode.nextSibling;
			toUpdateNode.empty().setHTML(this.response.text);

			var toUpdateParentNode=toUpdateNode.parentNode;
			toUpdateParentNode.removeChild(toUpdateNode);
			toUpdateParentNode.insertBefore(toUpdateNode, nextNode);
			
		}
		if (this.options.evalScripts || this.options.evalResponse) this.evalScripts();
		this.fireEvent('onComplete', [this.response.text, this.response.xml], 20);
	}

});

var pageScroll;
var scrollBarFX;

function init(section,action,id)
{
	
	//scroll menu
	pageScroll=new Fx.Scroll('fullspan', {transition: Fx.Transitions.linear, duration: 200, fps:50});
	scrollBarFX = new Fx.Style('drag', 'left', {transition: Fx.Transitions.linear, duration: 200, fps:50});
	$('drag').makeDraggable({container:'scrollbar', onDrag: scrollFullspan, onComplete: scrollReposition});
	$('scrollbar').addEvent('mousedown', scrollbarClicked);


	//accordeon FAQ
	var acc = new Accordion('#faqlist h4', '#faqlist p', {
        show: -1,
        alwaysHide: true,
        opacity: false,
        activeElement: false,

        onActive: function(toggler,element) {
        	this.activeElement=toggler;
        },
        onComplete: function(param, param2) {
            //scroll to FAQ article
            faqScroll.toElement(this.activeElement);
        }

    }, 
    $('faqlist') );
    
    if (section) openSection(section);
    if (section && action) { 
		ajaxLoad(section+'/'+action+'/'+id,section);
	}

}


function showTimer()
{
	$('ajaxWait').setStyle('display','inline');
}

function hideTimer()
{
	$('ajaxWait').setStyle('display','none');
}


function ajaxLoad(url,destElmt)
{
	showTimer()

	new Ajax('ajax/'+url, { 
		method:'get', 
		update:$(destElmt), 
		evalScripts: true,
		onComplete: hideTimer
	}).request();

	return false;
}


// ============= PAGE SCROLL ===========

//Scroll to a section
function openSection(section)
{
	//the actual horizontal page scroll
	pageScroll.toElement(section);
	
	//current menu element highlighting
	$ES('a','menu').each(function(item) {
		if (item.id == section+'menu') item.addClass('selected');
		else item.removeClass('selected');
	});

	//then, move the scrollbar
	var pageLeft= $('page').getLeft();
	var curPos=$('drag').getLeft() - pageLeft;
	var newPos=($(section).getLeft() - pageLeft) *800/5000;
	scrollBarFX.start(curPos,newPos);

	return false;
} 


//scrollbar drag callback
function scrollFullspan(elmt)
{
	//scrolls the page
	var scrollPos=(elmt.getLeft() - $('page').getLeft())*5000/800;
	$('fullspan').scrollTo(scrollPos);
}


//reposition to nearer section after drag
function scrollReposition(drag)
{
	var scrollPos=$('fullspan').scrollLeft;

	//go to the nearest section
	if (scrollPos >= 3500)  openSection('faq');
	else if (scrollPos >= 2500)  openSection('links');
	else if (scrollPos >= 1500)  openSection('photos');
	else if (scrollPos >= 500)  openSection('releases');
	else openSection('news');

}


//reposition to nearer section after scrollbar click 
function scrollbarClicked(evt)
{
	var event = new Event(evt);
	var scrollPos = event.page.x -  $('page').getLeft();

	//go to the nearest section
	if (scrollPos >= 640)  openSection('faq');
	else if (scrollPos >= 480)  openSection('links');
	else if (scrollPos >= 320)  openSection('photos');
	else if (scrollPos >= 160)  openSection('releases');
	else openSection('news');
}



// ========== VERTICAL SCROLLS ==============

function initVScroll(elmt, linksElmt)
{
	$(linksElmt).setStyle('display', 'inline');
	var scroll=new Fx.Scroll(elmt);
	var links=$(linksElmt).getElements('a');
	links[0].addEvent('click', function(){
		scrollOffset(scroll, elmt, -1);
	});
	links[1].addEvent('click', function(){
		scrollOffset(scroll, elmt, 1);
	});
	return scroll;
}



//verical scroll inside sections
function scrollOffset(scrollfx, elmt, way)
{
	var scrollData=$(elmt).getSize();
	var currentPos = scrollData.scroll.y;
	var maxPos = scrollData.scrollSize.y - scrollData.size.y ;

	currentPos += (scrollData.size.y -10) * way;
	if (currentPos < 0)  currentPos=0;
	if (currentPos > maxPos) currentPos=maxPos;
	scrollfx.scrollTo(0,currentPos);
	return false;
}




// ============= FLASH PLAYER ===========
var playerLoaded=false;

function playFile(url, titre)
{
	if (!playerLoaded) playerLoaded=loadPlayer(url,titre);
	else {
		$("mpl").loadFile({file:url, title:titre}); 
		//$("mpl").sendEvent('playpause');
	}

	return false;
}

function loadPlayer(url, titre)
{
	var so = new SWFObject('view/flash/mediaplayer.swf','mpl','150','37','7');
	so.addParam('allowfullscreen','false');
	so.addVariable('enablejs','true');
	so.addVariable('javascriptid','mpl');
	so.addVariable('displayheight','0');
	so.addVariable('file',escape(url));
	so.addVariable('title',escape(titre));
	so.addVariable('autostart','true');
	so.addVariable('showdigits','false');
	so.write('player');
	return true;
}



function popup(link,w,h)
{
	return !window.open(link.href, "popup", "menubar=no, status=no, scrollbars=no, menubar=no, width="+w+", height="+h )
}


