/*
Base JS pour Moto85
Copyright(c) 2009, Skalpel.

Author : Michael
michael@skalpel.fr

Note : 
	-
ToDo :
	- 
*/

var SKjs = { 
	version: '1.0',
	
	loaderAjax: 'javascript/ajax.php',
	loaderJSON: 'javascript/json.php',
	spacer: 'images/interface/spacer.gif',
	encoding: 'utf-8',
	
	activeCls: 'active',
	disabledCls: 'disabled'
};
if (typeof(BASE_JS) != 'undefined') {
    SKjs.baseURL    = BASE_JS != '' ? BASE_JS : $$('base')[0].get('href');
} else {
    SKjs.baseURL    = $$('base')[0].get('href');
}

window.addEvent('domready', function() {
	new SKjs.Base();
});

SKjs.SendForm = new Class ({
	Implements: [Events, Options],
	options: {
		form:		'',
		submit:		''
	},
	
	/*
	Property :
		Initialisation de la Class
	 */
	initialize: function(options) {
		this.setOptions(options);
		
		this.dom			= {};
		if (this.options.form != '' && this.options.submit != '') {
			this.dom.form		= $$(this.options.form)[0];
			this.dom.submit		= $$(this.options.submit)[0];
			
			this.dom.submit.addEvent('click', this.sendForm.bindWithEvent(this));
		}
	},
	
	sendForm: function(e) {
		if(e) var e = new Event(e).stop();
		
		this.dom.form.submit();
	}
});

SKjs.Tooltip = new Class({
	Implements: [Events, Options],
	options: {
		tooltipClass:		'.tooltip'
	},
  
	initialize: function(options) {
		this.setOptions(options);
        
        this.toolTip = $$(this.options.tooltipClass);
        
        new Tips(this.toolTip, {
            onShow: function(tip) {
                tip.fade('in');
            },
            onHide: function(tip) {
                tip.fade('out');
            }
        });
	}
});

SKjs.Box = new Class({
	Implements: [Events, Options],
	options: {
		divGlobal:		'#global-box',
		box:			'a[rel=box]',
		customBox:		'a[rel=customBox]',
		galleryBox:		'a[rel=galleryBox]',
		size: 			{x: 640, y: 480}
	},
	
	initialize: function(options) {
		this.setOptions(options);
		
        this.dom                    = {};
		this.dom.box			    = $$(this.options.box);
		this.dom.customBox			= $$(this.options.customBox);
		this.dom.galleryBox			= $$(this.options.galleryBox);
		this.dom.gallery			= {};
        
        
		SqueezeBox.initialize({
	        size: {x: this.options.size.x, y: this.options.size.y}
	    });
		var parent = this;        
		
		if (this.dom.customBox.length > 0) {
    	    SqueezeBox.assign(this.dom.customBox, {
    	    	parse: 'rev'
    	    });
        }
		if (this.dom.galleryBox.length > 0) {
			this.dom.galleryBox.each(function (e) {
				var name = e.get('rev').split(':');
				this.dom.gallery[name[0]] = {};
				this.dom.gallery[name[0]].elm = e;
				this.dom.gallery[name[0]].list = $$(name[1]);
				this.dom.gallery[name[0]].i = 0;
				
				SqueezeBox.assign(e, {
	            	handler: 'image',
	            	'onUpdate' : function(e) {
	    				parent.initGallery(name[0]);
	    		    }
				});
			}, this);
		}
        
		if (this.dom.box.length > 0) {    		
    		this.boxIframe	= $$();
    		this.boxAjax 	= $$();
            
    		this.dom.box.each(function (e) {
    			if (e.get('href').substr(0, SKjs.baseURL.length) != SKjs.baseURL) {
    				this.boxIframe.include(e);
    			} else {
    				this.boxAjax.include(e);
    			}
    		}, this);
    		
            SqueezeBox.assign(this.boxAjax, {
    	    	'onUpdate' : function(e) {
    	    		if ($('boxsize')) {
    		    		this.size = $('boxsize').get('html').split('x');
    		    		SqueezeBox.resize({x: this.size[0], y: this.size[1]});
    	    		}
    	    		
    	    		parent.initBox();
    		    }
    	    });
            SqueezeBox.assign(this.boxIframe, {
            	handler: 'iframe'
            });
        }
	},
	
	initGallery: function(name) {
		if (this.dom.gallery[name].list.length > 1) {
			var box = $('sbox-content');
			var parent = this;
			
			for (i = 0; i < this.dom.gallery[name].list.length; i++) {
				if (this.dom.gallery[name].list[i].get('href') == this.dom.gallery[name].elm.get('href')) {
					break;
				}
			}
			
			this.dom.gallery[name].i = i;
			
			var next = $('gallery-next');
			var prev = $('gallery-prev');
			if (!next && !prev) {
				var next = new Element("a", {
					id: 	'gallery-next',
					title:	'Photo suivante',
					href: 	'#next',
					html: 	'<img src="images/interface/nextbox.png" />'
				});
				var prev = new Element("a", {
					id: 	'gallery-prev',
					title:	'Photo précédente',
					href: 	'#prev',
					html: 	'<img src="images/interface/prevbox.png" />'
				});
				next.inject(box, 'after');
				prev.inject(box, 'after');
			}
			
			next.removeEvents('click');
			prev.removeEvents('click');
			
			next.addEvent('click', function(e) {
				e.stop();
				parent.dom.gallery[name].i++;
				if (parent.dom.gallery[name].i >= parent.dom.gallery[name].list.length) {
					parent.dom.gallery[name].i = 0;
				}
				SqueezeBox.fromElement(parent.dom.gallery[name].list[parent.dom.gallery[name].i]);
			});
			prev.addEvent('click', function(e) {
				e.stop();
				parent.dom.gallery[name].i--;
				if (parent.dom.gallery[name].i < 0) {
					parent.dom.gallery[name].i = parent.dom.gallery[name].list.length - 1;
				}
				SqueezeBox.fromElement(parent.dom.gallery[name].list[parent.dom.gallery[name].i]);
			});
		}
	},
	
	initBox: function() {
		this.dom = {};
		
		this.initDom();
		this.initEvents();
	},
	
	initDom: function() {
		this.dom.form = $$(this.options.divGlobal + ' form');
	},
	
	initEvents: function() {
		if (this.dom.form.length > 0) {
			this.dom.form.each(function(form) {
				form.addEvent('submit', this.sendForm.bindWithEvent(this, form));
			}, this);
		}
	},
	
	sendForm: function(e, form) {
		if(e) var e = new Event(e).stop();
		
		$$('html, input, submit').each(function (e) {
			e.setStyle('cursor', 'wait')
		});
		
		var values = {};
		
		form.getElements('input, select, textarea').each(function (elm) {
			values[elm.get('name')] = elm.get('value');
		});
		
        new Request.JSON({
			url:        form.get('action'),
            encoding:   SKjs.encoding,
            onComplete:  this.onSendForm.bind(this)
		}).post(values);
	},
	
	onSendForm: function(jsonObj) {
		var pmsg = $('pmsg');
		if (!pmsg) {
			pmsg = new Element('p', {
				id:		'pmsg'
			});
			pmsg.inject($('global-box'), 'top');
		}
		
		if (jsonObj.exception === null && jsonObj.error === null) {
			pmsg.set('html', jsonObj.result);
			pmsg.set('class', 'messageValid');
			(function() {
				SqueezeBox.close();
			}).delay(1000);
		} else {
			pmsg.set('html', jsonObj.exception);
			pmsg.set('class', 'messageErreur');
		}
		$$('html, input, submit').each(function (e) {
			e.setStyle('cursor', 'auto')
		});
	}
});

