// ChildNode Control (c) alfadesign - alfadesign.dk
/*--------------------findElement----------------------------------*/

var $userAgent = navigator.userAgent.toLowerCase();
// Figure out what browser is being used
var $browser = {
	version: ($userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [])[1],
	safari: /webkit/.test( $userAgent ),
	opera: /opera/.test( $userAgent ),
	msie: /msie/.test( $userAgent ) && !/opera/.test( $userAgent ),
	mozilla: /mozilla/.test( $userAgent ) && !/(compatible|webkit)/.test( $userAgent )
};

/* ja*/
function getRangeObject(frame) {
	if (frame.contentWindow.getSelection){
		selectionObject=frame.contentWindow.getSelection();
		if (selectionObject.getRangeAt) return selectionObject.getRangeAt(0);
		else { // Safari!
			var range = document.createRange();
			range.setStart(selectionObject.anchorNode,selectionObject.anchorOffset);
			range.setEnd(selectionObject.focusNode,selectionObject.focusOffset);
			return range;
		}
	}else if (frame.contentWindow.document.selection)return frame.contentWindow.document.selection.createRange().text;
}

var $tag = function(e,p){if(!p)p=document; return p.getElementsByTagName(e);}
var $id  = function(e){ return (e=='body'||e=='head')?$tag(e)[0]:document.getElementById(e);}
var $css= function(){
	var e=[];
	for (q=0;q<arguments.length;q++){
		var a=arguments[q].split(" "), p=[document];
		for (i=0;i<a.length;i++){
			var c='',t='*',id='',parent=p, p=[];
			var class_search=a[i].split('.');
			if(class_search.length>1){
				c=class_search[1];
				a[i]=class_search[0];
			}
			var id_search=a[i].split('#');
			id=(id_search[1])?id_search[1]:id;
			t=(id_search[0])?id_search[0]:t;
			for (x=0;x<parent.length;x++){
				var all=parent[x].getElementsByTagName(t);
				for(w=0;w<all.length;w++){
					if((id==all[w].id || id=='') && (t==all[w].tagName.toLowerCase() || t=='*') && (c==all[w].className || c==''))p.push(all[w]);
				};
			};
		};
		for (i = 0; i < p.length; i++) {
			e.push(p[i]);
		}
	};
	return e;
}


var $class = function (className,parent,tag){ //getElementsByClassName
	if(!className)return false;
	var classElements = [];
	if(!parent)parent=document;
	if(!tag)tag='*';
	var els = parent.getElementsByTagName(tag);
	for (i=0;i<els.length;i++){var regex= RegExp("(^| )"+className+"( |$)");if(els[i].className.match(regex))classElements.push(els[i]); }
	return classElements;
}
var $array = function(){
	var elements = new Array();
	for (var i = 0; i < arguments.length; i++) {
		elm=arguments[i];
		if (typeof elm == 'string'){
			if($id(elm)!=null){elements.push( $id(elm) );}
			else if (elm=='body' || elm=='head'){elements.push( tag(elm)[0] );}
			else if($tag(elm)!=null){for(it=0;it<$tag(elm).length;it++){elements.push( $tag(elm)[it] )};}
			else if($class(elm)!=null){for(ic=0;ic<$class(elm).length;ic++){elements.push( $class(elm)[ic] )};}
		}else{ elements.push(elm);}
	}
	if(elements.length>0)return elements;
	else return null;
}
var $ = function(){ 
	txt="";
	for (i=0;i<arguments.length;i++){ txt+="'"+arguments[i]+"'"; if(i<arguments.length-1)txt+=",";	}
	elm = eval("$array("+txt+")");
	if(elm){
		if (elm.length==1)return elm[0];
		else return elm;
	}else return null;
}
var $childsOf = function(p){
	var Elm=$array(p), ElmChilds=new Array();
	for(var i=0;i<Elm.length;i++){
		for(var j=0;j<Elm[i].childNodes.length;j++){
			if(Elm[i].childNodes[j].nodeType==1)ElmChilds.push(Elm[i].childNodes[j]);
		}
	}
	return ElmChilds;
}
/*--------------------childControl---------------------------------*/
var $n = function(id,parent,insertPlace,type){
	if($id(id))return $id(id);
	else return $insert(type,parent,insertPlace,id)
}
var $insert = $new =function(type,parent,insertPlace,id,className){
		if(!parent)parent=$('body');
		if(!type)type='div';
		var e=document.createElement(type);
		if(id)e.id=id;
		if(className)e.className=className;
		return $m(e,parent,insertPlace);	
}
var $removeElement = $remove = $destroy = $delete = $r = function removeElement(e){
	if(e)e.parentNode.removeChild(e); 
}

