﻿/* Singleline functions
---------------------------------------------------------------- */

function $d(d){
	return document.getElementById(d);
}

/* General controller */
var fancypancy = true;

/* Toogle text
---------------------------------------------------------------- */

var field = function(){
	return {
		focus:function(f,txt){
			if(f.value==txt){
				f.value='';
			}else{
				f.select();
			}
		},
		blur:function(f,txt){
			if(f.value==''){
				f.value=txt;
			}
		}
	};
}();

/* Search field
---------------------------------------------------------------- */

var searcher = function(){
	return {
		show:function(){
			var obj = $d('searchinp');
			if(obj){
				obj.style.display = 'block';
			}
		},
		hide:function(){
			var obj = $d('searchinp');
			if(obj){
				obj.style.display = 'none';
			}
		}
	};
}();

/* Toogle
---------------------------------------------------------------- */

var toogle = function(){
	return {
		bio:function(f,e){
			var list = $d('bio-list');
			var text = $d('bio-text');
			var obj = $d(e);
			if(list && text && obj){
				var items = list.getElementsByTagName('a');
				for(var d=0;d<items.length;d+=1){items[d].className = '';}
				var items = text.getElementsByTagName('div');
				for(var d=0;d<items.length;d+=1){var str = items[d].id;if(str.indexOf("bio-")!=-1){items[d].style.display = 'none';}}
				f.className = 'selected';
				try{f.blur();}catch(e){}
				obj.style.display = 'block';
				toogle.set(e, 0);
				toogle.fader(e,0,100,1000);
			}
		},
		set:function(id,opacity){
			var obj = $d(id).style;
			obj.opacity = (opacity / 100);
			obj.MozOpacity = (opacity / 100);
			obj.KhtmlOpacity = (opacity / 100);
			obj.filter = "alpha(opacity=" + opacity + ")";
		},
		fader:function(id,opacStart,opacEnd,millisec){
			var speed = Math.round(millisec / 100);
			var timer = 0;
			if(opacStart>opacEnd){
				for(i=opacStart;i<=opacEnd;i=i-2){
					setTimeout("toogle.set('" + id + "'," + i + ")",(timer * speed));
					timer++;
				}
			}else if(opacStart<opacEnd){
				for(i=opacStart;i<=opacEnd;i=i+2){
					setTimeout("toogle.set('" + id + "'," + i + ")",(timer * speed));
					timer++;
				}
			}
		}
	};
}();

/* Copyright tooltip
---------------------------------------------------------------- */

var copyright = function(){
	return {
		show:function(f,pho,txt){
			copyright.create();
			var obj = $d('copyright-tip');
			var elm = $d('copyright-text');
			if(obj && elm){
				obj.style.display = 'block';
				if(f){
					elm.innerHTML = txt + '<span>'+pho+'</span>';
					var imgW = parseInt(f.offsetWidth);
					var imgH = parseInt(f.offsetHeight);
					var tmp = library.elementposition(f);
					var tm = tmp.split('/');
					var tp = parseInt(obj.offsetHeight);
					//obj.style.width = imgW + 'px';
					obj.style.left = parseInt(tm[0]) + 'px';
					obj.style.top = imgH + parseInt(tm[1]) - tp + 'px';
				}
			
			}
		},
		hide:function(){
			var obj = $d('copyright-tip');
			if(obj){obj.style.display = 'none';}
		},
		create:function(){
			var tip = $d('copyright-tip');
			if(!tip){
				var dot = document.createElement("div");
				dot.id = 'copyright-tip';
				dot.innerHTML = '<div class="pxe"><p id="copyright-text"></p></div>';
				dot.onmouseover = function(){copyright.show();}
				dot.onmouseout = function(){copyright.show();}
				document.body.appendChild(dot);
			}
		}
	};
}();

/* Validation
---------------------------------------------------------------- */

