// JScript File
<!--
    function SonglistXHTMLObj(xmlDoc) {
        this.getXHTML = function() {
            
            var xhtml = "";
            
            xhtml = this.transformXML();
            
            return xhtml; 
        }
        
        this.transformXML = function() {

            /////////////////////////////////////////////////////////////
            /////////////////////////////////////////////////////////////
            // begin transform the data
            /////////////////////////////////////////////////////////////
            /////////////////////////////////////////////////////////////

            function getXMLRootClone(id) {
                var rmsg = "Error retrieving xml document. Could not parse xml data.";
                var rElem = xmlDoc.getElementsByTagName(id);
                var rNode = null;
                var rClone = false;
                
                var xmlDoc_parsed = false;
                var xmlDoc_childNodes = xmlDoc.childNodes;
                
                for ( var i=0; i<xmlDoc_childNodes.length; i++ ) {
                   rNode = ( xmlDoc_childNodes[i].nodeName==id ? xmlDoc_childNodes[i] : rNode );
                }

                if ( !rClone && rElem[0].cloneNode(true) ) {
                    rClone = rElem[0].cloneNode(true);
                }
                
                if ( !rClone && rNode.cloneNode(true) ) {
                    rClone = rNode.cloneNode(true);
                }

                if ( !rClone ) {
                    rClone = null;
                    if ( window.alert ) alert(rmsg);
                }
                return rClone;
            }

            var rootID = "songs";
            var rootClone = getXMLRootClone(rootID);
            
            if ( rootClone ) {
                var strHTML = "";

                var var_allsongs = rootClone.getElementsByTagName("song");
                var song = var_allsongs[0];
                var nextsong = null;
                var song_ok = true;
                var songElmArray = new Array();
                var songOrd = "asc";
                
                while ( song ) {
                    nextsong = song.nextSibling;

                    var useflag = song.getAttribute("useflag");
                    if ( !(useflag==null || useflag!="x") ) song_ok = false;
                    
                    if ( !song_ok ) {
                        song.parentNode.removeChild(song);
                        song_ok = true;
                    } else {
                        songElmArray[songElmArray.length] = new Array(song.getAttribute("id"),song.cloneNode("true"));
                    }
                    song = nextsong;
                }

                sortMDArray(songElmArray,songOrd,2);
                
                for ( var idx=0; idx<songElmArray.length; idx++ ) {
                    rootClone.replaceChild(songElmArray[idx][1], rootClone.childNodes[idx]);
                }
                
                var_allsongs = rootClone.getElementsByTagName("song");

                var used_song_count = songElmArray.length;
                
                // COLUMN_COUNT must be in {1..4}; default=3 
                var COLUMN_COUNT = 3
                var colnumarr = new Array();
                var col_width = parseInt(100 / COLUMN_COUNT) + "%";
                var col_split_num = ( used_song_count % COLUMN_COUNT > 0 ? 
                    Math.ceil((used_song_count + 1) / COLUMN_COUNT)
                    :   Math.floor(used_song_count / COLUMN_COUNT) );
                    
                strHTML = "<table style=\"width:100%;\" cellspacing=\"0\" cellpadding=\"1\" >";

                for ( var songpos=0; songpos<col_split_num; songpos++ ) {
                    colnumarr = []
                    for ( var idx=0; idx<COLUMN_COUNT; idx++ ) {
                        colnumarr[colnumarr.length] = eval(songpos + (idx * col_split_num))
                    }

                    strHTML += "<tr>";

                    for ( var colIdx=1; colIdx<=COLUMN_COUNT; colIdx++ ) {
                        var songIdx = colnumarr[colIdx-1];
                        
                        if ( songIdx < used_song_count ) {
                            song = var_allsongs[songIdx];
                            var title = song.getElementsByTagName("title")[0].childNodes[0].nodeValue
                            
                            strHTML +=  "<td style=\"width:" + col_width + "; text-align:left; vertical-align:top;\" >"
                                +           "<ul>"
                                +               "<li>"
                                +                   "&#160"
                                +                   "<span style=\"font-size:small;\" >"
                                +                       title
                                +                   "</span>"
                                +               "</li>"
                                +           "</ul>"
                                +       "</td>";
                        } else strHTML += "<td>&nbsp;</td>";
                    }

                    strHTML += "</tr>";
                }
                
                strHTML += "<tr>"
                    +           "<td style=\"text-align:center; vertical-align:middle;\" colspan=\"" + COLUMN_COUNT + "\">"
                    +               EOF_MARKER
                    +           "</td>"
                    +       "</tr>"
                    +   "</table>";
                    
                return strHTML;
                
                /////////////////////////////////////////////////////////////
                /////////////////////////////////////////////////////////////
                // end transform the data
                /////////////////////////////////////////////////////////////
                /////////////////////////////////////////////////////////////
                
            }
        }
    }
//-->