Event.observe(window, 'load', initLoad, false);
Event.observe(window, 'load', myrtille_app, false);
Event.observe(window, 'load', initHelpBox, false);
//Event.observe(window, 'unload', initUnLoad, false);

var myrtille = Class.create();

myrtille.prototype = {

	initialize: function(ctrl) {
		this.content = ctrl.getAttribute('href');
		this.ajax = ctrl.getAttribute('page');
		if(ctrl.getAttribute('jscript')) {
      this.js_exec = ctrl.getAttribute('jscript');
		} else {
      this.js_exec = null;
    }
		Event.observe(ctrl, 'click', this.loadAjax.bindAsEventListener(this), false);
		//ctrl.onclick = this.loadAjax.bindAsEventListener(this);
		ctrl.onclick = function(){return false;};
		ctrl.mousehover = function(){return false;};
	},
	
	// Turn everything on - mainly the IE fixes
	loadAjax: function(evt){
			//alert('content :' + evt.types);
      
      if(this.js_exec) {
        eval(this.js_exec);
      }
      var myAjax = new Ajax.Request(
        this.content,
        {method: 'get', parameters: {'isajax' : 'true'}, onLoading: this.loading.bindAsEventListener(this), onComplete: this.display.bindAsEventListener(this)}
		);
	},
  
  display: function(response) {
		$('loading-myrtille-mp').remove();
		$(this.ajax).innerHTML = response.responseText;	
		this.actions();			
	},
  actions: function(){
		
		myrtille_elem($(this.ajax));
   /* ajaxlkunder = $(this.ajax).getElementsByClassName('mp-ajax');
		for(i = 0; i < ajaxlkunder.length; i++) {
      myrclick = new myrtille(ajaxlkunder[i]);
	  }*/
	},
  loading: function() {
		new Insertion.Before('board','<div id="loading-myrtille-mp"><img src="http://www.myrtillepass.net/api/ajax-loader.gif"/> Chargement</div>');
  	if (document.documentElement && document.documentElement.scrollTop){
			yPos = document.documentElement.scrollTop; 
		} else if (document.body) {
			yPos = document.body.scrollTop;
		}
		$('loading-myrtille-mp').setTop = yPos + 50;
	}
}



var params = new Array();
var tparams = new Array();
var params_more = new Array();
var onchoice = new Array();;
var id_autocompleter = 1;
var myrtille_autocompletion = Class.create();

myrtille_autocompletion.prototype = {

	initialize: function(ctrl) {
		this.content = ctrl.getAttribute('href');
		this.ajax = ctrl.getAttribute('page');		
		this.name = ctrl.getAttribute('name');		
		this.id = ctrl.getAttribute('id');
		params[id_autocompleter] = '';
    onchoice[id_autocompleter] = '';
		if(ctrl.getAttribute('onchoice')) {
      onchoice[id_autocompleter] = ctrl.getAttribute('onchoice');
    }
    urlquery = this.content.split("?");
    if(urlquery[1]) {
      rnurlterms = urlquery[1].split("&");
      rnurlterms.each(function(pair) {
        if(pair.indexOf('params=',0) != -1) {
         params[id_autocompleter] = pair.substring(7,pair.length);
        }
      });
    }
    var id_autocomplete = 'autocomplete_' + this.id;
    var id_autocompletew = 'myrtilleacwait_' + this.id;
    new Insertion.After(this.id, '<span id="' + id_autocompletew + '" style="display: none;">Chargement...</span><div id="' + id_autocomplete + '" class="myrtille-autocomplete"></div>');
    if(params[id_autocompleter].length > 0) {
      new Ajax.Autocompleter(this.id, id_autocomplete, this.content, {paramName: "value", moreParams : params[id_autocompleter], indicator : id_autocompletew, minChars: 1,afterUpdateElement: 
        function(input_txt,input_dom) { 
          var ref = input_dom.getAttribute('ref');
          if(onchoice[ref]) {
            $(onchoice[ref]).value = input_dom.getAttribute('id');
          }
        }
      });
    } else {
      new Ajax.Autocompleter(this.id, id_autocomplete , this.content, {paramName: "value", minChars: 1, afterUpdateElement: 
        function(input_txt,input_dom) {
          var ref = input_dom.getAttribute('ref');
          if(onchoice[ref]) {
            $(onchoice[ref]).value = input_dom.getAttribute('id');
          }
        }
      });
    }
    id_autocompleter++;
	}
}