var validate = function(){
	var execute = true;
	return {
		err:function(f,act){
			var obj = $d(f);
			if(obj){if(act=='reset'){obj.style.backgroundColor = '#ffffff';}else{obj.style.backgroundColor = '#f8ff8a';}}
		},
		email:function(str){
			var filter = /^[^\s@]+@[^\s@]+\.[a-z]{2,6}$/i;
			if(filter.test(str)){return true;}else{return false;}
		},
		empty:function(str){
			var filter = /^\s+$/;
			var expression;
			if(filter.test(str) || str==''){expression = false;}else{expression = true;}
			return expression;
		},
		onlynumbers:function(evt){
			var charCode = (evt.which) ? evt.which : event.keyCode;
			if(charCode > 31 && (charCode < 48 || charCode > 57)){return false;}else{return true;}
		},
		search:function(f,s){
			execute = true;
			if(!validate.empty(f.q.value) || f.q.value==s){
				execute = false;
			}
			return execute;
		}
	};
}();

/* Dropdown
---------------------------------------------------------------- */

var dro;var droptim;var dropallow = false;var dropcur;

var dropdown = function(){
	return {
		show:function(f){
			var obj = $d(f.id);
			var elm = $d(f.id+'-list');
			if(obj && elm){
				if(dropcur!='' && dropcur!=f.id){
					var dc = $d(dropcur+'-list');
					if(dc){dc.style.display = 'none';}
				}
				dropcur = f.id;
				if(elm.style.display=='' || elm.style.display=='none'){elm.style.display = 'block';}else{elm.style.display = 'none';}
				dro = f.id;
				clearTimeout(droptim);
				dropallow = false;
				setTimeout("dropdown.release();", 200);
			}
		},
		release:function(){
			dropallow = true;
		},
		hide:function(f,s){
			var obj = $d(s+'-label');
			if(obj){
				f.blur();
				obj.innerHTML = f.innerHTML;
			}
			setTimeout("dropdown.delay('"+s+"');", 50);
		},
		delay:function(f){
			if(dropallow){
				var obj = $d(f);
				var elm = $d(f+'-list');
				if(obj && elm){
					elm.style.display = 'none';
				}
			}
		}
	};
}();

/* Responsive
---------------------------------------------------------------- */

var responsive = function(){
	var _src = '/css/';var _current;
	return {
		initialize:function(){
			responsive.adjust();
		},
		adjust:function(){
			var tmp = library.documentdimensions();
			var win = tmp.split('/');
			var wx = parseInt(win[0]);
			if(wx<600 || mobile.detect()){
				responsive.set('phone',2);
			}else if(wx>600 && wx<800){
				responsive.set('ipad',1);
			}else{
				responsive.set('screen',0);
			}
		},
		set:function(f,a){
			var obj = $d('responsive');
			var stylesheets = ['style','ipad','phone'];
			if(obj){
				if(_current!=f){obj.href = _src + stylesheets[a] + '.css';_current = f;}
			}else{
				alert('Attention developer! The reference to the stylesheet doesn´t exists..');
			}
		}
	};
}();

/* Mobile?
---------------------------------------------------------------- */

var mobile = function(){
	return {
		detect:function(){
			var uagent = navigator.userAgent.toLowerCase(); 
			var list = this.mobiles;
			var ismobile = false;
			for(var d=0;d<list.length;d+=1){
				if(uagent.indexOf(list[d])!=-1){
					ismobile = true;
				}
			}
			return ismobile;
		},
		mobiles:[
			"midp","240x320","blackberry","netfront","nokia","panasonic",
			"portalmmm","sharp","sie-","sonyericsson","symbian",
			"windows ce","benq","mda","mot-","opera mini",
			"philips","pocket pc","sagem","samsung","sda",
			"sgh-","vodafone","xda","palm","iphone",
			"ipod","android"
		]
	};
}();

/* Image boxes
---------------------------------------------------------------- */

