// Copyright (C) 2010 Cognos ULC, an IBM Company. All rights reserved.
// Cognos (R) is a trademark of Cognos ULC,(formerly Cognos Incorporated).

function cancelEventBubble(e) 
{
	var evtObj = getEvent(e);
	if ( evtObj ) {
		if ( evtObj.stopPropagation )
			evtObj.stopPropagation();
		if ( evtObj.preventDefault )
			evtObj.preventDefault();
			
		evtObj.cancelBubble = true;
		evtObj.returnValue = false;
	}
}

function loadString( str )
{
	var outStr;

	if ( str == null || str == '' )
		return str;

	outStr = str;
	outStr = Replace(outStr, "\\", "\\\\");
	outStr = Replace(outStr, "\"", "&quot;");
	outStr = Replace(outStr, "'", "\\'");
	outStr = Replace(outStr, "\r", "\\r");
	outStr = Replace(outStr, "\n", "\\n");
	outStr = Replace(outStr, "\t", "\\t");
	return outStr;
}

function trim(inStr) 
{
	if (!inStr || '' == inStr)
		return inStr;
	var ch, outStr, ix, len, tmpStr;

	len = inStr.length;
	outStr = '';
	for (ix=0; ix<len; ix++) {
		ch = inStr.charAt(ix);
		if (ch != ' ') {
			outStr += inStr.substr(ix);
			break;
		}
	}
	tmpStr = outStr;
	len = tmpStr.length;
	outStr = '';
	for (ix=len-1; ix>=0; ix--) {
		ch = tmpStr.charAt(ix);
		if (ch != ' ') {
			outStr = tmpStr.substring(0, ix+1);
			break;
		}
	}
	return outStr;
}
		
function GetInputById(form, idstr)
{
	for ( var ix = 0; ix < form.length; ix++ ) 
	{
		var input = form[ix];
		if ( input.id.indexOf(idstr) > -1 )
			return input;
	}
	return null;
}

function Replace(sourceStr, oldStr, newStr)
{
	if ( sourceStr == null || oldStr == null || newStr == null )
		return sourceStr;
		
	var delem = sourceStr.split(oldStr);
	
	var retstr = sourceStr;
	for ( var ix = 0; ix < delem.length; ix++ )
	{
		if ( ix == 0 )
			retstr = delem[ix];
		else
			retstr += newStr + delem[ix];
	}
	return retstr;
}

function getElement(id) 
{
	var elem = (document.all) ? document.all[id] : document.getElementById(id);
	return elem;
}

function getObjectIdFromUrl(frm)
{
	var loc;
	if ( frm == null || typeof(frm) == 'undefined' )
		loc = this.location;
	else
		loc = frm.location;
		
	var args = getArgs(loc);
	if ( args != null )
		return args.ObjectId;
	else 
		return "";
}

function getArgs(loc) 
{
	try 
	{
		var args = new Object();
		var query = loc.search.substring(1);
		var pairs = query.split('&');
		for ( var i = 0; i < pairs.length; i++ )
		{
			var pos = pairs[i].indexOf('=');
			if ( pos == -1 ) continue;
			var argname = pairs[i].substring(0, pos);
			var value = pairs[i].substring(pos+1);
			args[argname] = unescape(value);
		}
		return args;
	}
	catch (e) 
	{
		return null;
	}
}


var isIE =  (-1 != navigator.appName.indexOf("Microsoft"));
var isMac = (-1 != navigator.userAgent.indexOf("Mac"));
var m_borderOffset = isIE ? 0 : 1;

var m_gEvent = null;
function setEvent(e)
{
	m_gEvent = e;
}

function getEventSrc(e)
{
	var evtObj = getEvent(e);
	if ( evtObj == null )
		return null;

	if ( isIE )
		return evtObj.srcElement;
	else
		return evtObj.target;
}

function getEvent(e)
{
	if ( e != null && typeof(e) != 'undefined' )
		m_gEvent = e;

	return window.event ? event : m_gEvent;
}

function isShortcutKey(e)
{
	if ( isMac )
		return e.metaKey;
	else
		return e.ctrlKey;
}

function setOpacity(elem, val)
{
	if ( val == '' )
		val == 100;
			
	if ( isIE )
	{
		elem.style.filter = 'Alpha(opacity=' + val + ')';
	}
	else
	{
		elem.style.opacity = val/100;
	}
}

function setControlText(ctrl, txt)
{
	if ( isIE )
		ctrl.innerText = txt;
	else
		ctrl.textContent = txt;
}

function getControlText(ctrl)
{
	if ( isIE )
		return ctrl.innerText;
	else
		return ctrl.textContent;
}

function setClipboard(txt)
{
	if ( window.clipboardData ) 
	{
		window.clipboardData.setData("Text", txt);
	}
	else if ( window.netscape )
	{ 
		try 
		{
			netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
		}
		catch ( e )
		{
			if ( window.parent.document.clipboardWarned == null )
			{
				var msg = COPY_CLIPBOARD_OFF_STR + '\n' + LOCAL_DATA_STORED_STR + '\n' + ENABLE_CLIPBOARD_STR;
				alert(msg);
				window.parent.document.clipboardWarned = true;
			}
			window.parent.document.clipboardText = txt;
			return;
		}
 
		var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
		if ( !clip ) return;
	  
		var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
		if ( !trans ) return;
		
		trans.addDataFlavor('text/unicode');
   
		var str = new Object();
		var len = new Object();
   
		var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
		if ( !str ) return;
		
		var copytext = txt;
   
		str.data = txt;
   
		trans.setTransferData("text/unicode", str, copytext.length*2);
   
		var clipid = Components.interfaces.nsIClipboard;
   
		if (!clip) return false;
   
		clip.setData(trans, null, clipid.kGlobalClipboard);
		return true;
	}
	return false;
}

function getClipboard( warn )
{
	var txt = null;
	if ( window.clipboardData ) 
	{
		txt = window.clipboardData.getData("Text");
	}
	else if ( window.netscape )
	{ 
		try 
		{
			netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
		}
		catch ( e )
		{
			if ( warn )
			{
				if ( window.parent.document.clipboardWarned == null )
				{
					var msg = PASTE_CLIPBOARD_OFF_STR + '\n' + LOCAL_DATA_USED_STR + '\n' + ENABLE_CLIPBOARD_STR;
					alert(msg);
					window.parent.document.clipboardWarned = true;
				}
			}
			txt = window.parent.document.clipboardText;
			return txt;
		}
		var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
		if ( !clip ) return;
	  
		var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
		if ( !trans ) return;
		
		trans.addDataFlavor('text/unicode');		
		clip.getData(trans,clip.kGlobalClipboard);

		var str = new Object();
		var strLength = new Object();

		try {
			trans.getTransferData("text/unicode", str, strLength);
		}
		catch ( e )
		{
			return null;
		}
		
		if (str) 
		{
			if ( Components.interfaces.nsISupportsWString ) 
				str = str.value.QueryInterface(Components.interfaces.nsISupportsWString);
			else if ( Components.interfaces.nsISupportsString ) 
				str = str.value.QueryInterface(Components.interfaces.nsISupportsString);
			else 
				str = null;
		}
		
		if ( str ) 
			txt = str.data.substring(0, strLength.value / 2);
	}	
	return txt;
}



