// JavaScript Document

//alert("Charge rules");

// Additional methods for Element added by SU, Couloir
Object.extend(Element, {
	getWidth: function(element) {
   	element = $(element);
   	return element.offsetWidth; 
	},
	setWidth: function(element,w) {
   	element = $(element);
    	element.style.width = w +"px";
	},
	setHeight: function(element,h) {
   	element = $(element);
    	element.style.height = h +"px";
	},
	setSrc: function(element,src) {
    	element = $(element);
    	element.src = src; 
	},
	setHref: function(element,href) {
    	element = $(element);
    	element.href = href; 
	},
	setInnerHTML: function(element,content) {
		element = $(element);
		element.innerHTML = content;
	}
});

Effect.Transitions.exponential = function(pos) {
  return 1-Math.pow(1-pos,2);
}

Effect.Transitions.slowstop = function(pos) {
  return 1-Math.pow(0.5,20*pos);
}

//var seriesHTMLCache = new Array();
var imagesListe = new Array();
var nbrImageListe = 0;
var currentImageIdx = -1;
var currentSerie = '';
var currentSerieIdx = 0;
var seriesListe = new Array;
var nbrSeriesListe = 0;

function showSeries( pPortfolio ) {
	
	var str = '';
	var folio = oFolios.getPortfolio(pPortfolio);
	var idx = 0;
	var firstSerie = '';
	
	seriesListe.lenght = 0;
	
	/*if( seriesHTMLCache[pPortfolio] != null ){
		str = seriesHTMLCache[pPortfolio];
		firstSerie = folio.series[0].name;
	}else*/{
	
		for( var sidx in folio.series ) { 
			
			var s = folio.series[sidx];
			if( typeof( s ) == "object") {
				
				str += '<img id="'+folio.name+'.'+ s.name +'" class="" onclick="prepareImages(\''+folio.name+'.'+ s.name +'\','+ idx +',0);" src="' + s.vignette_url + '" style="display:none;" onload="showVignette(\''+folio.name+'.'+ s.name+'\');">&nbsp;';
				
				seriesListe[idx] = folio.name+'.'+ s.name;
				
				if( idx == 0 ){
					firstSerie = s.name;
				}
				idx++;
			}
		}
		
		//seriesHTMLCache[pPortfolio] = str;
		
	}
	
	nbrSeriesListe = idx;
	
	if( nbrSeriesListe < 9 ){
			Element.setStyle('previousSerie', {visibility: 'hidden'});
			Element.setStyle('nextSerie', {visibility: 'hidden'});
	} else {
			Element.setStyle('previousSerie', {visibility: 'visible'});
			Element.setStyle('nextSerie', {visibility: 'visible'});
	}
							
	
	//serieListeCounter
	//new Element.setSrc( 'imagePrincipale', firstImage );
	//alert(str);
	new Element.setInnerHTML( 'seriesListe', str);
	
	currentSerie = '';
	currentSerieIdx = 0;
	
	prepareImages( pPortfolio+"."+firstSerie, currentSerieIdx, 0 );
	
}

function showVignette( pId ){
	//alert('merde id ' + pId);
	new Effect.Appear( pId, {duration:0.3});
}

function prepareImages( portDOTserie, serieIdx, selectImageIdx ){
	
	//alert('image index '+ selectImageIdx);
	//alert( 'Serie idx : '+ serieIdx + ' serie name : ' +  seriesListe[serieIdx]);
	
	portDOTserie = seriesListe[serieIdx];
	
	var strFolio = portDOTserie.substring( 0, portDOTserie.indexOf('.') );
	var strSerie = portDOTserie.substring( portDOTserie.indexOf('.')+1 );
	
	
	//alert( currentSerie.length );
	
	if( currentSerie.length != 0 ){
		Element.setStyle( currentSerie, { 'border-bottom' :'0px solid black'} );
	}
	Element.setStyle( portDOTserie, { 'border-bottom' :'3px solid orange'} );
	currentSerie = portDOTserie;
	//alert(  portDOTserie );
	
	//new Element.setInnerHTML( 'imagePrincipaleNavigation', 'prepare ' + strFolio + " " + strSerie);
	
	new Element.setInnerHTML( 'imagesCounter', printf("%02d/%02d", 0, 0) );
	
	var locFolio = oFolios.getPortfolio( strFolio );
	var locSerie = locFolio.getSerie( strSerie );
	
	
	nbrImageListe = locSerie.nbrImages;
	
	if( selectImageIdx == -1 ) currentImageIdx = nbrImageListe-1;
	else currentImageIdx = selectImageIdx;
	
	currentSerieIdx = serieIdx;
	
	imagesListe = locSerie.images;

	swapImage();
}

function swapImage(){
	new Element.setInnerHTML( 'imageInfo', "Loading ..." );
	new Effect.Fade('imagePrincipale', {duration:0.3, afterFinish : afterFadeImage } );
	
}