var box = function(){
	var boxtim;var boxcur;var boxlock = false;var boxprev;var _sts = 8000;var _sbt = 2500;
	return {
		initialize:function(f){
			var obj = $d(f+'-items');
			var elm = $d(f+'-controls');
			var bck = $d(f+'-controls-back');
			var fwd = $d(f+'-controls-forward');
			var sts = $d('slidetransition');
			var sbt = $d('slideboxtransition');
			if(obj && elm && bck && fwd && fancypancy){
				if(sts && sbt){
					if(sts.value!='' && sbt.value!=''){
						_sts = sts.value;
						_sbt = sbt.value;
					}else{
						_sts = 8000;
						_sbt = 2500;
					}
				}
				var tickers = box.count(f+'-items');
				if(tickers>1){
					bck.onclick = function(){box.back(f);return false;};
					fwd.onclick = function(){box.forward(f);return false;}
					boxcur = 1;
					setTimeout("box.showinfo('"+boxcur+"','"+f+"');", _sbt);
					boxtim = setInterval("box.auto('"+f+"');", _sts);
				}else{
					elm.style.display = 'none';
					bck.style.display = 'none';
					fwd.style.display = 'none';
					box.onlyinfo(f);
				}
			}
		},
		show:function(f){
			var ibo = $d(f+'-items');
			var obj = $d(f+'-node'+boxcur+'-item');
			var imx = $d(f+'-node'+boxcur+'-item-img');
			var pre = $d(f+'-node'+boxprev+'-text');
			if(obj && imx && ibo && pre){
				var iev = '';if(document.all){if(/MSIE (\d+\.\d+);/.test(navigator.userAgent)){iev = new Number(RegExp.$1);}}
				box.reset(f);
				pre.style.display = 'none';
				if(imx.filters && iev<9){
					imx.style.display = 'block';
					box.set(f+'-node'+boxcur+'-item-img', 0);
					imx.style.filter = "blendTrans(duration=1.0)";
					imx.filters.blendTrans.Apply();
					imx.filters.blendTrans.Play();
				}else{
					box.set(f+'-node'+boxcur+'-item-img', 0);
					setTimeout("box.fader('"+f+"-node"+boxcur+"-item-img',0,100,1000);", 50);
				}
				obj.style.display = 'block';
				setTimeout("box.showinfo('"+boxcur+"','"+f+"');", (_sbt - 1000));
				setTimeout("box.delay('"+boxcur+"','"+f+"');", (_sbt - 1000));
				boxlock = true;
			}
		},
		showinfo:function(t,f){
			var obj = $d(f+'-node'+boxcur+'-text');
			if(obj){
				obj.style.display = 'block';
				
				var iev;var isie = false;
				if(document.all){
					if(/MSIE (\d+\.\d+);/.test(navigator.userAgent)){iev = new Number(RegExp.$1);}
					if(iev<=8){isie = true;}
				}
				if(!isie){
				box.set(f+'-node'+boxcur+'-text', 0);
				setTimeout("box.fader('"+f+"-node"+boxcur+"-text',0,100,500);", 50);
				}
			}
		},
		onlyinfo:function(f){
			var bpx = $d(f+'-box');
			var hed = $d(f+'-node1-head');
			var des = $d(f+'-node1-desc');
			var pho = $d(f+'-node1-photograph');
			var bxhd = $d('box2-head');
			var bxds = $d('box2-desc');
			if(bpx && hed && des && pho && bxhd && bxds){
				bxhd.innerHTML = '';bxds.innerHTML = ''; 
				if(hed.innerHTML!=''){
					bxhd.innerHTML = hed.innerHTML;
				}
				if(des.innerHTML!=''){
					bxds.innerHTML = des.innerHTML;
				}
				if(pho.innerHTML!=''){
					bxds.innerHTML += ' <span class="fotograf">' + pho.innerHTML + '</span>';
				}
			}
		},
		back:function(f){
			if(!boxlock){
				var tickers = box.count(f+'-items');
				boxprev = boxcur;
				clearInterval(boxtim);
				if(boxcur=='1'){boxcur = tickers;}else{boxcur--;}
				box.show(f);
			}
		},
		forward:function(f){
			if(!boxlock){
				var tickers = box.count(f+'-items');
				boxprev = boxcur;
				clearInterval(boxtim);
				if(tickers==boxcur){boxcur=1;}else{boxcur++;}
				box.show(f);
			}
		},
		auto:function(f){
			if(!boxlock){
				var tickers = box.count(f+'-items');
				boxprev = boxcur;
				if(tickers==boxcur){boxcur=1;}else{boxcur++;}
				box.show(f);
			}
		},
		delay:function(f,t){
			var bxo = $d(t+'-items');
			var imx = $d(t+'-node'+f+'-item-img');
			if(bxo && imx){
				bxo.style.backgroundImage = 'url('+imx.src+')';
				boxlock = false;
			}
		},
		reset:function(t){
			var obj = $d(t+'-items');
			if(obj){
				var items = obj.getElementsByTagName('div');
				for(var d=0;d<items.length;d+=1){
					var str = items[d].className;
					if(str.indexOf('image')!=-1){
						items[d].style.display = 'none';
					}
				}
			}
		},
		set:function(id,opacity){
			var obj = $d(id).style;
			obj.opacity = (opacity / 100);
			obj.MozOpacity = (opacity / 100);
			obj.KhtmlOpacity = (opacity / 100);
			obj.filter = "alpha(opacity=" + opacity + ")";
			//obj.backgroundColor = '#ffffff';
		},
		fader:function(id,opacStart,opacEnd,millisec){
			var speed = Math.round(millisec / 100);
			var timer = 0;
			if(opacStart>opacEnd){
				for(i=opacStart;i<=opacEnd;i=i-2){
					setTimeout("box.set('" + id + "'," + i + ")",(timer * speed));
					timer++;
				}
			}else if(opacStart<opacEnd){
				for(i=opacStart;i<=opacEnd;i=i+2){
					setTimeout("box.set('" + id + "'," + i + ")",(timer * speed));
					timer++;
				}
			}
		},
		count:function(f){
			var obj = $d(f);
			var count = 0;
			var items = obj.getElementsByTagName('div');
			for(var d=0;d<items.length;d+=1){
				var str = items[d].className;
				if(str.indexOf('image')!=-1){
					count++;
				}
			}
			return count;
		},
		controls:function(f,t){
			var obj = $d(f+'-controls');
			if(obj){
				if(t=='show'){
					obj.style.display = 'block';
				}else{
					obj.style.display = 'none';
				}
			}
		}
	};
}();

