/* (c) 2006 Field of View (www.fov.ru) */

var CLR=new Object();

CLR.AddEvent=function(obj,event,handler){
	tmp='__tmp';
	obj[event]=function(e){
		if(!e){
			e=window.event;
		}
		if(!e.target){
			e.target=e.srcElement;
		}
		obj[tmp]=handler;
		result=obj[tmp](e);
		obj[tmp]=null;
		return result;
	}
};

CLR.AddStrictEvent=function(obj,event,handler){
	tmp='__tmp';
	obj[event]=function(e){
		if(!e){
			e=window.event;
		}
		if(!e.target){
			e.target=e.srcElement;
		}
		obj[tmp]=handler;
		result=obj[tmp](e);
		obj[tmp]=null;
		e.cancelBubble=true;
		if(e.stopPropagation){
			e.stopPropagation();
		}
		return result;
	}
};

CLR.Append=function(baseVar,newValue){
	return newValue?newValue:baseVar;
};

CLR.GetObject=function(id){
	return document.getElementById(id);
};

CLR.GetPixelLeft=function(obj){
	var curleft=0;
	if(obj.offsetParent){
		while(obj.offsetParent){
			curleft+=obj.offsetLeft
			obj=obj.offsetParent;
		}
	}
	else
		if(obj.x){
			curleft+=obj.x;
		}
	return curleft;
};

CLR.GetPixelTop=function(obj){
	var curtop=0;
	if(obj.offsetParent){
		while(obj.offsetParent){
			curtop+=obj.offsetTop
			obj=obj.offsetParent;
		}
	}
	else
		if(obj.y){
			curtop+=obj.y;
		}
	return curtop;
};

CLR.GetUserAgentInfo=function(){
	var userAgent=navigator.userAgent;
	var userAgentName=navigator.appName;
	var userAgentVersion=navigator.appVersion;
	var info=new Object();
	var matches;
	if(userAgentName.search(/Microsoft\sInternet\sExplorer/i)!=-1){
		info.engine='MSIE';
		info.name='Internet Explorer';
		matches=userAgentVersion.match(/(\d\.\d)/);
		if(matches&&matches[1].length>0){
			info.version=matches[1];
		}
		else{
			info.version=false;
		}
	}
	else
		if(userAgent.search(/Firefox/i)!=-1){
			info.engine='Gecko';
			info.name='Firefox';
			matches=userAgentVersion.match(/Firefox\/(\d\.\d)/);
			if(matches&&matches[1].length>0){
				info.version=matches[1];
			}
			else{
				info.version=false;
			}
		}
		else
			if(userAgent.search(/Mozilla/i)!=-1){
				info.engine='Gecko';
				info.name='Mozilla';
				matches=userAgentVersion.match(/(\d\.\d)/);
				if(matches&&matches[1].length>0){
					info.version=matches[1];
				}
				else{
					info.version=false;
				}
			}
			else
				if(userAgentName.search(/Opera/i)!=-1){
					info.engine='Opera';
					info.name='Opera';
					matches=userAgentVersion.match(/(\d\.\d)/);
					if(matches&&matches[1].length>0){
						info.version=matches[1];
					}
					else{
						info.version=false;
					}
				}
				else{
					info.engine=false;
					info.name=false;
					info.version=false;
				}
	return info;
};

CLR.DecToHex=function(dec,len){
	var hd='0123456789ABCDEF';
	var h=hd.substr(dec&15,1);
	while(dec>15){
		dec>>=4;
		h=hd.substr(dec&15,1)+h;
	}
	while(len&&(h.length<len)){
		h='0'+h;
	}
	return h;
};

CLR.HexToDec=function(hex,len){
	return parseInt(hex,16);
};

CLR.GetCSSValue=function(element,property){
	var defaultView;
	if((defaultView=document.defaultView)&&defaultView.getComputedStyle){
		return defaultView.getComputedStyle(element,'')[property];
	}
	else
		if(element.currentStyle){
			return element.currentStyle[property];
		}
};