function  showImage(){
	if( currentImageIdx >= 0 ) {
		new Element.setInnerHTML( 'imageInfo', imagesListe[currentImageIdx].titre );
		new Element.setInnerHTML( 'imagesCounter', printf("%02d/%02d",  currentImageIdx+1, nbrImageListe) );
		new Effect.Appear('imagePrincipale', {duration:0.3 } );
	}

}

function afterFadeImage(){
	new Element.setSrc( 'imagePrincipale', imagesListe[currentImageIdx].rel_url );
	new Element.setWidth( 'imagePrincipale', imagesListe[currentImageIdx].width );
	new Element.setHeight( 'imagePrincipale', imagesListe[currentImageIdx].height );
}

function nextImage(){
	if( currentImageIdx == nbrImageListe - 1){
		
		if( currentSerieIdx  == nbrSeriesListe - 1 ){
			currentSerieIdx = 0;
		}else{
			currentSerieIdx++;
		}
		prepareImages( '', currentSerieIdx, 0 );
		//currentImageIdx = 0;
	} else {
		currentImageIdx++;
		swapImage();
	}
	
}

function previousImage(){
	if( currentImageIdx == 0){
		if( currentSerieIdx == 0) {
			currentSerieIdx= nbrSeriesListe - 1;
		}else{
			currentSerieIdx--;
		}
		prepareImages( '', currentSerieIdx, -1 );
	} else {
		currentImageIdx--;
		swapImage();
	}
}

var activeContent = 'containerImageAccueille';

function displayContent( contId ){
	//alert('bouton ' + contId );
	
	//new Element.setStyle('containerWait', {visibility:'visible'} );
	Element.setStyle(activeContent, {visibility:'hidden'});
	
	if( contId  == "homeImage" ) {
		Element.setStyle('containerImageAccueille', {visibility:''} );
		activeContent = 'containerImageAccueille';
		//new Element.setStyle('containerWait', {visibility:'hidden'} );
	}
	
	
	/*if( contId == "last" ){
		
		showSeries( contId );
		
		new Element.setStyle('containerSeriesEtImages', {visibility:''} );
		activeContent = 'containerSeriesEtImages';
		
		//new Element.setStyle('containerWait', {visibility:'hidden'} );
	}*/
	if( contId == "portrait" || contId == "concert" ){
		
		
		showSeries( contId );
		
		Element.setStyle('containerSeriesEtImages', {visibility:''} );
		activeContent = 'containerSeriesEtImages';
		//new Element.setStyle('containerWait', {visibility:'hidden'} );
	}
	
	
	
	if( contId == "contact" ){
		
		new Element.setStyle('containerContact', {visibility:''} );
		activeContent = 'containerContact';
		
	}

	//new Element.setStyle('containerWait', {visibility:'hidden'} );
	
}



var myrules = {
	'.imageButton' : function(el){
		el.onclick = function(  ){
			displayContent( el.id );
		};
	},
	'#suivante' : function(el){
		el.onclick = function(){
			
		};
	}
	
};

Behaviour.addLoadEvent(init);
Behaviour.register(myrules);
Behaviour.apply();
function init() {
	
	//alert("init");
	
	//new Element.setStyle('containerWait', {visibility:'hidden'} );
	new Element.setStyle('containerImageAccueille', {visibility:''});
	
	activeContent = 'containerImageAccueille';
	
	// preload images pour dreamweaver rollover images
	MM_preloadImages('images/last02.jpg','images/portrait02.jpg','images/concert02.jpg','images/contact02.jpg', 'images/gauche_active.jpg','images/droite_active.jpg');
	
	//new Element.setStyle('globalWait', {visibility:'hidden'} );
	
}

/* Function printf(format_string,arguments...)
 * Javascript emulation of the C printf function (modifiers and argument types 
 *    "p" and "n" are not supported due to language restrictions)
 *
 * Copyright 2003 K&L Productions. All rights reserved
 * http://www.klproductions.com 
 *
 * Terms of use: This function can be used free of charge IF this header is not
 *               modified and remains with the function code.
 * 
 * Legal: Use this code at your own risk. K&L Productions assumes NO resposibility
 *        for anything.
 ********************************************************************************/
