
function centerDiv(div){
	var el = $(div);
	return ((document.body.offsetHeight-(parseInt(el.getStyle("height"))))/2);
}

window.addEvent("domready", function(){
	$('mainDiv').setStyles({'top': centerDiv('mainDiv')});
	$('subbg').setStyle('opacity', .85);
	$('worksubbg').setStyle('opacity', .9);
	$('workContainerBg').setStyle('opacity', .9);
	
	$(Blocker.element).setStyle('opacity', 0);
	Menu.init();
	Hasher.check.periodical(Hasher.checkInterval,Hasher);
	page.Title = document.title;
});

window.addEvent("resize", function(){
	$('mainDiv').makeAnim({top:centerDiv('mainDiv').round()}, 'easeOutExpo', 800);
});

document.addEvent("keypress", function(event){
	if(!viewer.isShown) return false;
	if(event.key == 'left')
		viewer.prevImg();
	if(event.key == 'right')
		viewer.nextImg();
});

var imgPrev = new Object();

$extend(imgPrev,{
	
	isShown: false,
	timeOut: false,
	element: "imgPreview",
	prefix: "actions/img_resizer.php?width=100&height=60&id=",
	show:function(obj){
		this.setPos(obj);
		$(this.element).src = this.prefix+obj.id;
		$(this.element).setStyle("display", "block");
	},
	hide:function(){
		if(this.timeOut)
			clearTimeout(this.timeOut);
		$(this.element).setStyle("display", "none");
		$(this.element).src = "images/blank.gif";
	},
	setPos:function(obj){
		$(this.element).setStyles({top:obj.y-30,left:obj.x+15});
	}
});

var Empty = new Object();

$extend(Empty, {
	element:false,
	xml:false
});

var Hasher = new Object();

$extend(Hasher,{
	current: false,
	inUse: false,
	elements: [],
	spliter: "&",
	checkInterval: 50,
	lastLoader: false,
	
	check: function(){
		if(this.compare(this.current,location.hash.substr(1)) || this.inUse) return false;
		this.current = location.hash.indexOf('#') != -1 ? location.hash.substr(1) : location.hash;
		this.elements = this.current.split(this.spliter);
		this.update();
	},
	
	compare: function(a,b){
		if(!a || !b) return false;
		var aA = a.split(this.spliter);
		var bA = b.split(this.spliter);
		if(aA.length < bA.length){
			var cA = bA;
			var cB = aA
		}else{
			var cA = aA;
			var cB = bA
		}
		for(var i=0; cA[i]; i++){
			if(cA[i] != cB[i]) return false;
		}
		return true;
	},
	
	changeVar: function(level, value, clean){
		if(clean) this.clean();
		this.elements[level] = value;
		self.location.hash = "#"+this.elements.join(this.spliter);
		return this;
	},
	
	clean: function(){
		this.current = false;
		this.elements = [];
	},
	
	getVar: function(level){
		return this.elements[level];
	},
	
	update: function(){
		this.inUse = true;
		document.body.style.cursor = "wait";
		
		if(viewer.isShown) viewer.hide();
		
		if(this.elements[0] && $('mainMenu').getChildren('li')[this.elements[0]])
			$('mainMenu').getChildren('li')[this.elements[0]].firstChild.fireEvent("click");
		if(this.elements[1]){
			var call = this.elements[1].split(':');
			$ajax('actions/get_'+call[0]+'.php', call[1].replace(',', '&'), window[call[0]].update);
		}else{	
			if(workBg.isShown && !this.elements[2]){
				$(workBg.element).removeEvents("animfinish");
				$(workBg.element).addEvent("animfinish", function(e){
					Hasher.hideLast(Empty);
					subMenuBg.hideSub();
					Hasher.release();
					this.removeEvents("animfinish");
				});
				workBg.hide();
			}else{
				this.release();
				this.hideLast(Empty);
				subMenuBg.hideSub();
			}
		}
		if(this.elements[2])
			$ajax('actions/get_work.php', this.elements[2], workCard.update);
		else{
			$(workCard.element).setStyle("display", "none");
			if(workBg.isShown)
				workBg.hide();
			
		}
		Blocker.show();
	},
	
	hideLast: function(el){
		
		if(workBg.isShown && !this.elements[2]){
			$(workBg.element).removeEvents("animfinish");
			$(workBg.element).addEvent("animfinish", function(e){
				Hasher.hideLast(el);
				this.removeEvents("animfinish");
			});
			$(workCard.element).setStyle("display", "none");
			workBg.hide();
			return false;
		}
		if(this.lastLoader && this.lastLoader != el && typeof this.lastLoader.hide == "function")
			this.lastLoader.hide();
	},
	
	release: function(){
		this.inUse = false;
		document.body.style.cursor = "default";
		Blocker.hide.delay(10, Blocker);
	}
});