var myrtille_form = Class.create();

myrtille_form.prototype = {

	initialize: function(frm) {
		this.content = frm.getAttribute('action');
		this.ajax = frm.getAttribute('page');	
		this.method = frm.getAttribute('method');
		this.formid = frm.getAttribute('id');
		if(frm.getAttribute('jscript')) {
      this.js_exec = frm.getAttribute('jscript');
		} else {
      this.js_exec = null;
    }
    Event.observe(frm, 'submit', this.loadAjax.bindAsEventListener(this), false);
		//frm.submit = this.loadAjax.bindAsEventListener(this);
		frm.onsubmit = function(){return false;};
	},
	
	// Turn everything on - mainly the IE fixes
	loadAjax: function(evt){
			//alert('submit :' + evt.types);
			var tinymce = '';
      if($('mp-tiny-mce')) {
        //$('mp-tiny-mce').value = tinyMCE.getContent().replace(/\+/g, "&#43");
      }
      var myAjax = new Ajax.Request(
        this.content + '?isajax=true',
        {method: this.method, parameters: $(this.formid).serialize(true), onLoading: this.loading.bindAsEventListener(this), onComplete: this.display.bindAsEventListener(this)}
		);
	},
  
  display: function(response){
		$(this.ajax).innerHTML = response.responseText;	
		if(this.js_exec) {
      eval(this.js_exec);
    }
  	this.actions();
		$('loading-myrtille-mp').remove();
	},
  actions: function(){
		myrtille_elem($(this.ajax));
		
    /*ajaxlkunder = $(this.ajax).getElementsByClassName('mp-ajax-form');
		for(i = 0; i < ajaxlkunder.length; i++) {
      myrfrm = new myrtille_form(ajaxlkunder[i]);
	  }*/
	},
  loading: function() {
		new Insertion.Before('container','<div id="loading-myrtille-mp"><img src="http://www.myrtillepass.net/api/ajax-loader.gif"/> Chargement</div>');
  	if (document.documentElement && document.documentElement.scrollTop){
			yPos = document.documentElement.scrollTop; 
		} else if (document.body) {
			yPos = document.body.scrollTop;
		}
		$('loading-myrtille-mp').setTop = yPos + 50;
	}
}



var myrtille_blind = Class.create();

