/**
 * PadPlateシステムで共通の関数を置く
 */

/**
 * IEでもFirefoxでも早く実行できるように最適化したgetElementsByClassName
 * 
 * 注意しないといけないのは第三引数rootを省略したときにはdocumentが入る
 */
PadPlate.util.getElementsByClassName = function( className, tag, root, callback ){};

/**
 * getElementsByClassNameの最初のノードだけ操作するバージョン。
 * @see PadPlate.util.getElementsByClassName
 */
PadPlate.util.getElementByClassName = function( className, tag, root, callback ){};

/**
 * ブラウザによってメソッドの内容を切り替える
 * 
 * @see PadPlate.util.getElementsByClassName
 * @see PadPlate.util.getElementByClassName
 */
(function() {
    new PadPlate.util.Loader({
        require: ["dom"], // ロードしたいライブラリ
        onSuccess: function(o) {
            init();// 読み込み成功時に呼ばれるコールバック関数
        }
    });
    function init(){
        if( YAHOO.env.ua.ie ){
            PadPlate.util.getElementByClassName = function( className, tag, root, callback ){
                tag = tag || '*';
                root = (root) ? root : document; 
                var result = YAHOO.util.Dom.getElementsByClassName( className, tag, root );
                if( result.length > 0 ){
                    return callback.call( result[0], result[0] );
                }
                return;
            }
            PadPlate.util.getElementsByClassName = YAHOO.util.Dom.getElementsByClassName;
        }else{
            PadPlate.util.getElementByClassName = function( className, tag, root, callback ){
                tag = tag || '*';
                root = (root) ? root : document;
                var result = document.evaluate( ".//"+tag+"[contains(@class, '"+className+"')]", root, null, 7, null );
                var length = result.snapshotLength;
                if( length > 0 ){
                    var el = result.snapshotItem( 0 );
                    return callback.call( el, el );
                }
                return;
            }
        
            PadPlate.util.getElementsByClassName = function( className, tag, root ){
                tag = tag || '*';
                root = (root) ? root : document; 
                var result = document.evaluate( ".//"+tag+"[contains(@class, '"+className+"')]", root, null, 7, null );
                var length = result.snapshotLength;
                var elements = [];
                for( var i=0; i<length; ++i ){
                    elements[elements.length] = result.snapshotItem( i );
                }
                return elements;
            }
        }
    }
}());