﻿/* 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;
			}
		}
	};
}();


/* Link function
---------------------------------------------------------------- */

var url = function(){
	return {
		href:function(url,blank){
	        var returnValue=false;
			if(blank=="maximized"){
		        try {
			        var options = 'status=no,menubar=no,scrollbars=no,resizable=no,toolbar=no,titlebar=no,dependent=yes,location=no';
			        options = options + ',width=' + (screen.availWidth - 10).toString();
			        options = options + ',height=' + (screen.availHeight - 122).toString();
			        options = options + ',screenX=0,screenY=0,left=0,top=0';
			        returnValue=window.open(href, "PopupMaximized", options);
			        returnValue.location = href;
			        returnValue.focus();
			        returnValue.moveTo(0, 0);
			        returnValue.resizeTo(screen.availWidth, screen.availHeight);
		        } catch (ex) {
		            returnValue=false;
		        }
			}else if(blank){
				returnValue=window.open(url);
			}else{
			    returnValue=true;
				location.href = url;
			}
    		return returnValue;
		}
	};
}();


/* Ajax
---------------------------------------------------------------- */

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){
			var obj = document.getElementById(container);
			var loader = '<div class="loading"></div>';
			if(obj && url){
				if(load){obj.innerHTML = loader;}
				ajax.page(url,container);
			}
		},
		page:function(url,container){
			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);
			}
			page_request.open('GET', _url, true);
			page_request.send(null);
		},
		parse:function(page_request,container){
			if(page_request.readyState==4 && (page_request.status==200 || window.location.href.indexOf('http')==-1)){
				document.getElementById(container).innerHTML = page_request.responseText;
				ajax.completed();
			}
		},
		completed:function(){
			// After complete functions here..
		}
	};
}();


/* Dark layer
---------------------------------------------------------------- */

var darken = function(){
	return {
		create:function(){
			var dark = document.getElementById('layerdark');
			if(!dark){
				var dot = document.createElement("div");
				dot.id = 'layerdark';
				dot.style.opacity = 0.5;
				dot.style.filter = 'alpha(opacity=50)';
				dot.style.width = '100%';
				dot.style.height = '100%';
				dot.style.position = 'absolute';
				dot.style.zIndex = '1000';
				dot.style.backgroundColor = '#000000';
				dot.style.left = '0px';
				dot.style.top = '0px';
				dot.onclick = function(){darken.kill();}
				document.body.appendChild(dot);
			}
		},
		show:function(){
			darken.create();
			var dark = document.getElementById('layerdark');
			var height = document.documentElement.scrollHeight;
			if(dark){
				dark.style.height = height + 'px';
				dark.style.display = 'block';
			}
		},
		fixed:function(){
			var dark = document.getElementById('layerdark');
			var height = document.documentElement.scrollHeight;
			if(dark){
				dark.style.height = height + 'px';
			}
		},
		kill:function(){
			var dark = document.getElementById('layerdark');
			if(dark){dark.style.display = 'none';}
		}
	};
}();


/* 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){
			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';}
		},
		toogle:function(f){
			if(f=='11'){
				document.body.style.fontSize = '11px';
				cookies.create('fontsize','11',7);
			}
			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);
			}
		}
	};
}();


/* Images pagination / slideshow
---------------------------------------------------------------- */

var slider = function(){
	var timer,move,step=0,running=false,wid,_back,_forward,_width=491,_items=1,elements=null,elementIndex=0;
	return {
		initializeElements:function(){
			elements=new Array();
			var items = document.getElementsByTagName('div');
			var count = items.length;
			for(var i=0;i<count;i+=1)if(items[i].className=='mot')elements[elements.length]=items[i];
		},
		set_text:function(index){
			var labeltext = document.getElementById('labeltext');
			if(labeltext)labeltext.innerHTML=elements[index].title;
		},
		initialize:function(){
		    slider.initializeElements();
			wid = document.getElementById('wid');
			if(wid){
				_back = document.getElementById('slider_back');
				_forward = document.getElementById('slider_forward');
				if(wid){wid.style.width = ((elements.length * _width + 10))+'px'; wid.style.left = '0px';}
				if(elements.length>_items){_forward.className = 'active';}else{_forward.className = 'disabled';}
				slider.set_text(elementIndex);
			}
		},
		prev:function(){
			if(elements.length>_items){
				slider.set_text(--elementIndex);
				var maxLeft, maxLeftPx, curLeft, nextItem;
				maxLeft = 0;
				maxLeftPx = 0;
				curLeft = parseInt(wid.style.left);
				if(maxLeftPx==curLeft){
					_back.className = 'disabled';
				}else{
					if(!running){
						_back.className = 'active';
						_forward.className = 'active';
						slider.moves('back',(curLeft+_width));
						nextItem = (curLeft + _width);
						if(nextItem==maxLeftPx){
							_back.className = 'disabled';
						}
					}
				}
			}
		},
		next:function(){
			if(elements.length>_items){
				slider.set_text(++elementIndex);
				var maxLeft, maxLeftPx, curLeft, nextItem;
				maxLeft = elements.length - _items;
				maxLeftPx = -(maxLeft * _width);
				curLeft = parseInt(wid.style.left);
				//alert("maxLeft="+maxLeft+", maxLeftPx="+maxLeftPx+", curLeft="+curLeft+", "+(curLeft-_width));
				if(maxLeftPx==curLeft){
					//_forward.className = 'active';
				}else{
					if(!running){
						_back.className = 'active';
						_forward.className = 'active';
						slider.moves('forward',(curLeft-_width));
						nextItem = (curLeft - _width);
						if(nextItem==maxLeftPx){
							_forward.className = 'disabled';
						}
					}
					
				}
			}
		},
		moves:function(direction,moveto){
			if(direction=='back'){
				if(moveto || moveto=='0'){move = moveto;}
				var curLeft = parseInt(wid.style.left);
				if(curLeft==move){
					clearTimeout(timer);
					step = 0;
					running = false;
				}else{
					step++;
					running = true;
					if(step>=0 && step<36){
					    var newLeft=curLeft+25;
					    if (newLeft<move)newLeft=move;
						wid.style.left = newLeft+'px';
						timer = setTimeout("slider.moves('back')", 1);
					}
				}
			}
			if(direction=='forward'){
				if(moveto){move = moveto;}
				var curLeft = parseInt(wid.style.left);
				if(curLeft==move){
					clearTimeout(timer);
					step = 0;
					running = false;
				}else{
					step++;
					running = true;
					if(step>=0 && step<36){
					    var newLeft=curLeft-25;
					    if (newLeft<move)newLeft=move;
						wid.style.left = newLeft+'px';
						timer = setTimeout("slider.moves('forward')", 1);
					}
				}
			}
		}
	};
}();


/* Key code navigation
---------------------------------------------------------------- */

function getKeyCode(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;
	}
}

// Get document events
document.onkeyup = function(event){

	// Get character code
	var charCode = getKeyCode(event);
	_back = document.getElementById('slider_back');
	_forward = document.getElementById('slider_forward');
	
	switch(charCode){
		
		// Forward arrows
		case 39: // Arrow -> Forward
			if(_forward){slider.next();}
			break;
		case 102: // Arrow -> Forward - Numbers
			if(_forward){slider.next();}
			break;
		// Backward arrows
		case 37: // Arrow -> Back
			if(_back){slider.prev();}
			break;
		case 100: // Arrow -> Back - Numbers
			if(_back){slider.prev();}
			break;
	}
	
}


/* Window events
---------------------------------------------------------------- */

window.onresize = function(){
	//darken.fixed();
}
