//Global variables

var bodyWidth;
var bodyHeight;
if(typeof(window.innerWidth)=='number') {
	bodyWidth = window.innerWidth;
	bodyHeight = window.innerHeight;
} else if( document.documentElement && document.documentElement.clientWidth ) {
	bodyWidth = document.documentElement.clientWidth;
	bodyHeight = document.documentElement.clientHeight;
} else if( document.body && document.body.clientWidth ) {
	bodyWidth = document.body.clientWidth;
	bodyHeight = document.body.clientHeight;
}


function Print()
{
	window.print();
}

function openWindow(url,title,parms) {
	window.open(url,title,parms);
}

function launchEditor(content) {
	var args = new Array();
	var arr = null;
			
	args["Content"] = content;
		
	arr = showModalDialog(Utf8ToUnicode("http://www.cityofno.com/Editor/HTMLEditor.htm"), args, "dialogHeight:700px;dialogWidth:800px;resizable:yes;status:no;help:no;"); 
	if (arr != null) {
	
		// Initialize table object
		for ( elem in arr )	{
			if ("Content" == elem && arr["Content"] != null) 
			{
				return arr["Content"];
			} 
		} 
	}
}

function launchCalendar(date,field) {
	calWin = window.open("http://www.cityofno.com/Utilities/Calendar.aspx?date="+date+"&field="+field, "Calendar", "resizable=no,status=no,menubar=no,toolbar=no,address=no,history=no,scrollbars=no,width=250,height=190"); 
}

function printFriendly(url) {
	printWin = window.open(url, "Print", "resizable=yes,status=no,menubar=yes,toolbar=no,address=no,history=no,scrollbars=yes,width=750,height=600"); 
}

function editingIsSupported()
{
	var blnDDSCAvailable = false;

	if( -1 != window.navigator.appVersion.indexOf( "MSIE" ) )
	{ 

		// We are running in a browser which supports
		// ActiveX objects	
		var strVersion = "";
		var intCount;
		
		intCount = window.navigator.appVersion.indexOf( "MSIE" ) + 5;
		while( window.navigator.appVersion.charAt( intCount ) != '.' )
		{ 
			strVersion += window.navigator.appVersion.charAt( intCount );
			intCount++;
		}
						
		if( 5 <= parseInt(strVersion) )
		{	
			blnDDSCAvailable = true;
		} 	
	}

	return blnDDSCAvailable;
}

//----------------------------------------------------------------------
// Utf8ToUnicode
//
// Converts UTF8 string into a Unicode string. Does not decanonicalize.
//
// For example: str "a%20test&&" (where && are UTF-8 chars 0xC3 and 0x81)
// will be decoded as "a%20testn" (where n is an 0xF1 - n with a tilde)
// 
//----------------------------------------------------------------------
function Utf8ToUnicode(strUtf8)
{
	var bstr = "";
	var nTotalChars = strUtf8.length;	// total chars to be processed.
	var nOffset = 0;					// processing point on strUtf8
	var nRemainingBytes = nTotalChars;	// how many bytes left to be converted
	var nOutputPosition = 0;
	var iCode, iCode1, iCode2;			// the value of the unicode.
	
	while (nOffset < nTotalChars)
	{
		iCode = strUtf8.charCodeAt(nOffset);
		if ((iCode & 0x80) == 0)			// 1 byte.
		{
			if ( nRemainingBytes < 1 )		// not enough data
				break;

			bstr += String.fromCharCode(iCode & 0x7F);
			nOffset ++;
			nRemainingBytes -= 1;
		}
		else if ((iCode & 0xE0) == 0xC0)	// 2 bytes
		{
			iCode1 =  strUtf8.charCodeAt(nOffset + 1);
			if ( nRemainingBytes < 2 ||			// not enough data
					(iCode1 & 0xC0) != 0x80 )		// invalid pattern
			{
				break;
			}

			bstr += String.fromCharCode(((iCode & 0x3F) << 6) | (	 iCode1 & 0x3F));
			nOffset += 2;
			nRemainingBytes -= 2;
		}
		else if ((iCode & 0xF0) == 0xE0)	// 3 bytes
		{
			iCode1 =  strUtf8.charCodeAt(nOffset + 1);
			iCode2 =  strUtf8.charCodeAt(nOffset + 2);
			if ( nRemainingBytes < 3 ||			// not enough data
					(iCode1 & 0xC0) != 0x80 ||		// invalid pattern
					(iCode2 & 0xC0) != 0x80 )
			{
				break;
			}

			bstr += String.fromCharCode(((iCode & 0x0F) << 12) | 
					((iCode1 & 0x3F) <<  6) |
					(iCode2 & 0x3F));
			nOffset += 3;
			nRemainingBytes -= 3;
		}
		else								// 4 or more bytes -- unsupported
			break;
	}

	if (nRemainingBytes != 0)
	{
		// bad UTF8 string.
		return "";
	}
	
	return bstr;
}

// Sub Menu Functions
function rollin (menu) {
	var tabSubMenu = document.getElementById('sub'+menu);
	if (tabSubMenu!=null) {
		tabSubMenu.style.display = 'none';
	}
}
function rollinAll() {
	var alldivs = document.getElementsByTagName('div');
	for (var i = 0; i < alldivs.length; i++) {
		var tempdiv = alldivs[i];
		var subTabID = tempdiv.id;
		if (subTabID.indexOf("sub")>=0) tempdiv.style.display = 'none';
	}
}

