
/* Global Variables */

var ua = navigator.userAgent.toLowerCase() ;
var isIE = ( ua.match( /msie (\d+)/ ) != null );
var isIE7 = ( isIE && parseInt( ua.match( /msie (\d+)/ )[1], 10 ) >= 7 );
var isIE6 = ( isIE && !isIE7 && parseInt( ua.match( /msie (\d+)/ )[1], 10 ) >= 6 );
var isSafari = (ua.match( / applewebkit/ ) != null);
var isFirefox = (ua.match( / firefox/ ) != null);

/* END Global Variables */




/* Element Functions */

function getAbsX(elt) { return (elt.x) ? elt.x : getAbsPos(elt,"Left"); }
function getAbsY(elt) { return (elt.y) ? elt.y : getAbsPos(elt,"Top"); }
function getAbsPos(elt,which) {
	iPos = 0;
	while (elt != null) {
	iPos += elt["offset" + which];
	elt = elt.offsetParent;
	}
	return iPos;		
}	


	
function getElem(elem_name) {
    var elem = (document.getElementById)?document.getElementById(elem_name) : document.all? eval('document.all.'+elem_name) : eval('document.'+elem_name);    
    return elem;
}


function getFrameElem(frame_name, elem_name) {
    var elem = (document.getElementById)?window.frames[frame_name].document.getElementById(elem_name) : document.all? eval('window.frames['+frame_name+'].document.all.'+elem_name) : eval('window.frames['+frame_name+'].document.'+elem_name);    
    return elem;
}


function getElemWidth(elem) {
	var width = elem.offsetWidth;
	if(elem.offsetWidth == 0) {
		var arr = GetChildNodes(elem);
		for(var x=0; x<arr.length; x++) {
			if(width < arr[x].offsetWidth) width = arr[x].offsetWidth;  
		}
	}
	return width;
}

function getElemHeight(elem) {
	var height = elem.offsetHeight;
	if(elem.offsetHeight == 0) {
		var arr = GetChildNodes(elem);
		for(var x=0; x<arr.length; x++) {
			if(height < arr[x].offsetHeight) width = arr[x].offsetHeight;  
		}
	}
	return height;
}

document.getElementsByClassName = function(cl) {
	var retnode = [];
	var myclass = new RegExp('\\b'+cl+'\\b');
	var elem = this.getElementsByTagName('*');
	for (var i = 0; i < elem.length; i++) {
	var classes = elem[i].className;
	if (myclass.test(classes)) retnode.push(elem[i]);
	}
	return retnode;
	};

	
	

/* END Element Functions */



/* Browser Functions */

function IsStrictMode( document ) {
	return ( 'CSS1Compat' == ( document.compatMode || ( isSafari ? 'CSS1Compat' : null ) ) ) ;
}


function getScreenCenterX() { 
	// First, determine how much the visitor has scrolled
	var scrolledX; 
	if( self.pageYOffset ) { 
	scrolledX = self.pageXOffset; 
	} else if( document.documentElement && document.documentElement.scrollTop ) { 
	scrolledX = document.documentElement.scrollLeft; 
	} else if( document.body ) { 
	scrolledX = document.body.scrollLeft; 
	}
	// Next, determine the coordinates of the center of browser's window
	var centerX; 
	if( self.innerHeight ) { 
	centerX = self.innerWidth; 
	} else if( document.documentElement && document.documentElement.clientHeight ) { 
	centerX = document.documentElement.clientWidth; 
	} else if( document.body ) { 
	centerX = document.body.clientWidth; 
	}
	return scrolledX + (centerX / 2); 
} 		


function getScreenCenterY() { 
	// First, determine how much the visitor has scrolled
	var scrolledY; 
	if( self.pageYOffset ) { 
	scrolledY = self.pageYOffset; 
	} else if( document.documentElement && document.documentElement.scrollTop ) { 
	scrolledY = document.documentElement.scrollTop; 
	} else if( document.body ) { 
	scrolledY = document.body.scrollTop; 
	}
	// Next, determine the coordinates of the center of browser's window
	var centerY; 
	if( self.innerHeight ) { 
	centerY = self.innerHeight; 
	} else if( document.documentElement && document.documentElement.clientHeight ) { 
	centerY = document.documentElement.clientHeight; 
	} else if( document.body ) { 
	centerY = document.body.clientHeight; 
	}
	return scrolledY + (centerY / 2); 
} 	


function ScreenCenterElem(elem) {
	elem.style.display = 'block';
	elem.style.left = (getScreenCenterX()-elem.offsetWidth/2) + 'px';
	elem.style.top = (getScreenCenterY()-elem.offsetHeight/2) + 'px';
}




function getDivCenterX(div) { 
	return getAbsX(div) + (getElemWidth(div) / 2); 
} 

function getDivCenterY(div) { 
	return getAbsY(div) + (getElemHeight(div) / 2); 
} 