myrtille_blind.prototype = {

	initialize: function(ctrl) {
		this.page = ctrl.getAttribute('page');
    
		Event.observe(ctrl, 'click', this.blinddown.bindAsEventListener(this), false);
		//ctrl.onclick = this.loadAjax.bindAsEventListener(this);
		ctrl.onclick = function(){return false;};
	},
	
	// Turn everything on - mainly the IE fixes
	blinddown: function(evt){
  	var ajaxbd = document.getElementsByClassName('mp-blind');
  	for(var t = 0; t < ajaxbd.length; t++) {
  	   var bu = ajaxbd[t].getAttribute('page');
  	   if(this.page != bu) {
        Effect.BlindUp(bu);
       }
  	}
    Effect.BlindDown(this.page, {duration:0.5});
	},
  blindup: function(){
      Effect.BlindDown(this.page, {duration:1});
	}
	
}
var myrblind = new Array();
function myrtille_app() {
	ajaxlk = document.getElementsByClassName('mp-ajax');
	for(i = 0; i < ajaxlk.length; i++) {
		if(!isset(init_myrtille_ajax[ajaxlk[i].getAttribute('id')])) {
    	myrclick = new myrtille(ajaxlk[i]);
    }
	}
	ajaxfrm = document.getElementsByClassName('mp-ajax-form');
	for(j = 0; j < ajaxfrm.length; j++) {
    myrfrm = new myrtille_form(ajaxfrm[j]);
	}
  ajaxac = document.getElementsByClassName('mp-autocompletion');
	for(j = 0; j < ajaxac.length; j++) {
    myrac = new myrtille_autocompletion(ajaxac[j]);
	}
  ajaxhlp = document.getElementsByClassName('mp-help');
	for(j = 0; j < ajaxhlp.length; j++) {
    myrhtlp = new myrtille_help(ajaxhlp[j]);
	}
	ajaxab = document.getElementsByClassName('mp-album');
  if(ajaxab.length > 0) {
    myr_album_box = new myrtille_album(ajaxab[0]);
  }
	ajaxbd = document.getElementsByClassName('mp-blind');
	for(i = 0; i < ajaxbd.length; i++) {
    myrblind[i] = new myrtille_blind(ajaxbd[i]);
	}
}
var TinyInstance = 1;
function myrtille_elem(elem){
  //alert(elem.innerHTML);
	lbAuto = $('autoclose');
	if(lbAuto) {
	  //alert('ok');
    objtmp.timer(1000);
  } 
  lbActions = elem.getElementsByClassName('lb-close');
	for(i = 0; i < lbActions.length; i++) {
		Event.observe(lbActions[i], 'click', objtmp.deactivate.bindAsEventListener(objtmp), false);
		lbActions[i].onclick = function(){return false;};
	}
  
  ajaxlk = elem.getElementsByClassName('mp-ajax');
	for(i = 0; i < ajaxlk.length; i++) {
    myrclick = new myrtille(ajaxlk[i]);
	}
	ajaxfrm = elem.getElementsByClassName('mp-ajax-form');
	for(j = 0; j < ajaxfrm.length; j++) {
    myrfrm = new myrtille_form(ajaxfrm[j]);
	}
  ajaxac = document.getElementsByClassName('mp-autocompletion');
	for(j = 0; j < ajaxac.length; j++) {
    myrac = new myrtille_autocompletion(ajaxac[j]);
	}
	ajaxhlp = document.getElementsByClassName('mp-help');
	for(j = 0; j < ajaxhlp.length; j++) {
    myrhtlp = new myrtille_help(ajaxhlp[j]);
	}
	ajaxab = document.getElementsByClassName('mp-album');
  if(ajaxab.length > 0) {
    myr_album_box = new myrtille_album(ajaxab[0]);
  }
	ajaxbd = document.getElementsByClassName('mp-blind');
	for(i = 0; i < ajaxbd.length; i++) {
    myrblind[i] = new myrtille_blind(ajaxbd[i]);
	}
  lbox = elem.getElementsByClassName('lbOn');
	
	for(i = 0; i < lbox.length; i++) {
    valid = new lightbox(lbox[i]);
	}
	
  tmce = $('mp-tiny-mce');
  if(tmce) {
    elements = tinyMCE.getParam('elements', '', true, ',');
    //alert(elements);
		for (i=0; i<elements.length; i++) {
			element = tinyMCE._getElementById(elements[i]);
			//alert(element);
			trigger = element ? element.getAttribute(tinyMCE.settings.textarea_trigger) : "";
      
			var selector = tinyMCE.getParam("editor_selector");
			var deselector = tinyMCE.getParam("editor_deselector");
			if (new RegExp('\\b' + deselector + '\\b').test(tinyMCE.getAttrib(element, "class"))) {
        //alert('reg ok');
        continue;
      }

			if (trigger == "false") {
				
        //alert('trigger ok');
        continue;
      }
      
			if ((tinyMCE.settings.ask || tinyMCE.settings.convert_on_click) && element) {
				elementRefAr[elementRefAr.length] = element;
				
        //alert('settings ok');
				continue;
			}

			if (element) {
			 //alert('add ok');
				tinyMCE.addMCEControl(element, elements[i]);
			}
		}
    // Global instances
    //eval('var TinyMCE' + TinyInstance + ' = TinyMCE_Engine;');
    //eval('var tinyMCE' + TinyInstance + ' = new TinyMCE_Engine();');
    //eval('var tinyMCELang' + TinyInstance + ' = {};');
    //eval('tinyMCE' + TinyInstance + '.init({theme : "advanced",mode: "exact",elements : "mp-tiny-mce",theme_advanced_toolbar_location : "top",theme_advanced_buttons1 : "bold,italic,underline,strikethrough,separator," + "justifyleft,justifycenter,justifyright,justifyfull,formatselect," + "bullist,numlist,outdent,indent", theme_advanced_buttons2 : "link,unlink,anchor,image,separator," +"undo,redo,cleanup,code,separator,sub,sup,charmap", theme_advanced_buttons3 : "", height:"350px", width:"600px" });');
  }
}

