/*
 * jLibrary.1.2 (JavaScript Library)
 * author: medium
 * website: http://csscode.ru/?p=26
 */
//event fn-1
Event = (function() {
  var guid = 0   
  function fixEvent(event) {
    event = event || window.event
    if ( event.isFixed ) {
      return event
    }
    event.isFixed = true 
    event.preventDefault = event.preventDefault || function(){this.returnValue = false}
    event.stopPropagation = event.stopPropagaton || function(){this.cancelBubble = true}
    if (!event.target) {
        event.target = event.srcElement
    }
    if (!event.relatedTarget && event.fromElement) {
        event.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement;
    }
    if ( event.pageX == null && event.clientX != null ) {
        var html = document.documentElement, body = document.body;
        event.pageX = event.clientX + (html && html.scrollLeft || body && body.scrollLeft || 0) - (html.clientLeft || 0);
        event.pageY = event.clientY + (html && html.scrollTop || body && body.scrollTop || 0) - (html.clientTop || 0);
    }
    if ( !event.which && event.button ) {
        event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
    }
    return event
  } 
  function commonHandle(event) {
    event = fixEvent(event)   
    var handlers = this.events[event.type]
    for ( var g in handlers ) {
      var handler = handlers[g]
      var ret = handler.call(this, event)
      if ( ret === false ) {
          event.preventDefault()
          event.stopPropagation()
      }
    }
  }
  return {
    bind: function(elem, type, handler) {
	  var elem = (typeof elem == 'string') ? document.getElementById(elem) : elem;
      if (elem.setInterval && ( elem != window && !elem.frameElement ) ) {
        elem = window;
      }
      if (!handler.guid) {
        handler.guid = ++guid
      }
      if (!elem.events) {
        elem.events = {}
        elem.handle = function(event) {
          if (typeof Event !== "undefined") {
            return commonHandle.call(elem, event)
          }
        }
      }
      if (!elem.events[type]) {
        elem.events[type] = {}        
        if (elem.addEventListener)
          elem.addEventListener(type, elem.handle, false)
        else if (elem.attachEvent)
          elem.attachEvent("on" + type, elem.handle)
      }
      elem.events[type][handler.guid] = handler
    },
    unbind: function(elem, type, handler) {
	  var elem = (typeof elem == 'string') ? document.getElementById(elem) : elem;
      var handlers = elem.events && elem.events[type]    
      if (!handlers) return
      delete handlers[handler.guid]
      for(var any in handlers) return 
      if (elem.removeEventListener)
        elem.removeEventListener(type, elem.handle, false)
      else if (elem.detachEvent)
        elem.detachEvent("on" + type, elem.handle)  
      delete elem.events[type]
      for (var any in elem.events) return
      try {
        delete elem.handle
        delete elem.events 
      } catch(e) {
        elem.removeAttribute("handle")
        elem.removeAttribute("events")
      }
    },
	hover: function(elem,fn1,fn2){
		var elem = (typeof elem == 'string') ? document.getElementById(elem) : elem;
		this.bind(elem,'mouseover',function(){
			fn1.call(elem)
		})
		this.bind(elem,'mouseout',function(){
			fn2.call(elem)
		})
	} 
  }
}())
//event fn-1 //

//onDomReady fn-2
function bindReady(handler){
	var called = false
	function ready() {
		if (called) return
		called = true
		handler()
	}
	if ( document.addEventListener ) {
		document.addEventListener( "DOMContentLoaded", function(){
			ready()
		}, false )
	} else if ( document.attachEvent ) {
		if ( document.documentElement.doScroll && window == window.top ) {
			function tryScroll(){
				if (called) return
				if (!document.body) return
				try {
					document.documentElement.doScroll("left")
					ready()
				} catch(e) {
					setTimeout(tryScroll, 0)
				}
			}
			tryScroll()
		}
		document.attachEvent("onreadystatechange", function(){
			if ( document.readyState === "complete" ) {
				ready()
			}
		})
	}
    if (window.addEventListener)
        window.addEventListener('load', ready, false)
    else if (window.attachEvent) window.attachEvent('onload', ready)
    else window.onload=ready
}
readyList = []
function onReady(handler) {
	if (!readyList.length) {
		bindReady(function() {
			for(var i=0; i<readyList.length; i++) {
				readyList[i]()
			}
		})
	}
	readyList.push(handler)
}
//onDomReady fn-2 //

