function base64Decode(str)
{
	var indexBase64 = new Array(
		-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
		-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
		-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,62, -1,-1,-1,63,
		52,53,54,55, 56,57,58,59, 60,61,-1,-1, -1,-1,-1,-1,
		-1, 0, 1, 2,  3, 4, 5, 6,  7, 8, 9,10, 11,12,13,14,
		15,16,17,18, 19,20,21,22, 23,24,25,-1, -1,-1,-1,-1,
		-1,26,27,28, 29,30,31,32, 33,34,35,36, 37,38,39,40,
		41,42,43,44, 45,46,47,48, 49,50,51,-1, -1,-1,-1,-1,
		-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
		-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
		-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
		-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
		-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
		-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
		-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
		-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1
	);
	
	var out = "";
	var chr1, chr2, chr3;
	var enc1, enc2, enc3, enc4;
	var i = 0;
	
	var len = str.length;

	do
	{
		enc1 = indexBase64[str.charCodeAt(i++)];
		enc2 = indexBase64[str.charCodeAt(i++)];
		enc3 = indexBase64[str.charCodeAt(i++)];
		enc4 = indexBase64[str.charCodeAt(i++)];
		
		chr1 = (enc1 << 2) | (enc2 >> 4);
		chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
		chr3 = ((enc3 & 3) << 6) | enc4;
		
		out += String.fromCharCode(chr1);
		
		if (enc3 != -1)
		{
			out += String.fromCharCode(chr2);
		}
		if (enc4 != -1)
		{
			out += String.fromCharCode(chr3);
		}
	}
	while (i < len);
	
	return out;
}

function submitForm(formName)
{
	var	formList = document.forms;

	for (var i = 0; i < formList.length; ++i)
	{
		if (formList[i].name == formName)
		{
			formList[i].submit();
			break;
		}
	}
}

function editPopup(popupType, uriParam, windowParam)
{
	var popupUrl = "/popup/" + popupType;
	var popupUri = "";
	var windowOptions = "";

	eval("uriParam = " + base64Decode(uriParam));
	eval("windowParam = " + base64Decode(windowParam));

	for (key in uriParam)
	{
		if (popupUri != "")
		{
			popupUri += "&";
		}

		popupUri += key + "=" + uriParam[key];
	}

	popupUrl += "?" + popupUri;

	for (key in windowParam)
	{
		if (windowOptions != "")
		{
			windowOptions += ",";
		}

		windowOptions += key + "=" + windowParam[key];
	}

	window.open(popupUrl, "popup", windowOptions);
}

function formPopup(popupType, formName, uriParam, windowParam)
{
	var popupUrl = "/popup/" + popupType;
	var popupUri = "";
	var windowOptions = "";

	eval("uriParam = " + base64Decode(uriParam));
	eval("windowParam = " + base64Decode(windowParam));

	var	formList = document.forms;

	for (var i = 0; i < formList.length; ++i)
	{
		if (formList[i].name == formName)
		{
			var	elementsList = formList[i].elements;

			for (var j = 0; j < elementsList.length; ++j)
			{
				if (popupUri != "" && popupUri.substr(popupUri.length -1, 1) != "&")
				{
					popupUri += "&";
				}

				if (popupUri.indexOf(elementsList[j].name + "=") < 0)
				{
					popupUri += elementsList[j].name + "=" + encodeURI(elementsList[j].value);
				}
			}

			break;
		}
	}

	for (key in uriParam)
	{
		if (popupUri != "" && popupUri.substr(popupUri.length -1, 1) != "&")
		{
			popupUri += "&";
		}

		if (popupUri.indexOf(key + "=") < 0)
		{
			popupUri += key + "=" + uriParam[key];
		}
	}

	popupUrl += "?" + popupUri;

	for (key in windowParam)
	{
		if (windowOptions != "")
		{
			windowOptions += ",";
		}

		windowOptions += key + "=" + windowParam[key];
	}

	window.open(popupUrl, "popup", windowOptions);
}