/** help **/


var myrtille_help = Class.create();

myrtille_help.prototype = {

	initialize: function(ctrl) {
		this.help = ctrl.getAttribute('help');
		this.href = ctrl.getAttribute('href');
		this.left = ctrl.offsetLeft + $('container').offsetLeft + 10 + 'px';
		this.top = ctrl.offsetTop +  $('container').offsetTop + 20 + 'px';
		Event.observe(ctrl, 'mouseover', this.loadAjax.bindAsEventListener(this), false);
		Event.observe(ctrl, 'mouseout', this.closeAjax.bindAsEventListener(this), false);
		ctrl.onclick = function(){return false;};
	},
	
	// Turn everything on - mainly the IE fixes
	loadAjax: function(evt){
      $('helpbox').style.left = this.left; 
      $('helpbox').style.top = this.top;
      var myAjax = new Ajax.Request(
        this.href ,
        {method: 'get', parameters: {'help' : this.help}, onComplete: this.display.bindAsEventListener(this)}
		);
	},
  
  display: function(response){
		$('helpbox').innerHTML = response.responseText;	
		new Effect.Opacity('helpbox',
    { duration: 0.5, 
      transition: Effect.Transitions.linear, 
      from: 0.0, to: 1.0,beforeStart: function () {
        $('helpbox').style.display = 'block';
      }
    });		
	},
	
	closeAjax : function(evt) {
    new Effect.Opacity('helpbox',
    { duration: 0.5, 
      transition: Effect.Transitions.linear, 
      from: 1.0, to: 0.0,afterFinish: function () {
        $('helpbox').style.display = 'none';
        } });
   }  
}
function initHelpBox() {
  helpbox = '<div id="helpbox"></div>';
  new Insertion.After('container',helpbox);
}

var activeImage;
var imgPreloader;
var imageArray = new Array();

var myrtille_album = Class.create();