var workBg = new Object();

$extend(workBg, {
	element: "workContainerBg",
	isShown: false,
	show: function(){
		$(this.element).makeAnim({width:455}, 'easeOutExpo', 500);
		this.isShown = true;
		
	},
	hide: function(){
		$(this.element).makeAnim({width:0}, 'easeOutExpo', 500);
		this.isShown = false;
		Hasher.release();
	}
	
});


var workCard = new Object();

$extend(workCard, {

	xml:false,
	isShown: false,
	element: 'workContainer',
	update: function(response){
		if(response && response.xml){
			workCard.clean();
			workCard.xml = response.xml.getElementsByTagName("work")[0];
			$(workCard.element).set('html', workCard.xml.getElementsByTagName("html")[0].firstChild.nodeValue);
			var Img = workCard.xml.getElementsByTagName("img")[0];
			var Title = workCard.xml.getElementsByTagName("title")[0].firstChild.nodeValue;
			workCard.setTitle(Title);
			workCard.makeImg(Img);
			viewer.setXml(Img);
			
			if(!workBg.isShown){
				$(workBg.element).removeEvents("animfinish");
				$(workBg.element).addEvent("animfinish", function(e){
					$(workCard.element).setStyle("display", "block");
					Hasher.release();
					this.removeEvents("animfinish");
				});			
				if(($('subbg').anim.inAnim || $('worksubbg').anim.inAnim)){
					$('worksubbg').removeEvents("animfinish");
					$('worksubbg').addEvent("animfinish", function(e){
						works.show();
						workBg.show();			
						this.removeEvents("animfinish");
					});
				}else
					workBg.show();
			}
		}
	},
	makeImg: function(Img){
		for(var i=0; Img.childNodes[i]; i++){
			if(i==0){
				$('prevImg').Id=1;
				$('prevImg').addEvent("click", function(e){viewer.setImg(this.Id);});
				$('prevImg').addEvent("mouseover", function(e){this.setStyle("cursor","crosshair");});
				$('prevImg').addEvent("mouseout", function(e){this.setStyle("cursor","default");});
			}
			var div = document.newElement("div", {html:i+1,styles:{cursor:'crosshair',float:'left',textAlign:'center',width:20,height:17,padding:"3px 0 0 0",margin:"4px 4px 0 0"}});
			$(div).inject($('imgContainer'));	
			div.num = i+1;
			div.Id	= Img.childNodes[i].getAttribute("id");
			div.addEvent("mouseover", function(e){  this.setStyles({backgroundColor:"#c61927", color:'white'}); });
			div.addEvent("mouseout", function(e){ this.setStyles({backgroundColor:"", color:'#c61927'}); });
			div.addEvent("click", function(e){ 
				$('prevImg').Id=this.num;
				$('prevImg').src="actions/img_resizer.php?id="+this.Id+"&width=300&height=180";
				$('prevImg').removeEvents('click');
				$('prevImg').addEvent("click", function(e){
					viewer.setImg(this.Id);
				});
			});
		}

	},
	setTitle: function(title){
		if(title)
			document.title = page.Title+" - "+title;
		else
			document.title = page.Title;
	},
	clean: function(){
		this.xml = false;
		$(workCard.element).set('html', '');
	}
});