//getClass fn-3
getElementsByClass=function(getClass,tag,clas){
	if(document.querySelectorAll) {return document.querySelectorAll(getClass)}
	else if(document.getElementsByClassName) {return document.getElementsByClassName(clas)}
	else {
		var list = document.getElementsByTagName(tag), i = list.length,
		classArray = clas.split(/\s+/), result = [];
		while(i--) {if(list[i].className.search('\\b' + classArray + '\\b') != -1) {result.push(list[i])}}
		return result;
	}
};
getElementsByIdClass=function(getClass,sid,tag,clas){
	if(document.querySelectorAll) {return document.getElementById(sid).querySelectorAll(getClass)}
	else if(document.getElementsByClassName) {return document.getElementById(sid).getElementsByClassName(clas)}
	else {
		var list = document.getElementById(sid).getElementsByTagName(tag), i = list.length,
		classArray = clas.split(/\s+/), result = [];
		while(i--) {if(list[i].className.search('\\b' + classArray + '\\b') != -1) {result.push(list[i])}}
		return result;
	}
};
function ltrim(str) {
	var ptrn = /\s*((\S+\s*)*)/;
	return str.replace(ptrn, "$1");
}
function rtrim(str) {
	var ptrn = /((\s*\S+)*)\s*/;
	return str.replace(ptrn, "$1");
}
function trim(str) {return ltrim(rtrim(str))}
function getClass(node, fn){
	var node=trim(node)
	var pos=node.indexOf('.')
	var posp=pos+1
	var space=node.indexOf(' ')
	var spacep=space+1
	var ids=node.indexOf('#')
	if(ids===-1){
		var first=node.slice(0,1)
		if(first==='.'){var tag='*';
		}else{var tag=node.slice(0,pos)}
		var clas=node.slice(posp)
		var cli=getElementsByClass(node,tag,clas).length;
		while(cli--){fn.call(getElementsByClass(node,tag,clas)[cli])}
	}else{
		var sid=node.slice(ids+1,space)
		var str=node.slice(space+1)
		var first=str.slice(0,1)
		if(first==='.'){var tag='*';
		}else{
			var dott=str.indexOf('.')
			var tag=str.slice(0,dott)
		}
		var clas=node.slice(pos+1)
		var cli=getElementsByIdClass(node,sid,tag,clas).length;
		while(cli--){fn.call(getElementsByIdClass(node,sid,tag,clas)[cli])}
	}
}
//getClass fn-3 //

//add/removeClass fn-4
function addClass(o, c){
	o = (typeof o == 'string') ? document.getElementById(o) : o;
    var re = new RegExp("(^|\\s)" + c + "(\\s|$)", "g")
    if (re.test(o.className)) return
    o.className = (o.className + " " + c).replace(/\s+/g, " ").replace(/(^ | $)/g, "")
}
function removeClass(o, c){
	o = (typeof o == 'string') ? document.getElementById(o) : o;
    var re = new RegExp("(^|\\s)" + c + "(\\s|$)", "g")
    o.className = o.className.replace(re, "$1").replace(/\s+/g, " ").replace(/(^ | $)/g, "")
}
//add/removeClass fn-4

//cookie fn-5,6,7
function getCookie(name) {
	var matches = document.cookie.match(new RegExp(
	  "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
	))
	return matches ? decodeURIComponent(matches[1]) : undefined 
}
function setCookie(name, value, props) {
	props = props || {}
	var exp = props.expires
	if (typeof exp == "number" && exp) {
		var d = new Date()
		d.setTime(d.getTime() + (exp*86400)*1000)
		exp = props.expires = d
	}
	if(exp && exp.toUTCString) { props.expires = exp.toUTCString() }

	value = encodeURIComponent(value)
	var updatedCookie = name + "=" + value
	for(var propName in props){
		updatedCookie += "; " + propName
		var propValue = props[propName]
		if(propValue !== true){ updatedCookie += "=" + propValue }
	}
	document.cookie = updatedCookie
}
function deleteCookie(name) {
	setCookie(name, null, { expires: -1 })
}
//cookie fn-5,6,7 //