myrtille_album.prototype = {

	initialize: function(ctrl_album) {
	  this.id = ctrl_album.getAttribute('id');
	  //this.src = ctrl_album.getAttribute('src');
    //albumbox = '<div id="album_show"><img src="' + this.src + '" id="album_show_image" title="" class="photo"/></div><div id="album_move"><a href="#" id="prevLink"><<</a>&nbsp;&nbsp;<a href="#" id="nextLink">>></a></div>';
    //new Insertion.After(this.id,albumbox);
    imgx = ctrl_album.getElementsByClassName('album_image_a');
    imageArray.empty();
    for(var i = 0; i < imgx.length; i++) {
      imageArray.push(new Array(imgx[i].getAttribute('href'), imgx[i].getAttribute('title')));
    }
    Element.hide(this.id);
    this.active = false;
    activeImage = 0;
    this.changeImage(0); 
	},
  changeImage: function(imageNum) {	
		
		activeImage = imageNum;	// update global var
		
		imgPreloader = new Image();
		 
		// alert(imageArray[activeImage][0]);
		// once image is preloaded, resize image container
		imgPreloader.onload=function(){
			Element.setSrc('album_show_image', imageArray[activeImage][0]);
			
			imgPreloader.onload=function(){};	//	clear onLoad, IE behaves irratically with animated gifs otherwise 
		}
		if(this.active) {
      new Effect.Opacity('album_show_image',{ duration: 0.8, 
        transition: Effect.Transitions.linear, 
        from: 0.1, to: 1.0 });
      /*new Effect.Appear('album_show_image');*/
  	} else {
      this.active = true;
    }	
		imgPreloader.src = imageArray[activeImage][0];
    this.updateNum();
		this.updateNav();
	},
	updateNav: function() {	

		// if not first image in set, display prev image button
		if(activeImage != 0){
			document.getElementById('prevLink').onclick = function() {
        myr_album_box.changeImage(activeImage - 1); return false;
			}
		} 
		
		// if not last image in set, display next image button
		if(activeImage != (imageArray.length - 1)){
			document.getElementById('nextLink').onclick = function() {
				myr_album_box.changeImage(activeImage + 1); return false;
			}
		}
		
    if(activeImage == (imageArray.length - 1)){
      document.getElementById('nextLink').onclick = function() {
				myr_album_box.changeImage(0); return false;
			}
    }
    
    if(activeImage == 0){
			document.getElementById('prevLink').onclick = function() {
				myr_album_box.changeImage((imageArray.length - 1)); return false;
			}
		} 
	},
	updateNum: function () {
    $('numb_photo_box').innerHTML = activeImage + 1;
  }
}

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";
	},
	setTop: function(element,t) {
	   	element = $(element);
    	element.style.top = t +"px";
	},
	setLeft: function(element,l) {
	   	element = $(element);
    	element.style.left = l +"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;
	}
});

// -----------------------------------------------------------------------------------

//
//	Extending built-in Array object
//	- array.removeDuplicates()
//	- array.empty()
//
Array.prototype.removeDuplicates = function () {
    for(i = 0; i < this.length; i++){
        for(j = this.length-1; j>i; j--){        
            if(this[i][0] == this[j][0]){
                this.splice(j,1);
            }
        }
    }
}

// -----------------------------------------------------------------------------------

Array.prototype.empty = function () {
	for(i = 0; i <= this.length; i++){
		this.shift();
	}
}

function initUnLoad() {
    new Effect.Opacity('overlay',
    { duration: 0.5, 
      transition: Effect.Transitions.linear, 
      from: 0.0, to: 0.7,beforeStart: function () {
        $('overlay').style.display = 'block';
        $('overlay').style.display = 'block';
        $('overlay').addClassName('onloading');
      }
    });
}
function initLoad() {
    new Effect.Opacity('overlay',
    { duration: 0.5, 
      transition: Effect.Transitions.linear, 
      from: 0.7, to: 0.0,afterFinish: function () {
        $('overlay').style.display = 'hidden';
        $('overlay').style.display = 'hidden';
        $('overlay').removeClassName('onloading');
      }
    });
}
var init_myrtille_ajax = new Array();
function doMyrtille(o) {
	if(!isset(init_myrtille_ajax[o.getAttribute('id')])) {
		new myrtille(o);
	}
	init_myrtille_ajax[o.getAttribute('id')] = true;
}
var init_myrtille_lb = new Array();
function doMyrtilleLb(o) {
	if(!isset(init_myrtille_lb[o.getAttribute('id')])) {
		new lightbox(o);
	}
	init_myrtille_lb[o.getAttribute('id')] = true;
}
// {{{ isset
function isset(  ) {
    var a=arguments; var l=a.length; var i=0;
    
    while ( i!=l ) {
        if (typeof(a[i])=='undefined') { 
            return false; 
        } else { 
            i++; 
        }
    }
    
    return true;
}// }}}
