﻿/* Global variables
---------------------------------------------------------------- */

var intv;

/* Singleline functions
---------------------------------------------------------------- */

function $(d){
	return document.getElementById(d);
}

/* 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;
			}
		}
	};
}();

/* Menu
---------------------------------------------------------------- */

var drop = function(){
	return {
		show:function(f){
			var mnu = $('menu');
			var obj = $(f);
			var elm = $(f+'-child');
			var mun = library.elementposition(mnu);
			var _mun = mun.split('/');
			munX = parseInt(_mun[0]);
			var pos = library.elementposition(obj);
			var _pos = pos.split('/');
			elmX = parseInt(_pos[0]);
			drop.reset(f);
			if(elm){
				elm.style.left = (elmX - munX - 10) + 'px';
				elm.style.display = 'block';
			}
			clearInterval(intv);
		},
		delay:function(f){
			intv = setInterval("drop.hide('"+f+"');", 500);
		},
		hide:function(f){
			var obj = $(f);
			var elm = $(f+'-child');
			if(elm){
				elm.style.display = 'none';
			}
			clearInterval(intv);
		},
		reset:function(f){
			var obj = $('menu');
			var items = obj.getElementsByTagName('*');
			var count = items.length;
			var itm = 'itm-'+f+'-child';
			for(var t=0;t<count;t+=1){
				if(items[t].className=='sub'){
					if(items[t].rel!=itm){
						items[t].style.display = 'none';
					}
				}
			}
		},
		initialize:function(){
			var curr = 0;
			var obj = $('menu');
			var items = obj.getElementsByTagName('*');
			var count = items.length;
			for(var t=0;t<count;t+=1){
				var str = items[t].className;
				if(str.indexOf("mm")!=-1){
					curr++;
					items[t].id = 'itm-'+curr;
					items[t].onmouseover = function(){
						drop.show(this.id);
					}
					items[t].onmouseout = function(){
						drop.delay(this.id);
					}
				}
				if(items[t].className=='sub'){
					items[t].id = 'itm-'+curr+'-child';
					items[t].rel = 'itm-'+curr;
					items[t].onmouseover = function(){
						drop.show(this.rel);
					}
					items[t].onmouseout = function(){
						drop.delay(this.rel);
					}
				}
			}
		}
	};
}();

/* Link function
---------------------------------------------------------------- */

var url = function(){
	return {
		href:function(url,blank){
			if(blank){
				window.open(url);
			}else{
				location.href = url;
			}
		}
	};
}();

/* Ajax <|> ajax.load('http://','ajaxdiv',true,['customfunction()','anotherfunction()']);
---------------------------------------------------------------- */

var ajax = function(){
	return {
		nocache:function(){
			var minutes = 1000 * 60;
			var hours = minutes * 60;
			var days = hours * 24;
			var years = days * 365;
			var d = new Date();
			var t = d.getTime();
			return t;
		},
		load:function(url,container,load,functions){
			var obj = document.getElementById(container);
			var loader = '<div class="loading"></div>';
			if(obj && url){
				if(load){obj.innerHTML = loader;}
				ajax.page(url,container,functions);
			}
		},
		page:function(url,container,functions){
			var _url,_no;
			if(url.indexOf("?")==-1){_no = '?~' + ajax.nocache();}else{_no = '&~' + ajax.nocache();}
			_url = url + _no;
			
			if(window.XMLHttpRequest){
				page_request = new XMLHttpRequest();
			}else if(window.ActiveXObject){
				try{
					page_request = new ActiveXObject('Msxml2.XMLHTTP');
				}catch(e){
					try{
						page_request = new ActiveXObject('Microsoft.XMLHTTP');
					}catch(e){}
				}
			}else{
				return false;
			}

			page_request.onreadystatechange = function(){
				ajax.parse(page_request,container,functions);
			}
			page_request.open('GET', _url, true);
			page_request.send(null);
		},
		parse:function(page_request,container,functions){
			if(page_request.readyState==4 && (page_request.status==200 || window.location.href.indexOf('http')==-1)){
				document.getElementById(container).innerHTML = page_request.responseText;
				ajax.completed(functions);
			}
		},
		completed:function(functions){
			// After complete functions here..
			if(functions){
				for(var i=0;i<functions.length;i++){
					try{eval(functions[i]);}catch(e){alert(e.description);}
				}
			}
		}
	};
}();