function DivCenterElem(div,elem) {
	elem.style.display = 'inline';
	elem.style.left = (getDivCenterX(div)-elem.offsetWidth/2) + 'px';
	elem.style.top = (getDivCenterY(div)-elem.offsetHeight/2) + 'px';
}


/* END Browser Functions */






/* DOM Functions */

function AppendNode(t,id,parent_elem) {
	var elem = document.createElement(t);
	if(id) elem.id = id;
	if(parent_elem) parent_elem.appendChild( elem );
	else document.body.appendChild( elem );
	return elem;		
}		


function RemoveNode(elem) {
	if(elem) elem.parentNode.removeChild(elem);
}

function GetChildNodes(elem,ignore_text) {
	var arr = new Array();
	if(elem.children) arr = elem.children;
	else arr = elem.childNodes;
	if(ignore_text) {
		var clean_arr = new Array();
		for(var e=0; e<arr.length; e++) if(arr[e].nodeType != 3) clean_arr[clean_arr.length] = arr[e];
		return clean_arr;
	}
	else {
		return arr;
	}
}

/* END DOM Functions */










/* Event Functions */

function AddEventListener( sourceObject, eventName, listener ) {
	if(isIE)
		sourceObject.attachEvent( 'on' + eventName, listener ) ;
	else 
		sourceObject.addEventListener( eventName, listener, false ) ;
}

function RemoveEventListener( sourceObject, eventName, listener ) {
	if(isIE)
		sourceObject.detachEvent( 'on' + eventName, listener ) ;
	else 
		sourceObject.removeEventListener( eventName, listener, false ) ;	
}

/* End Event Functions */



/* Dim */

var dim_cover;
function DimOn() {
	// Setup the DIV that will be used to cover.
	dim_cover = document.createElement( 'div' ) ;
	DimResetStyles( dim_cover ) ;
	DimSetStyles( dim_cover,
		{
			'position' : 'absolute',
			'zIndex' : '1',
			'top' : '0px',
			'left' : '0px',
			'backgroundColor' : '#000000'
		} ) ;
	DimSetOpacity( dim_cover, 0.60 ) ;
	
	// For IE6-, we need to fill the cover with a transparent IFRAME,
	// to properly block <select> fields.
	if ( isIE6 && 1 == 0 )
	{
		var iframe = document.createElement( 'iframe' ) ;
		DimResetStyles( iframe ) ;
		iframe.hideFocus = true ;
		iframe.frameBorder = 0 ;
		iframe.src = DimGetVoidUrl() ;
		DimSetStyles( iframe,
			{
				'width' : '100%',
				'height' : '100%',
				'position' : 'absolute',
				'left' : '0px',
				'top' : '0px',
				'filter' : 'progid:DXImageTransform.Microsoft.Alpha(opacity=0)'
			} ) ;
		dim_cover.appendChild( iframe ) ;
	}

	// We need to manually adjust the cover size on resize.
	AddEventListener( document, 'resize', DimResizeHandler ) ;
	DimResizeHandler() ;

	document.body.appendChild( dim_cover ) ;
}

function DimOff() {
	RemoveNode( dim_cover ) ;
}

function DimResetStyles(elem) {
	elem.style.cssText = 'margin:0;' +
	'padding:0;' +
	'border:0;' +
	'background-color:transparent;' +
	'background-image:none;' ;
}
function DimSetStyles(elem,styledict) {
	var style = elem.style ;
	for ( var stylename in styledict ) style[ stylename ] = styledict[ stylename ] ;
}
function DimSetOpacity(elem,opacity) {
	if ( isIE ) {
		opacity = Math.round( opacity * 100 ) ;
		elem.style.filter = ( opacity > 100 ? '' : 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + opacity + ')' ) ;
	}
	else
		elem.style.opacity = opacity ;
}
function DimGetVoidUrl() {
	if ( isIE ) {
		if ( isIE7 || !isIE6 ) return "" ; // IE7+ / IE5.5
		else return "javascript: '';" ;	// IE6+
	}
	return "javascript: void(0);" ;	// All other browsers.
}

var DimResizeHandler = function()
{
	if ( !dim_cover ) return ;

	var relElement = IsStrictMode( document ) ? document.documentElement : document.body ;

	DimSetStyles( dim_cover,
		{
			'width' : Math.max( relElement.scrollWidth,
				relElement.clientWidth,
				document.scrollWidth || 0 ) - 1 + 'px',
			'height' : Math.max( relElement.scrollHeight,
				relElement.clientHeight,
				document.scrollHeight || 0 ) - 1 + 'px'
		} ) ;
}

/* End Dim */



/* Det Win */

function ShowDetWin() {
    DimOn();
    ScreenCenterElem(getElem('DetWin'));    
}

function CloseDetWin() {
    getElem('DetWin').style.display = 'none';
    DimOff();
}

/* END Det Win */
