// JavaScript Document
//*
//* csshandle.js
//*
//* Update: 2008.07.24
//* Author: M.Arashima

String.prototype.camelize = function( ) {
    return this.replace( /-([a-z])/g,
        function( $0, $1 ) { return $1.toUpperCase( ) } );
}
String.prototype.deCamelize = function( ) {
    return this.replace( /[A-Z]/g,
        function( $0 ) { return "-" + $0.toLowerCase( ) } );
}

//戻り値 : 挿入したルールの位置を表すインデックス（Number）
function addRule( selector, property, sheetindex, ruleindex ) {
    if( sheetindex == undefined ) sheetindex = 0;
    var sheet = document.styleSheets[ sheetindex ];

    if( sheet.addRule ) { //IE
        if( ruleindex == undefined ) ruleindex = sheet.rules.length;
        sheet.addRule( selector, "{" + property + "}", ruleindex );
        return ruleindex;
    }
    else if( sheet.insertRule ) { //Mozilla
        if( ruleindex == undefined ) ruleindex = sheet.cssRules.length;
        return sheet.insertRule( selector + "{" + property + "}", ruleindex );
    }

    return null;
}

//戻り値 : プロパティの値（String）
function getStyleValue( selector, property, sheetindex ) {
    selector = selector.toLowerCase( )
    if( sheetindex == undefined ) sheetindex = 0;
    if( property.indexOf( "-" ) != -1 ) property = property.camelize( );
    var rules = document.styleSheets[ sheetindex ].rules //IE
        || document.styleSheets[ sheetindex ].cssRules; //Mozilla

    for( var i = rules.length - 1; i >= 0; i-- ) {
        var rule = rules[i];
        if( rule.selectorText.toLowerCase( ) != selector
        || rule.style[ property ] == "" ) continue;
        return rule.style[ property ];
    }

    return null;
}

function disableSheet( sheetindex ) {
    document.styleSheets[ sheetindex ].disabled = true
}

//戻り値 : プロパティの値（String）
function getActiveStyle( element, property, pseudo ) {
    if( element.currentStyle ) { //IE or Opera
        if( property.indexOf( "-" ) != -1 ) property = property.camelize( );
        return element.currentStyle[ property ];
    }
    else if( getComputedStyle ) { //Mozilla or Opera
        if( property.indexOf( "-" ) == -1 ) property = property.deCamelize( );
        return getComputedStyle( element, pseudo ).getPropertyValue( property );
    }

    return "";
}


//