var Fse; if (!Fse) Fse = {};

if( !Fse.UI ) Fse.UI = {};

Fse.UI.applyStripes = function( sClassName, sOddClass, sEvenClass ) {
	
	var reClassName = new RegExp( sClassName );
	var aElements = document.getElementsByTagName( "TABLE" );
	for( var idx = 0; idx < aElements.length; idx++ ) {
		if( reClassName.test( aElements[idx].className )) {
			Fse.UI._stripeTable( aElements[idx], sOddClass, sEvenClass );
		}
	}
	
};

Fse.UI.applyStripesToTable = function ( sTableId, sOddClass, sEvenClass ) {
	var oTable = document.getElementById( sTableId );
	if( oTable && oTable.tagName == "TABLE" ) {
		Fse.UI._stripeTable( oTable, sOddClass, sEvenClass );
	}
}

Fse.UI._stripeTable = function( oTable, sOddClass, sEvenClass ) {
	
	if( sOddClass == null ) {
		sOddClass = "odd";
	}
	if( sEvenClass == null ) {
		sEvenClass = "even";
	}
	
	// find body
	var oChild = oTable.firstChild;
	var oTBody;
	while( oChild && ! oTBody ) {
		
		if( oChild.tagName == "TBODY" ) {
			oTBody = oChild;
			break;
		} else {
			oChild = oChild.nextSibling;
		}
		
	}
	
	// stripe the rows
	if( oTBody ) {
		var oRow = oTBody.firstChild;
		var iRowNumber = 0;
		while( oRow ) {
			iRowNumber++;
			if( iRowNumber % 2 == 0 ) {
				Spry.Utils.addClassName( oRow, sEvenClass );
			} else {
				Spry.Utils.addClassName( oRow, sOddClass );
			}
			oRow = oRow.nextSibling;
		}
	}
	
};

Fse.UI.CURSOR_WAIT = "wait";
Fse.UI.CURSOR_AUTO = "auto";
Fse.UI.CURSOR_POINTER = "pointer";
Fse.UI.CURSOR_DEFAULT = "default";

Fse.UI.setCursor = function( sCursor ) {
	document.body.style.cursor = sCursor;
};


Fse.UI.toggleClass = function ( oObject, sClassName ) {
	var reClass = new RegExp( sClassName );
	if( oObject.className.match( reClass )) {
		Spry.Utils.removeClassName( oObject, sClassName );
	} else { 
		Spry.Utils.addClassName( oObject, sClassName );
	}
};