//animate fn-8
function animate(element, css, end, delta, dur, callback){
	var element = (typeof element == 'string') ? document.getElementById(element) : element;
	if(element){
		var from = function(){
		if(element.currentStyle){var em=element.currentStyle[css];}else{var em=window.getComputedStyle(element, null)[css];}
		return parseInt(em);
	};
	var to = end;
	var duration = dur || 1000;
	var start = new Date().getTime();
	if(typeof delta!=='function'){
		if (delta === 'degree') {
			var delta = function(progress){
				return progress;
			}
		}else
		if(delta==='stand'){
			var delta= function(progress){
				return Math.pow(progress, 2);
			}
		}else 
		if (delta==='circ') {
			var delta= function(progress){
				return 1 - Math.sin(Math.acos(progress));
			}
		}else 
		if (delta==='sine') {
			var delta= function(progress){
				return 1 - Math.sin((1 - progress) * Math.PI/2);
			}
		}else 
		if (delta==='back') {
			var delta= function(progress){
				return Math.pow(progress, 2) * ((0.5 + 1) * progress - 0.5);
			}
		}else 
		if (delta==='bounse') {
			var delta= function(progress){
		     for(var a = 0, b = 1, result; 1; a += b, b /= 2) {
		        if (progress >= (7 - 4 * a) / 11)
		            return -Math.pow((11 - 6 * a - 11 * progress) / 4, 2) + Math.pow(b, 2);
		     	}
			}
		}else 
		if (delta==='elastic') {
			var delta= function(progress){
				return Math.pow(2,10 * (progress - 1)) * Math.cos(20 * progress * Math.PI * 10 / 3);
			}
		}else{
			var delta = function(progress){
				return progress;
			}
		}	
	}
	setTimeout(function() {
	    var now = (new Date().getTime()) - start;
	    var progress = now / duration;
	    if (progress > 1) {var result = to;
		if(typeof callback=='function'){callback.call(element)}else{return false}
		}else {var result = (to - from()) * delta(progress) + from()}
	    element.style[css] = result + 'px';
	    if (progress < 1)
	        setTimeout(arguments.callee, 10);
		}, 10);
	}
}
//animate fn-8 //

//css fn-9
function css(node, arr){
	var node = (typeof node == 'string') ? document.getElementById(node) : node;
	if(typeof arr=='object'){
		for(var key in arr){
			node.style[key]=arr[key];
		}
	}else{
		if(node.currentStyle){
			return node.currentStyle[arr];
		}else{
			return window.getComputedStyle(node, null)[arr];
		}
	}
}
//css fn-9 //

//mt_rand fn-10
function mt_rand(v1,v2){
	if(typeof v1 && typeof v2 =='number'){
		var v1=parseInt(v1);
		var v2=parseInt(v2);
		var r = v1 - v2 + 1;
    	return Math.floor(Math.random()*r) + v2;
	}
}
//mt_rand fn-10 //

//html fn-11
function html(node){
	var node = (typeof node == 'string') ? document.getElementById(node) : node;
	this.node=node;
}
html.prototype={
	regdom: function(html, fn){
		var _t=this.node;
		var tmp=document.createElement('div');
		tmp.innerHTML=html;
		var childs = tmp.childNodes;
		var l=childs.length;
		fn(l,_t,childs);
	},
	before: function(html){
		this.regdom(html, function(l,_t,childs){
			while(l--){
				_t.parentNode.insertBefore(childs[l], _t);
			}
		});
	},
	after: function(html){
		this.regdom(html, function(l,_t,childs){
			while(l--){
				_t.parentNode.insertBefore(childs[l], _t.nextSibling);
			}
		});
	},
	append: function(html){
		this.regdom(html, function(l,_t,childs){
			while(l--){
				_t.appendChild(childs[l])
			}
		});
	},
	prepend: function(html){
		this.regdom(html, function(l,_t,childs){
			while(l--){
				_t.insertBefore(childs[l], _t.firstChild)
			}
		});
	},
	replace: function(html){
		this.regdom(html, function(l,_t,childs){
			while(l--){
				_t.parentNode.insertBefore(childs[l], _t);
  				_t.parentNode.removeChild(_t);
			}
		});
	},
	remove: function(){
		var _t=this.node;
		_t.parentNode.removeChild(_t);
	}
}
//html fn-11 //

