/*
 * sandbox or live
 */
function getAdminLocation() {
	args = location.toString().split("/");
	localCounter = -1;
	path = args.pop();
	while(true) {
		path=args.pop();
		if (path=='sandbox') {var adminType='sandbox';break;}
		if (path=='admin.mailmessenger.com') {var adminType='live';break;}
	}
	return adminType;
}

function createRequest()
{
	var request = null;
	try {
		request = new XMLHttpRequest();
	} catch (trymicrosoft) {
		try {
			request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (othermicrosoft) {
			try {
				request = new ActrivXObject("Microsoft.XMLHTTP");
			} catch (failed) {
				request = null;
			}
		}
	}
	if (request == null)
		alert("Error creating request object");
	else
		return request;
}
function postUrl(url, Args) {
	var form = document.createElement('form');
	form.setAttribute('method', 'POST');
	form.setAttribute('action', url);
	
	for (var key in Args) {
		var input = document.createElement('input');
		input.type = 'hidden';
		input.name = 'key';
		input.value = Args[key];
		
		form.appendChild(input);
	}
	document.body.appendChild(form);

	form.submit();
}
function postUrlToWindow(windowObj, url, Args) {
	/*
	 * we need to make sure that windowObj exists.  For this we'll give it 2 mins to 
	 * detect the document element (to load) and we ping it every 1/2 a seccond.  When document element is
	 * detected we proceed w/ the process. 
	 */
	var safetyCounter = 0;
	var tryAgain = function() {
		safetyCounter++;
		if (safetyCounter < 120) {
			if (windowObj.document == null) setTimeout(tryAgain, 500);
			else executeProcess();
		}
	}
	var executeProcess = function() {
		var form = windowObj.document.createElement('form');
		form.setAttribute('method', 'POST');
		form.setAttribute('action', url);
		for (var key in Args) {
			var input = windowObj.document.createElement('input');
			input.setAttribute('type', 'hidden');
			input.setAttribute('name', key);
			input.setAttribute('value', Args[key]);
			
			form.appendChild(input);
		}
		
		windowObj.document.body.appendChild(form);
		form.submit();		
	}
	tryAgain();
}
function generateGuid() {
	var result, i, j;
	result = '';
	for(j=0; j<32; j++) {
		if( j == 8 || j == 12|| j == 16|| j == 20) result = result + '-';
		i = Math.floor(Math.random()*16).toString(16).toUpperCase();
		result = result + i;
	}
	return result
}
function getObject(movieName) {
    if (navigator.appName.indexOf("Microsoft") != -1) {
        return window[movieName];
    } else {
        return document[movieName];
    }
}
function getBase() {
	/*
	 * Cascade through the parents/openers untill you find 'sessionGuid' attribute in window object.
	 */
	if (opener) current = opener;
	else current = parent;
	/*
	 * Counter is used to prevent infinite loops, just in case.
	 */
	var counter=0;
	
	while (true) {
		/*
		 * Parent is same as its parent, or if it has sessionGuid return the window object.
		 */
		
		if (!current.opener || current['sessionGuid'])
			if (	current.parent == current ||
					current['sessionGuid'] ) break;
		
		if (current.opener) 
			current = current.opener;
		else
			current = current.parent;
		/*
		 * Just incase, we get an infinite loop.
		 */
		counter++;
		if (counter>50)break;
	}
	return current;
}
function rawURLDecode(str) {
	ret = unescape(str);
	ret = ret.replace("%40", '@');
	ret = ret.replace("%2A", '*');
	ret = ret.replace("%2B", '+');
	ret = ret.replace("%2F", '/');
	return ret;
}
function rawURLEncode(str) {
	ret = escape(str);
	ret = ret.replace('@', "%40");
	ret = ret.replace('*', "%2A");
	ret = ret.replace('+', "%2B");
	ret = ret.replace('/', "%2F");
	return ret;
}
