function CallIndexFunctionSync(func, oData, dType)
{
	return CallFunctionSyncEx(func, oData, dType, '/index.php');
}

function CallFunctionSync(func, oData, dType)
{
	return CallFunctionSyncEx(func, oData, dType, '/admin.php');
}

function CallFunctionSyncEx(func, oData, dType, callPage)
{
	if (typeof(dType) === 'undefined') dType = 'text';
	if (oData == null)
		oData = {'op' : func}
	else{
		var opData = {'op' : func};
		jQuery.extend(oData, opData);
	}
	var ret = null;
	var req = jQuery.ajax({
		url : callPage,
		dataType: dType,
		async : false,
		data : oData,
		success: function(data)
			{
				if (dType == "text")
					data = data.replace(/\n?$/, "");
				ret = data;
			}
		});
	
	return ret;
}

function GetImageWidth(image)
{
	var src = $(image).attr('src');
	if (src)
	{
		if (/\/\d+\/\d+\/?$/.test($(image).attr('src')))
		{
			var res = /\/(\d+)\/(\d+)\/?$/.exec(src);
			if (res && res[1])
				return res[1];
		}else {
			var res = /width=(\d+)/.exec(src);
			if (res && res[1])
				return res[1];
		}
	}
	return jQuery(image).get(0).clientWidth;
}

var ImageCache = [];
var urlReg = /^url/;
var internalImageReg = /^http:.*(\/kep\/\d+)$/;
function DoPreload(imgSource)
{
	if (imgSource != null && imgSource != "" && !ImageCache[imgSource])
	{
		var cImage = document.createElement('img');
		if (imgSource.match(urlReg))
			imgSource = imgSource.replace(/^url\(\'?\"?([^\)\'\"]*)\"?\'?\)$/, '$1');
		if (imgSource.match(internalImageReg))
			imgSource = imgSource.replace(internalImageReg, '$1');
		cImage.src = imgSource;
		ImageCache[imgSource] = cImage;
	}
}

function ProcessPreloads()
{
	jQuery('.preload img, img.preload').each(function(){
		DoPreload($(this).attr('src'));
		});
	jQuery('.preload *').each(function(){
		if (!$(this).hasClass('.nopreload'))
		{
			DoPreload($(this).css('background-image'));
			$(this).find(':hover').each(function() { DoPreload($(this).css('background-image')); });
		}
		});
		
}

/*
 * Thread Synchronization ( -> delayed run) 
 * Assuming javascript's single threaded behaviour, 
 * timed functions run in strict sequence.
 */

var syncSets = [];

function Synchronized(syncId, syncLock, syncFunction)
{
	var sync = {};
	sync.id = syncId;
	sync.locks = [];
	if (typeof(syncLock) == "number" )
	{
		var x;
		for(x = 0; x < syncLock;x++)
			sync.locks[x] = 1;
	}else{
		var i;
		for( i in syncLock )
			sync.locks[syncLock[i]] = 1;
	}
	sync.func = syncFunction;
	sync.synced = false;
	syncSets[syncId] = sync;
	SyncTest(syncId);
}

function SyncRelease(syncId, key)
{
	if (syncSets[syncId] && !syncSets[syncId].synced)
		syncSets[syncId].locks[key] = 0;
}

function SyncLock(syncId, key)
{
	if (syncSets[syncId] && !syncSets[syncId].synced)
		syncSets[syncId].locks[key] = 1;
}

function SyncTest(syncId)
{
	var sync = syncSets[syncId];
	var locked = false;
	var i;
	for( i in sync.locks )
	{
		if (sync.locks[i] === 1)
		{
			locked = true;
			break;
		}
	}
	if (locked)
	{
		setTimeout("SyncTest('" + syncId + "');", 1000);
	}else{
		sync.synced = true;
		sync.func();
	}
}

function SendStat(activate)
{
	if (activate)
	{
		setTimeout("SendStat(false);", 3000);
	}else{
		var ct = jQuery('.CikkTeljes'); 
		if (ct.length > 0)
		{
			var id = ct.attr('id').substr(5);
			jQuery.get("index.php", { 'op' : 'CikkStatCounterAddCikk', 'Cikk' : id});
		}else{
			jQuery('.cikk-elonezet').each(function(){
				var id = $(this).attr('id').substr(5);
				jQuery.get("index.php", { 'op' : 'CikkStatCounterAddElonezet', 'Cikk' : id});
				});
		}
	}
}


