//
//  This script was created
//  by Mircho Mirev
//  mo /mo@momche.net/
//
//	:: feel free to use it BUT
//	:: if you want to use this code PLEASE send me a note
//	:: and please keep this disclaimer intact
//

var hMoStyle =
{
	sName : 'body',
	sBackupSuffix : '-backup'
}

//will retrieve a stylesheet by it's title
hMoStyle.getStyleSheetByTitle = function( sTitle )
{
	var nSC = document.styleSheets.length
	for( var nI = 0; nI < nSC; nI++ )
	{
		if( document.styleSheets.item( nI ).title == sTitle )
		{
			var hStyleSheet = document.styleSheets.item( nI )
			return hStyleSheet
		}
	}
}

//retrieve stylesheet block by it's id
hMoStyle.getStyleSheetById = function( sId )
{
	var hStyleSheetBlock = document.getElementById( sId )
	var hStyleSheet = hStyleSheetBlock.sheet || hStyleSheetBlock.styleSheet
	return hStyleSheet
}

//get imported stylesheet
hMoStyle.getImportedStyleSheet = function( hStyleSheet, nImportIndex )
{
	var hStyleRules = hStyleSheet.rules || hStyleSheet.cssRules

	if( styleSheet.imports )
	{
		//IE case
		return styleSheet.imports.item( nImportIndex ).styleSheet
	}
	else
	{
		//mozilla
		var nCount = hStyleRules.length
		var nCountImports = 0
		for( var nI = 0; nI < nCount; nI++ )
		{
			if( hStyleRules.item( nI ).type == hStyleRules.item( nI ).IMPORT_RULE )
			{
				if( nCountImports == nImportIndex )
				{
					return styleSheet.cssRules.item( nI ).sheet
				}
			}
		}
	}
	return null
}

//get rules
hMoStyle.getStyleSheetRules = function( hStyleSheet )
{
	var hStyleSheetRules = hStyleSheet.rules || hStyleSheet.cssRules
	return hStyleSheetRules
}

//enable/disable stylesheet
hMoStyle.getEnabledStyleSheet = function( hStyleSheet )
{
	return !hStyleSheet.disabled
}

hMoStyle.enableStyleSheet = function( hStyleSheet, bEnable )
{
	hStyleSheet.disabled = !bEnable
}


//find a selector whithin a stylesheet
hMoStyle.findSelector = function( hStyleSheet, sSelsectorName )
{
	var hStyleRules = hStyleSheet.rules || hStyleSheet.cssRules
	var nCount = hStyleRules.length

	for( var nI = 0; nI < nCount; nI++ )
	{
		var hRule = hStyleRules.item( nI )

		if( hRule.selectorText == sSelsectorName )
		{
			return hRule
		}
	}
	return null
}

hMoStyle.findClassSelector = function( hStyleSheet, sClassName )
{
	if( sClassName.charAt(0) != '.' )
	{
		sClassName = '.' + sClassName
	}

	return findSelector( hStyleSheet, sClassName )
}

hMoStyle.findIdSelector = function( hStyleSheet, sId )
{
	if( sId.charAt(0) != '#' )
	{
		sId = '#' + sId
	}

	return findSelector( hStyleSheet, sId )
}

hMoStyle.backupRule = function( hStyleSheet, hRule )
{
	if( hStyleSheet.insertRule )
	{
		hStyleSheet.insertRule(
			hRule.selectorText + hMoStyle.sBackupSuffix + ' { ' + hRule.style.cssText + ' }',
			hStyleSheet.cssRules.length
		)
	}
	else if ( hStyleSheet.addRule )
	{
		hStyleSheet.addRule( hRule.selectorText + hMoStyle.sBackupSuffix, hRule.style.cssText )
	}
}

hMoStyle.getBackupRule = function( hStyleSheet, hRule )
{
	return hMoStyle.findSelector( hStyleSheet, hRule.selectorText + hMoStyle.sBackupSuffix )
}
