﻿ var Moobox = new Class({
	setOptions: function(options){
		this.options = {
			ajaxLayout: '%CONTENT%',
			fadeTime: 500,
			fadePower: 0.9,
			fadeColor: '#000000',
			fadeClose: false,
			scrollTime: 800
		}
		Object.extend(this.options, options || {});
	},
	
	initialize: function(options){
		this.setOptions(options);
		this.scrolling = 0;
	},
	
	closeBox: function(){
		if( $('moobox') ) {
			this.fixeScroll(false);
			new Fx.Style('moobox','opacity').start(this.options.fadePower,0,{
										onComplete: 
											$('moobox').remove()
										});
			new Fx.Style('overlay','opacity').start(this.options.fadePower,0,{
										onComplete: 
											$('overlay').remove()
										});
		}
		
	},
	
	insertInBox: function(url){
		document.body.appendChild($('moobox'));
		$('overlay').addClass('mooLoading');
		$('moobox').setStyles({
   				overflow : 'hidden',
				visibility : 'hidden'
			});
		this.getContentBox(url);
	},
	
	submitForm: function(frm,url){
		this.param = $(frm).toQueryString();
		$('overlay').addClass('mooLoading');
		$('moobox').setStyles({
   				overflow : 'hidden',
				visibility : 'hidden'
			});
		$('moobox').setHTML(this.options.ajaxLayout);
		//--
		new Ajax(url,{postBody: this.param, onComplete: this.setContentBox}).request();
	},
	
	openBox: function(url){
		this.fixeScroll(true);
		this.o = new Element('div').addClass('mooLoading').setProperty('id','overlay').setStyles({'opacity':0,'backgroundColor':this.options.fadeColor}).injectInside(document.body);
		this.b = new Element('div').setProperty('id','moobox').injectInside(document.body);
		
		new Fx.Style(this.o, 'opacity').start(0,this.options.fadePower);
		
		setTimeout(function() {document.body.appendChild(this.o); document.body.appendChild(this.b);}.bind(this),30);
		this.getContentBox(url);
		if(this.options.fadeClose){
			$('overlay').addEvent('click', this.closeBox.bind(this) );	
		}
	},
	
	fixeScroll: function(state){
		if (typeof window.addEventListener != 'undefined') return;
		if (state) this.scrolling = self.pageYOffset ? ys = self.pageYOffset : (document.documentElement && document.documentElement.scrollTop) ? ys = document.documentElement.scrollTop : document.body.scrollTop;
		b = document.getElementsByTagName('body')[0].style;
		b.height = state ? '100%' : 'auto';
		b.overflow = state ? 'hidden' : '';
		var s = document.getElementsByTagName("SELECT");
		for (var i = 0; i < s.length; i++) s[i].style.visibility= state ? 'hidden' : 'visible';
		window.scrollTo(0, state ? 0 : this.scrolling);
	},
	
	getContentBox: function(url){
		$('overlay').addClass('mooLoading');	
		$('moobox').setHTML(this.options.ajaxLayout);
		new Ajax(url,{
							method: 'get', 
							headers: {'If-Modified-Since': 'Sat, 1 Jan 2000 00:00:00 GMT'},
							onComplete: this.setContentBox
						}).request();
	},
	
	getAlbum: function(url){
		this.fixeScroll(true);
		this.o = new Element('div').addClass('mooLoading').setProperty('id','overlay').setStyle('opacity','0').injectInside(document.body);
		this.b = new Element('div').setProperty('id','moobox').injectInside(document.body);
		
		new Fx.Style(this.o, 'opacity').start(0,this.options.fadePower);
		
		setTimeout(function() {document.body.appendChild(this.o); document.body.appendChild(this.b);}.bind(this),30);
		this.getContentBox(url);
		$('overlay').addEvent('click', this.closeBox.bind(this) );	
		
		$('overlay').addClass('mooLoading');
		$('moobox').setHTML(this.options.ajaxLayout);
		new Ajax(url,{onComplete: this.setContentBoxAlbum}).request();
	},
	
	setContentBox: function(request){
		document.body.appendChild($('moobox'));
		if(request == "undefined"){
			request = "error call page !!"
		}
		//alert(request);
		$('moobox').setHTML($('moobox').innerHTML.replace('%CONTENT%',request));

		setTimeout( function() { 
			$('overlay').removeClass('mooLoading');
			$('moobox').style.width = $('moobox').scrollWidth + 'px';
			$('moobox').style.margin = '-' + $('moobox').scrollHeight/2 + 'px 0 0 -' + $('moobox').scrollWidth/2 + 'px'; //centering
			$('moobox').setStyles({
   				overflow : 'hidden',
				height : 'auto',
				width : 'auto',
				visibility : 'visible',
				display : 'block'
			});
		},50);
	},
	
	setContentBoxAlbum: function(request){
		document.body.appendChild($('moobox'));
		if(request == "undefined"){
			request = "error call page !!"
		}
		$('moobox').setHTML($('moobox').innerHTML.replace('%CONTENT%',request));
		
		startGallery();
		
		setTimeout( function() { 
			$('overlay').removeClass('mooLoading');
			$('moobox').style.width = $('moobox').scrollWidth + 'px';
			$('moobox').style.margin = '-' + $('moobox').scrollHeight/2 + 'px 0 0 -' + $('moobox').scrollWidth/2 + 'px'; //centering
			$('moobox').setStyles({
   				overflow : 'hidden',
				height : 'auto',
				width : 'auto',
				visibility : 'visible',
				display : 'block'
			});
		},50);
		
	}
	
});
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	