//getChild fn-12
function getChild(node,num,fn){
	var node = (typeof node == 'string') ? document.getElementById(node) : node;
	var arr=[];
	for (var childItem in node.childNodes) {
    if (node.childNodes[childItem].nodeType == 1){arr.push(childItem)}}		
	if(num==="first"){fn.call(node.childNodes[arr[0]])}else if(num==="last"){
		fn.call(node.childNodes[arr[arr.length-1]])
	}else if(typeof num==="number"){fn.call(node.childNodes[arr[num-1]])
	}else if(typeof num=="function"){
		var x=arr.length;
		while(x--){num.call(node.childNodes[arr[x]])}
	}else{
		node.setAttribute('i',1)
		var node=node.parentNode;
		var arr2=[];
		for (var childItem in node.childNodes) {
	    if (node.childNodes[childItem].nodeType == 1){arr2.push(childItem)}}
		for (var childItem in node.childNodes) {
		    if (node.childNodes[childItem].nodeType == 1 && node.childNodes[childItem].getAttribute("i")==1){
				node.childNodes[childItem].removeAttribute("i");
				var i = arr2.length
			    while (i--) {
			        if (arr2[i] === childItem) return i+1;
			    }
			}
	    }	
	}
}

//getChild fn-12 //

//inArray fn-13
inArray = Array.prototype.indexOf ?
function (arr, val) {
    return arr.indexOf(val) != -1
} :
function (arr, val) {
    var i = arr.length
    while (i--) {if (arr[i] === val) return true}
    return false
}
//inArray fn-13 //

//hasAttr fn-14
function hasAttr(node,name){
	var node = (typeof node == 'string') ? document.getElementById(node) : node;
	return node.getAttribute(name)!=null
}
//hasAttr fn-14 //

//id fn-15
function id(name){return document.getElementById(name)}
//id fn-15 //
function shellshow(x,y) {
	document.getElementById(x).style.display='block';
	document.getElementById(y).className+=' hov';
	}
function shellhide(x,y) {
	document.getElementById(x).style.display='none';
	document.getElementById(y).className='item';
	}
		
		//menu script 5.12.2010
function hoverem(x, y){
	for (var i=1; i<6; i++) {
	document.getElementById('sel'+i).style.display='none';
	document.getElementById('em'+i).className='menu'+i;	
};
	
	document.getElementById('sel'+x).style.display='block';
	document.getElementById('em'+x).className='bghover'+x+' menu'+x;
}
function outem(){
	for (var i=1; i<6; i++) {
	document.getElementById('sel'+i).style.display='none';
	document.getElementById('em'+i).className='menu'+i;	
};
}
/** box left **/
onReady(function() {/*
	getClass("div.select", function(){
		var _this=this;
		Event.bind(_this.getElementsByTagName('span')[0],"click", function(){
			getClass("div.select", function(){
				this.getElementsByTagName('ul')[0].style.display="none"
				this.getElementsByTagName('ul')[0].style.height="0"
			})
			var ul=_this.getElementsByTagName('ul')[0];
			css(ul, {
				'display':"block",
				"height":"120"
			})
		})
	})
	getClass("div.select", function(){
		var _this=this;
		var l=_this.getElementsByTagName('ul')[0].getElementsByTagName('li').length;
		for (var i=0; i<l; i++) {
			(function(i){
			var li=_this.getElementsByTagName('ul')[0].getElementsByTagName('li')[i];
			Event.bind(li,"click", function(){
				_this.getElementsByTagName('span')[0].innerHTML=li.innerHTML;
				_this.getElementsByTagName('ul')[0].style["display"]="none"
					_this.getElementsByTagName('ul')[0].style["height"]="0"

				setTimeout(function(){
					_this.getElementsByTagName('ul')[0].style["display"]="none"
				},200)
			})	
			})(i);
		};
	});
	getClass("label.checkbox", function(){
		if(hasAttr(this.getElementsByTagName('input')[0],'checked')){
			addClass(this,"check")
		}
	});
	getClass("label.checkbox", function(){
		//alert(this.nodeName)
		Event.bind(this,"click", function(){
				if(window.globals=="undefined"){
					if(hasAttr(this.getElementsByTagName('input')[0],'checked')){
						removeClass(this,"check")
						this.getElementsByTagName('input')[0].removeAttribute('checked')
					}else{
						addClass(this,"check")
						this.getElementsByTagName('input')[0].setAttribute('checked',"checked")
					}
					globals=0;
				}else{
					globals="undefined";
				}
		})
	});*/
	Event.bind(id("hide1") ,'click', function(){
			addClass(id("form_box2"),"hide")
			removeClass(id("form_box1"),"hide")		
	})
	Event.bind(id("hide2") ,'click', function(){
			addClass(id("form_box1"),"hide")
			removeClass(id("form_box2"),"hide")
	})
});


