var	tplBoundaryRegex = /(^|.|\r|\n)((?:%%|#\{)\s*(\w+)\s*(?:%|\}))/;

function isdefined( variable)
{
	return (typeof(window[variable]) == "undefined")?  false: true;
}
var StringBuffer = function() {
		this.buffer = new Array();
}
StringBuffer.prototype.append = function(obj) {
		this.buffer.push(obj);
}
StringBuffer.prototype.toString = function() {
		return this.buffer.join("");
}

function getTime() {
	var d = new Date();
	return d.getTime();
}

function sleep(milliseconds) {
	var start = new Date().getTime();

	for (var i = 0; i < 1e7; i++) {
		if ((new Date().getTime() - start) > milliseconds) {
			break;
		}
	}
}

function syncron() {
	var d = Math.round(Math.random()*50);
	sleep(d);
}

function getAbsolutePosition(element) {
	var r = { x: element.offsetLeft, y: element.offsetTop };
	if (element.offsetParent) {
	var tmp = getAbsolutePosition(element.offsetParent);
	r.x += tmp.x;
	r.y += tmp.y;
	}
	return r;
};

function loadScript(src,id,callback) {
	var scriptObj = document.createElement( 'script' );
	var rnd = Math.random()*9999999;
	scriptObj.setAttribute( 'type', 'text/javascript' );
	scriptObj.setAttribute( 'charset', 'utf-8' );
	scriptObj.setAttribute( 'id', id );
	scriptObj.setAttribute( 'onload', callback );
	// IE uglyhack.
	scriptObj.onreadystatechange = function() {
		if ( this.readyState == "complete" || this.readyState == "loaded" ) {
			eval( callback );
		}
	}
	scriptObj.setAttribute( 'src', src+'&r='+rnd);
	if ( $(id) != null ) {
		$(id).replace( scriptObj );
	} else {
		document.body.appendChild( scriptObj );
	}
}

function loadTPL(parent,name) {
	var tpl = null;
	if ( $(parent) != null && $(parent).select(name).length>0 ) {
		var tmpHTML = $(parent).select(name)[0];
		tmpHTML.remove();
		tpl = new Template( tmpHTML.innerHTML, tplBoundaryRegex );
	}
	return tpl;
}



function getRelativeCoordinates(event, reference) {
	var x, y;
	event = event || window.event;
	var el = event.target || event.srcElement;

	if (!window.opera && typeof event.offsetX != 'undefined') {
	// Use offset coordinates and find common offsetParent
	var pos = { x: event.offsetX, y: event.offsetY };

	// Send the coordinates upwards through the offsetParent chain.
	var e = el;
	while (e) {
		e.mouseX = pos.x;
		e.mouseY = pos.y;
		pos.x += e.offsetLeft;
		pos.y += e.offsetTop;
		e = e.offsetParent;
	}

	// Look for the coordinates starting from the reference element.
	var e = reference;
	var offset = { x: 0, y: 0 }
	while (e) {
		if (typeof e.mouseX != 'undefined') {
		x = e.mouseX - offset.x;
		y = e.mouseY - offset.y;
		break;
		}
		offset.x += e.offsetLeft;
		offset.y += e.offsetTop;
		e = e.offsetParent;
	}

	// Reset stored coordinates
	e = el;
	while (e) {
		e.mouseX = undefined;
		e.mouseY = undefined;
		e = e.offsetParent;
	}
	}
	else {
	// Use absolute coordinates
	var pos = getAbsolutePosition(reference);
	x = event.pageX  - pos.x;
	y = event.pageY - pos.y;
	}
	// Subtract distance to middle
	return { x: x, y: y };
}

function postToHost (to, p) {
	var myForm = document.createElement("form");
	myForm.method="post" ;
	myForm.action = to ;
	for (var k in p) {
		if(isArray(p[k])) {
			for(var i=0;i<p[k].length;i++) {
				var myInput = document.createElement("input") ;
				myInput.setAttribute("name", k) ;
				myInput.setAttribute("value", p[k][i]);
				myForm.appendChild(myInput) ;
			}
		}
		else {
			var myInput = document.createElement("input") ;
			myInput.setAttribute("name", k) ;
			myInput.setAttribute("value", p[k]);
			myForm.appendChild(myInput) ;
		}
	}
	document.body.appendChild(myForm) ;
	myForm.submit() ;
	document.body.removeChild(myForm) ;
}

function isArray(obj) {
if (obj.constructor.toString().indexOf("Array") == -1)
	return false;
else
	return true;
}

function getScrollXY() {
	var scrOfX = 0, scrOfY = 0;
	if( typeof( window.pageYOffset ) == 'number' ) {
		//Netscape compliant
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		//DOM compliant
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
	}
	return [ scrOfX, scrOfY ];
}

function logSkypeCall(pid) {
	var cmd = '/index.php?page=Log_AjaxPage&event=logSkypeCall&pid='+pid;
	new Ajax.Request(cmd, {
		method:'post',
		onSuccess: function(transport){
			var response = transport.responseText || "no response text";
		},
		onFailure: function(){
		}
	});
}

function Main_setLocation(loc)
{
	document.location = loc;
}

function Main_openWindow(params)
{
	window.open(params.url ? params.url : 'about:blank',
				params.name ? params.name : 'window' + Math.floor(Math.random()*100000+1),
				'width=' + (params.width ? params.width : 600) + ',height=' + (params.height ? params.height : 400) + ',toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=no');

}

function kdjaf(aksjhd, ksjhfsa, qoewiur, sdzucvgxjh, sdhjhsdsd){
	if (!sdhjhsdsd) sdhjhsdsd = '';
	var svfdvbesrwe = ksjhfsa + "\u0040" + qoewiur + "." + aksjhd;
	var vxysvcqwe = unescape('%6D%61%69%6C%74%6F%3A') + svfdvbesrwe;
	if( ! sdzucvgxjh ) sdzucvgxjh = svfdvbesrwe;
	document.write("<a href=\"" + vxysvcqwe + "\" style=\"" + sdhjhsdsd + "\">" + sdzucvgxjh + "</a>");
}