var $cloneElement = $clone = function(e,rElm,insertPlace){
	if(!rElm)rElm=$('body');
	return $m(e.cloneNode(true),rElm,insertPlace);
}
var $moveElement = $move = $m = function(e,rElm,moveToPlace){
	if(rElm){
		if(!moveToPlace)moveToPlace=1;
		if(moveToPlace==2 || moveToPlace=='first'){
			if(rElm.firstChild)rElm.insertBefore(e,rElm.firstChild);
			rElm.appendChild(e);
		}
		if(moveToPlace==3 || moveToPlace=='after'){
			if($next(rElm))rElm.parentNode.insertBefore(e,$next(rElm));
			else rElm.parentNode.appendChild(e);	
		}
		if(moveToPlace==4 || moveToPlace=='before'){
			rElm.parentNode.insertBefore(e,rElm);
		}
		if(moveToPlace==1 || moveToPlace=='last'){
			rElm.appendChild(e);
		}
		return e;
	}else return false;
}
var $replaceElement = $replace = function(oE,e){
	if(oE.nodeType==e.nodeType)$parent(oE).replaceChild(oE,e);
}
var $changeType = $ctype = function(e,type){
	n=$new(type,e,'after');
	n.innerHTML=e.innerHTML;
	if(e.onclick)n.onclick=e.onclick;
	if(e.onmouseover)n.onmouseover=e.onmouseover;
	if(e.onmouseout)n.onmouseout=e.onmouseout;
	if(e.onmousedown)n.onmousedown=e.onmousedown;
	if(e.onmouseover)n.onmouseover=e.onmouseover;
	if(e.id)n.id=e.id;
	if(e.className)n.className=e.className;
	if(e.href)n.href=e.href;
	if(e.rel)n.rel=e.rel;

	
	$delete(e);
	return n;
}
var $nextElement = $next = function(e){
	while(e){
		if(e.nextSibling)e=e.nextSibling;
		else return false;
		if(e.nodeType==1)return e;
	}
}
var $previousElement = $previous = $prev = function(e){
	while(e){
		if(e.previousSibling)e=e.previousSibling;
		else return false;
		if(e.nodeType==1)return e;
	}
}
var $firstChild = function(parent){
	if(parent.firstChild)var e=parent.firstChild;
	else return false;
	if(e.nodeType==1)return e;
	else return $next(e);
}
var $lastChild = function(parent){
	if(parent.firstChild)var e=parent.firstChild;
	else return false;
	while(e){
		if($next(e))e=$next(e);
		else return e;
	}
	return false;
}
var $parent = function(e){ return e.parentNode; }

/*--------------------elementFunction----------------------------------*/
var toggle = function(e){
	return (getStyle(e,'display')!='none')? hide(e) : show(e);
}
var toggleEval = function(e,evalshow,evalhide){
	if(getStyle(e,'display')!='none'){
		hide(e);
		eval(evalhide);
	}else{
		show(e);
		eval(evalshow);
	}
	return e;
}
var hide = function(e){ e.style.display='none'; return e; }
var show = function(e){ e.style.display='block'; return e; }

var __animate = {t:null,f:null,c:0,s:0,m:0,p:null,run:function(){
	var A=__animate;
	if(A.t)clearTimeout(A.t);
	A.f(A.c,(A.c/A.s),A.p);
	if(A.c++<A.s)A.t=setTimeout(A.run,A.m);	
}};
var animate = function(steps,millisec,parm,func) { 
	if(steps && millisec && parm && func){
		var A=__animate;
		A.c=0;
		A.s=steps;
		A.m=millisec;
		A.p=parm;
		A.f=func;
		A.run();
	}
}


