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 base64Encode(input) {
	var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
	var output = "";
	var chr1, chr2, chr3;
	var enc1, enc2, enc3, enc4;
	var i = 0;
	
	do {
		chr1 = input.charCodeAt(i++);
		chr2 = input.charCodeAt(i++);
		chr3 = input.charCodeAt(i++);
		
		enc1 = chr1 >> 2;
		enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
		enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
		enc4 = chr3 & 63;
		
		if (isNaN(chr2)) {
			enc3 = enc4 = 64;
		} else if (isNaN(chr3)) {
			enc4 = 64;
		}
		
		output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + 
		keyStr.charAt(enc3) + keyStr.charAt(enc4);
	} while (i < input.length);
	
	return output;
}

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 = "";

//alert(base64Decode(uriParam));

	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" + uriParam.cms_id, 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" + uriParam.cms_id, windowOptions);
}

function showHide(id)
{
	var item = document.getElementById(id);
	var img = document.getElementById('img_'+id);

	if (item.hidden == undefined || !item.hidden)
	{
		item.style.display = 'none';
		item.hidden = true;

		if (img)
		{
			img.src = '/stream/images/stock/tree_max.gif';
		}
	}
	else
	{
		item.style.display = 'block';
		item.hidden = false;

		if (img)
		{
			img.src = '/stream/images/stock/tree_min.gif';
		}
	}
}

function openPopup(name, attr)
{
	var _url = name;

	var _i = 0;

	for (var _key in attr)
	{
		if (_i == 0)
		{
			_url += '?';
		}

		if (_i++ > 0)
		{
			_url += '&';
		}

		_url += _key + '=' + encodeURIComponent(attr[_key]);
	}

	window.open(_url, 'popup_op', 'dependent=yes,toolbar=no,status=no,resizable=yes,height=480,width=840', true).focus();
}

function CKEDITOR_GETURL(resource)
{
	var match = resource.match( /(config)\.js$/ );

	if (match) {
		if ('config' == match[1] || 'styles' == match[1]) {
			resource = 'http://' + location.hostname + '/stream/js/edit/ckeditor/' + match[1] + '.js';
		}

		return resource;
	}

//	var match = resource.match( /lang\/([a-z\-]+)\.js$/ );
//	if ( match )
//		return '/getlang.php?lang=' + match[ 1 ];
}