var page = new Object();

$extend(page,{

	xml:false,
	isShown: false,
	element: 'pageContainer',
	update: function(response){
	
		if(response && response.xml){
			
			page.xml = response.xml.getElementsByTagName("page")[0];
			page.clean();
			$(page.element).set('html', page.xml.getElementsByTagName("content")[0].firstChild.nodeValue);
			page.setTitle(page.xml.getElementsByTagName("title")[0].firstChild.nodeValue);
			
			if($('subbg').anim.inAnim){
				$('sub'+Menu.selected.index).removeEvents("animfinish");
				$('sub'+Menu.selected.index).addEvent("animfinish", function(e){
					page.hide();
					subMenuBg.showSub(655);
					this.removeEvents("animfinish");
				});
				$('worksubbg').removeEvents("animfinish");
				$('worksubbg').addEvent("animfinish", function(e){
					page.show();
					this.removeEvents("animfinish");
				});
			}else{
				$('worksubbg').removeEvents("animfinish");
				$('worksubbg').addEvent("animfinish", function(e){
					page.show();
					this.removeEvents("animfinish");
				});
				Hasher.hideLast(page);
				subMenuBg.showSub(655);
			}
		}
	},
	setTitle: function(title){
		if(title)
			document.title = this.Title+" - "+title;
		else
			document.title = this.Title;
	},
	show: function(){
		Hasher.lastLoader = this;
		$(this.element).setStyles({display:'block'});
		Hasher.release();
		this.isShown = true;
	},
	hide: function(){
		$(this.element).setStyles({display:'none'});
		this.isShown = false;
		this.setTitle();
	},
	clean: function(){
		$(this.element).set('html', "");
	}
});


var works = new Object();

$extend(works,{
	xml: false,
	isShown: false,
	element : 'worksubList',
	update: function(response){
		
		if(response && response.xml){
			works.xml = response.xml.getElementsByTagName("works")[0];
			var Cat = works.xml.getAttribute('cat');

			works.clean();
			
			for(var i=0; works.xml.childNodes[i];i++){
				var li = document.newElement("li");
				var a = document.newElement("a",{href:'#'+Hasher.getVar(0)+'&works:cat='+Cat+'&id='+works.xml.childNodes[i].getAttribute('id'),html:works.xml.childNodes[i].firstChild.nodeValue});
				a.img = works.xml.childNodes[i].getAttribute('img');
				/*a.addEvent("mouseover", function(e){
					if(this.img != 0)
						imgPrev.timeOut = imgPrev.show.delay(200, imgPrev, [{id:this.img,x:e.page.x,y:e.page.y}]);
				});
				a.addEvent("mouseout", function(e){
					imgPrev.hide();
				});*/
				a.inject(li);
				li.inject($('worksubList'));
			}
			
			if($('subbg').anim.inAnim){
				$('sub'+Menu.selected.index).removeEvents("animfinish");
				$('sub'+Menu.selected.index).addEvent("animfinish", function(e){
					subMenuBg.showSub(200);
					this.removeEvents("animfinish");
				});
				$('worksubbg').removeEvents("animfinish");
				$('worksubbg').addEvent("animfinish", function(e){
					works.show();
					this.removeEvents("animfinish");
				});
			}else{
				$('worksubbg').removeEvents("animfinish");
				$('worksubbg').addEvent("animfinish", function(e){
					works.show();
					this.removeEvents("animfinish");
				});
				Hasher.hideLast(works);
				subMenuBg.showSub(200);
			}
			$("bgImg").src = "images/banners/cats/"+Cat+".jpg";
		}
		//$('log').set('html', response.text);
	},
	
	show: function(){
		Hasher.lastLoader = this;
		$(this.element).setStyles({display:'block'});
		this.isShown = true;
		Hasher.release();
	},
	
	hide: function(){
		$(this.element).setStyles({display:'none'});
		this.isShown = false;
	},
	
	clean: function(){
		$(this.element).empty();
	}
});

var subMenuBg = new Object();