/* Image boxes
---------------------------------------------------------------- */

var boxer = function(){
	var boxtim;var boxcur;var boxlock = false;var boxprev;var _sts = 8000;var _sbt = 2500;
	return {
		initialize:function(f){
			var obj = $d(f+'-items');
			var elm = $d(f+'-controls');
			var bck = $d(f+'-controls-back');
			var fwd = $d(f+'-controls-forward');
			var sts = $d('slidetransition');
			var sbt = $d('slideboxtransition');
			var cur = $d(f+'-node1-item-img');
			if(obj && elm && bck && fwd && fancypancy && cur){
				if(sts && sbt){
					if(sts.value!='' && sbt.value!=''){
						_sts = sts.value;
						_sbt = sbt.value;
					}else{
						_sts = 8000;
						_sbt = 2500;
					}
				}
				var tickers = boxer.count(f+'-items');
				if(tickers>1){
					bck.onclick = function(){boxer.back(f);return false;};
					fwd.onclick = function(){boxer.forward(f);return false;}
					boxcur = 1;
					setTimeout("boxer.showinfo('"+boxcur+"','"+f+"');", 1);
					boxtim = setInterval("boxer.auto('"+f+"');", _sts);
					// Phone click on image // MNI
					var items = document.getElementsByTagName('img');
					for(var d=0;d<items.length;d+=1){
						if(items[d].className=='obxnode'){
							items[d].onclick = function(){
								boxer.forward(f);
							}
						}
					}
				}else{
					elm.style.display = 'none';
					bck.style.display = 'none';
					fwd.style.display = 'none';
					boxer.onlyinfo(f);
				}
				//obj.style.width = parseInt(cur.offsetWidth) + 'px';
			}
		},
		show:function(f){
			var ibo = $d(f+'-items');
			var obj = $d(f+'-node'+boxcur+'-item');
			var imx = $d(f+'-node'+boxcur+'-item-img');
			var pre = $d(f+'-node'+boxprev+'-text');
			if(obj && imx && ibo && pre){
				var iev = '';if(document.all){if(/MSIE (\d+\.\d+);/.test(navigator.userAgent)){iev = new Number(RegExp.$1);}}
				boxer.reset(f);
				pre.style.display = 'none';
				if(imx.filters && iev<9){
					imx.style.display = 'block';
					boxer.set(f+'-node'+boxcur+'-item-img', 0);
					imx.style.filter = "blendTrans(duration=0.5)";
					imx.filters.blendTrans.Apply();
					imx.filters.blendTrans.Play();
				}else{
					boxer.set(f+'-node'+boxcur+'-item-img', 0);
					setTimeout("boxer.fader('"+f+"-node"+boxcur+"-item-img',0,100,500);", 50);
				}
				obj.style.display = 'block';
				setTimeout("boxer.showinfo('"+boxcur+"','"+f+"');", 50);
				setTimeout("boxer.delay('"+boxcur+"','"+f+"');", (500));
				boxlock = true;
				var w = parseInt(imx.offsetWidth);
				ibo.style.width = w + 'px';
			}
		},
		showinfo:function(t,f){

			var bpx = $d(f+'-box');
			var hed = $d(f+'-node'+boxcur+'-head');
			var des = $d(f+'-node'+boxcur+'-desc');
			var pho = $d(f+'-node'+boxcur+'-photograph');
			
			var bxhd = $d('box2-head');
			var bxds = $d('box2-desc');
			
			if(bpx && hed && des && pho && bxhd && bxds){
				//obj.style.display = 'block';
				bxhd.innerHTML = '';bxds.innerHTML = ''; 
				if(hed.innerHTML!=''){
					bxhd.innerHTML = hed.innerHTML;
				}
				if(des.innerHTML!=''){
					bxds.innerHTML = des.innerHTML;
				}
				if(pho.innerHTML!=''){
					bxds.innerHTML += ' <span class="fotograf">' + pho.innerHTML + '</span>';
				}
				
				boxer.set(f+'-box', 0);
				setTimeout("boxer.fader('"+f+"-box',0,100,500);", 50);
			}
		},
		onlyinfo:function(f){
			var bpx = $d(f+'-box');
			var hed = $d(f+'-node1-head');
			var des = $d(f+'-node1-desc');
			var pho = $d(f+'-node1-photograph');
			var bxhd = $d('box2-head');
			var bxds = $d('box2-desc');
			var hsco = $d('hs-controls-ofs');
			if(bpx && hed && des && pho && bxhd && bxds && hsco){
				bxhd.innerHTML = '';bxds.innerHTML = ''; 
				if(hed.innerHTML!=''){bxhd.innerHTML = hed.innerHTML;}
				if(des.innerHTML!=''){bxds.innerHTML = des.innerHTML;}
				if(pho.innerHTML!=''){bxds.innerHTML += ' <span class="fotograf">' + pho.innerHTML + '</span>';}
				hsco.style.display = 'none';
			}
		},
		back:function(f){
			if(!boxlock){
				var tickers = boxer.count(f+'-items');
				boxprev = boxcur;
				clearInterval(boxtim);
				if(boxcur=='1'){boxcur = tickers;}else{boxcur--;}
				boxer.show(f);
			}
		},
		forward:function(f){
			if(!boxlock){
				var tickers = boxer.count(f+'-items');
				boxprev = boxcur;
				clearInterval(boxtim);
				if(tickers==boxcur){boxcur=1;}else{boxcur++;}
				boxer.show(f);
			}
		},
		auto:function(f){
			if(!boxlock){
				var tickers = boxer.count(f+'-items');
				boxprev = boxcur;
				if(tickers==boxcur){boxcur=1;}else{boxcur++;}
				boxer.show(f);
			}
		},
		delay:function(f,t){
			var bxo = $d(t+'-items');
			var imx = $d(t+'-node'+f+'-item-img');
			if(bxo && imx){
				//bxo.style.backgroundImage = 'url('+imx.src+')';
				boxlock = false;
			}
		},
		reset:function(t){
			var obj = $d(t+'-items');
			if(obj){
				var items = obj.getElementsByTagName('div');
				for(var d=0;d<items.length;d+=1){
					var str = items[d].className;
					if(str.indexOf('image')!=-1){
						items[d].style.display = 'none';
					}
				}
			}
		},
		set:function(id,opacity){
			var obj = $d(id).style;
			obj.opacity = (opacity / 100);
			obj.MozOpacity = (opacity / 100);
			obj.KhtmlOpacity = (opacity / 100);
			obj.filter = "alpha(opacity=" + opacity + ")";
			//obj.backgroundColor = '#ffffff';
		},
		fader:function(id,opacStart,opacEnd,millisec){
			var speed = Math.round(millisec / 100);
			var timer = 0;
			if(opacStart>opacEnd){
				for(i=opacStart;i<=opacEnd;i=i-2){
					setTimeout("boxer.set('" + id + "'," + i + ")",(timer * speed));
					timer++;
				}
			}else if(opacStart<opacEnd){
				for(i=opacStart;i<=opacEnd;i=i+2){
					setTimeout("boxer.set('" + id + "'," + i + ")",(timer * speed));
					timer++;
				}
			}
		},
		count:function(f){
			var obj = $d(f);
			var count = 0;
			var items = obj.getElementsByTagName('div');
			for(var d=0;d<items.length;d+=1){
				var str = items[d].className;
				if(str.indexOf('image')!=-1){
					count++;
				}
			}
			return count;
		},
		controls:function(f,t){
			var obj = $d(f+'-controls');
			if(obj){
				if(t=='show'){
					obj.style.display = 'block';
				}else{
					obj.style.display = 'none';
				}
			}
		}
	};
}();

