function translateUrl(url)
{
	var re = /^dames\.php\?waar=([^&]*)&year=([^&]*)&month=([^&]*)(?:&day=([^&]*).*)$/;
	//url = url.replace(re, "dames/$1/$2-$3-$4");
	return url;
}

function swapFoto(id1, id2)
{
	var obj1 = document.getElementById(id1);
	var obj2 = document.getElementById(id2);
	
	var tempSrc = obj1.src;
	obj1.src = obj2.src;
	obj2.src = tempSrc;
}

function delayedWrite(text)
{
	document.write(text);
}

function getPixels(str)
{
	return str != "" ? parseInt(str.substr(0, str.length-2)) : 0;
}

function getScreenPosY(obj)
{
	var ret = 0;
	while(obj)
	{
		ret += obj.offsetTop;
		obj = obj.offsetParent;
	}
	
	return ret;
}

function getScreenPosX(obj)
{
	var ret = 0;
	while(obj)
	{
		ret += obj.offsetLeft;
		obj = obj.offsetParent;
	}
	
	return ret;
}

function _GET(param)
{
	// parse GET parameters
    re = /\?(.*)$/;
    matches = Array();
    if (document.location.href.match(re))
    {
        var splitted = RegExp.$1.split("&");
        var i =0;
        for(i=0; i<splitted.length; i++)
        {
            var args = splitted[i].split("=");
            if (args[0] == param)
            	return args[1];
        }
    }
    
    return null;
}

var g_dragItem = null;
var g_dragOptions = null;
function drag_start(obj, event, options)
{
	if (!g_dragItem)
	{
		g_dragItem = obj.cloneNode(true);
		obj.parentNode.appendChild(g_dragItem);		
		g_dragItem.style.position = "absolute";
		g_dragItem.style.display = "none";
		g_dragOptions = options;
		
		drag_onMouseMove(event, true);
		return false;
	}
	
	return true;
}

function drag_onMouseUp(event)
{
	if (!g_dragItem)
		return true;
	
	g_dragItem.parentNode.removeChild(g_dragItem);
	
	if (g_dragOptions && g_dragOptions.onDragDone)
	{
		g_dragOptions.onDragDone(g_dragOptions);
	}
	g_dragItem = null;
	return true;
}

function drag_onMouseMove(event, keepHidden)
{
	if (!g_dragItem)
		return true;
	
	if (g_dragItem.style.display == "none" && !keepHidden)
		g_dragItem.style.display = "";
		
	g_dragItem.style.left = (event.clientX + 10) + "px";
	g_dragItem.style.top = (event.clientY) + "px";
	
	return false;
}

function dom_isDescendant(src, dest)
{
	var ret = false;
	
	var i;
	for(i=0; i<dest.childNodes.length && !ret; i++)
	{
		if (dest.childNodes[i] == src)
			ret = true;
		else
		{
			ret = dom_isDescendant(src, dest.childNodes[i]);
		}
	}
	
	return ret;
}

function post(action, attributes)
{
	var body = document.getElementsByTagName("body");
	body = body && body.length >= 1 ? body[0] : null;
	
	if (!body)
		return false;
		
	var form = document.createElement("form");
	form.style.display = "none";
	form.action = action;
	form.method = "post";
	body.appendChild(form);
	
	for(attr in attributes)
	{
		var input = document.createElement("input");
		input.type = "hidden";
		input.name = attr;
		input.value = attributes[attr];
		form.appendChild(input);
	}
	
	form.submit();
}

function openDatePicker(returnFunction, x, y, year, month)
{
	var div = document.getElementById("dateSelectDiv");
	
	if (div)
		hideDatePicker();

	div = document.createElement("div");
	div.id = "dateSelectDiv";
	div.style.position = "absolute";
	div.style.width = "280px";
	div.style.height = "210px";
	div.style.top = y + "px";
	div.style.left = x + "px";
	
	var iframe = document.createElement("iframe");
	var url = "selectdate.php?returnFunction=" + returnFunction + "&width=280&height=210";
	if (year)
		url += "&year=" + year;
		
	if (month)
		url += "&month=" + month;
		
	iframe.src = url;
	iframe.frameBorder  = 0;
	iframe.scrolling    = "no";
	iframe.marginWidth  = 0;
	iframe.maringHeight = 0;
	iframe.height = 210;
	iframe.width = 280;

	div.appendChild(iframe);
	
	var body = document.getElementsByTagName("body")[0];
	body.appendChild(div);
}

