// utilities.js

function getViewPortSize() {
	var size = [0, 0];
	
	if(typeof window.innerWidth != 'undefined') {
		size = [window.innerWidth, window.innerHeight];
	}
	else if(typeof document.documentElement != 'undefined' &&
	        typeof document.documentElement.clientWidth != 'undefined' &&
	        typeof document.documentElement.clientWidth != 0) {
		size = [document.documentElement.clientWidth, document.documentElement.clientHeight];
	}
	else {
		size = [document.getElementByTagName('body')[0].clientWidth,
		        document.getElementByTagName('body')[0].clientHeight];
	}
	
	return size;

} // getViewPortSize()


function getViewPort() {
	var l_VP = new Object;
	l_VP.width = 0;
	l_VP.height = 0;

	// the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight

	if (typeof(window.innerWidth) != 'undefined') {
		l_VP.width = window.innerWidth,
		l_VP.height = window.innerHeight
	}
	// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)
	else if(typeof(document.documentElement) != 'undefined' && 
				  typeof(document.documentElement.clientWidth) != 'undefined' &&
				  document.documentElement.clientWidth != 0) {
		l_VP.width = document.documentElement.clientWidth,
		l_VP.height = document.documentElement.clientHeight
	}
	// older versions of IE
	else {
		l_VP.width = document.getElementsByTagName('body')[0].clientWidth,
		l_VP.height = document.getElementsByTagName('body')[0].clientHeight
	}

	return l_VP;		
	
} // getViewPort

function getViewPortWidth() {
	return getViewPort().width;
	
} // getViewPortWidth

function getViewPortHeight() {
	return getViewPort().height;
	
} // getViewPortHeight

function getStyleSheetRules(styleSheetNumber) {
	
	if(typeof document.styleSheets != 'undefined') {
		var masterSheet = document.styleSheets[0];
		var theRules = null;
	
		if(typeof masterSheet != 'undefined') {
			if(typeof masterSheet.rules != 'undefined') {
				theRules = masterSheet.rules;
			}
			else {
				theRules = masterSheet.cssRules;
			}
		}
	}
		
	return theRules;
	
} // getStyleSheetRules()

function getCSSRuleBySelectorText(theRules, theSelectorText) {
	var aRule = null;
	
	if(typeof theRules != 'undefined' &&
	   typeof theSelectorText != 'undefined' &&
	   theSelectorText != '') {
		
		for(var i=0; i<theRules.length; i++) {
			if(theRules[i].selectorText.toLowerCase() == theSelectorText) {
				aRule = theRules[i];
				break;
			}
		}
	}
	
	return aRule;
	
} // getCSSRuleBySelectorText

function getMouseCoords(event) {

  // Get the co-ordinates
  if(typeof event == 'undefined') {
    event = window.event;
  }
  
  if((typeof event.pageX != 'undefined') &&
     (typeof event.x != 'undefined')) {
  	g_iX = event.pageX;
  	g_iY = event.pageY;   
  }
  else {
    g_iX = event.clientX + document.body.scrollLeft;
    g_iY = event.clientY + document.body.scrollTop;
  }
    
  // Make sure we're within bounds
  if(g_iX <0) u_iX = 0;
  if(g_iY <0) u_iY = 0;  
  
  return true;
  
} // getMouseCoords  





function setFade(img, value) {
	
	if(typeof(img.style.opacity) != 'undefined') {
		var otype = 'w3c';
	}
	else if(typeof(img.style.MozOpacity) != 'undefined') {
		otype = 'moz';
	}
	else if(typeof(img.style.KhtmlOpacity) != 'undefined') {
		otype = 'khtml';
	}
	else if(typeof(img.filters) == 'object') {
		otype = (img.filters.length > 0 
			&& typeof(img.filters.alpha) == 'object' 
			&& typeof(img.filters.alpha.opacity) == 'number')
			? 'ie' : 'none';
	}
	else {
		otype = 'none';
	}

	if(otype != 'none'){	
		switch(otype) {
			case 'ie':
				img.filters.alpha.opacity = value * 100;
				break
			
			case 'khtml':
				img.style.KhtmlOpacity = value;
				break;
				
			case 'moz':
				img.style.MozOpacity = (value == 1 ? 0.9999999 : value);
				break;
				
			default:
				img.style.opacity = (value == 1 ? 0.9999999 : value);
		
		}
	}
} // setFade()


