if (!userApp)
{

	var userApp=navigator.userAgent.toLowerCase();
	var isMSIE = true;
	var isOpera = false;
	var isGecko = false;
	var isSafari = false;


	if (userApp.search(/opera/i)!=-1)
	{
		isOpera=true;
		
	}
	if (userApp.search(/gecko/i)!=-1)
	{
		isGecko=true;
	}
	if (userApp.search(/apple/i)!=-1)
	{
		isSafari = true;
	}
	if (isGecko || isOpera || isSafari)
	{
		isMSIE=false;
		var tempVer = userApp.search(/\/([0-9\.]+)/);
		if (tempVer != -1)
		{
			tempVer += 1;
		}
	}
	else
	{
		var tempVer = userApp.search(/msie ([0-9\.]+)/);
		if (tempVer != -1)
		{
			tempVer += 'msie '.length;
		}
	}
	if (tempVer != -1)
	{
		var uaVersion = parseFloat(userApp.substr(tempVer));
	}
	
}


function dump(text,renew)
{
	if (!dumpDiv)
		return false;
	if (renew === true)
		dumpDiv.innerHTML = '';
	dumpDiv.innerHTML += text + '<br />';
}

function getCoord(d_o)
{
	currentX=currentY=0;
	while(d_o)
	{
		currentX += d_o.offsetLeft;
		currentY += d_o.offsetTop;
		d_o = d_o.offsetParent || null;
	}
	return new Array(currentX, currentY);
}
function parseEventCoord(event,percentShow,dim)
{
	var currentX = 0;
	var currentY = 0;
	if (isMSIE || isOpera)
	{
		currentX = window.event.clientX + document.documentElement.scrollLeft;// + document.body.scrollLeft;
		currentY = window.event.clientY + document.documentElement.scrollTop;// + document.body.scrollTop;

		window.event.cancelBubble = true;
		window.event.returnValue = false;
	}
	else if (isGecko)
	{
		currentX = event.clientX + window.scrollX;// + document.body.scrollLeft;
		currentY = event.clientY + window.scrollY;
	}
	
	if (percentShow === true)
	{
		if (!window.wDim || !wDim)
			var wDim = getWindowDim();
		if (!dim || dim === 0 || dim === 1)
			currentX *= (100/wDim[0]);
		if (!dim || dim === 0 || dim === 2)
			currentY *= (100/wDim[1]);
	}
	
	return new Array(currentX, currentY);
}


// written by Dean Edwards, 2005
// with input from Tino Zijdel - crisp@xs4all.nl
// http://dean.edwards.name/weblog/2005/10/add-event/
function autoAttachEvent(element, type, handler)
{
	if (element.addEventListener)
		element.addEventListener(type, handler, false);
	else
	{
		if (!handler.$$guid) handler.$$guid = autoAttachEvent.guid++;
		if (!element.events) element.events = {};
		var handlers = element.events[type];
		if (!handlers)
		{
			handlers = element.events[type] = {};
			if (element['on' + type]) handlers[0] = element['on' + type];
			element['on' + type] = handleEvent;
		}
	
		handlers[handler.$$guid] = handler;
	}
}
autoAttachEvent.guid = 1;

function autoDetachEvent(element, type, handler)
{
	if (element.removeEventListener)
		element.removeEventListener(type, handler, false);
	else if (element.events && element.events[type] && handler.$$guid)
		delete element.events[type][handler.$$guid];
}

function handleEvent(event)
{
	event = event || fixEvent(window.event);
	var returnValue = true;
	var handlers = this.events[event.type];

	for (var i in handlers)
	{
		if (!Object.prototype[i])
		{
			this.$$handler = handlers[i];
			if (this.$$handler(event) === false) returnValue = false;
		}
	}

	if (this.$$handler) this.$$handler = null;

	return returnValue;
}

