var __szElement = null;
var __szElementContent = null;

function getElement( element )
{
	if( typeof element == 'string' ) {
		return getElementById( element );
	}
	else if( typeof element == 'object' ) {
		return element;
	}
	else {
		return null;
	}
}

function getElementById( elementId )
{
	if( document.getElementById != null ) {
		return document.getElementById( elementId );
	}
	else {
		if( document.all != null ) {
			return document.all[ elementId ];
		}
		else if( document.layers != null ) {
			return document.layers[ elementId ];
		}
		else {
			alert( 'getElementById(): Cannot retrieve element.' );
		}
	}
}

function computedStyle( element )
{
	if( window.getComputedStyle != null ) {
         	return window.getComputedStyle( getElement( element ), null );
	}
	else if( element.currentStyle != null ) {
		return element.currentStyle;
	}
	else if( element.runtimeStyle != null ) {
		return element.runtimeStyle;
	}

}

function parseStyleValue( styleStr )
{


	if( styleStr ) {

        	var ret = '';

		var str = styleStr.split( '' );

		var ch;

		for( i in str ) {

			ch = str[ i ];

			//alert( ch );

			switch( ch ) {
				case '0':
				case '1':
				case '2':
				case '3':
				case '4':
				case '5':
				case '6':
				case '7':
				case '8':
				case '9':

				ret += ch;

				break;
			}




		}

		return 1 * ( ret );
	}
	else return 0;


}


function createElement( elementTag )
{
	return document.createElement( elementTag );
}

function createTextNode( text )
{
	return document.createTextNode( text );
}

function abs( number )
{
	if( number < 0 ) return number * -1; else return number;	
}

function parseJSON( json )
{
	if( json.length != '' ) return eval( '(' + json + ')' ); else return null;
}

function textSize( str, css, cleanUp )
{
	if( __szElement == null ) {
		__szElement = createElement( 'div' );
		document.body.appendChild( __szElement );
		__szElement.id = '__textSizeBox';

		// set the main elements css properties

		__szElement.style.width = '0px';
		__szElement.style.height = '0px';

		__szElement.style.left = '0px';
		__szElement.style.top = '0px';

		__szElement.style.position = 'absolute';
	
		__szElement.style.visibility = 'hidden';
		__szElement.style.overflow = 'hidden';
		__szElement.style.display = 'block';
		
		// create the content element

		__szElementContent = createElement( 'span' );
		__szElement.appendChild( __szElementContent );
		__szElementContent.id = '__textSizeContent';

		__szElementContent.style.display = 'inline';
		__szElementContent.style.whiteSpace = 'nowrap';

	}

	// create a span that will determine the minimum size for this string

	if( css ) __szElementContent.className = css;

	__szElementContent.innerHTML = str;

	
	var ret = {
		'width': __szElementContent.offsetWidth,
		'height': __szElementContent.offsetHeight
	} 

	if( ( cleanUp ) && ( cleanUp == true ) ) {
		document.body.removeChild( __szElement );
	}

	return ret;
}

function min( origVal, newVal )
{
	if( origVal < newVal ) return origVal; return newVal;
}

function max( origVal, newVal )
{
	if( origVal > newVal ) return origVal; return newVal;
}

function timeStamp()
{
	return 'TIME';
}

function except( className, fname, message, iname )
{
	var m = '';

	if( this._id != null ) {
		m += '[' + this._id + '] ';
	}

	if( ( fname != null ) && ( iname != null )) {
		m += className + '.' + fname + '() - "' + iname + '": ' + message + '.';
	}
	else if( fname != null ) {
		m += className + '.' + fname + '(): ' + message + '.';
	}
	else {
		m += className + '(): ' + message + '.';
	}
		
	throw m;
}


var event_mouseClick = 1;
var event_mouseDown = 2;
var event_mouseUp = 3;
var event_mouseMove = 4;
var event_mouseOver = 5;
var event_mouseOut = 6;

function addEventListener( e, event, handler )
{
	if( e ) {
		if( e.addEventListener ) {
			switch( event ) {
				case event_mouseMove : e.addEventListener( 'mousemove', handler, false ); break;
				case event_mouseUp   : e.addEventListener( 'mouseup', handler, false ); break;
				case event_mouseDown : e.addEventListener( 'mousedown', handler, false ); break;
				case event_mouseClick: e.addEventListener( 'click', handler, false ); break;
				case event_mouseOver : e.addEventListener( 'mouseover', handler, false ); break;
				case event_mouseOut  : e.addEventListener( 'mouseout', handler, false ); break;
			}
		}

		else if( e.attachEvent ) {
			switch( event ) {
				case event_mouseMove : e.attachEvent( 'onmousemove', handler ); break;
				case event_mouseUp   : e.attachEvent( 'onmouseup', handler ); break;
				case event_mouseDown : e.attachEvent( 'onmousedown', handler ); break;
				case event_mouseClick: e.attachEvent( 'onclick', handler ); break;
				case event_mouseOver : e.attachEvent( 'onmouseover', handler ); break;
				case event_mouseOut  : e.attachEvent( 'onmouseout', handler ); break;
			}
		}
		else {
			switch( event ) {
				case event_mouseMove : e.onmousemove = handler; break;
				case event_mouseUp   : e.onmouseup = handler; break;
				case event_mouseDown : e.onmousedown = handler; break;
				case event_mouseClick: e.onclick = handler; break;
				case event_mouseOver : e.onmouseover = handler; break;
				case event_mouseOut  : e.onmouseout = handler; break;
			}
		}

	}
}

function pdf( ctlId, ctlArray )
{

	var qs = "";

	var opt;

	var loc = '' + window.location;
	if( loc.indexOf( '?', 0 ) != -1 ) {
		var tmp = new Array();
		tmp = loc.split( '?' );
		loc = tmp[ 0 ];
	}

	var url = loc + '?&render=pdf&';

	if( ctlArray != null ) {

		opt = ctlArray[ ctlId ].getLastRefreshOptions();

		var qry = '';

		for( var key in opt ) {
	
			switch( key ) {

		
				case 'get':
				case 'sfId':
				case 'ctlId': 
				case 'structId':
				case 'patchId':
				case 'patch': break;

				default: {
					qry += key + '=' + opt[ key ] + '&';
				}

			}
		}



		url = url + qry;

		if( ctlId != null ) {
			url += 'ctlId=' + ctlId;
		}
	}


	window.open( url );

}
