// JScript File
<!--
    var ARRIDX_ALLKEY = "all";
    var ARRIDX_NUMKEY = 0;
    var ARRIDX_STRKEY = 1;
    var ARRIDX_DATOBJ = 2;
    
    var IDX_VIEWMODE_KEY_PIPELINE = "pipeline";
    var IDX_VIEWMODE_KEY_CURRENT = "current";
    var IDX_VIEWMODE_KEY_HISTORIC = "historic";
    var IDX_VIEWMODE_KEYLST = ""
        + IDX_VIEWMODE_KEY_PIPELINE
        + "," + IDX_VIEWMODE_KEY_CURRENT
        + "," + IDX_VIEWMODE_KEY_HISTORIC
    
    var IDX_HTMLSECT_KEY_VIEWMODE = "viewmode";
    var IDX_HTMLSECT_KEY_BOOKMARK = "bookmark";
    var IDX_HTMLSECT_KEY_DETAIL = "detail";
    var IDX_HTMLSECT_KEYLST = ""
        + IDX_HTMLSECT_KEY_VIEWMODE
        + "," + IDX_HTMLSECT_KEY_BOOKMARK
        + "," + IDX_HTMLSECT_KEY_DETAIL
    
    
    var htmlsectkeylstArr = IDX_HTMLSECT_KEYLST.split(",");
    var viewmodekeylstArr = IDX_VIEWMODE_KEYLST.split(",");

    function HTMLObject(pStr,pFlg) {
        var oStr = ( !(pStr==undefined) ? pStr : "" );
        var oFlg = ( !(pFlg==undefined) ? pFlg : false );
        
        this.getHTML = function() { return oStr; }
        this.getFlag = function() { return oFlg; }
        this.setHTML = function(str) { oStr = str; }
        this.setFlag = function(flg) { oFlg = flg; }
    }
    
    function ItinHTMLDetailObject() {
        var htmlsectkeylstArr = IDX_HTMLSECT_KEYLST.split(",");
        var hdetArr = new Array();
        
        for ( var idx in htmlsectkeylstArr ) {
            hdetArr[hdetArr.length] = new Array(parseInt(idx)+1, htmlsectkeylstArr[idx], new HTMLObject());
        }
             
        this.setHTML = function(key,str) {
            var keyFound = false;
            
            for ( var idx=0; idx<hdetArr.length && !keyFound; idx++ ) {
                if ( key==hdetArr[idx][ARRIDX_NUMKEY] || key==hdetArr[idx][ARRIDX_STRKEY] ) {
                    if ( !(str==undefined) ) hdetArr[idx][ARRIDX_DATOBJ].setHTML(str);
                    keyFound = true;
                }
            }
            return true;
        }

        this.getHTML = function(key) {
            var fRetVal;
            var keyFound = false;
            
            for ( var idx=0; idx<hdetArr.length && !keyFound; idx++ ) {
                if ( key==hdetArr[idx][ARRIDX_NUMKEY] || key==hdetArr[idx][ARRIDX_STRKEY] ) {
                    fRetVal = hdetArr[idx][ARRIDX_DATOBJ].getHTML();
                    keyFound = true;
                }
            }
            return fRetVal;
        }

        this.setFlag = function(key,flg) {
            var keyFound = false;
            
            for ( var idx=0; idx<hdetArr.length && !keyFound; idx++ ) {
                if ( key==hdetArr[idx][ARRIDX_NUMKEY] || key==hdetArr[idx][ARRIDX_STRKEY] ) {
                    if ( !(flg==undefined) ) hdetArr[idx][ARRIDX_DATOBJ].setFlag(flg);
                    keyFound = true;
                }
            }
            return true;
        }

        this.getFlag = function(key) {
            var fRetVal;
            var keyFound = false;
            
            for ( var idx=0; idx<hdetArr.length && !keyFound; idx++ ) {
                if ( key==hdetArr[idx][ARRIDX_NUMKEY] || key==hdetArr[idx][ARRIDX_STRKEY] ) {
                    fRetVal = hdetArr[idx][ARRIDX_DATOBJ].getFlag();
                    keyFound = true;
                }
            }
            return fRetVal;
        }

        this.setFlags = function(flg) {
            for ( var idx in hdetArr ) {
                if ( !(flg==undefined) ) hdetArr[idx][ARRIDX_DATOBJ].setFlag(flg);
            }
            return true;
        }

        this.getFlags = function() {
            var fRetVal;
            var flg;
            var cnt = 0;
            
            for ( var idx in hdetArr ) {
                if ( idx==0 ) {
                    flg = hdetArr[idx][ARRIDX_DATOBJ].getFlag();
                    cnt++;
                } else if ( hdetArr[idx][ARRIDX_DATOBJ].getFlag()==flg ) cnt++;
            }
            
            if ( cnt==hdetArr.length ) fRetVal = flg;
            
            return fRetVal;
        }
    }
    
    function ViewModeHTMLObject() {
        var viewMode;
        var vmArr = new Array();        
        var idx;
        
        var viewmodekeylstArr = IDX_VIEWMODE_KEYLST.split(",");
        var vmArr = new Array();
        
        for ( var idx in viewmodekeylstArr ) {
            vmArr[vmArr.length] = new Array(parseInt(idx)+1, viewmodekeylstArr[idx], new ItinHTMLDetailObject());
        }
             
        this.getViewMode = function() { return viewMode; }
        this.setViewMode = function(vmd) { 
            if ( !(vmd==undefined) ) viewMode = vmd; 
        }
        
        this.setHTML = function(key,str,vmd) {
            var vmd = ( !(vmd==undefined) ? vmd : this.getViewMode() );
            var vmdFound = false;
            
            for ( var idx=0; idx<vmArr.length && !vmdFound; idx++ ) {
                if ( vmd==vmArr[idx][ARRIDX_NUMKEY] || vmd==vmArr[idx][ARRIDX_STRKEY] ) {
                    if ( !(str==undefined) ) vmArr[idx][ARRIDX_DATOBJ].setHTML(key,str);
                    vmdFound = true;
                }
            }
            return true;
        }

        this.getHTML = function(key,vmd) {
            var vmd = ( !(vmd==undefined) ? vmd : this.getViewMode() );
            var fRetVal;
            var vmdFound = false;
            
            for ( var idx=0; idx<vmArr.length && !vmdFound; idx++ ) {
                if ( vmd==vmArr[idx][ARRIDX_NUMKEY] || vmd==vmArr[idx][ARRIDX_STRKEY] ) {
                    fRetVal = vmArr[idx][ARRIDX_DATOBJ].getHTML(key);
                    vmdFound = true;
                }
            }
            return fRetVal;
        }

        this.setFlag = function(key,flg,vmd) {
            var vmd = ( !(vmd==undefined) ? vmd : this.getViewMode() );
            var vmdFound = false;
            
            for ( var idx=0; idx<vmArr.length && !vmdFound; idx++ ) {
                if ( vmd==vmArr[idx][ARRIDX_NUMKEY] || vmd==vmArr[idx][ARRIDX_STRKEY] ) {
                    if ( !(flg==undefined) ) vmArr[idx][ARRIDX_DATOBJ].setFlag(key,flg);
                    vmdFound = true;
                }
            }
            return true;
        }

        this.getFlag = function(key,vmd) {
            var vmd = ( !(vmd==undefined) ? vmd : this.getViewMode() );
            var fRetVal;
            var vmdFound = false;
            
            for ( var idx=0; idx<vmArr.length && !vmdFound; idx++ ) {
                if ( vmd==vmArr[idx][ARRIDX_NUMKEY] || vmd==vmArr[idx][ARRIDX_STRKEY] ) {
                    fRetVal = vmArr[idx][ARRIDX_DATOBJ].getFlag(key);
                    vmdFound = true;
                }
            }
            return fRetVal;
        }

        this.setFlags = function(flg,vmd) {
            var vmd = ( !(vmd==undefined) ? vmd : this.getViewMode() );
            var vmdFound = false;

            for ( var idx=0; idx<vmArr.length && !vmdFound; idx++ ) {
                if ( vmd==vmArr[idx][ARRIDX_NUMKEY] || vmd==vmArr[idx][ARRIDX_STRKEY] ) {
                    if ( !(flg==undefined) ) vmArr[idx][ARRIDX_DATOBJ].setFlags(flg);
                    vmdFound = true;
                }
            }
            return true;
        }

        this.getFlags = function(vmd) {
            var vmd = ( !(vmd==undefined) ? vmd : this.getViewMode() );
            var vmdFound = false;
            var fRetVal;
            
            for ( var idx=0; idx<vmArr.length && !vmdFound; idx++ ) {
                if ( vmd==vmArr[idx][ARRIDX_NUMKEY] || vmd==vmArr[idx][ARRIDX_STRKEY] ) {
                    fRetVal = vmArr[idx][ARRIDX_DATOBJ].getFlags();
                    vmdFound = true;
                }
            }
            
            return fRetVal;
        }
    }
    
    function ItineraryXHTMLObj(xmlDoc) {
        var parm_GigEntityName = "Solid Ground";
        var itinHTML = new ViewModeHTMLObject();
        var transformDS = null;
        
        this.getViewMode = function() {
            return itinHTML.getViewMode();
        }
        
        this.setViewMode = function(vmd) {
            itinHTML.setViewMode(vmd);
        }
        
        this.getTransformDS = function() {
            return transformDS;
        }
        
        this.setTransformDS = function(ds) {
            transformDS = ds;
        }
        

// initialize xml data file for transforming ///////////////////
        var ROWSTYLE_PRIMARY = "font-size:9pt; background-color:#FFFFE0;";
        var ROWSTYLE_ALTERNATE = "font-size:9pt; background-color:#E0FFFF;";

        var rowStyle = "";

        var EOY_MARKER = ""
            + "<span style=\"font-size:x-small; font-weight:bold;\">"
            +   "<span style=\"color:#00008B; background-color:#D3D3D3;\">"
            +       "&#160;&#160;&#160;&#160;"
            +   "</span>"
            + "</span>";

// initialize done ///////////////////

        function fmtStrVal(val) {
            val = ( !(val==null) && !(val==undefined) ? val : "" );
            return ( ( val.length != 0 ) ? val :"?" );
        }

        function getAccessFee(val) {
            val = ( !(val==null) && !(val==undefined) ? val : "" );
            return ( ( val != "yes" ) ? "" :"($)" );
        }

        function getAccessType(val) {
            val = ( !(val==null) && !(val==undefined) ? val : "" );
            return ( ( val != "private" ) ? "" :"(P)" );
        }

        function getStatus(val) {
            val = ( !(val==null) && !(val==undefined) ? val : "" );
            return ( ( ( val.length != 0 ) && ( val != "ok" ) ) ? "<font style=\"font-weight:bold; font-style:italic;\">(" + val + ")</font>" :"" );
        }

        function getEventType(val) {
            val = ( !(val==null) && !(val==undefined) ? val : "" );
            var retval = "";

            switch ( val ) {
                case "clubdate":
                    retval = "Club Date";
                    break;
                case "dk":
                    retval = "?";
                    break;
                default:
                    retval = val.substring(0,1).toUpperCase() 
                        + val.substring(1).toLowerCase();
                    break;
            }
            return retval;
        }

        function getNextRowStyle(gig_status) {
            gig_status = ( !(gig_status==null) && !(gig_status==undefined) ? gig_status : "" );
            switch ( rowStyle ) {
                case ROWSTYLE_PRIMARY:
                    rowStyle = ROWSTYLE_ALTERNATE;
                    break;
                default:
                    rowStyle = ROWSTYLE_PRIMARY;
            }
            return rowStyle + ( ( gig_status == "cancelled" ) ? " text-decoration:line-through;" :"" );
        }
        
        this.getXHTML = function(
            parm_viewmode,            
            parm_colWidth_Location,
            parm_colWidth_DateTime,
            parm_colWidth_Event) {
            
            var xhtmlArr = null;
            
            parm_viewmode = ( !(parm_viewmode==undefined) ? parm_viewmode : getViewMode() );

            if ( !itinHTML.getFlags(parm_viewmode) ) {
                xhtmlArr = this.transformXML(parm_viewmode,            
                    parm_colWidth_Location,
                    parm_colWidth_DateTime,
                    parm_colWidth_Event);
            } else {
                xhtmlArr = new Array(
                    itinHTML.getHTML(IDX_HTMLSECT_KEY_VIEWMODE,parm_viewmode),
                    itinHTML.getHTML(IDX_HTMLSECT_KEY_BOOKMARK,parm_viewmode),
                    itinHTML.getHTML(IDX_HTMLSECT_KEY_DETAIL,parm_viewmode));
            }                    

            return xhtmlArr; 
        }
        
        this.transformXML = function(
            parm_viewmode,            
            parm_colWidth_Location,
            parm_colWidth_DateTime,
            parm_colWidth_Event) {

            /////////////////////////////////////////////////////////////
            /////////////////////////////////////////////////////////////
            // 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 = "gigs";
            var rootClone = getXMLRootClone(rootID);
            
            if ( rootClone ) {
                var ENSEMBLE = "Solid Ground";

		var objSysDate = new Date();
		var objNewDate = new Date();

		objNewDate.setDate(objSysDate.getDate()-NEWPOSTDAYLAPSE);

                var intSysDate = cvtDateStr2Num(formatXMLDateStr(objSysDate));
                var intNewDate = cvtDateStr2Num(formatXMLDateStr(objNewDate));

		var xml_statusdate = formatXMLDateStr(objSysDate);
		var intxml_statusdate = 0;

                var param_colWidth_Location = ( parm_colWidth_Location!=undefined ? parm_colWidth_Location : colItinWidth_Location );
                var param_colWidth_DateTime = ( parm_colWidth_DateTime!=undefined ? parm_colWidth_DateTime : colItinWidth_DateTime );
                var param_colWidth_Event = ( parm_colWidth_Event!=undefined ? parm_colWidth_Event : colItinWidth_Event );

                var strHTML = "";

                this.setViewMode(parm_viewmode);
                itinHTML.setFlags(false);

                switch ( this.getViewMode() ) {
                    case IDX_VIEWMODE_KEY_HISTORIC:
                        strHTML = ""
                            + "<font class=\"itinLink_active\"><span id=\"spnPipeline\" onclick=\"ctrlSpn_onclick(this.id)\">public pipeline</span></font>"
                            + "&nbsp;|&nbsp;"
                            + "<font class=\"itinLink_active\"><span id=\"spnCurrent\"  onclick=\"ctrlSpn_onclick(this.id)\">upcoming events</span></font>"
                            + "&nbsp;|&nbsp;"
                            + "<font class=\"itinLink_inactive\"><span id=\"spnHistoric\">previous events</span></font>";

                        break;
                    case IDX_VIEWMODE_KEY_CURRENT:
                        strHTML = ""
                            + "<font class=\"itinLink_active\"><span id=\"spnPipeline\" onclick=\"ctrlSpn_onclick(this.id)\">public pipeline</span></font>"
                            + "&nbsp;|&nbsp;"
                            + "<font class=\"itinLink_inactive\"><span id=\"spnCurrent\">upcoming events</span></font>"
                            + "&nbsp;|&nbsp;"
                            + "<font class=\"itinLink_active\"><span id=\"spnHistoric\" onclick=\"ctrlSpn_onclick(this.id)\">previous events</span></font>";

                        break;
                    case IDX_VIEWMODE_KEY_PIPELINE:
                        strHTML = ""
                            + "<font class=\"itinLink_inactive\"><span id=\"spnPipeline\">public pipeline</span></font>"
                            + "&nbsp;|&nbsp;"
                            + "<font class=\"itinLink_active\"><span id=\"spnCurrent\" onclick=\"ctrlSpn_onclick(this.id)\">upcoming events</span></font>"
                            + "&nbsp;|&nbsp;"
                            + "<font class=\"itinLink_active\"><span id=\"spnHistoric\" onclick=\"ctrlSpn_onclick(this.id)\">previous events</span></font>";

                        break;
                }
                itinHTML.setHTML(IDX_HTMLSECT_KEY_VIEWMODE,strHTML);
                itinHTML.setFlag(IDX_HTMLSECT_KEY_VIEWMODE,true);
       
                var setyearsArray = new Array();
                var gigyearsArray = new Array();
                var allsetsArray = new Array();
                var gigElmArray = new Array();
                
                var gigOrd = ( this.getViewMode() != IDX_VIEWMODE_KEY_HISTORIC ? "asc" : "desc" );
                
                var var_allgigs = rootClone.getElementsByTagName("gig");
                var gig = var_allgigs[0];
                var nextgig = null;
                var gig_ok = true;
                
                while ( gig ) {
                    nextgig = gig.nextSibling;

                    var xml_postdate = ( gig.getElementsByTagName("xml_postdate")[0].childNodes.length > 0 
                        ? gig.getElementsByTagName("xml_postdate")[0].childNodes[0].nodeValue
                        : null );
                    var intxml_postdate = ( !(xml_postdate == null)
                        ? cvtDateStr2Num(xml_postdate)
                        : 0 );
                    
                    var xml_editdate = ( gig.getElementsByTagName("xml_editdate")[0].childNodes.length > 0 
                        ? gig.getElementsByTagName("xml_editdate")[0].childNodes[0].nodeValue
                        : null );
                    var intxml_editdate = ( !(xml_editdate == null)
                        ? cvtDateStr2Num(xml_editdate)
                        : 0 );

                    var gigdate = ( gig.getElementsByTagName("gigdate")[0].childNodes.length > 0 
                        ? gig.getElementsByTagName("gigdate")[0].childNodes[0].nodeValue
                        : null );
                    var intGigDate = ( !(gigdate == null)
                        ? cvtDateStr2Num(gigdate)
                        : null );
                    
		    switch ( Math.max(intxml_statusdate,Math.max(intxml_postdate,intxml_editdate)) ) {
			case intxml_editdate:
				xml_statusdate = xml_editdate;
				intxml_statusdate = intxml_editdate;

				break;
			case intxml_postdate:
				xml_statusdate = xml_postdate;
				intxml_statusdate = intxml_postdate;

				break;
			default:
				break;
		    }			


                    var gigentityname = gig.getAttribute("gigentityname");
                    var accesstype = gig.getAttribute("accesstype");
                    var status = gig.getAttribute("status");

                    if ( gigentityname != ENSEMBLE ) gig_ok = false;
                    
                    if ( gigdate == null ) gig_ok = false;
                    else {
                        switch ( this.getViewMode() ) {
                            case IDX_VIEWMODE_KEY_PIPELINE:
                                if ( intGigDate < intSysDate ) gig_ok = false;
                                if ( accesstype == "private" ) gig_ok = false;
                                if ( !( !(status) || status=="ok" ) ) gig_ok = false;
                                break;
                            case IDX_VIEWMODE_KEY_CURRENT:
                                if ( intGigDate < intSysDate ) gig_ok = false;
                                break;
                            case IDX_VIEWMODE_KEY_HISTORIC:
                                if ( intGigDate >= intSysDate ) gig_ok = false;
                                if ( status == "cancelled" || status == "rescheduled-TBD" ) gig_ok = false;
                                break;
                        }
                    }
                    
                    if ( !gig_ok ) {
                        gig.parentNode.removeChild(gig);
                        gig_ok = true;
                    } else {
                        gigElmArray[gigElmArray.length] = new Array(gig.getAttribute("id"),gig.cloneNode("true"));
                        
                        var yr = parseInt(gigdate.substring(0,4));
                        var yrfound = false;
                        
                        for (var idx=0; idx<setyearsArray.length && !yrfound; idx++) {
                            if ( yr==setyearsArray[idx] ) yrfound = true;
                        }
                        
                        if ( !yrfound ) setyearsArray[setyearsArray.length] = yr;
                    }
                    gig = nextgig;
                }

                sortMDArray(setyearsArray,gigOrd);
                sortMDArray(gigElmArray,gigOrd,2);
                
                for ( var idx=0; idx<gigElmArray.length; idx++ ) {
                    rootClone.replaceChild(gigElmArray[idx][1], rootClone.childNodes[idx]);
                }

                var setElmArray = new Array();
                var var_allsets = rootClone.getElementsByTagName("sets");
                for ( setsidx=0; setsidx<var_allsets.length; setsidx++ ) {
                    var sets = var_allsets[setsidx];

                    sets.setAttribute("id",sets.parentNode.getAttribute("id"));
        		    
                    var startdate = "";
                    var starrtime = "";
                    var stoptime = "";
                    var setId = "";
        		    
                    var setElms = sets.getElementsByTagName("set");
                    for ( setElmsIdx=0; setElmsIdx<setElms.length; setElmsIdx++ ) {
                        var setElm = setElms[setElmsIdx];

                        startdate = ( setElm.getElementsByTagName("set_startdate")[0].childNodes.length > 0 
                            ? setElm.getElementsByTagName("set_startdate")[0].childNodes[0].nodeValue 
                            : null );

                        starttime = ( setElm.getElementsByTagName("set_starttime")[0].childNodes.length > 0 
                            ? setElm.getElementsByTagName("set_starttime")[0].childNodes[0].nodeValue 
                            : null );

                        stoptime = ( setElm.getElementsByTagName("set_stoptime")[0].childNodes.length > 0 
                            ? setElm.getElementsByTagName("set_stoptime")[0].childNodes[0].nodeValue 
                            : null );

                        setId = ""
                            + ( !(startdate == null) ? cvtDateStr2Num(startdate) : "" )
                            + ( !(starttime == null) ? cvtTimeStr2Num(starttime) : "" );
                            + ( !(stoptime == null) ? cvtTimeStr2Num(stoptime) : "" );
        	                
                        setElmArray[setElmArray.length] = new Array(setId,setElm.cloneNode(true));
                    }

                    sortMDArray(setElmArray,"asc",2);
                    removeOrderedArrayDupes(setElmArray,0);

                    for ( var idx=0; idx<setElmArray.length; idx++ ) {
                        sets.replaceChild(setElmArray[idx][1], sets.childNodes[idx]);
                    }
                    setElmArray = [];
                }

                strHTML = ""
                    +   "<table style=\"border:0px; width:100%;\" cellspacing=\"0\" cellpadding=\"2\">"
                    +       "<tr>"
                    +           "<td style=\"width:100%; text-align:center; font-family:Arial; font-size:medium; font-weight:bold; font-style:italic;\">"
                    +               "<br />"
                    
                for ( idx=0; idx<setyearsArray.length; idx++ ) {
                    strHTML += ""
                        +           "<font style=\"background-color:#D3D3D3;\">"
                        +               "&#160;"
                        +               "<a rel=\"bookmark\" href=\"#yr" + setyearsArray[idx] + "\">"  + setyearsArray[idx] + "</a>"
                        +               "&#160;"
                        +           "</font>";
                        
                    if ( idx<setyearsArray.length-1 ) {
                        strHTML += ", ";
                    }
                }
                
                strHTML += ""
                    +               "<br />"
                    +               "&#160;"
                    +           "</td>"
                    +       "</tr>"
                    +   "</table>";
                    

                itinHTML.setHTML(IDX_HTMLSECT_KEY_BOOKMARK,strHTML);
                itinHTML.setFlag(IDX_HTMLSECT_KEY_BOOKMARK,true);
                
                var var_gigyears = xmlDoc.createElement("gigyears");
                for ( idx=0; idx<setyearsArray.length; idx++ ) {
                    var gigyear = xmlDoc.createElement("year");
                    
                    gigyear.setAttribute("id",setyearsArray[idx].toString());
                    var_gigyears.appendChild(gigyear);
                    
                    var_allgigs = rootClone.getElementsByTagName("gig");
                    for ( var var_allgigsIdx=0; var_allgigsIdx<var_allgigs.length; var_allgigsIdx++ ) {
                        gig = var_allgigs[var_allgigsIdx];

                        gigdate = gig.getElementsByTagName("gigdate")[0].childNodes[0].nodeValue;
                        yr = parseInt(gigdate.substring(0,4));
                        
                        if ( yr==setyearsArray[idx] ) gigyear.appendChild(gig.cloneNode(true));
                    }
                }
                
                var bkgrndclr = "#D3D3D3";
		var newimgalttxt = "newly posted <= " 
			+ NEWPOSTDAYLAPSE 
			+ ( NEWPOSTDAYLAPSE>1 ? " days" : " day" )
			+ " ago"

		var NEW_IMAGE = "<img src=\"Contents/Images/graphics/vibr8bros_new02.png\" alt=\"\" width=\"30%\" />"
                
                rowStyle = "";
                strHTML = ""
                    +   "<table style=\"table-layout:fixed; border:0px; border-color:transparent; height:auto; width:100%; text-align:left; vertical-align:top;\" cellspacing=\"0\" cellpadding=\"4\" >"
                    +       "<col style=\"width:" + param_colWidth_Location + ";\"/>"
                    +       "<col style=\"width:" + param_colWidth_DateTime + ";\"/>"
                    +       "<col style=\"width:" + param_colWidth_Event + ";\"/>"
                    +       "<col/>";
                    
                var gigyears = var_gigyears.getElementsByTagName("year");
                for ( var gigyearsIdx=0; gigyearsIdx<gigyears.length; gigyearsIdx++ ) {
                    var year = gigyears[gigyearsIdx];

                    strHTML +=  "<tr style=\"background-color:#000000;\">"
                        +           "<td style=\"height:" 
                        +               ( gigyearsIdx>0 ? "2px" : "1px" )+ "; width:100%;\" colspan=\"4\"> </td>"
                        +       "</tr>"
                        +       "<tr style=\"background-color:#D3D3D3;\">"
                        +           "<td style=\"border-bottom:solid 1pt #000000; height:0px; text-align:left; font-family:Arial; font-size:larger; font-weight:bold; font-style:italic;\" colspan=\"4\">"
                        +               "<a id=\"yr" + year.getAttribute("id") + "\">"
                        +                   "&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;" + year.getAttribute("id")
                        +               "</a>"
                        +           "</td>"
                        +       "</tr>"
                        
                    var gigs = year.getElementsByTagName("gig");
                    for ( var gigsIdx=0; gigsIdx<gigs.length; gigsIdx++ ) {
                        var gig = gigs[gigsIdx];

	                var xml_postdate = ( gig.getElementsByTagName("xml_postdate")[0].childNodes.length > 0 
        	            ? gig.getElementsByTagName("xml_postdate")[0].childNodes[0].nodeValue
                	    : null );
	                var intxml_postdate = ( !(xml_postdate == null)
        	            ? cvtDateStr2Num(xml_postdate)
                	    : 0 );

	                var xml_editdate = ( gig.getElementsByTagName("xml_editdate")[0].childNodes.length > 0 
        	            ? gig.getElementsByTagName("xml_editdate")[0].childNodes[0].nodeValue
                	    : null );
	                var intxml_editdate = ( !(xml_editdate == null)
        	            ? cvtDateStr2Num(xml_editdate)
                	    : 0 );

                        var accessfee = getAccessFee(gig.getAttribute("accessfee"));
                        var accesstype = getAccessType(gig.getAttribute("accesstype"));
                        var status = ( !(gig.getAttribute("status")==null) ? gig.getAttribute("status") : "" ) ;
                        var eventtype = getEventType(gig.getAttribute("eventtype"));
                        
                        var event_title = ( gig.getElementsByTagName("event_title")[0].childNodes.length > 0 ? 
                            gig.getElementsByTagName("event_title")[0].childNodes[0].nodeValue : "" );
                        
                        var event_link_ext = ( gig.getElementsByTagName("event_link_ext")[0].childNodes.length > 0 ? 
                            gig.getElementsByTagName("event_link_ext")[0].childNodes[0].nodeValue : "" );
                        event_link_ext = event_link_ext.replace(/'/g,"&#39");
                        
                        var venue_name = ( gig.getElementsByTagName("venue_name")[0].childNodes.length > 0 ? 
                            gig.getElementsByTagName("venue_name")[0].childNodes[0].nodeValue : "" );
                        
                        var venue_city = ( gig.getElementsByTagName("venue_city")[0].childNodes.length > 0 ? 
                            gig.getElementsByTagName("venue_city")[0].childNodes[0].nodeValue : "" );
                        
                        var venue_state = ( gig.getElementsByTagName("venue_state")[0].childNodes.length > 0 ? 
                            gig.getElementsByTagName("venue_state")[0].childNodes[0].nodeValue : "" );
                        
                        var venue_link_ext = ( gig.getElementsByTagName("venue_link_ext")[0].childNodes.length > 0 ? 
                            gig.getElementsByTagName("venue_link_ext")[0].childNodes[0].nodeValue : "" );
                        venue_link_ext = venue_link_ext.replace(/'/g,"&#39");
                        
                        var venue_link_int = ( gig.getElementsByTagName("venue_link_int")[0].childNodes.length > 0 ? 
                            gig.getElementsByTagName("venue_link_int")[0].childNodes[0].nodeValue : "" );
                        venue_link_int = venue_link_int.replace(/'/g,"&#39");
                        
                        var gigsets = gig.getElementsByTagName("set");
                        var setcount = gigsets.length;
                        
                        switch ( this.getViewMode() ) {
                            case IDX_VIEWMODE_KEY_PIPELINE:
                                strHTML +=  "<tr style=\"" + getNextRowStyle(status) + "\">"
                                    +           "<td style=\"text-align:left; vertical-align:top;\" colspan=\"4\">"
                                    +               "<ul>"
                                    +                   "<li style=\"font-size:small;\">";

                                if ( setcount > 0 ) {
                                    var setsFound = false;
                                    
                                    for ( setsidx=0; setsidx<var_allsets.length && !setsFound; setsidx++ ) {
                                        if ( var_allsets[setsidx].getAttribute("id") == gig.getAttribute("id") ) {
                                            var gigsets = var_allsets[setsidx].getElementsByTagName("set");
                                            var b_firstpass;
                                            var b_lastpass;
                                            var b_startdate_eq_prev;
                                            var b_startdate_eq_next;
                                            var b_starttime_eq_prev;
                                            var b_starttime_eq_next;
                                            
                                            var setcount = gigsets.length;
                                            
                                            for ( setpos=0; setpos<setcount; setpos++ ) {
                                                var setX = gigsets[setpos];
                                                var setdate;
                                                var settime;
                                                
                                                startdate = ( setX.getElementsByTagName("set_startdate")[0].childNodes.length > 0 
                                                    ? setX.getElementsByTagName("set_startdate")[0].childNodes[0].nodeValue 
                                                    : null );

                                                starttime = ( setX.getElementsByTagName("set_starttime")[0].childNodes.length > 0 
                                                    ? setX.getElementsByTagName("set_starttime")[0].childNodes[0].nodeValue 
                                                    : null );

                                                stoptime = ( setX.getElementsByTagName("set_stoptime")[0].childNodes.length > 0 
                                                    ? setX.getElementsByTagName("set_stoptime")[0].childNodes[0].nodeValue 
                                                    : null );
                                                    
                                                if ( setpos==0 ) {
                                                    setdate = getDatePart(startdate,"day") + " " + getMiniDateStr(startdate);
                                                    settime = getShortTimeStr(starttime);
                                                }
                                                
                                                // boolean date/time sequential test variables
                                                b_firstpass = ( setpos==0 );
                                                b_lastpass = ( setpos==setcount-1);
                                                b_startdate_eq_prev = ( 
                                                    !b_firstpass 
                                                        && ( cvtDate2Num(gigsets[setpos].getElementsByTagName("set_startdate")[0].childNodes[0].nodeValue)==
                                                            cvtDate2Num(gigsets[setpos-1].getElementsByTagName("set_startdate")[0].childNodes[0].nodeValue) ) );
                                                b_startdate_eq_next = ( 
                                                    !b_firstpass 
                                                        && ( cvtDate2Num(gigsets[setpos].getElementsByTagName("set_startdate")[0].childNodes[0].nodeValue)==
                                                            cvtDate2Num(gigsets[setpos+1].getElementsByTagName("set_startdate")[0].childNodes[0].nodeValue) ) );
                                                b_starttime_eq_prev = ( 
                                                    !b_firstpass 
                                                        && ( cvtTime2Num(gigsets[setpos].getElementsByTagName("set_starttime")[0].childNodes[0].nodeValue)==
                                                            cvtTime2Num(gigsets[setpos-1].getElementsByTagName("set_starttime")[0].childNodes[0].nodeValue) ) );
                                                b_starttime_eq_next = ( 
                                                    !b_firstpass 
                                                        && ( cvtTime2Num(gigsets[setpos].getElementsByTagName("set_starttime")[0].childNodes[0].nodeValue)==
                                                            cvtTime2Num(gigsets[setpos+1].getElementsByTagName("set_starttime")[0].childNodes[0].nodeValue) ) );
                                                ////////////////////////////////////////////////
                                                
                                                
                                                if ( !b_startdate_eq_prev ) {
                                                    if ( !b_firstpass ) {
                                                        if ( b_lastpass || b_startdate_eq_next ) strHTML += " &amp; ";
                                                        else strHTML += ", ";
                                                    }
                                                        
                                                    strHTML += setdate;
                                                }
                                                if ( ( b_startdate_eq_prev && !b_starttime_eq_prev ) 
                                                        || !b_starttime_eq_next
                                                        || ( setcount-setpos>1 ) ) {
                                                    if ( !b_startdate_eq_prev || ( b_startdate_eq_prev && b_starttime_eq_prev ) ) strHTML += " (";
                                                    else if ( !b_startdate_eq_next ) strHTML += " &amp; ";
                                                    else strHTML += ", ";
                                                        
                                                    strHTML += settime;
                                                }
                                                if ( b_lastpass || !b_startdate_eq_next ) strHTML += ")";
                                            }
                                            
                                            setsFound = true;
                                        }
                                    }
                                }

                                var var_event_link_ext_target;
                                var var_event_link_ext;
                                var var_event_link_int_target;
                                var var_event_link_int;

                                strHTML +=  "<ul>"
                                    +           "<li style=\"font-size:small;\">";
                                    
                                if ( event_link_ext.length > 0 ) {

                                    var_event_link_ext = event_link_ext.substring(1,event_link_ext.length-1);

                                    if ( event_link_ext.substring(1,2) != "#" ) {
                                        var_event_link_ext_target = "_blank";

                                        strHTML +=  "<a target=\"" 
                                            +   var_event_link_ext_target 
                                            +   "\" href=\"" 
                                            +   var_event_link_ext 
                                            +   "\">"
                                            +   fmtStrVal(event_title)
                                            +   "</a>";
                                            
                                    } else {
                                        var_event_link_ext_target = "bookmark";
                                        var var_link_ext_onclick = "navBtn_onclick(&quot;location&quot;)";
                                        var var_link_ext_onmouseover = "showVenueDataPopup("
                                            +   "&quot;" + event_link_ext.substring(2,event_link_ext.length-1) + "&quot;"
                                            +   ")"; 
                                            
                                        strHTML +=  "<a rel=\"" 
                                            +   var_event_link_ext_target
                                            +   "\" href=\""
                                            +   var_event_link_ext
                                            +   "\" onclick=\"" 
                                            +   var_link_ext_onclick
                                            +   "\" onmouseover=\"" 
                                            +   var_link_ext_onmouseover
                                            +   "\">"
                                            +   fmtStrVal(event_title)
                                            +   "</a>";
                                    }
                                } else strHTML += fmtStrVal(event_title);

                                strHTML +=  ( accessfee.length > 0 ? " " + accessfee : "" )
                                    +   " - ";
                                    
                                if ( venue_link_int.length > 0 ) {

                                    var_venue_link_int = venue_link_int.substring(1,venue_link_int.length-1);
                                    var var_link_onmouseover = "this.style.cursor='wait'; showVenueDataPopup("
                                        +   "&quot;" + venue_link_int.substring(2,venue_link_int.length-1) + "&quot;"
                                        +   ")"; 

                                    if ( venue_link_int.substring(1,2) != "#" ) {
                                        var_venue_link_int_target = "_blank";

                                        strHTML +=  "<a target=\"" 
                                            +   var_venue_link_int_target 
                                            +   "\" href=\"" 
                                            +   var_venue_link_int 
                                            +   "\">"
                                            +   fmtStrVal(venue_name)
                                            +   "</a>"
                                	    +	"&nbsp;("
                                    	    +	fmtStrVal(venue_city)
                                    	    +	")"
					    +	"&nbsp;<img style=\"text-align:left; vertical-align:top; padding: 1; border: 1 darkgreen solid; position:inherit; top:0; cursor:default;\" onmouseover=\"" 
                                            +   var_link_onmouseover
					    +	"\" src=\"Contents/Images/graphics/information.jpg\" alt=\"\" width=\"15\" height=\"15\" />"
                                            
                                    } else {
                                        var_venue_link_int_target = "bookmark";
                                        var var_link_onclick = "navBtn_onclick(&quot;location&quot;)";

                                        strHTML += ""
                                            +   fmtStrVal(venue_name)
                                	    +	"&nbsp;("
                                    	    +	fmtStrVal(venue_city)
                                    	    +	")"
					    +	"&nbsp;<img style=\"text-align:left; vertical-align:top; padding: 1; border: 1 darkgreen solid; position:inherit; top:0; cursor:pointer;\" onmouseover=\"" 
                                            +   var_link_onmouseover
					    +	"\" src=\"Contents/Images/graphics/information.jpg\" alt=\"\" width=\"15\" height=\"15\" height=\"15\" />"
                                    }
                                } else strHTML += fmtStrVal(venue_name)
                                	    +	"&nbsp;("
                                    	    +	fmtStrVal(venue_city)
                                    	    +	")";
                                    
                                strHTML +=  ""
				    +		( intxml_editdate>=intxml_postdate ? "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" + UPDATED_MARKER : ( intxml_postdate>=intNewDate ? "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" + NEW_MARKER : "" ) ) 
				    +		( status.length > 0 ? " " + getStatus(status) : "" )
                                    +           "</li></ul></li></ul>"
                                    +       "</td>"
                                    +   "</tr>"

                                bkgrndclr = ( ( gigyears.length>1 ) 
                                    && ( gigyearsIdx<gigyears.length-1 ) 
                                    && ( gigsIdx==gigs.length-1 ) ? "#D3D3D3" : "#D3D3D3" );
                                
                                strHTML +=  "<tr style=\"background-color:" + bkgrndclr + "\">"
                                    +           "<td style=\"height:2px;\" colspan=\"4\">"
                                    +               " "
                                    +           "</td>"
                                    +       "</tr>";

                                break;
                            default:
                                strHTML +=  "<tr style=\"" + getNextRowStyle(status) + "\">"
                                    +           "<td style=\"width:" + param_colWidth_Location + "; text-align:left; vertical-align:top; border-right:dotted 1pt #000080;\">";

                                if ( venue_link_ext.length > 0 ) {

                                    var_venue_link_ext = venue_link_ext.substring(1,venue_link_ext.length-1);

                                    if ( venue_link_ext.substring(1,2) != "#" ) {
                                        var_venue_link_ext_target = "_blank";

                                        strHTML +=  "<a target=\"" 
                                            +   var_venue_link_ext_target 
                                            +   "\" href=\"" 
                                            +   var_venue_link_ext 
                                            +   "\">"
                                            +   fmtStrVal(venue_name)
                                            +   "</a>"
                                    }
                                } else strHTML += fmtStrVal(venue_name);

                                strHTML +=  "&nbsp;("
                                    +   venue_city
                                    +   ")"

                                if ( venue_link_int.length > 0 ) {

                                    var var_link_onmouseover = "this.style.cursor='wait'; showVenueDataPopup("
                                        +   "&quot;" + venue_link_int.substring(2,venue_link_int.length-1) + "&quot;"
                                        +   ")"; 

                                    if ( venue_link_int.substring(1,2) == "#" ) {

                                        strHTML += ""
					    +	"&nbsp;<img style=\"text-align:left; vertical-align:top; padding: 1; border: 1 darkgreen solid; position:inherit; top:0; cursor:pointer;\" onmouseover=\"" 
                                            +   var_link_onmouseover
					    +	"\" src=\"Contents/Images/graphics/information.jpg\" alt=\"\" width=\"15\" height=\"15\" />";
				    }
                                }

                                strHTML += ""
                                    +   ( accesstype.length > 0 ? " " : "" )
                                    +   accesstype
                                    +       "</td>"
                                    +       "<td style=\"width:" + param_colWidth_DateTime + "; text-align:left; vertical-align:top; white-space:nowrap; border-right:dotted 1pt #000080;\">";

                                if ( setcount > 0 ) {
                                    var setsFound = false;
                                    
                                    for ( setsidx=0; setsidx<var_allsets.length && !setsFound; setsidx++ ) {
                                        if ( var_allsets[setsidx].getAttribute("id") == gig.getAttribute("id") ) {
                                            var gigsets = var_allsets[setsidx].getElementsByTagName("set");
                                            var setcount = gigsets.length;
                                            
                                            for ( setpos=0; setpos<setcount; setpos++ ) {
                                                var setX = gigsets[setpos];
                                                var setdate;

                                                startdate = ( setX.getElementsByTagName("set_startdate")[0].childNodes.length > 0 
                                                    ? setX.getElementsByTagName("set_startdate")[0].childNodes[0].nodeValue 
                                                    : null );

                                                starttime = ( setX.getElementsByTagName("set_starttime")[0].childNodes.length > 0 
                                                    ? setX.getElementsByTagName("set_starttime")[0].childNodes[0].nodeValue 
                                                    : null );

                                                stoptime = ( setX.getElementsByTagName("set_stoptime")[0].childNodes.length > 0 
                                                    ? setX.getElementsByTagName("set_stoptime")[0].childNodes[0].nodeValue 
                                                    : null );
                                                    
                                                setdate = getDatePart(startdate,"day") 
                                                    + " " + getShortDateStr(startdate)
                                                    + " " + getShortTimeStr(starttime)
                                                    + "&#045;" + getShortTimeStr(stoptime);
                                                    
                                                strHTML += setdate
                                                    +   "<br/>";
                                            }
                                        }
                                    }
                                }

                                strHTML +=  "</td>"
                                    +       "<td style=\"width:" + param_colWidth_Event + "; text-align:left; vertical-align:top; border-right:dotted 1pt #000080;\">";
                                        
                                if ( event_link_ext.length > 0 ) {

                                    var_event_link_ext = event_link_ext.substring(1,event_link_ext.length-1);

                                    if ( event_link_ext.substring(1,2) != "#" ) {
                                        var_event_link_ext_target = "_blank";

                                        strHTML +=  "<a target=\"" 
                                            +   var_event_link_ext_target 
                                            +   "\" href=\"" 
                                            +   var_event_link_ext 
                                            +   "\">"
                                            +   fmtStrVal(event_title)
                                            +   "</a>";
				    }
                                            
                                } else strHTML += fmtStrVal(event_title);

                                strHTML +=  ( accessfee.length > 0 ? " " + accessfee : "" )
                                    +       "</td>"
                                    +       "<td style=\"text-align:left; vertical-align:top; white-space:nowrap; text-decoration:none;\">"
                                    +           ( !(this.getViewMode()==IDX_VIEWMODE_KEY_HISTORIC) && (intxml_editdate>=intxml_postdate) ? UPDATED_MARKER : ( !(this.getViewMode()==IDX_VIEWMODE_KEY_HISTORIC) && (intxml_postdate>=intNewDate) ? NEW_MARKER : "" ) ) 
				    +		( status.length > 0 ? " " + getStatus(status) : "" )
                                    +       "</td>"
                                    +   "</tr>"
                                
                                bkgrndclr = ( ( gigyears.length>1 ) 
                                    && ( gigyearsIdx<gigyears.length-1 ) 
                                    && ( gigsIdx==gigs.length-1 ) ? "#D3D3D3" : "#D3D3D3" );
                                
                                strHTML +=  "<tr style=\"background-color:" + bkgrndclr + "\">"
                                    +           "<td style=\"height:2px;\" colspan=\"4\">"
                                    +               " "
                                    +           "</td>"
                                    +       "</tr>";

                                break;
                        }
                    }
                }
                
                strHTML +=  "<tr>"
                    +           "<td colspan=\"4\" style=\"text-align:center; vertical-align:middle;\">"
                    +               EOF_MARKER
                    +           "</td>"
                    +       "</tr>"
                    +   "</table>";

                itinHTML.setHTML(IDX_HTMLSECT_KEY_DETAIL,strHTML);
                itinHTML.setFlag(IDX_HTMLSECT_KEY_DETAIL,true);
                
                this.setTransformDS(cvtDateStr2Num(formatXMLDateStr(new Date())));
                
                window.top.updatestatusdate_itinerary = getShortDateStr(xml_statusdate);

                var statusHTML = ""
                    + "<a href='#' onclick='navBtn_onclick(\"itinerary\");'>"
                    + " <i>The Itinerary was last updated on " 
                    + updatestatusdate_itinerary
                    + ". Click here to view.</i></a>";

                var div = document.getDocElementById("divItineraryStatus",0);
                if ( div ) {
			if ( div.innerHTML != statusHTML ) div.innerHTML = statusHTML;
		}

                return new Array(
                                itinHTML.getHTML(IDX_HTMLSECT_KEY_VIEWMODE),
                                itinHTML.getHTML(IDX_HTMLSECT_KEY_BOOKMARK),
                                itinHTML.getHTML(IDX_HTMLSECT_KEY_DETAIL));
                
                /////////////////////////////////////////////////////////////
                /////////////////////////////////////////////////////////////
                // end transform the data
                /////////////////////////////////////////////////////////////
                /////////////////////////////////////////////////////////////
            }
        }
    }
//-->