var setOpacity = setO = function(e,v) {
	e.style.opacity = v/10;	
	e.style.filter = 'alpha(opacity=' + v*10 + ')';
//    e.style.MozOpacity = v/10; 
//    e.style.KhtmlOpacity = v/10; 
	return e;
}

var moveTo=function(e,x,y){
	if(getStyle(e,"position")!="absolute" && getStyle(e,"position")!="relative")e.style.position="absolute";
	e.style.left=x+"px";
	e.style.top=y+"px";
	return e;
}
var resizeTo=function(e,w,h,e2){
	e.style.width=w+"px";
	if(!e2)e2=e;
	e2.style.height=h+"px";	
	return e;
}
function getStyle(el,styleProp){
	if (el.currentStyle)
		var y = el.currentStyle[styleProp];
	else if (window.getComputedStyle)
		var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
	if(y) return y
	else if(styleProp.indexOf('-')>-1){
		tt=styleProp.split('-');
		t2=tt[0]+tt[1].substr(0,1).toUpperCase()+tt[1].substr(1);
		return getStyle(el,t2);		
	}
}
function getLeft(e){
	var curLeft = 0;
	if (e.offsetParent) {
		curLeft = e.offsetLeft
		while (e = e.offsetParent){ curLeft += e.offsetLeft }
	}
	return curLeft;
}
function getRight(e){
	var curLeft = 0, w = e.offsetWidth;
	if (e.offsetParent) {
		curLeft = e.offsetLeft
		while (e = e.offsetParent){ curLeft += e.offsetLeft }
	}
	return curLeft+w;
}
function getTop(e){
	var curTop = 0;
	if (e.offsetParent) {
		curTop = e.offsetTop
		while (e = e.offsetParent){ curTop += e.offsetTop }
	}
	return curTop;
}
function getBottom(e){
	var curTop = 0, h = e.offsetHeight;
	if (e.offsetParent) {
		curTop = e.offsetTop
		while (e = e.offsetParent){ curTop += e.offsetTop }
	}
	return curTop+h;
}
function getPos(e){
	return [getLeft(e),getTop(e)];
}
function getWinHeight(){
	if(typeof(window.innerHeight)=='number')return window.innerHeight;
	else if(document.documentElement && document.documentElement.clientHeight)return document.documentElement.clientHeight;
	else if(document.body && document.body.clientHeight)return document.body.clientHeight;	
}
function getWinWidth(){
	if(typeof(window.innerWidth)=='number')return window.innerWidth;
	else if(document.documentElement && document.documentElement.clientWidth)return document.documentElement.clientWidth;
	else if(document.body && document.body.clientWidth)return document.body.clientWidth;
}
function getWinScrollY() {
	if(typeof(window.pageYOffset)=='number')return window.pageYOffset;
	else if(document.body && document.body.scrollTop)return document.body.scrollTop;
	else if(document.documentElement && document.documentElement.scrollTop)return document.documentElement.scrollTop;
}
function getWinScrollX() {
	if(typeof(window.pageXOffset) == 'number')return window.pageXOffset;
	else if(document.body && document.body.scrollLeft)return document.body.scrollLeft;
	else if(document.documentElement && document.documentElement.scrollLeft)return document.documentElement.scrollLeft;
}
function getWinH(){ return getWinHeight()+getWinScrollY(); }
function getWinW(){ return getWinWidth()+getWinScrollX(); }