SKjs.Base = new Class ({
	Implements: [Events, Options],
	options: {
		login: 			'identifiant',
		password: 		'motDePasse',
		
		menu:			'#menu li a span'
	},
	
	/*
	Property :
		Initialisation de la Class
	*/
	initialize: function(options) {
		this.setOptions(options);
		this.dom	= {};
		
		this.dom.menu		= $$(this.options.menu);
		
		this.dom.menu.each(function (elm) {
			elm.addEvent('click', function (e) {
				e.stop();
			});
		}, this);
        
        new SKjs.Tooltip();
		
		if ($('connexion')) {
			this.dom.login			= $(this.options.login);
			this.dom.passwd			= $(this.options.password);
			
			this.dom.login.addEvent('focus', this.resetLogin.bind(this, 'focus'));
			this.dom.login.addEvent('blur', this.resetLogin.bind(this, 'blur'));
			this.dom.passwd.addEvent('focus', this.resetPass.bind(this));
		}
		
		new SKjs.Box();
	},
	
	resetLogin: function(type) {
		if (this.dom.login.get('value') == "Nom d'utilisateur" && type == 'focus') {
			this.dom.login.set('value', '');
		} else if (this.dom.login.get('value') == "" && type == 'blur') {
			this.dom.login.set('value', "Nom d'utilisateur");
		}
	},
	
	resetPass: function() {
		if (this.dom.passwd.get('value') == "********") {
			this.dom.passwd.set('value', '');
		}
	}
});

    function fbs_click() {
        u=location.href;
        t=document.title;
        window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&t='+encodeURIComponent(t),'sharer','toolbar=0,status=0,width=626,height=436');
        return false;
    }
    


/*
function bShowHide(elemID)
  {
    var e = document.getElementById(elemID);
    var dStyle = ((e.style.display == '' || e.style.display == 'none') ? 'block':'none');
    e.style.display = dStyle;
  }
*/  

function bShowHide1(elemID)
  {
    document.getElementById('submenu2').style.display = 'none';
    document.getElementById('submenu3').style.display = 'none';
    document.getElementById('submenu4').style.display = 'none';
    var e = document.getElementById(elemID);
    var dStyle = ((e.style.display == '' || e.style.display == 'none') ? 'block':'none');
    e.style.display = dStyle;
  }


function bShowHide2(elemID)
  {
    document.getElementById('submenu1').style.display = 'none';
    document.getElementById('submenu3').style.display = 'none';
    document.getElementById('submenu4').style.display = 'none';
    var e = document.getElementById(elemID);
    var dStyle = ((e.style.display == '' || e.style.display == 'none') ? 'block':'none');
    e.style.display = dStyle;
  }

function bShowHide3(elemID)
  {
    document.getElementById('submenu1').style.display = 'none';
    document.getElementById('submenu2').style.display = 'none';
    document.getElementById('submenu4').style.display = 'none';
    var e = document.getElementById(elemID);
    var dStyle = ((e.style.display == '' || e.style.display == 'none') ? 'block':'none');
    e.style.display = dStyle;
  }

function bShowHide4(elemID)
  {
    document.getElementById('submenu1').style.display = 'none';
    document.getElementById('submenu2').style.display = 'none';
    document.getElementById('submenu3').style.display = 'none';
    var e = document.getElementById(elemID);
    var dStyle = ((e.style.display == '' || e.style.display == 'none') ? 'block':'none');
    e.style.display = dStyle;
  }  
 