function printf(fstring)
  { var pad = function(str,ch,len)
      { var ps='';
        for(var i=0; i<Math.abs(len); i++) ps+=ch;
        return len>0?str+ps:ps+str;
      }
    var processFlags = function(flags,width,rs,arg)
      { var pn = function(flags,arg,rs)
          { if(arg>=0)
              { if(flags.indexOf(' ')>=0) rs = ' ' + rs;
                else if(flags.indexOf('+')>=0) rs = '+' + rs;
              }
            else
                rs = '-' + rs;
            return rs;
          }
        var iWidth = parseInt(width,10);
        if(width.charAt(0) == '0')
          { var ec=0;
            if(flags.indexOf(' ')>=0 || flags.indexOf('+')>=0) ec++;
            if(rs.length<(iWidth-ec)) rs = pad(rs,'0',rs.length-(iWidth-ec));
            return pn(flags,arg,rs);
          }
        rs = pn(flags,arg,rs);
        if(rs.length<iWidth)
          { if(flags.indexOf('-')<0) rs = pad(rs,' ',rs.length-iWidth);
            else rs = pad(rs,' ',iWidth - rs.length);
          }    
        return rs;
      }
    var converters = new Array();
    converters['c'] = function(flags,width,precision,arg)
      { if(typeof(arg) == 'number') return String.fromCharCode(arg);
        if(typeof(arg) == 'string') return arg.charAt(0);
        return '';
      }
    converters['d'] = function(flags,width,precision,arg)
      { return converters['i'](flags,width,precision,arg); 
      }
    converters['u'] = function(flags,width,precision,arg)
      { return converters['i'](flags,width,precision,Math.abs(arg)); 
      }
    converters['i'] =  function(flags,width,precision,arg)
      { var iPrecision=parseInt(precision);
        var rs = ((Math.abs(arg)).toString().split('.'))[0];
        if(rs.length<iPrecision) rs=pad(rs,' ',iPrecision - rs.length);
        return processFlags(flags,width,rs,arg); 
      }
    converters['E'] = function(flags,width,precision,arg) 
      { return (converters['e'](flags,width,precision,arg)).toUpperCase();
      }
    converters['e'] =  function(flags,width,precision,arg)
      { iPrecision = parseInt(precision);
        if(isNaN(iPrecision)) iPrecision = 6;
        rs = (Math.abs(arg)).toExponential(iPrecision);
        if(rs.indexOf('.')<0 && flags.indexOf('#')>=0) rs = rs.replace(/^(.*)(e.*)$/,'$1.$2');
        return processFlags(flags,width,rs,arg);        
      }
    converters['f'] = function(flags,width,precision,arg)
      { iPrecision = parseInt(precision);
        if(isNaN(iPrecision)) iPrecision = 6;
        rs = (Math.abs(arg)).toFixed(iPrecision);
        if(rs.indexOf('.')<0 && flags.indexOf('#')>=0) rs = rs + '.';
        return processFlags(flags,width,rs,arg);
      }
    converters['G'] = function(flags,width,precision,arg)
      { return (converters['g'](flags,width,precision,arg)).toUpperCase();
      }
    converters['g'] = function(flags,width,precision,arg)
      { iPrecision = parseInt(precision);
        absArg = Math.abs(arg);
        rse = absArg.toExponential();
        rsf = absArg.toFixed(6);
        if(!isNaN(iPrecision))
          { rsep = absArg.toExponential(iPrecision);
            rse = rsep.length < rse.length ? rsep : rse;
            rsfp = absArg.toFixed(iPrecision);
            rsf = rsfp.length < rsf.length ? rsfp : rsf;
          }
        if(rse.indexOf('.')<0 && flags.indexOf('#')>=0) rse = rse.replace(/^(.*)(e.*)$/,'$1.$2');
        if(rsf.indexOf('.')<0 && flags.indexOf('#')>=0) rsf = rsf + '.';
        rs = rse.length<rsf.length ? rse : rsf;
        return processFlags(flags,width,rs,arg);        
      }  
    converters['o'] = function(flags,width,precision,arg)
      { var iPrecision=parseInt(precision);
        var rs = Math.round(Math.abs(arg)).toString(8);
        if(rs.length<iPrecision) rs=pad(rs,' ',iPrecision - rs.length);
        if(flags.indexOf('#')>=0) rs='0'+rs;
        return processFlags(flags,width,rs,arg); 
      }
    converters['X'] = function(flags,width,precision,arg)
      { return (converters['x'](flags,width,precision,arg)).toUpperCase();
      }
    converters['x'] = function(flags,width,precision,arg)
      { var iPrecision=parseInt(precision);
        arg = Math.abs(arg);
        var rs = Math.round(arg).toString(16);
        if(rs.length<iPrecision) rs=pad(rs,' ',iPrecision - rs.length);
        if(flags.indexOf('#')>=0) rs='0x'+rs;
        return processFlags(flags,width,rs,arg); 
      }
    converters['s'] = function(flags,width,precision,arg)
      { var iPrecision=parseInt(precision);
        var rs = arg;
        if(rs.length > iPrecision) rs = rs.substring(0,iPrecision);
        return processFlags(flags,width,rs,0);
      }
    farr = fstring.split('%');
    retstr = farr[0];
    fpRE = /^([-+ #]*)(\d*)\.?(\d*)([cdieEfFgGosuxX])(.*)$/;
    for(var i=1; i<farr.length; i++)
      { fps=fpRE.exec(farr[i]);
        if(!fps) continue;
        if(arguments[i]!=null) retstr+=converters[fps[4]](fps[1],fps[2],fps[3],arguments[i]);
        retstr += fps[5];
      }
    return retstr;
  }
/* Function printf() END */