/* Ticker
---------------------------------------------------------------- */

var sliding = false;

var ticker = function(){
	return {
		initialize:function(f,auto,wid){
			var obj = $d(f);
			var elm = $d(f+'-controls');
			var ind = $d(f+'-indi');
			var cback = $d(f+'-back');
			var cforward = $d(f+'-forward');
			if(obj){
				var tickers = ticker.count(f);
				if(tickers>2){
					if(elm){
						elm.innerHTML = '';
						for(var d=0;d<tickers;d+=1){
							var dc = d + 1;
							if(d==0){
								elm.innerHTML += '<li><a href="#" title="" id="'+f+'-itm'+(dc)+'" class="mark" onclick="ticker.click(\''+(dc)+'\',true,\''+f+'\',\''+wid+'\');return false;"><span>1</span></a></li>';
							}else{
								elm.innerHTML += '<li><a href="#" title="" id="'+f+'-itm'+(dc)+'" class="norm" onclick="ticker.click(\''+(dc)+'\',true,\''+f+'\',\''+wid+'\');return false;"><span>1</span></a></li>';
							}			
						}
					}
					if(cback && cforward){
						cback.innerHTML = '<a href="#" title="" class="back" onclick="ticker.back(\''+f+'\',\''+wid+'\');return false;"><span>Back</span></a>';
						cforward.innerHTML = '<a href="#" title="" class="forward" onclick="ticker.forward(\''+f+'\',\''+wid+'\');return false;"><span>Forward</span></a>';
					}
				}else{
					ind.style.display = 'none';
				}
			}
		},
		click:function(num,m,f,wid){
			if(!sliding){
				ticker.reset(f);
				var elm = $d(f+'-itm'+num);
				if(elm){elm.className = 'mark';elm.blur();}
				ticker.toogle(num,f,wid);
			}
		},
		back:function(f,wid){
			if(!sliding){
				var obj = $d(f+'-controls');
				var items = obj.getElementsByTagName('a');
				var all = 0;var iscur = 0;
				for(var d=0;d<items.length;d+=1){
					all++;
					if(items[d].className=='mark'){iscur = all;}
				}
				var next;
				var sub = 1;
				if(!isNaN(sub)){all = all - sub;}
				if(iscur==1){next=all;}else{next=iscur-1;}
				ticker.click(next,false,f,wid);
			}
		},
		forward:function(f,wid){
			if(!sliding){
				var obj = $d(f+'-controls');
				var items = obj.getElementsByTagName('a');
				var all = 0;var iscur = 0;
				for(var d=0;d<items.length;d+=1){
					all++;
					if(items[d].className=='mark'){iscur = all;}
				}
				var next;
				var sub = 1;
				if(!isNaN(sub)){all = all - sub;}
				if(iscur==all){next=1;}else{next=iscur+1;}
				ticker.click(next,false,f,wid);
			}
		},
		auto:function(f,wid){
			var obj = $d(f+'-controls');
			var items = obj.getElementsByTagName('a');
			var all = 0;
			var iscur = 0;
			for(var d=0;d<items.length;d+=1){
				all++;
				if(items[d].className=='mark'){iscur = all;}
			}
			var next;
			if(iscur==all){next=1;}else{next=iscur+1;}
			ticker.click(next,false,f,wid);
		},
		toogle:function(num,f,wid){
		
			var _wid;
			var txs = $d('responsive');
			if(txs){
				if(txs.href.indexOf("phone")!=-1){_wid = 330;}
				if(txs.href.indexOf("ipad")!=-1){_wid = 394;}
				if(txs.href.indexOf("style")!=-1){_wid = 480;}
			}
			var obj = $d(f);
			var _from = 0;
			_from = parseInt(obj.style.left);
			if(isNaN(_from)){_from = 0;obj.style.left = '0px';}else{_from = _from;}
			var _to = _from - (_from + ((num - 1) * _wid));
			mover.move(f,_from,_to);
		},
		reset:function(f){
			var obj = $d(f+'-controls');
			var items = obj.getElementsByTagName('a');
			for(var d=0;d<items.length;d+=1){
				if(items[d].className=='norm' || items[d].className=='mark'){
					items[d].className = 'norm';
				}
			}
		},
		count:function(f){
			var obj = $d(f);
			var count = 0;
			var items = obj.getElementsByTagName('div');
			for(var d=0;d<items.length;d+=1){
				if(items[d].className=='itm'){
					count++;
				}
			}
			return count;
		}
	};
}();