/* Validation
---------------------------------------------------------------- */

var validate = function(){
	var execute = true;
	return {
		err:function(step,f){
			var obj = document.getElementById(f);
			if(obj){
				if(step=='1'){obj.style.backgroundColor = '#ffabab';setTimeout("validate.err('2','"+f+"');", 50);}
				if(step=='2'){obj.style.backgroundColor = '#ffc5c5';setTimeout("validate.err('3','"+f+"');", 50);}
				if(step=='3'){obj.style.backgroundColor = '#ffdfdf';setTimeout("validate.err('4','"+f+"');", 50);}
				if(step=='4'){obj.style.backgroundColor = '#fef1f1';setTimeout("validate.err('5','"+f+"');", 50);}
				if(step=='5'){obj.style.backgroundColor = '#fff';}
			}
		},
		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,txt){
			execute = true;
			if(!validate.empty(f.q.value) || f.q.value == txt){
				execute = false;
				validate.err('1',f.q.id);
			}
			return execute;
		}
	};
}();

/* Cookies
---------------------------------------------------------------- */

var cookies = function(){
	return {
		create:function(name,value,days){
			if(days){
				var date = new Date();
				date.setTime(date.getTime()+(days*24*60*60*1000));
				var expires = "; expires="+date.toGMTString();
			}
			else var expires = "";
			document.cookie = name+"="+value+expires+"; path=/";
		},
		read:function(name){
			var nameEQ = name + "=";
			var ca = document.cookie.split(';');
			for(var i=0;i<ca.length;i++){
				var c=ca[i];
				while(c.charAt(0)==' ') c = c.substring(1,c.length);
				if(c.indexOf(nameEQ)==0) return c.substring(nameEQ.length,c.length);
			}
			return null;
		},
		erase:function(name){
			cookies.create(name,"",-1);
		}
	};
}();

/* Zoom
---------------------------------------------------------------- */

var zoomer = function(){
	return {
		initialize:function(){
			var cur = cookies.read('fontsize');
			if(cur){document.body.style.fontSize = cur+'px';}
		},
		set:function(f){
			if(f=='12'){
				document.body.style.fontSize = '12px';
				cookies.create('fontsize','12',7);
			}
			if(f=='14'){
				document.body.style.fontSize = '14px';
				cookies.create('fontsize','14',7);
			}
		},
		toogle:function(f){
			var bdy = document.body.style.fontSize;
			if(parseInt(bdy) == '14'){
				zoomer.set('12');
			}else{
				zoomer.set('14');
			}
		}
	};
}();