function fixEvent(event)
{
	event.preventDefault = fixEvent.preventDefault;
	event.stopPropagation = fixEvent.stopPropagation;
	return event;
}
fixEvent.preventDefault = function()
{
	this.returnValue = false;
}
fixEvent.stopPropagation = function()
{
	this.cancelBubble = true;
}


function getWindowDim(inPercent,dim)
{
//	var width = window.innerWidth ? window.innerWidth : document.body.clientWidth ? document.body.clientWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : null;
//	var height = window.innerHeight ? window.innerHeight : document.body.clientHeight ? document.body.clientHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : null;
	var width, height;
	if (!isMSIE)
	{
		width = window.innerWidth;
		height = window.innerHeight;
	}
	else if (uaVersion >= 6)
	{
		width = document.body.clientWidth;
		height = document.body.clientHeight;
//		alert(width + '/' + height);
	}
	else
	{
		width = document.body.clientWidth;
		height = document.body.clientHeight;
	}
	
	if (inPercent === true)
	{
		if (!dim || dim === 0 || dim === 1)
			width = 100;
		if (!dim || dim === 0 || dim === 2)
			height = 100;
	}
	return [width, height];
}
/**

Cookies

**/

function trim(str)
{
	var newStr = str.replace(/^ +/,'');
	return newStr.replace(/ +$/,'');
}

function parseCookies()
{
	var cStr = document.cookie;
//	alert(cStr);
	var cArr = cStr.split(/;/);
	var cCookie;
	var cookieArr = new Array();
	for (var i = 0; i < cArr.length; i++)
	{
		cCookie = cArr[i].split(/=/);
		cookieArr[trim(cCookie[0])]=cCookie[1];
	}
	return cookieArr;
}

function setCookie (name, value, expires)
{
	if (parseInt(expires))
	{
		var exp = new Date();
		exp.setTime(exp.getTime() + parseInt(expires)*1000*60*60*24);
	}
	document.cookie = name + '=' + value + ';' + (exp ? ' expires='+exp.toGMTString()+';' : '') + ' path=/hidden/;';
}

function getCookie(name)
{
	var cookieArr = parseCookies();
	return (cookieArr[name] ? cookieArr[name] : false);
}

function unserialize(str, delim)
{
	if (!delim)
		delim = '|';
	return str.split(delim);
}

function serialize(arr,delim)
{
	if (!delim)
		delim = '|';
	return arr.join(delim);
}

/**

flash

**/

function check_flash_version( iVersion ){
		if( navigator.plugins && navigator.plugins['Shockwave Flash'] ){
			var sVersion = ( !iVersion ) ? "\\d+" : "[" + iVersion + "-9]\\d*";
			sVersion = parseInt( navigator.plugins['Shockwave Flash'].description.replace( new RegExp( "^[^\\d]+(" + sVersion + ").*$"), "$1" ) );
			return ( isNaN( sVersion ) ) ? ( !iVersion ) ? false : 0 : sVersion;
		}else if( isMSIE ){
			var oTemp, iMax = 20;
			iVersion = ( !iVersion ) ? 3 : iVersion;
			for( var i = iVersion ; i < iMax ; i++ ){
				try{
					oTemp = new ActiveXObject( "ShockwaveFlash.ShockwaveFlash." + i );
					iVersion = i;
				}catch(e){
					return ( i > iVersion ) ? iVersion : 0;
				}
			}
			return iVersion;
		}else{
			return ( !iVersion ) ? false : 0;
		}
	}
	
/**

misc

**/

/**
dim - ось X (0) / Y (1)
**/
function px2perc(value,dim)
{
	value = parseFloat(value);
	if (!window.wDim)
		window.wDim = getWindowDim();
	value *= 100/(window.wDim[dim == 1 ? 1 : 0]);
	return value;
}
function perc2px(value,dim)
{
	value = parseFloat(value);
	if (!window.wDim)
		window.wDim = getWindowDim();
	value /= 100/(window.wDim[dim == 1 ? 1 : 0]);
	return Math.round(value);
}