/* Move divs <|> slider.toogle('divname',['customfunction()','anotherfunction()']);
---------------------------------------------------------------- */

var mover = function(){
	var slideAtClose=true;var duration = 0.4;var obj;var newLeft;var curLeft;
	return {
		init:function(elm,from){
			obj = $d(elm);
			if(obj){obj.style.left = from + 'px';}
		},
		move:function(elm,from,to,functions){
			if(!sliding){
				mover.init(elm,from);
				newLeft = to;
				curLeft = from;
				mover.slide(elm,functions);
			}
		},
		slide:function(elm,functions){
			sliding = true;
			var frames = 30 * duration;
			var tinc = (duration * 1000) / frames;
			tinc = Math.round(tinc);
			var sinc = (curLeft - newLeft) / frames;
			var frameSizes = new Array();
			for(var i=0;i<frames;i++){
				if(i < frames / 2){
					frameSizes[i] = (sinc * (i / frames)) * 4;
				} else {
					frameSizes[i] = (sinc * (1 - (i / frames))) * 4;
				}
			}
			for(var i=0;i<frames;i++){
				curLeft = curLeft - frameSizes[i];
				window.setTimeout("$d('"+elm+"').style.left = '"+Math.round(curLeft)+"px';", tinc * i);
				if((i + 1) == frames){window.setTimeout("mover.complete("+functions+");", tinc * (i + 5));}
			}
		},
		hide:function(){
			obj.style.height = 'auto';
			obj.style.display = 'none';
		},
		complete:function(functions){
			sliding = false;
			if(functions){
				for(var i=0;i<functions.length;i++){
					try{eval(functions[i]);}catch(e){alert(e.description);}
				}
			}
		}
	};
}();