/* 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;
		},
		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;}
		}
	};
}();


/* Images pagination / slideshow
---------------------------------------------------------------- */
var slider = function(){
	var timer,move,running=false,wid,_back,_forward,_width=0,_items=1,elements=null,elementIndex=0;
	return {
		initializeElements:function(elm){
			elements=new Array();
			var items = elm.getElementsByTagName('div');
			var count = items.length;
			for(var i=0;i<count;i+=1)if(items[i].className=='mot')elements[elements.length]=items[i];
			if(_width==0&&items.length>0)_width=parseInt(items[0].clientWidth);
		},
		set_text:function(index){
			var labeltext = document.getElementById('labeltext');
			if(labeltext)labeltext.innerHTML=elements[index].title;
		},
		initialize:function(elementId){
			wid = document.getElementById(elementId);
			if(wid){
		        slider.initializeElements(wid);
				_back = document.getElementById('slider_back');
				_forward = document.getElementById('slider_forward');
				wid.style.width = (elements.length * _width + 10)+'px';
				wid.style.left = '0px';
				slider.set_text(elementIndex);
				slider.initializeDirectionButtons();
				if(!_forward)slider.start();
			}
		},
		prev:function(){
			if(elements.length>_items){
				slider.set_text(--elementIndex);
				slider.initializeDirectionButtons();
				var maxLeft, maxLeftPx, curLeft, nextItem;
				maxLeft = 0;
				maxLeftPx = 0;
				curLeft = parseInt(wid.style.left);
				if(!running && maxLeftPx!=curLeft){
					slider.moves('back',(curLeft+_width));
					nextItem = (curLeft + _width);
				}
			}
		},
		next:function(){
		    var length=elements.length;
			if(length>_items){
			    var curLeft=(_width * elementIndex);
			    if(elementIndex>=length-_items)elementIndex=0;
			    else elementIndex+=_items;
				slider.set_text(elementIndex);
				slider.initializeDirectionButtons();
				var maxLeft = elements.length - _items;
				var maxLeftPx = -(maxLeft * _width);
				//curLeft = parseInt(wid.style.left);
				if(!running && maxLeftPx!=curLeft) slider.moves('forward',(curLeft-_width));
			}
		},
		moves:function(direction,moveto){
			if(direction=='back'){
				if(typeof(moveto)!='undefined'){move = moveto;}
				var curLeft = parseInt(wid.style.left);
				if(curLeft==move){
					clearTimeout(timer);
					running = false;
				}else{
					running = true;
				    var newLeft=curLeft+25;
				    if (newLeft>move)newLeft=move;
					wid.style.left = newLeft+'px';
					timer = setTimeout("slider.moves('back')", 1);
				}
			}
			if(direction=='forward'){
				if(typeof(moveto)!='undefined'){move = moveto;}
				var curLeft = parseInt(wid.style.left);
				if(curLeft==move){
					running = false;
					clearTimeout(timer);
    				if(!_forward)slider.start();
    				
				}else{
					running = true;
				    var newLeft=curLeft-25;
				    if (newLeft<move)newLeft=move;
					wid.style.left = newLeft+'px';
					timer=setTimeout("slider.moves('forward')", 7);
				}
			}
		},
		initializeDirectionButtons:function(){
		    var length=elements.length;
            if(_back){
                if(elementIndex==0 || length==0)_back.className = 'disabled';
                else _back.className = 'active';
            }
			if(_forward){
			    if(elementIndex==0 || elementIndex<length-1)_back.className = 'disabled';
			    else _forward.className = 'active';
			}
		},
		start:function(){
		    var length=elements.length;
		    if(length>0)setTimeout("slider.next()", 4000);
		}
	};
}();
//var sliderLoad=window.onload;
//window.onload=function(e){if(typeof(sliderLoad)=='function')sliderLoad(e);slider.initialize('topimages');}



/* Image rotator / slideshow
---------------------------------------------------------------- */
var rotator = function(){
	var timer=null,running=false,containerElement=null,currentElement=null,elements=null,elementIndex=0,elementCount=0;
	return {
		initializeElements:function(elm){
			elements=new Array();
			var items = elm.getElementsByTagName('div');
			var count = items.length;
			for(var i=0;i<count;i+=1)if(items[i].className=='mot')elements[elements.length]=items[i];
			
			elementCount=elements.length;
			for(var i=0;i<elementCount;i+=1)elements[i].style.display='none';
		},
		initialize:function(elementId){
			containerElement = document.getElementById(elementId);
			if(containerElement){
		        rotator.initializeElements(containerElement);
				rotator.start();
			}
		},
		set_text:function(index){
			var labeltext = document.getElementById('labeltext');
			if(labeltext)labeltext.innerHTML=elements[index].title;
		},
		show:function(index){
		    if(typeof(index)=='undefined')index=elementIndex;
			if(index>=0 && index<elementCount){
				rotator.set_text(index);
				if(currentElement)currentElement.style.display='none';
				currentElement=elements[index];
				currentElement.style.display='block';
		    }
		},
		prev:function(){
			if(elementCount>0){
			    elementIndex-=1;
    			if(elementIndex<0 || elementIndex>=elementCount)elementIndex=0;
			    rotator.show();
			}
		},
		next:function(){
			if(elementCount>0){
			    elementIndex+=1;
    			if(elementIndex<0 || elementIndex>=elementCount)elementIndex=0;
			    rotator.show();
			    if(running)rotator.start();
			}
		},
		start:function(){
			if(elementCount>0){
			    running=true;
			    if(timer)window.clearTimeout(timer);
			    if(!currentElement)rotator.show();
			    timer=window.setTimeout("rotator.next()", 4000);
			}
		},
		stop:function(){
			if(elementCount>0){
			    running=false;
			    if(timer)window.clearTimeout(timer);
			}
		}
	};
}();
var rotatorLoad=window.onload;
window.onload=function(e){if(typeof(rotatorLoad)=='function')rotatorLoad(e);rotator.initialize('topimages');}