/**
*** アフェリエイト用ライブラリ
**/
var Affi_UTIL = function() {
  return {
    //==== [文字列操作] ====
    STRING: function() {
      return  {
        HtmlSpecialChars: function( str ) {
          str = str.replace( /&/g, "&amp;" ) ;
          str = str.replace( /"/g, "&quot;" ) ;
          str = str.replace( /'/g, "&#039;" ) ;
          str = str.replace( /</g, "&lt;" ) ;
          return str.replace( />/g, "&gt;" ) ;
        }
      }
    }(),
    //==== [XML操作] ====
    XML: function() {
      var NODETYPE_ELEMENTS = 1;
      var NODETYPE_TEXT     = 3;
      var NODETYPE_CDATA    = 4;

      function checkElementNode( obj )  {
        if( obj && obj.nodeType==NODETYPE_ELEMENTS )  return true;
        return  false;
      }
      function checkTextNode( obj )  {
        if( obj && ( obj.nodeType==NODETYPE_TEXT || obj.nodeType==NODETYPE_CDATA ) )  return true;
        return  false;
      }

      function  getTextValue( base )  {
          var res     = '';
          var childs  = base.childNodes;
          var max     = childs.length;
          var cnt     = 0;
          while( cnt<max )  {
            var c = childs[ cnt++ ];
            if( checkTextNode( c ) )  res += c.nodeValue;
            else if( checkElementNode( c ) )  {
              res += getTextValue( c );
            }
          }
          return res;
      }

      return  {
        /** 子をひとつ取り出す */
        get_ElementByTagName: function( base, name )  {
          var childs  = base.childNodes;
          var max     = childs.length;
          var cnt     = 0;
          while( cnt<max )  {
            var c = childs[ cnt++ ];
            if( checkElementNode( c ) && c.nodeName==name ) return c;
          }
          return null;
        },
        /** 子を取り出す */
        GetElementsByTagName: function( base, name )  {
          var res     = new Array;
          var childs  = base.childNodes;
          var max     = childs.length;
          var cnt     = 0;
          while( cnt<max )  {
            var c = childs[ cnt++ ];
            if( checkElementNode( c ) && c.nodeName==name ) res.push( c );
          }
          return res;
        },
        /** テキスト要素を取り出す */
        GetText: function( base ) {
          return  getTextValue( base );
        }
      }
    }()
  }
}();