/* Library
---------------------------------------------------------------- */

var library = function(){
	return {
		elementposition:function(obj){
			var curleft=curtop=0;
			if (obj.offsetParent){
				curleft=obj.offsetLeft;
				curtop=obj.offsetTop;
				while(obj=obj.offsetParent){
					curleft+=obj.offsetLeft
					curtop+=obj.offsetTop
				}
			}
			return curleft+'/'+curtop;
		},
		cursorposition:function(e){
			e = e || window.event;
		    var cursor = {x:0, y:0};
		    if(e.pageX || e.pageY){
		        cursor.x = e.pageX;
		        cursor.y = e.pageY;
		    }else{
		        var de = document.documentElement;
		        var b = document.body;
		        cursor.x = e.clientX + (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0);
		        cursor.y = e.clientY + (de.scrollTop || b.scrollTop) - (de.clientTop || 0);
		    }
		    return cursor.x+'/'+cursor.y;
		},
		documentdimensions:function(){
			var myWidth = 0, myHeight = 0;
			if(typeof(window.innerWidth)=='number'){
				myWidth = window.innerWidth;
				myHeight = window.innerHeight;
			}else if(document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)){
				myWidth = document.documentElement.clientWidth;
				myHeight = document.documentElement.clientHeight;
			}else if(document.body && (document.body.clientWidth || document.body.clientHeight)){
				myWidth = document.body.clientWidth;
				myHeight = document.body.clientHeight;
			}
			return myWidth+'/'+myHeight;
		},
		scrollposition:function(){
			var myTop = 0, myLeft = 0;
			if(document.all){
				myLeft = (document.documentElement.scrollLeft) ? document.documentElement.scrollLeft : document.body.scrollLeft;
				myTop = (document.documentElement.scrollTop) ? document.documentElement.scrollTop : document.body.scrollTop;
			}else{
				myLeft = window.pageXOffset;
				myTop = window.pageYOffset
			}
			return myLeft+'/'+myTop;
		},
		whichelement:function(e){
			var targ,found=false;
			if(!e){var e=window.event;}
			if(e.target){targ=e.target;}else if(e.srcElement){targ=e.srcElement;}
			if(targ.nodeType==3){targ=targ.parentNode;}
			if(targ.className=='contextmenu'){found=true;}else{found=false;}
			return found;
		},
		keycode:function(evt){
			evt = (evt) ? evt : ((event) ? event : null);
			var evver = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null );
			var keynumber = evt.keyCode;
			if(keynumber){return keynumber;}
		},
		getstyle:function(el,prop){
			var x = $d(el);var y;
			if(x.currentStyle){
				y = x.currentStyle[prop];
			}else if (window.getComputedStyle){
				y = document.defaultView.getComputedStyle(x,null).getPropertyValue(prop);
			}
			return y;
		}
	};
}();

/* Window onclick
---------------------------------------------------------------- */

window.onclick = function(){

	// Remove dropdown
	var drx = $d(dro);
	if(drx){droptim = setTimeout("dropdown.delay('"+dro+"');", 100);}

}