function hideDatePicker()
{
	var div = document.getElementById("dateSelectDiv");
	div.parentNode.removeChild(div);
}

function sprintf()
{
	if (!arguments || arguments.length < 1 || !RegExp)
	{
		return;
	}
	var str = arguments[0];
	var re = /([^%]*)%('.|0|\x20)?(-)?([1-9]\d*)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X)(.*)/;
	var a = b = [], numSubstitutions = 0, numMatches = 0;
	while (a = re.exec(str))
	{
		var leftpart = a[1], pPad = a[2], pJustify = a[3], pMinLength = a[4];
		var pPrecision = a[5], pType = a[6], rightPart = a[7];
		//alert(a + '\n' + [a[0], leftpart, pPad, pJustify, pMinLength, pPrecision);

		numMatches++;
		if (pType == '%')
		{
			subst = '%';
		}
		else
		{
			numSubstitutions++;
			if (numSubstitutions >= arguments.length)
			{
				alert('Error! Not enough function arguments (' + (arguments.length - 1) + ', excluding the string)\nfor the number of substitution parameters in string (' + numSubstitutions + ' so far).');
			}
			var param = arguments[numSubstitutions];
			var pad = '';
			       if (pPad && pPad.substr(0,1) == "'") pad = leftpart.substr(1,1);
			  else if (pPad) pad = pPad;
			var justifyRight = true;
			       if (pJustify && pJustify === "-") justifyRight = false;
			var minLength = -1;
			       if (pMinLength) minLength = parseInt(pMinLength);
			var precision = -1;
			       if (pPrecision && pType == 'f') precision = parseInt(pPrecision.substring(1));
			var subst = param;
			       if (pType == 'b') subst = parseInt(param).toString(2);
			  else if (pType == 'c') subst = String.fromCharCode(parseInt(param));
			  else if (pType == 'd') subst = parseInt(param) ? parseInt(param) : 0;
			  else if (pType == 'u') subst = Math.abs(param);
			  else if (pType == 'f' && precision != -1) 
			  {
			  	var value = parseFloat(param);
			  	subst = Math.floor(value) + ".";
			  	var remainder = Math.round((value * Math.pow(10, precision)) % Math.pow(10, precision));
			  	// add zeroes
			  	var pow = 1;
			  	for(i=1; i<=precision; i++)
			  	{
			  		if (remainder < pow)
			  			subst += "0";
			  		pow *= 10;
			  	}
			  	if (remainder != 0)
				  	subst += remainder;
			  	//subst = (precision > -1) ? Math.round(parseFloat(param) * Math.pow(10, precision)) / Math.pow(10, precision): parseFloat(param);
			  }
			  else if (pType == 'f' && precision == -1) subst = parseFloat(param);
			  else if (pType == 'o') subst = parseInt(param).toString(8);
			  else if (pType == 's') subst = param;
			  else if (pType == 'x') subst = ('' + parseInt(param).toString(16)).toLowerCase();
			  else if (pType == 'X') subst = ('' + parseInt(param).toString(16)).toUpperCase();
			
			if (minLength > String(subst).length)
			{
				var i;
				var numToPad = minLength - String(subst).length;
				for(i=0; i<numToPad; i+=(String(pad).length))
				{
					subst = pad + subst;
				}
			}
		}
		str = leftpart + subst + rightPart;
	}
	return str;
}

function sprintPrice(value, english /*= true */)
{
	if (typeof english == "undefined")
		english = true;

	var str = "";
	var v = parseInt(value) % 1000;
	if (value >= 1000 && v < 100)
		str += "0";
	if (value >= 1000 && v < 10)
		str += "0";
		
	str += english ? sprintf("%0.2f", value % 1000) : sprintf("%0.2f", value % 1000).replace(".", ",");
	value /= 1000;
	while(value >= 1)
	{
		str = (parseInt(value) % 1000) + (english ? "," : ".") + str;
		value /= 1000;
	}

	return str;
}

function dirtyPause(millis)
{
	date = new Date();
	var curDate = null;
	do { var curDate = new Date(); } 
	while(curDate-date < millis);
}