$extend(subMenuBg,{
	isSubShown:	false,
	
	showSub: function(Width){
		//if(this.isSubShown) return false;
		subMenuBg.isSubShown = true;
		$('worksubbg').makeAnim({width:Width}, 'easeOutExpo', 400);
	},
	
	hideSub: function(){
		if(!this.isSubShown) return false;
		subMenuBg.isSubShown = false;
		$('worksubbg').makeAnim({width:0}, 'easeOutExpo', 400);
		Blocker.hide();
	}
});


var Menu = new Object();

$extend(Menu, {
	
	//variables
	selected: 	false,
	isSubShown:	false,
	default1:	false,
	default2:	false,
	
	//methods
	init: function(){
		if(this.isSubShown) return false;
		$('mainMenu').getChildren('li').each(function(obj, index){
			$(obj.firstChild).index = index;
			this.addEvents($(obj.firstChild));
		}, this);
		if(this.default1)
			$('mainMenu').getChildren('li')[this.default1].firstChild.fireEvent("click");
	},
	
	overEvent: function(){
		this.setStyle('color', '#FFFFFF');
	},
	
	outEvent: function(){
		this.setStyle('color', '#c61927');
	},
	
	addEvents: function(obj){
		$(obj).addEvent("mouseover", this.overEvent);
		$(obj).addEvent("mouseout", this.outEvent);
		$(obj).addEvent("click", this.showSub);
		$(obj).setStyles({cursor:"crosshair", color:'#c61927'});
	},
	
	removeEvents: function(obj){
		$(obj).removeEvent("mouseover", this.overEvent);
		$(obj).removeEvent("mouseout", this.outEvent);
		$(obj).removeEvent("click", this.showSub);
		$(obj).setStyles({cursor: "default", color:'#FFFFFF'});
	},
	
	showSub: function(){
		if(!$('sub'+this.index)) return false;
		if(Menu.selected){
			$('sub'+Menu.selected.index).setStyle('display', 'none');
			Menu.addEvents(Menu.selected);
		}
		Menu.selected = this;
		$("bgImg").src = "images/banners/"+Menu.selected.index+".jpg";
		
		if(Menu.isSubShown){
			$('sub'+Menu.selected.index).setStyles({display:'block'});
			Hasher.changeVar(0, this.index, true);
			Hasher.release();
			
		}else{
			$('subbg').removeEvents("animfinish");
			$('subbg').addEvent('animfinish', function(e){
				$('sub'+Menu.selected.index).setStyles({display:'block',opacity:1});
				$('sub'+Menu.selected.index).fireEvent("animfinish");
				Hasher.release();
				this.removeEvents("animfinish");
			});
			Menu.isSubShown = true;
			$('subbg').makeAnim({width:145}, 'easeOutExpo', 500);
			Hasher.changeVar(0, Menu.selected.index);
			
		}
		Menu.removeEvents(Menu.selected);
	}
});

var Blocker = new Object();

$extend(Blocker,{

	element:'blocker',
	show: function(){
		$(this.element).setStyles({display:'block', opacity:0});
	},
	hide: function(){
		$(this.element).setStyle('display', 'none');
	}
});

var verif_form = function(el, txt){
	
	var Error = false;
	if(el.name.value.length == 0){
		el.name.style.backgroundColor = "red";
		el.name.style.color = "white";
		Error = true;
	}else{
		el.name.style.color = "";
		el.name.style.backgroundColor = "";
	}
	if(el.email.value.length == 0 || el.email.value.indexOf("@") == -1 || el.email.value.indexOf(".") == -1){
		el.email.style.backgroundColor = "red";
		el.email.style.color = "white";
		Error = true;
	}else{
		el.email.style.color = "";
		el.email.style.backgroundColor = "";
	}
	if(el.msg.value.length == 0){
		el.msg.style.backgroundColor = "red";
		el.msg.style.color = "white";
		Error = true;
	}else{
		el.msg.style.color = "";
		el.msg.style.backgroundColor = "";
	}
	
	$('formError').innerHTML = Error ? txt : "";

	return !Error;
};