var addEvent = function(e,type,func){ 
	if (e.addEventListener)e.addEventListener(type, func, false); 
	else if (e.attachEvent)e.attachEvent('on'+ type, func); 
	return func;
}
var removeEvent = function(e,type,func){ 
	if (e.removeEventListener)e.removeEventListener(type, func , false); 
	else if (e.detachEvent)e.detachEvent('on' + type, func); 
}
var unFocus = function(e){
	if (document.attachEvent){ 
		window.event.cancelBubble=true; 
		window.event.returnValue=false;
	}else if(e.preventDefault)e.preventDefault();
	
}
var fixTarget = fix = function(e){
	if (!e) var e = window.event;
	var target = (e.target)?e.target:e.srcElement;// Firefox, Netscape, Opera(e.target) or IE(e.srcElement)
	if (target.nodeType == 3)target = target.parentNode;// defeat Safari bug(if nodeType=3(inlinetext))
	return target;
}
/*--------------------------  Ajax functins  ---------------------------*/
var preload_list = { url:[],content:[],img:[],id:0,load:0 };
function chech_preload_urls(url){ for(i=0;i<preload_list.url.length;i++){if(url==preload_list.url[i])return i;}; return false }
function preload(e,url,func){
	var preload_element=e;
	var preload_func=func;
	var i=chech_preload_urls(url);
	if(i){
		if(preload_element)preload_element.innerHTML=preload_list.content[i];
		if(preload_func)preload_func(preload_list.content[i]);	
	}else{
		preload_list.url[preload_list.id] = url;
		ajax_request(url,function(response){
			preload_list.content[preload_list.id] = response;
			var img_extract = response.match(/<img[^>]*>/g);
			for (i=0;i<img_extract.length;i++){
				preload_list.img[preload_list.img.length]=IM=new Image;
				IM.src=img_extract[i].replace(/<img src=\"([^\"]*)\"[^>]*>/,"$1");				
			}
			//alert(preload_list.img)
			if(preload_element)preload_element.innerHTML=response;
			if(preload_func)preload_func(response);
			preload_list.id++;
		});
	}
}
function load(e,url,func,ua){
	var load_element=e;
	var load_func=func;
	if($('ajax_loader') && ua==null){
		$('ajax_loader').style.left=(getLeft(e)+5)+"px";
		$('ajax_loader').style.top=(getTop(e)+5)+"px";
	}
	ajax_request(url,function(response){
		if($('ajax_loader'))$('ajax_loader').style.left="-500px";
		if(load_element)load_element.innerHTML=response;
		if(load_func)load_func(response);
	});
	return e;
}


var arequest = ajax_request;
function ajax_request(url,func){
	var ajax_request_func=func;
	var x = window.ActiveXObject ? new ActiveXObject(navigator.userAgent.indexOf("MSIE 5") >= 0 ? "Microsoft.XMLHTTP" : "Msxml2.XMLHTTP"): new XMLHttpRequest();
	if (x){
		if(x.readyState != 0)x.abort();
		x.onreadystatechange = function(){
			if (x.readyState == 4 && x.status == 200){
				var response = x.responseText;
				var ajaxBeforeActionScript = response.match(/<script class=\"ajaxBeforeAction\">((\n|.)*?)<\/script>/);
				var ajaxAfterActionScript = response.match(/<script class=\"ajaxAfterAction\">((\n|.)*?)<\/script>/);
				response = response.replace(/<script class=\"ajax(Before|After)Action\">((\n|.)*?)<\/script>/,"");
				if(ajaxBeforeActionScript)ajaxBeforeActionScript=ajaxBeforeActionScript[1];
				if(ajaxAfterActionScript)ajaxAfterActionScript=ajaxAfterActionScript[1];
				
				if(ajaxBeforeActionScript)eval(ajaxBeforeActionScript);
				if(ajax_request_func)ajax_request_func(response); // response function
				if(ajaxAfterActionScript)eval(ajaxAfterActionScript);
			}
		}
		x.open("GET", url , true);
		x.send(null);
	}
}

function ajax_request_post(url,params,func){
	var ajax_request_post_func=func;
	var x = window.ActiveXObject ? new ActiveXObject(navigator.userAgent.indexOf("MSIE 5") >= 0 ? "Microsoft.XMLHTTP" : "Msxml2.XMLHTTP"): new XMLHttpRequest();
	if (x){
		x.onreadystatechange = function(){
			if (x.readyState == 4 && x.status == 200){
				if(ajax_request_post_func)ajax_request_post_func(x.responseText);
			}
		}
		x.open("POST", url , true);
		x.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		x.setRequestHeader("Content-length", params.length);
		x.setRequestHeader("Connection", "close");
		x.send(params);
	}
}
