Untitled JavaScript (12-Jul @ 12:28)

yansky

Syntax Highlighted Code

  1.        pll_win.setTimeout(function(){
  2.             let st_vid=this.VLCFoxPlaya_vid;
  3.             //VLCFoxPlaya.console('setTimeout');
  4.  
  5. [114 more lines...]

Plain Code

        pll_win.setTimeout(function(){
            let st_vid=this.VLCFoxPlaya_vid;
            //VLCFoxPlaya.console('setTimeout');

            /*let totalProgressPercent = parseInt((st_vid.OPC.aCurTotalProgress/st_vid.OPC.aMaxTotalProgress)*100,10);
            VLCFoxPlaya.console('totalProgressPercent');
            VLCFoxPlaya.console(totalProgressPercent);

            let timeLUnderL = parseInt( ( (st_vid.vidPlayWidth-45-45-80-80-10)*totalProgressPercent ) /100, 10 );
            //VLCFoxPlaya.console('timeLUnderL');
            //VLCFoxPlaya.console(timeLUnderL);                    

            //pL_vid.playerControlEles.controls.timeLine.timeLineLoadedSection1.width=timeLUnderL;    
            st_vid.playerControlEles.controls.timeLine.timeLineLoadedSection1.setAttribute('width',timeLUnderL);    */        
            
            VLCFoxPlaya.playerControlFuncs.time.change(st_vid);
            /*VLCFoxPlaya.console(st_vid.unWrappedvidEl.input.state);
            VLCFoxPlaya.console(st_vid.isPlaying);
            if(st_vid.isPlaying && st_vid.unWrappedvidEl.input.state===6){
                VLCFoxPlaya.playerControlFuncs.playPause.toggleButton(st_vid);
            }*/
            //if(st_vid.unWrappedvidEl.input.state ===6 && st_vid.vidDetails.videoLength===st_vid.unWrappedvidEl.input.length){
                        /*VLCFoxPlaya.console('st_vid.unWrappedvidEl.input.state');
            VLCFoxPlaya.console(st_vid.unWrappedvidEl.input.state);*/

//VLCFoxPlaya.console('setTimeout st_vid.isPlaying');
//VLCFoxPlaya.console(st_vid.isPlaying);
            //if( st_vid.isPlaying){
                
                let svgPCF=st_vid.playerControlEles.controls;
                let plSt = st_vid.unWrappedvidEl.input.state;
                
                /*******************
                IDLE=0, OPENING=1, BUFFERING=2, PLAYING=3, 
                PAUSED=4, STOPPING=5, ENDED=6, ERROR=7
                *******************/
                
                if(plSt===4 && st_vid.isPlaying){
                    st_vid.isPlaying=false;
                    VLCFoxPlaya.console('if(plSt===4 && st_vid.isPlaying){');
                    VLCFoxPlaya.playerControlFuncs.playPause.toggleButton(this);
                }
                else if(plSt ===3){
                    if(!st_vid.isPlaying){
                    VLCFoxPlaya.console('else if(plSt ===3){');
                        st_vid.isPlaying=true;
                        VLCFoxPlaya.playerControlFuncs.playPause.toggleButton(this);
                    }
                    //VLCFoxPlaya.console('st_vid.unWrappedvidEl.input.state');
                //VLCFoxPlaya.console(st_vid.unWrappedvidEl.input.state);                
                    /********
                    get percentage of time gone by in the video that is playing
                    ********/                    
                    let vidPercLen = parseInt((st_vid.unWrappedvidEl.input.time/st_vid.vidDetails.videoLength)*100,10);
                    //VLCFoxPlaya.console('vidPercLen');
                    //VLCFoxPlaya.console(vidPercLen);
                    /********
                    use that percentage to find the new x axis number 
                    -45-45-80-80 to take away the widths of all the other buttons. -10 cause the loaded sections are 5pixels in on both sides
                    -14 to take away the width of timeLinePosRect
                    ********/                        
                    let timeLwL = parseInt(((st_vid.vidPlayWidth-45-45-80-80-10)*vidPercLen)/100,10);
                    //VLCFoxPlaya.console('timeLwL');
                    //VLCFoxPlaya.console(timeLwL);                    
                    /********
                    assign timeLineGroup the new transform x axis number
                    ********/
                    /*let newMatrix = svgPCF.master.createSVGPoint().matrixTransform(gtF2Elem);
                    newMatrix.x=timeLwL;                    
                    svgPCF.timeLine.timeLineGroup.timeLineSliderGroupTranslateStartVal
                    svgPCF.timeLine.timeLineGroup.*/
                    
                    //svgPCF.timeLine.timeLinePosRect.x=timeLwL;    
                    /*let tsvgc=svgPCF.master.createSVGTransform();
                    tsvgc.setTranslate(timeLwL,8);                    
                    svgPCF.timeLine.timeLinePosRect.translate.baseVal.appendItem(tsvgc);*/
                    
                    
                    svgPCF.timeLine.timeLinePosRect.setAttribute('x',timeLwL);    
                    //VLCFoxPlaya.console('svgPCF.timeLine.timeLinePosRect.x');
                    //VLCFoxPlaya.console(svgPCF.timeLine.timeLinePosRect.x);                        
                    
                }            
                else if(plSt ===6){
                    //VLCFoxPlaya.console('st_vid.unWrappedvidEl.input.state');
                //VLCFoxPlaya.console(st_vid.unWrappedvidEl.input.state);        
                
            
                    if(st_vid.finishedDownloading && st_vid.isPlaying){ 

                        VLCFoxPlaya.console('finished!!');
                        //VLCFoxPlaya.console(!st_vid.nsWBPersist);
                        //st_vid.isPlaying=false;
                        VLCFoxPlaya.playerControlFuncs.playPause.toggleButton(this);
                        //VLCFoxPlaya.console('st_vid.vidDetails.videoLength');
                        //VLCFoxPlaya.console(st_vid.vidDetails.videoLength);
                        //VLCFoxPlaya.console(st_vid.unWrappedvidEl.input.length);
                        st_vid.isPlaying=false;
                        //VLCFoxPlaya.playerControlFuncs.playPause.toggleButton(this);
                        st_vid.vidDetails.imgPlaceHolder.style.zIndex='0';
                        st_vid.vidEl.style.zIndex='-1';        
                    }
                    else if(!st_vid.finishedDownloading && st_vid.fileVLCBufferFull){
                        st_vid.isPlaying=false;
                        VLCFoxPlaya.console('***** buffer is empty  ****');
                        VLCFoxPlaya.console('!st_vid.finishedDownloading');                    
                        VLCFoxPlaya.console(!st_vid.finishedDownloading);                    
                        /*************
                        still playing; buffer is empty
                        *************/
                        st_vid.bufferAmount=st_vid.bufferAmount+st_vid.OPC.aCurTotalProgress;
                        st_vid.fileVLCBufferFull=false;
                        st_vid.forceStart=true;
                    }                    
                }
            //}
            
            VLCFoxPlaya.amyPoller(this, this.document);        //https://developer.mozilla.org/en/DOM/window.setInterval#Dangerous_usage
        }, 500);

Untitled Text (10-Jan @ 00:39)

yansky

Syntax Highlighted Code

  1. the XBL:
  2.  
  3. <?xml version="1.0"?>
  4. <bindings xmlns:xbl="http://www.mozilla.org/xbl"
  5. [89 more lines...]

Plain Code

the XBL:

<?xml version="1.0"?>
<bindings xmlns:xbl="http://www.mozilla.org/xbl"
 xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
 xmlns:html="http://www.w3.org/1999/xhtml">
  <binding id="dloadcells">
    <content>
        <xul:listcell xbl:inherits="label=dldName" />
        <xul:listcell xbl:inherits="label=dldURL" />
        <xul:listcell xbl:inherits="label=dldSize"/>
        <!--<xul:progressmeter value="" />-->
        <xul:listcell xbl:inherits="label=dldProg" />
        <xul:listcell xbl:inherits="label=dldPerCom" />
        <xul:listcell xbl:inherits="label=dldSpeed" />
        <xul:listcell xbl:inherits="label=dldETA" />
        <xul:listcell xbl:inherits="label=dldStatus" />
    </content>
  </binding>
</bindings>

the XUL:

<listbox flex="1" id="loglist">
    <listhead>
        <listheader label="Item Name" />
        <listheader label="URL" />
        <listheader label="Size" />
        <listheader label="Progress" />
        <listheader label="% Complete" />
        <listheader label="Speed" />
        <listheader label="Est. Time" />
        <listheader label="Status" />
    </listhead>
    <listcols>
        <listcol flex="1" />
        <listcol flex="1" />
        <listcol flex="1" />
        <listcol flex="1" />
        <listcol flex="1" />
        <listcol flex="1" />
        <listcol flex="1" />
        <listcol flex="1" />                        
    </listcols>
</listbox>

the javascript:

meh.populateRows=function(){

    if(dm.canCleanUp){
    
        dm.cleanUp();
    
    }
    var dbConn = dm.DBConnection;
    var loglist = xdoc.getElementById("loglist");
    var statement = dbConn.createStatement("SELECT * FROM moz_downloads");   // Get all items in table
    try {
        while (statement.executeStep()) {
            
            var row = xdoc.createElement("listitem");
            row.setAttribute("dldID", statement.getString(0)); 
            row.setAttribute("dldName", statement.getString(1)); 
            row.setAttribute("dldURL", statement.getString(2));  
            row.setAttribute("dldSize", statement.getString(11));
            row.setAttribute("dldProg", 0);
            row.setAttribute("dldPerCom", 0);
            row.setAttribute("dldSpeed", 0);
            row.setAttribute("dldETA", 0);
            row.setAttribute("dldStatus", meh.whatState(statement.getString(7)));
            row.setAttribute("class", "downloadS");
            loglist.appendChild(row);

        }
    } 
    finally {
        statement.finalize();
    }
    if(meh.scriptStatus == 'finished'){
    
        meh.qSave();
    
    }
};

the CSS:

@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
/***xbl****/
.downloadS {
    -moz-binding: url("downloadbindings.xml#dloadcells");
}

Untitled Text (10-Jan @ 00:34)

yansky

Syntax Highlighted Code

  1. the XBL:
  2.  
  3. <?xml version="1.0"?>
  4. <bindings xmlns:xbl="http://www.mozilla.org/xbl"
  5. [80 more lines...]

Plain Code

the XBL:

<?xml version="1.0"?>
<bindings xmlns:xbl="http://www.mozilla.org/xbl"
 xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
 xmlns:html="http://www.w3.org/1999/xhtml">
  <binding id="dloadcells">
    <content>
        <xul:listcell xbl:inherits="label=dldName" />
        <xul:listcell xbl:inherits="label=dldURL" />
        <xul:listcell xbl:inherits="label=dldSize"/>
        <!--<xul:progressmeter value="" />-->
        <xul:listcell xbl:inherits="label=dldProg" />
        <xul:listcell xbl:inherits="label=dldPerCom" />
        <xul:listcell xbl:inherits="label=dldSpeed" />
        <xul:listcell xbl:inherits="label=dldETA" />
        <xul:listcell xbl:inherits="label=dldStatus" />
    </content>
  </binding>
</bindings>

the XUL:

<listbox flex="1" id="loglist">
    <listhead>
        <listheader label="Item Name" />
        <listheader label="URL" />
        <listheader label="Size" />
        <listheader label="Progress" />
        <listheader label="% Complete" />
        <listheader label="Speed" />
        <listheader label="Est. Time" />
        <listheader label="Status" />
    </listhead>
    <listcols>
        <listcol flex="1" />
        <listcol flex="1" />
        <listcol flex="1" />
        <listcol flex="1" />
        <listcol flex="1" />
        <listcol flex="1" />
        <listcol flex="1" />
        <listcol flex="1" />                        
    </listcols>
</listbox>

the javascript:

meh.populateRows=function(){

    if(dm.canCleanUp){
    
        dm.cleanUp();
    
    }
    var dbConn = dm.DBConnection;
    var loglist = xdoc.getElementById("loglist");
    var statement = dbConn.createStatement("SELECT * FROM moz_downloads");   // Get all items in table
    try {
        while (statement.executeStep()) {
            
            var row = xdoc.createElement("listitem");
            row.setAttribute("dldID", statement.getString(0)); 
            row.setAttribute("dldName", statement.getString(1)); 
            row.setAttribute("dldURL", statement.getString(2));  
            row.setAttribute("dldSize", statement.getString(11));
            row.setAttribute("dldProg", 0);
            row.setAttribute("dldPerCom", 0);
            row.setAttribute("dldSpeed", 0);
            row.setAttribute("dldETA", 0);
            row.setAttribute("dldStatus", meh.whatState(statement.getString(7)));
            row.setAttribute("class", "downloadS");
            loglist.appendChild(row);

        }
    } 
    finally {
        statement.finalize();
    }
    if(meh.scriptStatus == 'finished'){
    
        meh.qSave();
    
    }
};

Untitled JavaScript (3-Dec @ 12:22)

yansky

Syntax Highlighted Code

  1. document.firstChild.nextSibling.setAttribute('xmlns', 'http://www.w3.org/1999/xhtml');
  2. document.firstChild.nextSibling.setAttribute('xmlns:svg', 'http://www.w3.org/1999/xhtml');
  3.  
  4. var se = document.createElement('div');
  5. [4 more lines...]

Plain Code

document.firstChild.nextSibling.setAttribute('xmlns', 'http://www.w3.org/1999/xhtml');
document.firstChild.nextSibling.setAttribute('xmlns:svg', 'http://www.w3.org/1999/xhtml');
  
var se = document.createElement('div');
se.setAttribute('style','width:300px;height:100px;float:left;');
se.innerHTML='<svg width="100%" height="100%">'+
'<rect width="300" height="100" style="fill:rgb(0,0,255);stroke-width:1;stroke:rgb(0,0,0)"/>'+
'</svg>';
document.body.appendChild(se);

Untitled JavaScript (3-Dec @ 01:39)

yansky

Syntax Highlighted Code

  1. // ==UserScript==
  2. // @name           Youtube Alternate Video Player
  3. // @namespace      userscripts.org
  4. // @description    Replaces the youtube flash video player with FlowPlayer flash video player. ( flowplayer.org )
  5. [102 more lines...]

Plain Code

// ==UserScript==
// @name           Youtube Alternate Video Player
// @namespace      userscripts.org
// @description    Replaces the youtube flash video player with FlowPlayer flash video player. ( flowplayer.org )
// @version        1.0
// @include        http://*.youtube.com/watch*
// @include        http://youtube.com/watch*
// ==/UserScript==


(function(){

    function lg(m){
    
        try{
        
            unsafeWindow.console.log(m);
        
        }
        catch(e){
        
            GM_log(m);
        
        }
    
    }
    
    function iPeedInTheSandBox(el){
    
        return unsafeWindow.document.getElementById(el);
    
    }
    
    var vidID = document.location.toString().split("v=")[1].split("&")[0];
    var mp = document.getElementById('movie_player');
    lg(mp);
    var mpAtt = mp.getAttribute("flashvars");
    lg(mpAtt);
    var mPar = mp.parentNode;
lg(mPar);
    var altPlayer = document.createElement('object');
    altPlayer.width="640";
    altPlayer.height="360";
    altPlayer.type="application/x-shockwave-flash";
    altPlayer.id="myytplayer";
    altPlayer.data="http://www.youtube.com/apiplayer?enablejsapi=1&amp;playerapiid=myytplayer";
    altPlayer.setAttribute('allowScriptAccess','always');
    
    mPar.replaceChild( altPlayer, mp );

    var altPlayerControls = document.createElement('p');
    altPlayerControls.setAttribute('style','width:640px;height:60px;');
    altPlayerControls.id="myytplayerControls";    
    altPlayerControls.innerHTML="Player Controls:  ";    
    
    var altPlayerControlsA1 = document.createElement('a');
    altPlayerControlsA1.href='#';
    altPlayerControlsA1.setAttribute('style','margin:5px;');
    altPlayerControlsA1.id="myytplayerControlsPlay";    
    altPlayerControlsA1.textContent="Play";    
    //altPlayerControlsA2.setAttribute("onclick", "document.getElementById('myytplayer').playVideo();return false;");    
    altPlayerControlsA1.addEventListener('click', function(e){
    
        e.preventDefault();

        iPeedInTheSandBox('myytplayer').playVideo();
    
    }, false);
    
    var altPlayerControlsA2 = document.createElement('a');
    altPlayerControlsA2.href='#';
    altPlayerControlsA2.setAttribute('style','margin:5px;');
    altPlayerControlsA2.id="myytplayerControlsLoad";    
    altPlayerControlsA2.textContent="Cue";
    var cueVidAtts = "document.getElementById('myytplayer').cueVideoById('"+vidID+"', 0);return false;"
    //altPlayerControlsA2.setAttribute("onclick", cueVidAtts);        
    altPlayerControlsA2.addEventListener('click', function(e){
    
        e.preventDefault();
            
        iPeedInTheSandBox('myytplayer').cueVideoById(vidID, 0);
    
    }, false);

    
    altPlayerControls.appendChild( altPlayerControlsA1 );
    altPlayerControls.appendChild( altPlayerControlsA2 );
    mPar.appendChild( altPlayerControls );
    
    /***alternatives to using setTimeout?
    http://code.google.com/apis/youtube/js_api_reference.html#onYouTubePlayerReady
    
    ***/

    iPeedInTheSandBox('myytplayer').addEventListener('onStateChange', function(){
    alert('onYouTubePlayerReady');
    iPeedInTheSandBox('myytplayer').cueVideoById(vidID, 0);
    }, false);
    
    
    
    //altPlayer.loadVideoById(vidID, parseInt(0));
    //altPlayer.cueVideoById(vidID, 0);
    //altPlayer.playVideo();
    

})();

Untitled HTML (2-Nov @ 10:06)

yansky

Syntax Highlighted Code

  1. <object width="960" height="556" id="xFiles" classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B"
  2. codebase="https://www.apple.com/qtactivex/qtplugin.cab"><param name="src"
  3. value="http://files.lynda.com/secure/courses/716/chap1/RC_S2F_01_intro.mov?e=1225618987&amp;h=f417cdab41e1028761d07333d45a438f"/>
  4. <param name="autoplay" value="true"/>
  5. [18 more lines...]

Plain Code

<object width="960" height="556" id="xFiles" classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" 
codebase="https://www.apple.com/qtactivex/qtplugin.cab"><param name="src" 
value="http://files.lynda.com/secure/courses/716/chap1/RC_S2F_01_intro.mov?e=1225618987&amp;h=f417cdab41e1028761d07333d45a438f"/>
<param name="autoplay" value="true"/>
<param name="vspace" value="0"/>
<param name="hspace" value="0"/>
<param name="align" value="top"/>
<param name="loop" value="false"/>
<param name="controller" value="true"/>
<param name="cache" value="true"/>
<param name="kioskmode" value="false"/>
<param name="playeveryframe" value="false"/>
<param name="qtsrcdontusebrowser" value="true"/>
<param name="width" value="960"/>
<param name="height" value="556"/>
<param name="id" value="xFiles"/>
<param name="name" value="xFiles"/>
<param name="starttime" value="0"/>
<embed width="960" vspace="0" hspace="0" height="556" align="top" pluginspage="http://www.apple.com/quicktime/" autoplay="true" 
src="http://files.lynda.com/secure/courses/716/chap1/RC_S2F_01_intro.mov?e=1225618987&amp;h=f417cdab41e1028761d07333d45a438f" 
loop="false" controller="true" playeveryframe="false" cache="true" kioskmode="false" targetcache="true" qtsrcdontusebrowser="true" 
type="video/quicktime" id="xFiles" name="xFiles" starttime="0"/>
</object>

Untitled HTML (6-Oct @ 11:21)

yansky

Syntax Highlighted Code

  1. <table class=""width="520" border="0" cellspacing="1" cellpadding="0">
  2.   <tr>
  3.     <td class="weatherzone" align="center">
  4.       <a href="http://www.weatherzone.com.au" target="_blank"><img src="http://www.weatherzone.com.au/images/woys/page_local_header.gif" width="518" height="30" border="0"></a><br />
  5. [55 more lines...]

Plain Code

<table class=""width="520" border="0" cellspacing="1" cellpadding="0">
  <tr>
    <td class="weatherzone" align="center">
      <a href="http://www.weatherzone.com.au" target="_blank"><img src="http://www.weatherzone.com.au/images/woys/page_local_header.gif" width="518" height="30" border="0"></a><br />
    </td>
  </tr>
</table>
<table class=""width="520" border="0" cellspacing="1" cellpadding="2">
  <tr>
    <td width="33%" class="weatherzone_head">
      Almanac
    </td>
    <td width="34%" class="weatherzone_head">
      Current Weather
    </td>
    <td width="33%" class="weatherzone_head">
      Forecast
    </td>
  </tr>
  <tr>
    <td class="weatherzone" valign="top">
      <table width="100%" border="0" cellspacing="0" cellpadding="1"><tr><td class="weatherzone_head">Sydney</td></tr><tr><td class="weatherzone" valign="top"><span style="font-weight: bold;">Monday\'s Summary</span><br /><table border="0" cellspacing="0"><tr><td class="weatherzone">Min</td><td class="weatherzone">14.9&deg;C</td></tr><tr><td class="weatherzone">Max</td><td class="weatherzone">22&deg;C</td></tr><tr><td class="weatherzone">Rainfall&nbsp;&nbsp;&nbsp;</td><td class="weatherzone">1.8mm</td></tr></table><span style="font-weight: bold;">Normally in October</span><br /><table border="0" cellspacing="0"><tr><td class="weatherzone">Average Min&nbsp;&nbsp;&nbsp;</td><td class="weatherzone">13.5&deg;C</td></tr><tr><td class="weatherzone">Average Max</td><td class="weatherzone">22.0&deg;C</td></tr><tr><td class="weatherzone">Rainfall</td><td class="weatherzone">77.3mm</td></tr></table><span style="font-weight: bold;">So far this October</span><br /><table border="0" cellspacing="0"><tr><td class="weatherzone">Average Min&nbsp;&nbsp;&nbsp;</td><td class="weatherzone">16.8&deg;C</td></tr><tr><td class="weatherzone">Average Max</td><td class="weatherzone">25.2&deg;C</td></tr><tr><td class="weatherzone">Rainfall</td><td class="weatherzone">14.8mm</td></tr></table></td></tr></table>
    </td>
    <td class="weatherzone" valign="top">
      <table width="100%" border="0" cellspacing="0" cellpadding="1"><tr><td class="weatherzone_head">Sydney 21:01 EDT</td></tr><tr><td class="weatherzone" valign="top"><table width="100%" border="0" cellspacing="0"><tr><td class="weatherzone">Temperature</td><td class="weatherzone" align="right">14.1&deg;C</td></tr><tr><td class="weatherzone">Dew point</td><td class="weatherzone" align="right">0.8&deg;C</td></tr><tr><td class="weatherzone">Humidity</td><td class="weatherzone" align="right">40%</td></tr><tr><td class="weatherzone">Feels like</td><td class="weatherzone" align="right">11.5&deg;C</td></tr><tr><td class="weatherzone">Winds</td><td class="weatherzone" align="right">W 39km/h</td></tr><tr><td class="weatherzone">Wind gusts</td><td class="weatherzone" align="right">55km/h</td></tr><tr><td class="weatherzone">Pressure</td><td class="weatherzone" align="right">1011.8hPa</td></tr><tr><td class="weatherzone">Rainfall</td><td class="weatherzone" align="right">0.2mm</td></tr></table></td></tr><tr><td class="weatherzone" colspan="2" align="right">[<a href="http://www.weatherzone.com.au/station.jsp?lt=site&amp;lc=66062&amp;list=ob" target="_blank">more</a>]</td></tr></table>
    </td>
    <td class="weatherzone" valign="top" align="right">
      <table width="100%" border="0" cellspacing="0" cellpadding="1"><tr><td class="weatherzone_head">Sydney Tuesday</td></tr><tr><td class="weatherzone" valign="top"><table width="100%" border="0" cellspacing="0"><tr><td class="weatherzone" width="35" align="center" rowspan="2"><img src="http://www.weatherzone.com.au/images/icons/fcast_30/clearing_shower.gif" width="30" height="30" border="0" /></td><td class="weatherzone" align="center"><span style="font-weight: bold; color: #0000AA;">11&deg;C</span> - <span style="font-weight: bold; color: #AA0000;">19&deg;C</span></td></tr><td class="weatherzone" align="center">Clearing shower</td></tr></table></td></tr><tr><td class="weatherzone_head">Wednesday</td></tr><tr><td class="weatherzone" valign="top"><table width="100%" border="0" cellspacing="0"><tr><td class="weatherzone" width="35" align="center" rowspan="2"><img src="http://www.weatherzone.com.au/images/icons/fcast_30/possible_shower.gif" width="30" height="30" border="0" /></td><td class="weatherzone" align="center"><span style="font-weight: bold; color: #0000AA;">11&deg;C</span> - <span style="font-weight: bold; color: #AA0000;">21&deg;C</span></td></tr><td class="weatherzone" align="center">Possible shower</td></tr></table></td></tr><tr><td class="weatherzone_head">Thursday</td></tr><tr><td class="weatherzone" valign="top"><table width="100%" border="0" cellspacing="0"><tr><td class="weatherzone" width="35" align="center" rowspan="2"><img src="http://www.weatherzone.com.au/images/icons/fcast_30/possible_shower.gif" width="30" height="30" border="0" /></td><td class="weatherzone" align="center"><span style="font-weight: bold; color: #0000AA;">13&deg;C</span> - <span style="font-weight: bold; color: #AA0000;">22&deg;C</span></td></tr><td class="weatherzone" align="center">Possible shower</td></tr></table></td></tr><tr><td class="weatherzone_head">Friday</td></tr><tr><td class="weatherzone" valign="top"><table width="100%" border="0" cellspacing="0"><tr><td class="weatherzone" width="35" align="center" rowspan="2"><img src="http://www.weatherzone.com.au/images/icons/fcast_30/mostly_sunny.gif" width="30" height="30" border="0" /></td><td class="weatherzone" align="center"><span style="font-weight: bold; color: #0000AA;">14&deg;C</span> - <span style="font-weight: bold; color: #AA0000;">24&deg;C</span></td></tr><td class="weatherzone" align="center">Mostly sunny</td></tr></table></td></tr></table>
      [<a href="http://www.weatherzone.com.au/local/search.jsp?search=2000" target=\"_blank\">more</a>]<br />
    </td>
  </tr>
</table>
<table width="520" border="0" cellspacing="1" cellpadding="2">
  <tr>
    <td class="weatherzone" valign="top" align="center">
      <a href="http://www.weatherzone.com.au/weathertracker/" target="_blank"><img src="http://www.weatherzone.com.au/images/ads/wzweathertracker/wzweathertracker_468x60.gif" border="0" alt="Weatherzone Weather Tracker" height="60" /></a><br />
    </td>
  </tr>
</table>
<table width="520" border="0" cellspacing="1" cellpadding="2">
  <tr>
    <td width="50%" class="weatherzone_head">
      Current Weather Map
    </td>
    <td width="50%" class="weatherzone_head">
      Latest Satellite
    </td>
  </tr>
  <tr>
    <td class="weatherzone" valign="top" align="center">
      <a href="http://www.weatherzone.com.au/synoptic.jsp" target="_blank"><img src="http://www.weatherzone.com.au/httpdata_r/images/synoptic/wz_syn_aus_d0_180x135.jpg" width="180" height="135" border="0" /></a><br />
    </td>
    <td class="weatherzone" valign="top" align="center">
      <a href="http://www.weatherzone.com.au/satellite.jsp" target="_blank"><img src="http://www.weatherzone.com.au/httpdata_r/images/satellite/wz_sat_aus_360x270.latest.jpg" width="180" height="135" border="0" /></a><br />
    </td>
  </tr>
</table>


Untitled JavaScript (6-Oct @ 07:35)

yansky

Syntax Highlighted Code

  1. alert('hi');

Plain Code

alert('hi');

Untitled JavaScript (6-Oct @ 07:29)

yansky

Syntax Highlighted Code

  1. var sliceFirstTrack2 = sliceFirstTrack.slice(sliceFirstTrack.indexOf(',',1))+returnedLink+",";

Plain Code

var sliceFirstTrack2 = sliceFirstTrack.slice(sliceFirstTrack.indexOf(',',1))+returnedLink+",";

Untitled JavaScript (6-Oct @ 07:28)

yansky

Syntax Highlighted Code

  1. var sliceFirstTrack2 = (sliceFirstTrack.charAt(0) == ',')? sliceFirstTrack.slice(sliceFirstTrack.indexOf(',',1))+returnedLink+"," :sliceFirstTrack.substr(sliceFirstTrack.indexOf(',')+1)+returnedLink+",";

Plain Code

var sliceFirstTrack2 = (sliceFirstTrack.charAt(0) == ',')? sliceFirstTrack.slice(sliceFirstTrack.indexOf(',',1))+returnedLink+"," :sliceFirstTrack.substr(sliceFirstTrack.indexOf(',')+1)+returnedLink+",";

Untitled JavaScript (14-Sep @ 07:31)

yansky

Syntax Highlighted Code

  1. /**javascript console***/
  2. function LOG(msg) {
  3.  
  4.   var lg = Components.classes["@mozilla.org/consoleservice;1"].getService(Components.interfaces.nsIConsoleService);
  5. [172 more lines...]

Plain Code

/**javascript console***/
function LOG(msg) {

  var lg = Components.classes["@mozilla.org/consoleservice;1"].getService(Components.interfaces.nsIConsoleService);
  lg.logStringMessage(msg);
 
}

var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("extensions.whimarchivebackup.");
var jsScriptLoader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"].getService(Components.interfaces.mozIJSSubScriptLoader);
   
// getById
function $i(id, d) {
   return d.getElementById(id);
}
// xpath unordered nodes
function $xu(p, d) {
   var i, r = [], x = d.evaluate(p, d, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);
   while(i=x.iterateNext()) r.push(i);     return r;
}
// xpath ordered nodes
function $xo(p, d) {
   var i, r = [], x = d.evaluate(p, d, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
   while(i=x.iterateNext()) r.push(i);
   return r;
}
// xpath single first node
function $xf(p, d) {
   return d.evaluate(p, d, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
}
// xpath single any node
function $xa(p, d) {
   return d.evaluate(p, d, null, XPathResult.ANY_UNORDERED_NODE_TYPE, null).singleNodeValue;
}

// create Element
function $ec(type, attributes){
   var node = document.createElement(type);
   for (var attr in attributes) if (attributes.hasOwnProperty(attr)){
      node.setAttribute(attr, attributes[attr]);
   }
   return node;
}

// delete Element
function $ed(element) {
   element.parentNode.removeChild(element);
}
// insert element after
function $ea(newNode, node) {
   return node.parentNode.insertBefore(newNode, node.nextSibling);
}
// insert element before
function $eb(newNode, node) {
   return node.parentNode.insertBefore(newNode, node);
}
// make element first child of par
function $ef(newNode, par) {
   return par.insertBefore(newNode, par.firstChild);
}
// make element last child of par
function $el(newNode, par) {
   return par.appendChild(newNode);
}

function loadS(eT, iCheck){

   var whimLink = $xf('//div[@id="left"]//a[contains(@href, "//whirlpool.net.au/whim/")]', eT);
   var whimpluslink = eT.createElement('a');
   whimpluslink.style.position='absolute';
   whimpluslink.style.display='inline';
   whimpluslink.style.padding='0 8px';
   whimpluslink.textContent='+';
   whimpluslink.href='#';

   $ea(whimpluslink, whimLink);
   
   whimpluslink.addEventListener("click", function (event) {

      event.preventDefault();

      alert('asd');
   
   }, false);
   
   /*if(!iCheck){
   
      
   
   }*/
   

}

getBrowser().addEventListener("DOMContentLoaded", function (event) {

   var eT = event.target;
   if(!eT.defaultView.frameElement){   
      LOG("yep ");
      var iHazAbrowza = this;
      var wpIframe = $i('wpHiddenIframe', document);
      var iCheck = true;

      if(eT.URL.indexOf('whirlpool.net.au')>-1){
      
         if(!wpIframe){
         
            var iContainer = document.createElement('vbox');
            iContainer.id="wpHiddenIframeContainer";
            iContainer.hidden="false";
            iContainer.height="0";
            
            var hidI = document.createElement('iframe');
            hidI.id="wpHiddenIframe";
            hidI.hidden="false";
            hidI.height="0";      
            hidI.name="false";
            hidI.src="";
            hidI.type="content";
            hidI.addEventListener("DOMContentLoaded", function (e) {
               LOG("hidI DOMContentLoaded ");
               var doc = e.originalTarget;
               var url = doc.location.href;
               if (e.originalTarget.nodeName == "#document") {
                  LOG("[DF] URL = "+url+"\n");
                  //var text = doc.evaluate("/html/body/",doc,null,XPathResult.STRING_TYPE,null).stringValue;
                  //LOG("[DF] TEXT in /html/body/ = "+text+"\n");
               }


            }, true);            
            
            $el(hidI, iContainer);
            $el(iContainer, iHazAbrowza);
            
            alert(hidI); //[object XULElement]
            alert(hidI.nodeName); // browser or iframe
            alert(hidI.id); // id of element
            
            hidI.webNavigation.loadURI("http://whirlpool.net.au/whim/?action=archive",Components.interfaces.nsIWebNavigation,null,null,null);
            iCheck = false;
         
         }
      
         LOG('whirlpool');
         loadS(eT, iCheck);
      
      }
      else{
      
         var num = iHazAbrowza.browsers.length;
         var removeI = true;
         for (var i = 0; i < num; i++) {

            var b = iHazAbrowza.getBrowserAtIndex(i);
            
            if(b.currentURI.spec.match(/whirlpool.net.au/)){
            
               removeI = false;
               
            }            

         }
         if(removeI && wpIframe){
         
            $ed(wpIframe);
         
         }
      
      }
      
   }
   
}, false);      


Untitled JavaScript (16-Aug @ 13:02)

yansky

Syntax Highlighted Code

  1. var MY_ID = "alternateflashplayer@forboden";
  2. var em = Components.classes["@mozilla.org/extensions/manager;1"].getService(Components.interfaces.nsIExtensionManager);
  3. var emfile = em.getInstallLocation(MY_ID).getItemLocation(MY_ID);
  4.  
  5. [43 more lines...]

Plain Code

var MY_ID = "alternateflashplayer@forboden";
var em = Components.classes["@mozilla.org/extensions/manager;1"].getService(Components.interfaces.nsIExtensionManager);
var emfile = em.getInstallLocation(MY_ID).getItemLocation(MY_ID);

function getLocalPlaya(whichOne){

    var filePa = emfile.path+'\\chrome\\content\\players\\'+whichOne;
    var gunsNRoses = filePa.replace('\\', '\\\\');
    var bFile = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
    bFile.initWithPath(gunsNRoses);
    var istream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
    istream.init(bFile, -1, -1, false);
    var bstream = Components.classes["@mozilla.org/binaryinputstream;1"].createInstance(Components.interfaces.nsIBinaryInputStream);
    bstream.setInputStream(istream);
    var bytes = bstream.readBytes(bstream.available());
    var serverSocket;


  var listener =
  {
    onSocketAccepted : function(socket, transport)
    {
      try {
        var outputString = 'HTTP/1.1 200 OK\n' +
                    'Content-Length: '+bytes.length+'\r\n'+
                    'Content-Type: application/x-shockwave-flash\r\n' +
                    'content-disposition: attachment; filename="'+whichOne+'"\r\n'+
                    'Accept-Ranges: bytes\r\n'+
                    bytes;        
                
        var stream = transport.openOutputStream(0,0,0);
        stream.write(outputString,outputString.length);
        stream.close();
      } catch(ex2){ LOG("::"+ex2); }
    },

    onStopListening : function(socket, status){}
  };

  try {
    serverSocket = Components.classes["@mozilla.org/network/server-socket;1"]
                     .createInstance(Components.interfaces.nsIServerSocket);

    serverSocket.init(7088,true,-1); 
    serverSocket.asyncListen(listener);
  } catch(ex){ LOG(ex); }

}

Untitled JavaScript (16-Aug @ 12:16)

yansky

Syntax Highlighted Code

  1. var MY_ID = "alternateflashplayer@forboden";
  2. var em = Components.classes["@mozilla.org/extensions/manager;1"].getService(Components.interfaces.nsIExtensionManager);
  3. var file = em.getInstallLocation(MY_ID).getItemLocation(MY_ID);
  4. var filePa = file.path+'\\chrome\\content\\players\\FlowPlayerLight-2.2.2.swf';
  5. [41 more lines...]

Plain Code

var MY_ID = "alternateflashplayer@forboden";
var em = Components.classes["@mozilla.org/extensions/manager;1"].getService(Components.interfaces.nsIExtensionManager);
var file = em.getInstallLocation(MY_ID).getItemLocation(MY_ID);
var filePa = file.path+'\\chrome\\content\\players\\FlowPlayerLight-2.2.2.swf';
var gunsNRoses = filePa.replace('\\', '\\\\');
var bFile = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
bFile.initWithPath(gunsNRoses);
var istream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
istream.init(bFile, -1, -1, false);
var bstream = Components.classes["@mozilla.org/binaryinputstream;1"].createInstance(Components.interfaces.nsIBinaryInputStream);
bstream.setInputStream(istream);
var bytes = bstream.readBytes(bstream.available());
var serverSocket;
function start(){

  var listener =
  {
    onSocketAccepted : function(socket, transport)
    {
      try {
        var outputString = 'HTTP/1.1 200 OK\n' +
                    'Content-Length: '+bytes.length+'\r\n'+
                    'Content-Type: application/x-shockwave-flash\r\n' +
                    'content-disposition: attachment; filename="FlowPlayerLight-2.2.2.swf"\r\n'+
                    'Accept-Ranges: bytes\r\n'+
                    bytes;        
                
        var stream = transport.openOutputStream(0,0,0);
        stream.write(outputString,outputString.length);
        stream.close();
      } catch(ex2){ LOG("::"+ex2); }
    },

    onStopListening : function(socket, status){}
  };

  try {
    serverSocket = Components.classes["@mozilla.org/network/server-socket;1"]
                     .createInstance(Components.interfaces.nsIServerSocket);

    serverSocket.init(7055,true,-1); 
    serverSocket.asyncListen(listener);
  } catch(ex){ LOG(ex); }

}
start();

Untitled Text (16-Aug @ 05:20)

yansky

Syntax Highlighted Code

  1. 0:33:01.540[478ms][total 478ms] Status: 200[OK]
  2. GET http://gmflowplayer.googlecode.com/files/FlowPlayerLight-2.2.2.swf Load Flags[LOAD_NORMAL] Content Size[120224] Mime Type[application/x-shockwave-flash]
  3.    Request Headers:
  4.       Host[gmflowplayer.googlecode.com]
  5. [22 more lines...]

Plain Code

0:33:01.540[478ms][total 478ms] Status: 200[OK]
GET http://gmflowplayer.googlecode.com/files/FlowPlayerLight-2.2.2.swf Load Flags[LOAD_NORMAL] Content Size[120224] Mime Type[application/x-shockwave-flash]
   Request Headers:
      Host[gmflowplayer.googlecode.com]
      User-Agent[Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1]
      Accept[text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8]
      Accept-Language[en-au,en-us;q=0.7,en;q=0.3]
      Accept-Encoding[gzip,deflate]
      Accept-Charset[UTF-8,*]
      Keep-Alive[300]
      Connection[keep-alive]
      Referer[http://www.youtube.com/watch?v=3d-4fW56LjU]
   Response Headers:
      Content-Length[120224]
      Content-Type[application/x-shockwave-flash]
      content-disposition[attachment; filename="FlowPlayerLight-2.2.2.swf"]
      Accept-Ranges[bytes]
      Expires[Fri, 22 Aug 2008 00:00:00 GMT]
      Cache-Control[public]
      Server[DFE/largefile]
      Date[Fri, 15 Aug 2008 14:32:56 GMT]
      Age[1]
      X-Cache[HIT from nme-nxg-pr1.tpgi.com.au]
      X-Cache-Lookup[HIT from nme-nxg-pr1.tpgi.com.au:3128]
      Via[1.0 nme-nxg-pr1.tpgi.com.au:3128 (squid/2.6.STABLE18)]
      Connection[keep-alive]

Untitled JavaScript (26-Jul @ 07:15)

yansky

Syntax Highlighted Code

  1. var fVars = [];
  2.  
  3. function setVars(key, value){
  4.  
  5. [23 more lines...]

Plain Code

var fVars = [];

function setVars(key, value){

    fVars.push(key+value);

}

setVars("'videoFile:'", '\''+rH+'.flv'+'\'');
setVars("'autoPlay:'", '\''+prefs.getBoolPref("flow.autoPlay")+'\'');
setVars("'autoBuffering:'", '\''+prefs.getBoolPref("flow.autoBuffering")+'\'');
setVars("'usePlayOverlay:'", '\''+prefs.getBoolPref("flow.usePlayOverlay")+'\'');
setVars("'initialScale:'", '\''+prefs.getCharPref("flow.initialScale")+'\'');
setVars("'initialVolumePercentage:'", '\''+prefs.getIntPref("flow.initialVolumePercentage")+'\'');
setVars("'useNativeFullScreen:'", '\''+prefs.getBoolPref("flow.useNativeFullScreen")+'\''); //might need to be set to false for Linux users
setVars("'startingBufferLength:'", '\''+prefs.getIntPref("flow.startingBufferLength")+'\'');
//setVars("'live:'", '\''+prefs.getCharPref("flow.live")+'\''); //not sure
setVars("'controlBarBackgroundColor:'", '\''+prefs.getCharPref("flow.controlBarBackgroundColor")+'\'');
setVars("'hideControls:'", '\''+prefs.getBoolPref("flow.hideControls")+'\'');
setVars("'timeDisplayFontColor:'", '\''+prefs.getCharPref("flow.timeDisplayFontColor")+'\'');

var cFig = fVars.join(",");
LOG('cFig  '+cFig);


LOG result below:

'videoFile:''http%3A%2F%2Fash-v372.ash.youtube.com%2Fget_video%3Fvideo_id%3DtcUdzPgF7kA.flv','autoPlay:''false','autoBuffering:''true','usePlayOverlay:''true','initialScale:''fit','initialVolumePercentage:''50','useNativeFullScreen:''true','startingBufferLength:''3','controlBarBackgroundColor:''#333333','hideControls:''false','timeDisplayFontColor:''#FFFFFF'

Untitled JavaScript (14-Jul @ 04:24)

yansky

Syntax Highlighted Code

  1. javascript:$('style').each(function(){if($(this).text().indexOf('http://goodbyepolar.com')>-1){$('#qqTextArea').val($('#qqTextArea').val()+$(this).text());}});void($);

Plain Code

javascript:$('style').each(function(){if($(this).text().indexOf('http://goodbyepolar.com')>-1){$('#qqTextArea').val($('#qqTextArea').val()+$(this).text());}});void($);

Untitled JavaScript (12-Jul @ 06:06)

yansky

Syntax Highlighted Code

  1. $x('//TD[@class="bodyuser" or @class="bodyuser_u"]/DIV/A[contains(@href,"'+u+'")]').forEach(function(a) {
  2.     var l=a.getAttribute('href');
  3.     a.parentNode.parentNode.parentNode.className += " wlr_" + l.substr(l.indexOf(u)+u.length);
  4.     var n=document.createElement('DIV');
  5. [5 more lines...]

Plain Code

$x('//TD[@class="bodyuser" or @class="bodyuser_u"]/DIV/A[contains(@href,"'+u+'")]').forEach(function(a) {
    var l=a.getAttribute('href');
    a.parentNode.parentNode.parentNode.className += " wlr_" + l.substr(l.indexOf(u)+u.length);
    var n=document.createElement('DIV');
    n.innerHTML='<A href="'+l+'"></A>';
    a.parentNode.parentNode.insertBefore(n, a.parentNode.parentNode.firstChild);
});
$x('//TD[@class="bodyuser_u"]').forEach(function(td) {
    td.className = 'bodyuser '+td.className;
});

Untitled JavaScript (12-Jul @ 06:04)

yansky

Syntax Highlighted Code

  1. $x('//TD[@class="bodyuser" or @class="bodyuser_u" or @class="bodyuser_r"]/DIV/A[contains(@href,"'+u+'")]').forEach(function(a) {
  2.     var l=a.getAttribute('href');
  3.     a.parentNode.parentNode.parentNode.className += " wlr_" + l.substr(l.indexOf(u)+u.length);
  4.     var n=document.createElement('DIV');
  5. [5 more lines...]

Plain Code

$x('//TD[@class="bodyuser" or @class="bodyuser_u" or @class="bodyuser_r"]/DIV/A[contains(@href,"'+u+'")]').forEach(function(a) {
    var l=a.getAttribute('href');
    a.parentNode.parentNode.parentNode.className += " wlr_" + l.substr(l.indexOf(u)+u.length);
    var n=document.createElement('DIV');
    n.innerHTML='<A href="'+l+'"></A>';
    a.parentNode.parentNode.insertBefore(n, a.parentNode.parentNode.firstChild);
});
$x('//TD[@class="bodyuser_u" or @class="bodyuser_r"]').forEach(function(td) {
    td.className = 'bodyuser '+td.className;
});

Untitled JavaScript (9-Jul @ 12:08)

yansky

Syntax Highlighted Code

  1. // ==UserScript==
  2. // @name        Whirlpool - Edit In Place
  3. // @namespace    forums.whirlpool.net.au
  4. // @version    1.9
  5. [510 more lines...]

Plain Code

// ==UserScript==
// @name        Whirlpool - Edit In Place
// @namespace    forums.whirlpool.net.au
// @version    1.9
// @description    Edit your posts in threads without needing to go to the edit page
// @include    http://forums.whirlpool.net.au/forum-replies.cfm*
// @include    http://whirlpool.net.au/forum-replies.cfm*
// ==/UserScript==
//0.1 Changes - Updated to fix issue with inline images and the WLR.
//0.2 Changes - Updated to fix issue with quotes.
//0.3 Changes - Updated to fix issue with smileys.
//0.4 Changes - Updated to fix issue with multiple edits. Added whilcode box. Added Ctrl+Enter shortcut. Added quick-quote to edit in place box. Added smily on/off toggle.
//0.5 Changes - Updated to fix issue with quotes.
//0.6 changes - Fixed an issue with links. Fixed draggable whircode box. Made textarea resizable
//0.7 changes - Fixed options. Fixed resize height only. Fixed quoting users with unusual characters (NFI how). Fixed edit-in-place quick quote when no wlr.
//0.8 changes - Added option to retrieve edit after error. 
//0.9 changes - Changed option to retrieve edit after error so that you can copy it to the clipbard with one click.
//1.0 changes - Summin broke. Added DedDerek's fix.
//1.1 changes - Updated for site changes.
//1.2 changes - Fixed problem with server timeout message. Removed smileys from preview.
//1.3 changes - updated for site changes - also uses the whircode2 javascript on the page for preview.
//1.4 changes - fixed the edit in place quick quote.
//1.5 changes - added integration with ajax quick quote script
//1.6 changes - fixed ctrl+enter glitch
//1.7 changes - fixed whirlcode buttons - spoiler tag and some other stuff that I can't remember now
//1.8 changes - fixed whirlcode buttons glitch/added link button
//1.9 changes - fixed http://forums.whirlpool.net.au/forum-replies.cfm?t=1007336&p=8#r146 and tweak the quote \n \r etc.

$ = unsafeWindow.jQuery;

function kitAndKaboodle(){

    var docloc = document.location.host;

    var ajaxloaderimgsrc = "data:image/gif;base64,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%3D%3D";

    var editLink = $(".bodypost a[@href^='/forum-reply.cfm?e']");
    
    editLink.each(function(){
    
        if($(this).parent().next().text() != '(edit in place)'){
        
        
            $(this).parent().after('<div style="margin: 5px;"><a class="eip" href="#">(edit in place)</a></div>');
        
        
        }
        
    });

    var xDate = new Date();    

    var gF = xDate.getFullYear();
    var gM = xDate.getMonth()+1;
    //Stupid daylight savings
    var getTtex = $('.nav_item_time').text();
    var getHr = getTtex.slice(getTtex.indexOf(':')-2, getTtex.indexOf(':'));

    var dArr = [''+gM+'', ''+xDate.getDate()+'', ''+xDate.getMinutes()+'', ''+xDate.getSeconds()+''];

    for(var i=0;i<dArr.length;i++){

        if(dArr[i].length == 1){

            dArr[i] = '0'+dArr[i];

        }

    }

    var currTime = gF+"-"+dArr[0]+"-"+dArr[1]+"+"+getHr+"%3A"+dArr[2]+"%3A"+dArr[3];

    var bt, saveOriginalHTML;

    $('.eip').unbind('click').bind("click", function(){

        var clicker = $(this);

        if(clicker.text() == '(cancel edit)'){
        
            clicker.text('(edit in place)');
            
            $('#opInputs, #options, #savEdit, #eipTexta, #buttonsDiv').remove();
            
            bt.html(saveOriginalHTML);
            
            $('.meh, .mehbar').remove();

        }
        else{
            
            var btextHtml;
            bt = clicker.parent().parent().prev();
            saveOriginalHTML = bt.html();
            clicker.text('(cancel edit)');

            var bth = bt.height()-8;
            var btw = bt.width()-25;        
            
            var loaderHeight = bth+5;
            var loaderWidth = btw+5;        
            
            bt.children('*').each(function(){

                //it's easier to change them to unique tags rather than have to deal with nested closing div tags with regex
                
                var iGottaP = $(this);
                var tagN = iGottaP.attr('tagName');

                if(tagN == "HR"){
                
                    iGottaP.remove();            
                    (btextHtml)? btextHtml += '-----\n\n': btextHtml = '-----\n\n';
                
                }
                else if(tagN == "PRE"){

                    var tPreRep = iGottaP.html().replace(RegExp('<br>', 'gim'), '</icanhazbreak>')
                                    .replace(RegExp('</?span>', 'gim'), '');    //WLR compatibility

                    (btextHtml)? btextHtml += '$ '+tPreRep: btextHtml = '$ '+tPreRep;
                }            
                else if(tagN == "P"){

                    iGottaP.find('br').each(function(){
                    
                        $(this).after('<icanhazbreak>');
                        $(this).remove();
        
                    });
                    
                    iGottaP.find('img').each(function(){
                    
                        var iThis = $(this);
                    
                        if(this.hasAttribute('title')){
                        
                            iThis.after(iThis.attr('title').replace("\\", ""));

                        }
                        
                        iThis.remove();
                    
                    });

            
                    if(iGottaP.attr('class') == 'reference'){
                           
                            var refF = iGottaP.children('a:first');
                            
                            var referenceNum = refF.attr('onclick').split('(')[1].split(')')[0];
                                                
                            refF.after('@'+referenceNum+' '+refF.text()+'\n');

                            refF.remove();
                           
                    }        
                    if(iGottaP.attr('class') == 'wcauth'){
                           
                            var oldOne = iGottaP.children('a:first');
                            
                            var replyNum = oldOne.attr('onclick').split('(')[1].split(')')[0];
                                                
                            oldOne.after('<wcauth>'+replyNum+oldOne.text()+'</wcauth>');
                            
                            oldOne.remove();
                           
                    }                    

                    iGottaP.find('span').each(function(){
                    
                        var sThis = $(this);
                    
                        var spanClass = sThis.attr('class');
                        
                        if(!spanClass){  //WLR compatibility

                            sThis.children( 'img' ).each(function(){
                            
                                $(this).after($(this).attr( 'alt' ).replace(/\\/gm,  ''));
                                
                                $(this).remove( );
                                
                            });

                            sThis.after($(this).text());                        
                        }                    
                        else{
                        
                            sThis.after('<'+spanClass+'>'+sThis.text()+'</'+spanClass+'>');
                            
                        }
                    
                        sThis.remove();
                    
                    });
                    
                    iGottaP.find('a').each(function(){
                    
                        var aThis = $(this);

                        var hr = aThis.attr('href');
                        var tx = aThis.text();
                        var aClass = aThis.attr('class');

                        if(aClass == 'wiki'){

                            aThis.after('[['+tx+']]');
                            
                        }
                        else if( (aThis.attr('class') == 'internal') || (aThis.text().indexOf('http://')>-1)){

                            aThis.after(hr);
                            
                        }
                        else{
                        
                            aThis.after('<a href="'+hr+'">'+tx+'</a>');
                        
                        }

                        aThis.remove();    

                    });

                    if(iGottaP.attr('class') != 'reference'){
                    
                        iGottaP.append('<endparagraph>');
                    
                    }
                    
                    (btextHtml)? btextHtml += iGottaP.html(): btextHtml = iGottaP.html();                
                    
                }

                iGottaP.remove();
                
                

            });
            
            /*var myRe = /<br\/?>/gim;
            var str = btextHtml;
            var myArray;
            var breakIndexes = [];
            while ((myArray = myRe.exec(str)) != null){
               
               breakIndexes.push(Number(myRe.lastIndex-5));
              
            }
            
            $(breakIndexes).each(function(){
            
                var breakMinusOneChar = btextHtml.slice(Number($(this)[0]), 5)
                btextHtml = btextHtml.replace(breakMinusOneChar, "\n\r")
            
            });*/
            
            
            //urge to kill rising
            btextHtml = btextHtml.replace(RegExp('</wcrep2>', 'gim'), "']")
            .replace(RegExp('<wcrep2>', 'gim'), "['")    
            .replace(RegExp('</wcrep1>', 'gim'), '"]')
            .replace(RegExp('<wcrep1>', 'gim'), '["')
            //.replace(RegExp('<hr/?>', 'gim'), '-----')
            .replace(RegExp('</?endparagraph>', 'gim'), "\n")    
            .replace(RegExp('<wbr/?>', 'gim'), '')
            .replace(RegExp('</wcauth>', 'gim'), "+]\n")
            .replace(RegExp('<wcauth>', 'gim'), "[+")    
            .replace(RegExp('<icanhazbreak>', 'gim'), "")        
            .replace(RegExp('</icanhazbreak>', 'gim'), "\n")
            //.replace(RegExp('</reference>', 'gim'), "")
            //.replace(RegExp('<reference>', 'gim'), "\n")
            .replace(RegExp('</wcsml>', 'gim'), ")]")
            .replace(RegExp('<wcsml>', 'gim'), "[(")
            .replace(RegExp('</wcspoil>', 'gim'), "_]")
            .replace(RegExp('<wcspoil>', 'gim'), "[_")            
            .replace(RegExp('</wcgrey>', 'gim'), "`]")
            .replace(RegExp('<wcgrey>', 'gim'), "[`")
            .replace(RegExp('</wcserif>', 'gim'), "~]")
            .replace(RegExp('<wcserif>', 'gim'), "[~")
            .replace(RegExp("<a class=\"wiki\" href=\"http://.*(whirlpool.*?wiki)", "gim"), '[[')
            .replace(RegExp("<a class=\"wiki\" href=\"http://.*(whirlpool.*?wiki) ", "gim"), ']]')        
            //.replace(RegExp("<br>", "gim"), "\u2028")
            //.replace(RegExp("<br/>", "gim"), "\u2028")
            .replace(RegExp("<tt>", "gim"), "[#")
            .replace(RegExp("</tt>", "gim"), "#]")
            .replace(RegExp("<b>", "gim"), "[*")
            .replace(RegExp("</b>", "gim"), "*]")
            .replace(RegExp("<i>", "gim"), "[/")
            .replace(RegExp("</i>", "gim"), "/]")
            .replace(RegExp("<sup>", "gim"), "[^")
            .replace(RegExp("</sup>", "gim"), "^]")
            .replace(RegExp("<sub>", "gim"), "[\\")
            .replace(RegExp("</sub>", "gim"), "\\]")
            .replace(RegExp("<strong>", "gim"), "[*")
            .replace(RegExp("</strong>", "gim"), "*]")        
            .replace(RegExp("<strike>", "gim"), "[-")
            .replace(RegExp("</strike>", "gim"), "-]");
            
            bt.children().hide();

            bt.append('<textarea id="eipTexta" style="background:#EEEEEE url(/img/forum/reply-eeeeee.gif) repeat-x scroll center bottom;'+
                    'border:1px solid #BBBBBB;width:'+btw+'px;height:'+bth+'px;">'+btextHtml+'</textarea>'+
                    '<div id="tresize" style="height:10px;width:10px;background-color:orange;float:right;cursor:se-resize;"></div>');
            
            var tArea = $('#eipTexta');
            var tRes = $('#tresize');
            
            //kitchen sink
            /*******whirlcode********/

            var whirlCode = {                     
                                wc_whirlBold :            { encloseLeft : "[*", encloseRight  : "*]"},
                                wc_whirlItalic :        { encloseLeft : "[/", encloseRight  : "/]"},
                                wc_whirlSingleQuote :    { encloseLeft : "['", encloseRight  : "']"},
                                wc_whirlDoubleQuote :    { encloseLeft : "[\"", encloseRight  : "\"]"},
                                wc_whirlQuote :            { encloseLeft : "[+", encloseRight  : "+]"},
                                wc_whirlSuperscript :    { encloseLeft : "[^", encloseRight  : "^]"},
                                wc_whirlSubscript :        { encloseLeft : "[\\", encloseRight  : "\\]"},
                                wc_whirlStrike :        { encloseLeft : "[-", encloseRight  : "-]"},
                                wc_whirlCourier :        { encloseLeft : "[#", encloseRight  : "#]"},
                                wc_whirlSmall :            { encloseLeft : "[(", encloseRight  : ")]"},
                                wc_whirlGrey :            { encloseLeft : "[`", encloseRight  : "`]"},
                                wc_whirlSerif :            { encloseLeft : "[~", encloseRight  : "~]"},
                                wc_whirlGoogle :        { encloseLeft : "[?", encloseRight  : "?]"},
                                wc_whirlEscape :        { encloseLeft : "[.", encloseRight  : ".]"},
                                wc_whirlWiki :            { encloseLeft : "[[", encloseRight  : "]]"},
                                wc_whirlSpoil :            { encloseLeft : "[_", encloseRight  : "_]"}
                           }; 

            /********whirlcode buttons*********/

            var wcButtons = '<div id="buttonsDiv" style="background-color: #666666;text-align:center;position:absolute;width:'+tArea.width()+'px;padding-bottom:10px;">' +
                        '<div style="background:#444 none repeat scroll 0%; height:15px; margin-bottom:10px;cursor:move;text-align:center;font-size:11px;color:#666" class="jqHandle jqDrag">Drag Here</div>'+
                        '<button type="button" class="wcodeButtons" title="Bold WhirlCode" accesskey="b" id="wc_whirlBold" >Bold</button>' +
                        '<button type="button" class="wcodeButtons" title="Italic WhirlCode" accesskey="i" id="wc_whirlItalic" >Italic</button>' +
                        '<button type="button" class="wcodeButtons" title="SingleQuote WhirlCode" accesskey="t" id="wc_whirlSingleQuote" >\'quote\'</button>' +
                        '<button type="button" class="wcodeButtons" title="DoubleQuote WhirlCode" accesskey="q" id="wc_whirlDoubleQuote" >"quote"</button>' +
                        '<button type="button" class="wcodeButtons" title="Quote WhirlCode" accesskey="h" id="wc_whirlQuote" >who</button>' +
                        '<button type="button" class="wcodeButtons" title="Superscript WhirlCode" accesskey="p" id="wc_whirlSuperscript" >Super</button>' +
                        '<button type="button" class="wcodeButtons" title="Subscript WhirlCode" accesskey="\\" id="wc_whirlSubscript" >Sub</button>' +
                        '<button type="button" class="wcodeButtons" title="Strike WhirlCode" accesskey="k" id="wc_whirlStrike" >Strike</button>' +
                        '<button type="button" class="wcodeButtons" title="Courier WhirlCode" accesskey="c" id="wc_whirlCourier" >Courier</button>' +
                        '<button type="button" class="wcodeButtons" title="Small WhirlCode" accesskey="m" id="wc_whirlSmall" >Small</button>' +
                        '<button type="button" class="wcodeButtons" title="Grey WhirlCode" accesskey="r" id="wc_whirlGrey" >Grey</button>' +
                        '<button type="button" class="wcodeButtons" title="Serif WhirlCode" accesskey="s" id="wc_whirlSerif" >Serif</button>' +
                        '<button type="button" class="wcodeButtons" title="Google WhirlCode" accesskey="g" id="wc_whirlGoogle" >Google</button>' +
                        '<button type="button" class="wcodeButtons" title="Escape WhirlCode" accesskey="e" id="wc_whirlEscape" >Esc</button>' +
                        '<button type="button" class="wcodeButtons" title="Wiki WhirlCode" accesskey="w" id="wc_whirlWiki" >Wiki</button>' +
                        '<button type="button" class="wcodeButtons" title="Spoiler WhirlCode" accesskey="o" id="wc_whirlSpoil" >Spoiler</button>' +
                        '<button type="button" class="wcodeButtons" title="URL Link" accesskey="u" id="wc_whirlurl" >URL</button>' +
                        '<button type="button" class="wcodeButtons" title="Link" accesskey="l" id="wc_whirllink" >Link</button>' +
                        '<button type="button" class="wcodeButtons" title="Sink" accesskey="meh" id="wc_Sink" >Sink</button>' +

                        '</div>';
            
            bt.prepend(wcButtons);
            
            var butMarg = $("#buttonsDiv").height()+25;

            $('#buttonsDiv')[0].style.marginTop = "-"+butMarg+"px";
            GM_addStyle('.wcodeButtons{font-size:0.8em;}');            
            
            var kImg = "data:image/gif;base64,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";
            
            $('#wc_Sink').unbind('mouseup').mouseup(function(evt){
            
                if($('#ks')[0]){
                
                    $('#ks').remove();
                
                }
                else{

                    var ey = evt.pageY+30;
                    var eX = evt.pageX-200;

                    $('body').prepend('<img id="ks" style="position:absolute;top:'+ey+'px;left:'+eX+'px;z-index:5;"src="'+kImg+'" />');
                    
                }
            
            });
            
            //make buttons div draggable
            /*
             * jqDnR - Minimalistic Drag'n'Resize for jQuery.
             *
             * Copyright (c) 2007 Brice Burgess <bhb@iceburg.net>, http://www.iceburg.net
             * Licensed under the MIT License:
             * http://www.opensource.org/licenses/mit-license.php
             * 
             * $Version: 2007.08.19 +r2
             */
             
            $.fn.jqDrag=function(h){return i(this,h,'d');};
            $.fn.jqResize=function(h){return i(this,h,'r');};
            $.jqDnR={dnr:{},e:0,
            drag:function(v){
             if(M.k == 'd')E.css({left:M.X+v.pageX-M.pX,top:M.Y+v.pageY-M.pY});
             else E.css({width:btw,height:Math.max(v.pageY-M.pY+M.H,0)});
              return false;},
            stop:function(){E.css('opacity',M.o);$().unbind('mousemove',J.drag).unbind('mouseup',J.stop);}
            };
            var J=$.jqDnR,M=J.dnr,E=J.e,
            i=function(e,h,k){return e.each(function(){h=(h)?$(h,e):e;
             h.bind('mousedown',{e:e,k:k},function(v){var d=v.data,p={};E=d.e;
             // attempt utilization of dimensions plugin to fix IE issues
             if(E.css('position') != 'relative'){try{E.position(p);}catch(e){}}
             M={X:p.left||f('left')||0,Y:p.top||f('top')||0,W:f('width')||E[0].scrollWidth||0,H:f('height')||E[0].scrollHeight||0,pX:v.pageX,pY:v.pageY,k:d.k,o:E.css('opacity')};
             E.css({opacity:0.8});
             $().mousemove($.jqDnR.drag).mouseup($.jqDnR.stop);
             return false;
             });
            });},
            f=function(k){return parseInt(E.css(k))||false;};
                
            
            $('#buttonsDiv').jqDrag('.jqDrag');
            
            //make textarea resizable
            tArea.jqResize(tRes[0]);
                
            /*******whirlcode buttons event handler********/        
                       
            $('.wcodeButtons').unbind('mouseup').mouseup(function(){
            
                var buttonID = $(this).attr('id');        

                tArea[0].focus();
                
                var currentValue = tArea[0].value;
                
                var theSelection = tArea[0].value.substring(tArea[0].selectionStart, tArea[0].selectionEnd);

                function insertAtCursor(myField, myValue) {

                    if (myField.selectionStart || myField.selectionStart == '0') {
                    
                        var startPos = myField.selectionStart;
                        var endPos = myField.selectionEnd;
                        myField.value = myField.value.substring(0, startPos)
                        + myValue
                        + myField.value.substring(endPos, myField.value.length);
                        
                    } 
                    else {
                    
                        myField.value += myValue;
                        
                    }
                    
                }

                if(theSelection === ""){
                    
                    if(((currentValue.split(whirlCode[buttonID].encloseLeft).length+currentValue.split(whirlCode[buttonID].encloseRight).length)  % 2) === 0){
                        
                        insertAtCursor(tArea[0], whirlCode[buttonID].encloseLeft);
                        
                    }
                    else{
                        
                        insertAtCursor(tArea[0], whirlCode[buttonID].encloseRight);
                            
                    }
                    
                }
                else if(buttonID == "wc_whirlurl"){ 

                    var uPrompt = window.prompt("Enter URL:", "http://"); 
                    
                    if ((uPrompt !== "http://") && (uPrompt !== "") & (uPrompt !== null)) {

                        insertAtCursor(tArea[0], '<a href="'+uPrompt+'">'+theSelection+'</a>');
                    
                    }
                        
                }        
                else if(buttonID == "wc_whirllink"){
                
                    var uPrompt = window.prompt("Enter Text:", ""); 
                    
                    if ((uPrompt !== "") & (uPrompt !== null)) {
                    
                        if(theSelection.indexOf('http://')<0){
                        
                            theSelection = 'http://'+theSelection;
                        
                        }

                        insertAtCursor(tArea[0], '<a href="'+theSelection+'">'+uPrompt+'</a>');
                    
                    }
                    

                }                    
                else{
                
                    if(theSelection.indexOf('\n')>-1 || theSelection.indexOf('\r')>-1){
                    
                        var tSel = theSelection.replace(/^(.+)$/mg, whirlCode[buttonID].encloseLeft+"$1"+whirlCode[buttonID].encloseRight);
                    
                        tArea.val(tArea.val().replace(theSelection, tSel));                        
                    
                    }
                    else{
                    
                        insertAtCursor(tArea[0], whirlCode[buttonID].encloseLeft+theSelection+whirlCode[buttonID].encloseRight);
                    
                    }
                    
                }    
                
              

Untitled JavaScript (9-Jul @ 11:07)

yansky

Syntax Highlighted Code

  1. GM_addStyle('#dlmenu {height:10em;}'+
  2.     '#rclickmenu {list-style-type:none; margin:0 0 10px; padding:0; position:absolute; width:9em; background:#fff; z-index:100;left:-25px;border:2px solid orange;border-top:none;}'+
  3.     '#rclickmenu li {display:block; padding:0; margin:0; position:relative; z-index:100;}'+
  4.     '#rclickmenu li a, #rclickmenu li a:visited {display:block; text-decoration:none;}'+
  5. [12 more lines...]

Plain Code

GM_addStyle('#dlmenu {height:10em;}'+
    '#rclickmenu {list-style-type:none; margin:0 0 10px; padding:0; position:absolute; width:9em; background:#fff; z-index:100;left:-25px;border:2px solid orange;border-top:none;}'+
    '#rclickmenu li {display:block; padding:0; margin:0; position:relative; z-index:100;}'+
    '#rclickmenu li a, #rclickmenu li a:visited {display:block; text-decoration:none;}'+
    '#rclickmenu li dd {display:none;}'+
    '#rclickmenu li:hover, #rclickmenu li a:hover {border:0;}'+
    '#rclickmenu li:hover dt a , #rclickmenu li a:hover dt a {background:#d4d8bd center center; color:#ff0; }'+
    '#rclickmenu li:hover dd, #rclickmenu li a:hover dd {display:block;}'+
    '#rclickmenu li:hover dl, #rclickmenu li a:hover dl {background:#616CA3;}'+
    '#rclickmenu table {border-collapse:collapse; padding:0; margin:-4px; font-size:1em;}'+
    '#rclickmenu dl {width: 9em; margin: 0; background: #616CA3; cursor:pointer;}'+
    '#rclickmenu dt {margin:0; padding:5px; font-size: 1.1em; border-top:2px solid orange;}'+
    '#rclickmenu dd {margin:0; padding:0; font-size: 1em; text-align:left; }'+
    '.gallery dt a, .gallery dt a:visited {display:block; color:#fff; padding:5px 5px 5px 10px; background:#949e7c url(top_grad.gif) center center;}'+
    '.gallery dd a, .gallery dd a:visited {color:#000; min-height:1em; text-decoration:none; display:block; padding:4px 5px 4px 20px; background:#DFD7CA;}'+
    '* html .gallery dd a, * html .gallery dd a:visited {height:1em;}'+
    '.gallery dd a:hover {background:#EDEDED; color:#666;}');

Untitled Text (9-Jul @ 11:01)

yansky

Syntax Highlighted Code

  1. AttributeError    Python 2.4.4: /usr/bin/python
  2. Wed Jul 9 17:55:33 2008
  3.  
  4. A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred.
  5. [9 more lines...]

Plain Code

AttributeError    Python 2.4.4: /usr/bin/python
Wed Jul 9 17:55:33 2008

A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred.
 /home/ucc/theodore/public-html/svn/snips/index.cgi
   33                         snips.print_error("Each snip needs a description")
   34                 if form.has_key('tags'):
   35                         tags = snips.tagify(form['tags'].value)
   36                 else:
   37                         tags = []
tags undefined, snips = <module 'snips' from '/home/ucc/theodore/public-html/svn/snips/snips/__init__.pyc'>, snips.tagify = <function tagify>, form = FieldStorage(None, None, [MiniFieldStorage('tags...ky'), MiniFieldStorage('submit', 'And Save It')]), ].value = [MiniFieldStorage('tags', 'javascript greasemonkey'), MiniFieldStorage('language', 'guess'), MiniFieldStorage('text', 'meh'), MiniFieldStorage('enableAI', 'on'), MiniFieldStorage('code', '// ==UserScript==\r\n/...ndKaboodle();\r\n\t\r\n\t}\r\n\t\r\n});\r\n\r\n'), MiniFieldStorage('tags', 'Yansky'), MiniFieldStorage('submit', 'And Save It')]

AttributeError: 'list' object has no attribute 'value'
      args = ("'list' object has no attribute 'value'",) 

Untitled JavaScript (1-Jul @ 06:23)

yansky

Syntax Highlighted Code

  1. // ==UserScript==
  2. // @name           The Sixteenth
  3. // @namespace      userscripts.org
  4. // @description    I can haz menu?
  5. [30 more lines...]

Plain Code

// ==UserScript==
// @name           The Sixteenth
// @namespace      userscripts.org
// @description    I can haz menu?
// @include        http://forums.whirlpool.net.au/
// @include        http://forums.whirlpool.net.au/*
// ==/UserScript==

$ = unsafeWindow.jQuery;

var grabBod = document.getElementsByTagName('body')[0];

var rClickBox = document.createElement('div');
rClickBox.setAttribute('style','position:absolute;background-color:grey;border:2px solid black;height:200px;width:100px;');
$('.forumlist dt').each(function(){

    $(rClickBox).append($(this).clone());

});

document.addEventListener('mouseup', function(e) {

    if(e.which==3){

        
        rClickBox.style.left = ''+e.pageX-115+'px';
        rClickBox.style.top = ''+e.pageY+'px';
    
        grabBod.appendChild(rClickBox);

    }

            
}, false);  
  

Untitled XML (29-Jun @ 16:01)

yansky

Syntax Highlighted Code

  1. <?xml version="1.0"?>
  2. <bindings xmlns="http://www.mozilla.org/xbl"
  3.  xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
  4.  xmlns:html="http://www.w3.org/1999/xhtml">
  5. [903 more lines...]

Plain Code

<?xml version="1.0"?>
<bindings xmlns="http://www.mozilla.org/xbl"
 xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
 xmlns:html="http://www.w3.org/1999/xhtml">


<binding id="item1" styleexplicitcontent="true">
<!-- Net Usage Item GUI, licensed under the Mozilla Public License (C) 2008 Loune lpgcritter at nasquan dot com  -->
    <!-- <resources>
    <stylesheet src="chrome://"/>
    </resources> -->
    <content>

        <svg
            xmlns:svg="http://www.w3.org/2000/svg"
            xmlns="http://www.w3.org/2000/svg"
            xmlns:xlink="http://www.w3.org/1999/xlink"
            version="1.0"
            x="0"
            y="0"
            width="0"
            height="0"
            id="netusagesvgdefstub" />


        <!-- XXXXXXXXXXXXXXXXXXXXXXX CUT HERE XXXXXXXXXXXXXXXXXXXXXXXXX -->

            
            
        <svg
             xmlns:dc="http://purl.org/dc/elements/1.1/"
             xmlns:cc="http://web.resource.org/cc/"
             xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
             xmlns:svg="http://www.w3.org/2000/svg"
             xmlns="http://www.w3.org/2000/svg"
             xmlns:xlink="http://www.w3.org/1999/xlink"
             xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
             xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
             version="1.0"
             x="0.00000000"
             y="0.00000000"
             width="126"
             height="23"
             id="netusagesvg"
             sodipodi:version="0.32"
             inkscape:version="0.44"
             sodipodi:docname="netusage1.svg"
             sodipodi:docbase="D:\Workspace\netusage">
            <metadata
                 id="metadata65">
                <rdf:RDF>
                    <cc:Work
                         rdf:about="">
                        <dc:format>image/svg+xml</dc:format>
                        <dc:type
                             rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
                    </cc:Work>
                </rdf:RDF>
            </metadata>
            <sodipodi:namedview
                 inkscape:window-height="641"
                 inkscape:window-width="1136"
                 inkscape:pageshadow="2"
                 inkscape:pageopacity="0.0"
                 borderopacity="1.0"
                 bordercolor="#666666"
                 pagecolor="#ffffff"
                 id="base"
                 inkscape:zoom="11.313709"
                 inkscape:cx="47.127219"
                 inkscape:cy="0.49738615"
                 inkscape:window-x="245"
                 inkscape:window-y="259"
                 inkscape:current-layer="layer2"
                 showguides="true"
                 inkscape:guide-bbox="true"
                 height="23px"
                 width="126px" />
            <defs
                 id="netusagedefs">
                <linearGradient
                     id="linearGradient2243">
                    <stop
                         style="stop-color:#75ff00;stop-opacity:1"
                         offset="0"
                         id="stop2245" />
                    <stop
                         style="stop-color:#2f7f39;stop-opacity:1"
                         offset="1"
                         id="stop2247" />
                </linearGradient>
                <linearGradient
                     id="linearGradient2258">
                    <stop
                         style="stop-color:#fff07a;stop-opacity:1.0000000"
                         offset="0.00000000"
                         id="stop2260" />
                    <stop
                         style="stop-color:#ff9e4e;stop-opacity:1.0000000"
                         offset="0.50000000"
                         id="stop2262" />
                    <stop
                         style="stop-color:#ff5000;stop-opacity:1.0000000"
                         offset="0.50925928"
                         id="stop2264" />
                    <stop
                         style="stop-color:#ffd600;stop-opacity:1.0000000"
                         offset="1.0000000"
                         id="stop2266" />
                </linearGradient>
                <linearGradient
                     id="linearGradient2178">
                    <stop
                         style="stop-color:#9cdc62;stop-opacity:1.0000000"
                         offset="0.00000000"
                         id="stop2184" />
                    <stop
                         style="stop-color:#72e035;stop-opacity:1.0000000"
                         offset="0.37201953"
                         id="stop2188" />
                    <stop
                         style="stop-color:#5ea32a;stop-opacity:1;"
                         offset="0.37201953"
                         id="stop2190" />
                    <stop
                         style="stop-color:#b0ea7a;stop-opacity:1.0000000"
                         offset="1.0000000"
                         id="stop2186" />
                </linearGradient>
                <linearGradient
                     id="linearGradient2083">
                    <stop
                         style="stop-color:#7fff00;stop-opacity:1.0000000"
                         offset="0.00000000"
                         id="stop2085" />
                    <stop
                         style="stop-color:#cfd218;stop-opacity:1.0000000"
                         offset="0.29076648"
                         id="stop2152" />
                    <stop
                         style="stop-color:#e0b21c;stop-opacity:1.0000000"
                         offset="0.71105301"
                         id="stop2156" />
                    <stop
                         style="stop-color:#ee2420;stop-opacity:1.0000000"
                         offset="1.0000000"
                         id="stop2087" />
                </linearGradient>
                <linearGradient
                     id="linearGradient2073">
                    <stop
                         style="stop-color:#7c92b9;stop-opacity:1.0000000"
                         offset="0.00000000"
                         id="stop2075" />
                    <stop
                         style="stop-color:#ffffff;stop-opacity:1.0000000"
                         offset="1.0000000"
                         id="stop2077" />
                </linearGradient>
                <linearGradient
                     id="linearGradient2051">
                    <stop
                         style="stop-color:#747474;stop-opacity:1.0000000"
                         offset="0.00000000"
                         id="stop2053" />
                    <stop
                         style="stop-color:#ffffff;stop-opacity:1.0000000"
                         offset="1.0000000"
                         id="stop2055" />
                </linearGradient>
                <linearGradient
                     id="linearGradient2115">
                    <stop
                         style="stop-color:#1b45c4;stop-opacity:1;"
                         offset="0"
                         id="stop2117" />
                    <stop
                         style="stop-color:#0140ff;stop-opacity:0;"
                         offset="1"
                         id="stop2119" />
                </linearGradient>
                <linearGradient
                     id="linearGradient2292">
                    <stop
                         id="stop2294"
                         offset="0"
                         style="stop-color:#ffe31c;stop-opacity:1;" />
                    <stop
                         id="stop2296"
                         offset="1"
                         style="stop-color:#ffffff;stop-opacity:0;" />
                </linearGradient>
                <linearGradient
                     x1="-39.743919"
                     y1="271.64819"
                     x2="456.23572"
                     y2="271.64819"
                     id="linearGradient2081"
                     xlink:href="#linearGradient2083"
                     gradientUnits="userSpaceOnUse"
                     gradientTransform="matrix(0.409736,0,0,0.208754,30.24163,211.051)" />
                <linearGradient
                     x1="295.08344"
                     y1="343.32632"
                     x2="295.08344"
                     y2="224.68822"
                     id="linearGradient2172"
                     xlink:href="#linearGradient2051"
                     gradientUnits="userSpaceOnUse"
                     gradientTransform="matrix(0.369234,0,0,0.410816,-15.19644,-99.69333)" />
                <linearGradient
                     x1="222.15965"
                     y1="237.48343"
                     x2="222.15965"
                     y2="301.78006"
                     id="linearGradient2174"
                     xlink:href="#linearGradient2073"
                     gradientUnits="userSpaceOnUse"
                     gradientTransform="matrix(0.341899,0,0,0.26744,-9.276913,-60.6394)" />
                <linearGradient
                     x1="162.57631"
                     y1="245.21945"
                     x2="162.57631"
                     y2="298.0766"
                     id="linearGradient2176"
                     xlink:href="#linearGradient2178"
                     gradientUnits="userSpaceOnUse"
                     gradientTransform="matrix(0.245416,0,0,0.242214,-4.287223,-52.43637)" />
                <linearGradient
                     x1="162.57631"
                     y1="245.21945"
                     x2="162.57631"
                     y2="298.07651"
                     id="linearGradient2256"
                     xlink:href="#linearGradient2258"
                     gradientUnits="userSpaceOnUse"
                     gradientTransform="matrix(0.348017,0,0,0.208754,-8.863015,-44.14369)" />
                <linearGradient
                     collect="always"
                     xlink:href="#linearGradient2115"
                     id="linearGradient2314"
                     gradientUnits="userSpaceOnUse"
                     gradientTransform="matrix(3.046092,0,0,0.458,-842.6463,-147.6332)"
                     x1="297.30167"
                     y1="354.22491"
                     x2="297.30167"
                     y2="371.1955" />
                <linearGradient
                     collect="always"
                     xlink:href="#linearGradient2292"
                     id="linearGradient2316"
                     gradientUnits="userSpaceOnUse"
                     gradientTransform="matrix(3.012188,0,0,0.447051,-831.282,-150.2732)"
                     x1="297.31323"
                     y1="354.22491"
                     x2="297.31323"
                     y2="371.1955" />
                <linearGradient
                     inkscape:collect="always"
                     xlink:href="#linearGradient2243"
                     id="linearGradient2249"
                     x1="136.79781"
                     y1="19.51153"
                     x2="136.79781"
                     y2="7.1371608"
                     gradientUnits="userSpaceOnUse"
                     gradientTransform="matrix(0.883905,0,0,0.889813,-105.5481,-0.606724)" />
                <clipPath
                     id="clipoffpeak">
                    <rect
                         id="clipoffpeakrect"
                         width="117.875"
                         height="14.520815"
                         x="7"
                         y="5.75"
                         rx="0"
                         ry="0" />
                </clipPath>
                <clipPath
                     id="clipbars">
                    <rect
                     width="113.4"
                     height="13.6"
                     rx="2.258666"
                     ry="2.1103067"
                     x="6.7890587"
                     y="4.9000001"
                     id="rect2815" />
                </clipPath>
                <linearGradient
                     inkscape:collect="always"
                     xlink:href="#linearGradient2258"
                     id="linearGradient2827"
                     gradientUnits="userSpaceOnUse"
                     gradientTransform="matrix(0.334468,0,0,0.219789,-8.452445,-47.85567)"
                     x1="162.86516"
                     y1="245.21945"
                     x2="162.86516"
                     y2="298.07651" />
                <linearGradient
                     inkscape:collect="always"
                     xlink:href="#linearGradient2073"
                     id="linearGradient2817"
                     gradientUnits="userSpaceOnUse"
                     gradientTransform="matrix(0.353131,0,0,0.268212,-10.60411,-95.53958)"
                     x1="223.25398"
                     y1="237.48343"
                     x2="223.25398"
                     y2="301.78006" />
                <linearGradient
                     inkscape:collect="always"
                     xlink:href="#linearGradient2051"
                     id="linearGradient2821"
                     gradientUnits="userSpaceOnUse"
                     gradientTransform="matrix(0.384191,0,0,0.437012,-17.52787,-141.364)"
                     x1="295.08344"
                     y1="343.32632"
                     x2="295.08344"
                     y2="224.68822" />
                <linearGradient
                     inkscape:collect="always"
                     xlink:href="#linearGradient2073"
                     id="linearGradient2828"
                     gradientUnits="userSpaceOnUse"
                     gradientTransform="matrix(0.353131,0,0,0.268212,-10.85411,-95.53958)"
                     x1="223.25398"
                     y1="237.48343"
                     x2="223.25398"
                     y2="301.78006" />
                <linearGradient
                     inkscape:collect="always"
                     xlink:href="#linearGradient2115"
                     id="linearGradient2835"
                     x1="68.125"
                     y1="7.25"
                     x2="68.125"
                     y2="25.077589"
                     gradientUnits="userSpaceOnUse"
                     gradientTransform="matrix(0.752725,0,0,0.50003,-4.602051,9.1255)" />
                <linearGradient
                     inkscape:collect="always"
                     xlink:href="#linearGradient2292"
                     id="linearGradient2839"
                     gradientUnits="userSpaceOnUse"
                     gradientTransform="matrix(1.061878,0,0,0.460027,-9.204941,9.533024)"
                     x1="68.125"
                     y1="7.25"
                     x2="68.125"
                     y2="43.715527" />
            </defs>
            <g
                 id="layer1">
                <rect
                     width="123.5"
                     height="21.5"
                     rx="9.8386154"
                     ry="10.379341"
                     x="1.5"
                     y="1"
                     style="fill:url(#linearGradient2172);fill-opacity:1;stroke:black;stroke-width:0.99999976;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.63492067"
                     id="rectouter" />
                <rect
                     width="114.3"
                     height="14.1"
                     rx="2.2586658"
                     ry="2.1103072"
                     x="6.3"
                     y="5"
                     style="fill:url(#linearGradient2174);fill-opacity:1;stroke:black;stroke-width:1.00000012;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.6719577"
                     id="rectinner" />
                <g
                     inkscape:groupmode="layer"
                     id="layer2"
                     inkscape:label="bars"
                     clip-path="url(#clipbars)">
                    <rect
                         width="113.5"
                         height="13.1"
                         rx="2.1912799"
                         ry="1.5982112"
                         x="6.8"
                         y="5.5"
                         style="opacity:1;fill:url(#linearGradient2827);fill-opacity:1;stroke:none;stroke-width:1.87557006;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
                         id="peakover" />
                    <rect
                         width="113.5"
                         height="13.1"
                         rx="2.1912799"
                         ry="1.5982111"
                         x="6.8"
                         y="5.5"
                         style="opacity:1;fill:url(#linearGradient2176);fill-opacity:1;stroke:none;stroke-width:1.87557006;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
                         id="peak" />
                    <path
                         d="M 3.053786,4.2362938 L 10.742332,4.2362938 L 6.8980586,9.6416242 L 3.053786,4.2362938 z "
                         style="fill:black;fill-opacity:1;stroke:none;stroke-width:1.25;stroke-miterlimit:4;stroke-opacity:1"
                         id="patharrow" />
                    <rect
                         style="opacity:1;fill:url(#linearGradient2839);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
                         id="offpeakover"
                         width="113.5"
                         height="5.5"
                         x="6.8"
                         y="13"
                         rx="0"
                         ry="0" />
                    <rect
                         style="opacity:1;fill:url(#linearGradient2835);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
                         id="offpeak"
                         width="113.5"
                         height="5.5"
                         x="6.8"
                         y="13"
                         rx="0"
                         ry="0" />
                    <path
                         d="M 9.2731107,18.772569 L 4.421751,18.698553 L 6.9057977,15.557182 L 9.2731107,18.772569 z "
                         style="opacity:1;fill:white;fill-opacity:1;stroke:none;stroke-width:1.25;stroke-miterlimit:4;stroke-opacity:1"
                         id="patharrow2"
                         inkscape:transform-center-y="3.7231195" />

                    <g
                         id="iconerror"
                         transform="matrix(0.93714,0,0,0.940057,-97.13415,33.75136)">
                        <path
                             transform="matrix(0.427044,0,0,0.492997,65.22645,-17.42024)"
                             sodipodi:open="true"
                             sodipodi:end="12.497908"
                             sodipodi:start="6.2292315"
                             d="M 144.93554,-11.799526 A 14.672466,11.932427 0 1 1 144.92252,-11.972325"
                             sodipodi:ry="11.932427"
                             sodipodi:rx="14.672466"
                             sodipodi:cy="-11.156038"
                             sodipodi:cx="130.28442"
                             id="iconerrorcircle"
                             style="opacity:1;fill:red;fill-opacity:0.78835976;stroke:black;stroke-width:2.32200027;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
                             sodipodi:type="arc" />
                        <path
                             id="path2253"
                             d="M 123.9972,-25.849435 L 118.00283,-20.400574"
                             style="fill:none;fill-opacity:0.78835976;fill-rule:evenodd;stroke:white;stroke-width:1.59812951;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
                        <path
                             id="path2255"
                             d="M 123.82577,-19.935489 L 117.67426,-25.814523"
                             style="fill:none;fill-opacity:0.78835976;fill-rule:evenodd;stroke:white;stroke-width:1.59812939;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
                    </g>
                    <path
                         style="opacity:0.88144334;fill:url(#linearGradient2249);fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.47692309"
                         d="M 13.195219,6.1889253 L 13.195219,11.292777 L 8.4873981,11.292777 L 15.549124,18.675132 L 22.24872,11.292777 L 17.450357,11.292776 L 17.540899,6.1889253 L 13.195219,6.1889253 z "
                         id="icondown"
                         sodipodi:nodetypes="cccccccc" />
                </g>
                <text
                         x="117.5"
                         y="16.8"
                         style="font-size:14px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:end;line-height:125%;writing-mode:lr;text-anchor:end;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
                         id="pclabelouter"
                         xml:space="preserve"
                         sodipodi:linespacing="125%"><tspan
                            x="117.5"
                            y="16.8"
                            id="pclabel">0%</tspan></text>
                <text
                     xml:space="preserve"
                     style="font-size:13px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:end;line-height:125%;writing-mode:lr-tb;text-anchor:end;fill:#fff5f5;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:none;font-family:Arial"
                     x="85.661148"
                     y="17.569111"
                     id="pc2labelouter"
                     sodipodi:linespacing="125%"><tspan
                        sodipodi:role="line"
                        x="85.661148"
                        y="17.569111"
                        id="pc2label">0%</tspan></text>
            </g>
        </svg>

            
        <!-- XXXXXXXXXXXXXXXXXXXXXXX CUT HERE XXXXXXXXXXXXXXXXXXXXXXXXX -->



    </content>

    <implementation implements="nsIObserver, nsIDOMEventListener">
        <constructor>
            <![CDATA[

            //var svg = document.getAnonymousElementByAttribute(this, 'id', 'netusagesvg');
            //var suspid = svg.suspendRedraw(1000);
            
            // get num from id
            var sitemid = this.getAttribute('id');
            this.itemid = parseInt(sitemid[sitemid.length-1], 10);

            this.defprefix = "";
            this.svghack = window.navigator.userAgent.indexOf("; rv:1.8") != -1;

            if (this.svghack) {

                // hack for bug https://bugzilla.mozilla.org/show_bug.cgi?id=309020
                this.defprefix = "nu"+this.itemid+"_";

                var existingStub = document.getElementById(this.defprefix+'netusagesvgdefstub');
                if (existingStub) {
                    // remove previous stub
                    existingStub.parentNode.removeChild(existingStub);
                }

                // mass append nu0_ ids to the defs
                var tmplstub = document.getAnonymousElementByAttribute(this, 'id', "netusagesvgdefstub");
                tmplstub.setAttribute("id", this.defprefix+'netusagesvgdefstub');

                document.getAnonymousElementByAttribute(this, 'id', "netusagedefs").setAttribute("id", this.defprefix+'netusagedefs');
                this.alterNodeId(document.getAnonymousElementByAttribute(this, 'id', this.defprefix+"netusagedefs"), this.defprefix);

                var svgdefstub = document.importNode(tmplstub, true);
                var svgdefs = document.importNode(document.getAnonymousElementByAttribute(this, 'id', this.defprefix+"netusagedefs"), true);

                svgdefstub.appendChild(svgdefs);
                var c = svgdefstub.cloneNode(true);

                document.documentElement.appendChild(c);

                var elids = ['layer2', 'rectouter', 'rectinner', 'peak', 'peakover', 'offpeak', 'offpeakover', 'icondown'];
                for(var i in elids) {
                
                    var r = document.getAnonymousElementByAttribute(this, 'id', elids[i]).getAttribute('clip-path');
                    if (r != null) {
                        r = r.replace(/url\(#([^)]+)/, "url("+document.location+"#"+this.defprefix+"$1");
                        document.getAnonymousElementByAttribute(this, 'id', elids[i]).setAttribute("clip-path", r);
                    }
                    r = document.getAnonymousElementByAttribute(this, 'id', elids[i]).getAttribute('style');
                    if (r != null) {
                        r = r.replace(/fill: url\(#([^)]+)/, "fill: url("+document.location+"#"+this.defprefix+"$1");
                        
                        document.getAnonymousElementByAttribute(this, 'id', elids[i]).setAttribute("style", r);
                    }
                }
            }

            var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
            prefs = prefs.getBranch("extensions.netusage.");            

            if(prefs.getBoolPref('widen')){

                var elids2 = ['netusagesvg', 'rectouter', 'rectinner', 'peakover', 'peak', 'offpeakover', 'offpeak', 'pclabel', 'pclabelouter', 'pc2labelouter', 'pc2label'];
                for(var i in elids2) {

                    var e = document.getAnonymousElementByAttribute(this, 'id', elids2[i]), huh = 'x';

                    if(e.hasAttribute('width')){
                    
                        huh = 'width';
                    
                    }
                
                    var getW = Number(e.getAttribute(huh))+prefs.getIntPref("widenNumber");

                    e.setAttribute(huh, getW);

                }
        
            }        

            // GUI
            this.maxWidth = parseInt(document.getAnonymousElementByAttribute(this, 'id', 'peakover').getAttribute("width"), 10);
            this.maxWidth2 = parseInt(document.getAnonymousElementByAttribute(this, 'id', 'offpeakover').getAttribute("width"), 10);
            // for New Modern offpeak which progresses backwards
            this.baseX = parseInt(document.getAnonymousElementByAttribute(this, 'id', this.defprefix+'clipoffpeakrect').getAttribute("x"), 10);
            
            // The following two function fails when running outside chrome
            // flashing timer
            try {
            this.timer = Components.classes['@mozilla.org/timer;1'].createInstance(Components.interfaces.nsITimer);
            } catch (e) { dump("EXCEPTION flashing timer create failed" + e); }
            
            try {
            this.addEventListener('DOMAttrModified', this, false);
            } catch (e) { dump("EXCEPTION addEventListener DOMAttrModified failed" + e); }

            //svg.unsuspendRedraw(suspid);
            
            // set state to initial values
            this.refreshItem("text", this.getAttribute("text"));
            this.refreshItem("text2", this.getAttribute("text2"));
            this.refreshItem("pc", parseInt(this.getAttribute("pc"), 10));
            this.refreshItem("pc2", parseInt(this.getAttribute("pc2"), 10));
            this.refreshItem("arrow", parseInt(this.getAttribute("arrow"), 10));
            this.refreshItem("arrow2", parseInt(this.getAttribute("arrow2"), 10));
            this.refreshItem("status", this.getAttribute("status"));
            this.refreshItem("flashing", this.getAttribute("flashing"));
            
            ]]>
        </constructor>

        <destructor>
            <![CDATA[
            if (this.timer)
                this.timer.cancel();
            this.timer = null;
            ]]>
        </destructor>

        <property name="arrow">
            <getter>
                return parseInt(this.getAttribute('arrow'));
            </getter>
            <setter>
                <![CDATA[
            this.setAttribute("arrow", val);
            ]]>
            </setter>
        </property>

        <property name="arrow2">
            <getter>
                return parseInt(this.getAttribute('arrow2'));
            </getter>
            <setter>
                <![CDATA[
            this.setAttribute("arrow2", val);
            ]]>
            </setter>
        </property>



        <property name="pc">
            <getter>
                return parseInt(this.getAttribute('pc'));
            </getter>

            <setter>
                <![CDATA[
            this.setAttribute("pc", val);
            ]]>
            </setter>
        </property>


        <property name="pc2">
            <getter>
                return parseInt(this.getAttribute('pc2'));
            </getter>

            <setter>
                <![CDATA[
            this.setAttribute("pc2", val);
            ]]>
            </setter>
        </property>

        <property name="status">
            <getter>
                return this.getAttribute('status');
            </getter>

            <setter>
                <![CDATA[
            this.setAttribute("status", val);
            ]]>
            </setter>
        </property>


        <property name="text">
            <getter>
                return this.getAttribute('text');
            </getter>

            <setter>
                <![CDATA[
            this.setAttribute("text", val);
            ]]>
            </setter>
        </property>
        <property name="text2">
            <getter>
                return this.getAttribute('text2');
            </getter>

            <setter>
                <![CDATA[
            this.setAttribute("text2", val);
            ]]>
            </setter>
        </property>
        <property name="flashing">
            <getter>
                return this.getAttribute('flashing');
            </getter>

            <setter>
                <![CDATA[
            this.setAttribute("flashing", val); // val needs to be turned into string or else DOMAttrModified won't trip
            ]]>
            </setter>
        </property>

        <method name="alterNodeId">
            <parameter name="root" />
            <parameter name="prepend_id" />
            <body>
                <![CDATA[
            for (var i = 0; i < root.childNodes.length; i++) {
                this.alterNodeId(root.childNodes[i], prepend_id);
                if (!root.childNodes[i].setAttribute)
                    continue;
                //root.childNodes[i].setAttribute("id", prepend_id+root.childNodes[i].id);
                root.childNodes[i].id = prepend_id+root.childNodes[i].id;
                //if (root.childNodes[i].getAttributeNS("http://www.w3.org/1999/xlink", "href") != null) {
                var xlinkhref = root.childNodes[i].getAttribute("xlink:href");
                if (xlinkhref != null) {
                    root.childNodes[i].setAttribute("xlink:href", "#"+prepend_id+xlinkhref.substring(1, xlinkhref.length));
                    //alert(root.childNodes[i].getAttribute("xlink:href"));
                }
            }
            ]]>
            </body>
        </method>

        <method name="observe">
            <parameter name="subject" />
            <parameter name="topic" />
            <parameter name="data" />
            <body>
                <![CDATA[
            if (topic == 'timer-callback') {
                try {
                // flash
                var svg = document.getAnonymousElementByAttribute(this, 'id', 'netusagesvg');
                if (this.anipos >= 9 || this.anipos <= 5) {
                    this.anistep = -this.anistep;
                }
                if (this.flashEnabled || (!this.flashEnabled && this.anipos < 9)) {
                    //svg.style.MozOpacity = '0.'+this.anipos;
                    svg.setAttribute('style', 'opacity: 0.'+this.anipos);
                    this.anipos += this.anistep;
                } else {
                    // flashing disabled and cycle is complete
                    this.timer.cancel();
                    //svg.style.opacity = '1';
                    svg.setAttribute('style', 'opacity: 1');
                    this.anipos = 9;
                    this.anistep = 1;
                }
                } catch (e) { this.timer.cancel(); alert('netusage flash timer-callback error: '+e); }
            }

            ]]>
            </body>
        </method>


        <method name="handleEvent">
            <parameter name="e" />
            <body>
                <![CDATA[
            //dump('DOMAttrModified '+e.attrName+' '+e.originalTarget+'\n');
            if (e.type == 'DOMAttrModified' && e.originalTarget == this) {
                if (e.attrName == 'status' || e.attrName == 'text' || e.attrName == 'text2' || e.attrName == 'flashing')
                    this.refreshItem(e.attrName, e.newValue);
                else
                    this.refreshItem(e.attrName, parseInt(e.newValue, 10));
                //e.prevValue = 
                
                /* dump('event {\n');
                for(i in e) {
                    dump(i + ": " + e[i] +"\n")
                }
                dump('}\n'); */
                
            }
            ]]>
            </body>
        </method>


        <method name="refreshItem">
            <parameter name="attr" />
            <parameter name="v" />
            <body>
                <![CDATA[
            var maxWidth = parseInt(this.maxWidth); // TODO do we really need to parseInt? was it a bug?
            var maxWidth2 = parseInt(this.maxWidth2);
            var baseX = parseInt(this.baseX);
            var svg = document.getAnonymousElementByAttribute(this, 'id', 'netusagesvg');
            var suspid = svg.suspendRedraw(1000);
            //e.prevValue = 
            
            if (attr == 'pc') {
                if (v < 100) {
                    document.getAnonymousElementByAttribute(this, 'id', 'peakover').style.display = 'none';
                    document.getAnonymousElementByAttribute(this, 'id', 'peak').setAttribute('width', maxWidth * v / 100);
                }
                else {
                    document.getAnonymousElementByAttribute(this, 'id', 'peakover').style.display = '';
                    document.getAnonymousElementByAttribute(this, 'id', 'peak').setAttribute('width', maxWidth * 100 / v);
                }
            }
            else if (attr == 'pc2') {
                if ((document.getAnonymousElementByAttribute(this, 'id', 'offpeak').getAttribute('clip-path')+"").indexOf('clipoffpeak') == -1) {
                    if (v < 100) {
                        document.getAnonymousElementByAttribute(this, 'id', 'offpeakover').style.display = 'none';
                        document.getAnonymousElementByAttribute(this, 'id', 'offpeak').setAttribute('width', maxWidth2 * v / 100);
                    }
                    else {
                        document.getAnonymousElementByAttribute(this, 'id', 'offpeakover').style.display = '';
                        document.getAnonymousElementByAttribute(this, 'id', 'offpeak').setAttribute('width', maxWidth2 * 100 / v);
                    }
                }
                else {
                    // for New Modern theme, where off peak bar comes the opposite direction
                    var clipoffpeakrect = this.svghack ? document.getElementById(this.defprefix+'clipoffpeakrect') : document.getAnonymousElementByAttribute(this, 'id', 'clipoffpeakrect');

                    if (v < 100) {
                        document.getAnonymousElementByAttribute(this, 'id', 'offpeakover').style.display = 'none';
                        clipoffpeakrect.setAttribute('x', baseX + maxWidth - maxWidth * v / 100);
                        clipoffpeakrect.setAttribute('width', maxWidth * v / 100);
                    }
                    else {
                        document.getAnonymousElementByAttribute(this, 'id', 'offpeakover').style.display = '';
                        clipoffpeakrect.setAttribute('x', baseX + maxWidth - maxWidth * 100 / v);
                        clipoffpeakrect.setAttribute('width', maxWidth * 100 / v);
                    }
                    
                    // hack for bug that doesn't redraw clipping
                    var cp = document.getAnonymousElementByAttribute(this, 'id', 'offpeak').getAttribute('clip-path');
                    document.getAnonymousElementByAttribute(this, 'id', 'offpeak').setAttribute('clip-path', '');
                    document.getAnonymousElementByAttribute(this, 'id', 'offpeak').setAttribute('clip-path', cp);
                }
            }
            else if (attr == 'arrow') {
                if (v <= 100) {
                    document.getAnonymousElementByAttribute(this, 'id', 'patharrow').setAttribute('transform', 'translate('+(maxWidth * v / 100)+',0)');
                }
            }
            else if (attr == 'arrow2') {
                if (v > 0 && v <= 100) {
                    document.getAnonymousElementByAttribute(this, 'id', 'patharrow2').style.display = '';
                    if ((document.getAnonymousElementByAttribute(this, 'id', 'offpeak').getAttribute('clip-path')+"").indexOf('clipoffpeak') == -1)
                        document.getAnonymousElementByAttribute(this, 'id', 'patharrow2').setAttribute('transform', 'translate('+(maxWidth2 * v / 100)+',0)');
                    else // for New Modern Theme
                        document.getAnonymousElementByAttribute(this, 'id', 'patharrow2').setAttribute('transform', 'translate(-'+(maxWidth * v / 100)+',0)');
                } else {
                    document.getAnonymousElementByAttribute(this, 'id', 'patharrow2').style.display = 'none';
                }
            }
            else if (attr == 'status') {
                switch(v) {
                    case 'fetching':
                        document.getAnonymousElementByAttribute(this, 'id', "iconerror").setAttribute("display", "none");
                        document.getAnonymousElementByAttribute(this, 'id', "icondown").setAttribute("display", "");
                        break;
                    case 'error':
                        document.getAnonymousElementByAttribute(this, 'id', "iconerror").setAttribute("display", "");
                        document.getAnonymousElementByAttribute(this, 'id', "icondown").setAttribute("display", "none");
                        break;
                    default:
                        document.getAnonymousElementByAttribute(this, 'id', "iconerror").setAttribute("display", "none");
                        document.getAnonymousElementByAttribute(this, 'id', "icondown").setAttribute("display", "none");
                }
            }
            else if (attr == 'text') {
                var el = document.createTextNode(v);
                var pclabel = document.getAnonymousElementByAttribute(this, 'id', 'pclabel');
                if (pclabel.hasChildNodes()) {
                    pclabel.removeChild(pclabel.firstChild);
                }
                pclabel.appendChild(el);
            }
            else if (attr == 'text2') {
                var el = document.createTextNode(v);
                var pclabel = document.getAnonymousElementByAttribute(this, 'id', 'pc2label');
                if (pclabel.hasChildNodes()) {
                    pclabel.removeChild(pclabel.firstChild);
                }
                pclabel.appendChild(el);
            }
            else if (attr == 'flashing') {
                if (!v || v == "false") {
                    this.flashEnabled = false;

                } else {
                    this.anipos = 9;
                    this.anistep = 1;
                    this.flashEnabled = true;

                    if (!this.timer)
                            return; // TODO This happens because on first run, netusage update has returned when usagebar constructor has not been run yet
                    this.timer.cancel();
                    this.timer.init(this, 150, this.timer.TYPE_REPEATING_SLACK);
                }
            }
            svg.unsuspendRedraw(suspid);

            ]]>
            </body>
        </method>


    </implementation>
</binding>



</bindings>

Untitled XML (29-Jun @ 16:00)

yansky

Syntax Highlighted Code

  1. <?xml version="1.0"?>
  2. <!--
  3.  
  4. The NetUsage Project
  5. [257 more lines...]

Plain Code

<?xml version="1.0"?>
<!--

The NetUsage Project
http://netusage.mozdev.org/

Copyright (C) 2006, NetUsage Project
This extension can be freely distributed under
the terms of the Mozilla Public Licence 1.1
See the licence at http://www.mozilla.org/MPL/


Net Usage Item

XULPref

-->

<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>


<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
    xmlns:html="http://www.w3.org/1999/xhtml"
    title="Net Usage Preferences"
    style="margin: 0px; padding: 0px;"
    onload="startup();"
    ondialogaccept="return fbAccept();"
    id="netusageprefsdlg">

<script type="application/x-javascript" src="usagelib.js" />
<script type="application/x-javascript" src="usagePrefs.js" />
<stack width="100%" style="background-color: #FFFFFF;">
    <hbox pack="end" style="background: url(chrome://netusageitem/skin/banner.png) top left no-repeat; height: 64px"></hbox>
    <description width="100%" id="nuiversion" style="color: #000000; font-size: 8pt; font-weight: bold;" />
</stack>
<vbox style="padding: 5px" flex="1">
<groupbox orient="horizontal" width="100%">
    <caption label="General Settings" />

    <vbox flex="1">
        <grid flex="1">
            <columns>
                <column flex="1" />
                <column flex="3" />
            </columns>
            <rows id="generalgrid">
                <row>
                    <label control="selisp" value="ISP" />
                    <hbox>
                        <menulist id="selcountry" disabled="false" oncommand="refreshISPList(null);">
                            <menupopup id="selcts">
                                <menuitem id="ct_more" value="more" label="More..." />
                            </menupopup>
                        </menulist>
                        <menulist id="selisp" disabled="false" flex="1"  oncommand="settingsChanged=true; refreshISPPrefs(false);"
                            preftype="string"
                            prefstring="extensions.netusage.0.userisp"
                            prefattribute="value">
                            <menupopup id="selisps">
                                <menuitem id="ispsna" value="na" label="Disable Usage Extension" />
                            </menupopup>
                        </menulist>
                    </hbox>
                </row>
                <row>
                    <label control="selinterval" value="Auto Refresh" />
                    <menulist id="selinterval" disabled="false" oncommand="settingsChanged=true;"
                        preftype="int"
                        prefstring="extensions.netusage.0.checkinterval"
                        prefattribute="value">
                        <menupopup>
                            <menuitem value="-1" label="Disabled" />
                            <menuitem value="900" label="Every 15 minutes" />
                            <menuitem value="1800" label="Every 30 minutes" />
                            <menuitem value="3600" label="Every hour" />
                            <menuitem value="7200" label="Every 2 hours" />
                            <menuitem value="14400" label="Every 4 hours" />
                            <menuitem value="21600" label="Every 6 hours" />
                            <menuitem value="43200" label="Every 12 hours" />
                            <menuitem value="86400" label="Every 24 hours" />
                        </menupopup>
                    </menulist>
                </row>
                <row id="rowuuname">
                    <label id="lbluuname" control="uuname" value="Username" />
                    <textbox id="uuname" flex="1" />
                </row>
                <row id="rowupass">
                    <label id="lblupass" control="upass" value="Password" />
                    <textbox id="upass" flex="1" type="password" />
                </row>
            </rows>
        </grid>
    </vbox>

</groupbox>



<groupbox orient="horizontal" width="100%">
    <caption label="ISP Settings" />

    <vbox flex="1">
        <description id="lbldescisp"></description>
        <grid>
            <columns>
                <column />
                <column flex="1" />
            </columns>
            <rows id="ispprefgrid">

            </rows>
        </grid>
    </vbox>

</groupbox>

<groupbox orient="horizontal" width="100%">
    <caption label="Time Settings" />

    <vbox flex="1">
        <label value="Configuration of the following time related settings are optional." />
        <grid>
            <columns>
                <column />
                <column flex="1" />
            </columns>
            <rows id="">
                <row>
                <label value="Offpeak (In Local time)" />
                <hbox>
                    <label value="From" />
                    <menulist id="seloffpeakstarttime" disabled="false" oncommand="settingsChanged=true;"
                        preftype="int"
                        prefstring="extensions.netusage.0.vars.offpeakstarttime"
                        prefattribute="value">
                        <menupopup>
                            <menuitem value="0" label="12:00 AM Midnight" />
                            <menuitem value="3600" label="1:00 AM" />
                            <menuitem value="7200" label="2:00 AM" />
                            <menuitem value="10800" label="3:00 AM" />
                            <menuitem value="14400" label="4:00 AM" />
                            <menuitem value="18000" label="5:00 AM" />
                            <menuitem value="21600" label="6:00 AM" />
                            <menuitem value="25200" label="7:00 AM" />
                            <menuitem value="28800" label="8:00 AM" />
                            <menuitem value="32400" label="9:00 AM" />
                            <menuitem value="36000" label="10:00 AM" />
                            <menuitem value="39600" label="11:00 AM" />
                            <menuitem value="43200" label="12:00 PM Noon" />
                            <menuitem value="46800" label="1:00 PM" />
                            <menuitem value="50400" label="2:00 PM" />
                            <menuitem value="54000" label="3:00 PM" />
                            <menuitem value="57600" label="4:00 PM" />
                            <menuitem value="61200" label="5:00 PM" />
                            <menuitem value="64800" label="6:00 PM" />
                            <menuitem value="68400" label="7:00 PM" />
                            <menuitem value="72000" label="8:00 PM" />
                            <menuitem value="75600" label="9:00 PM" />
                            <menuitem value="79200" label="10:00 PM" />
                            <menuitem value="82800" label="11:00 PM" />
                        </menupopup>
                    </menulist>
                    <label value="to" />
                    <menulist id="seloffpeakendtime" disabled="false" oncommand="settingsChanged=true;"
                        preftype="int"
                        prefstring="extensions.netusage.0.vars.offpeakendtime"
                        prefattribute="value">
                        <menupopup>
                            <menuitem value="0" label="12:00 AM Midnight" />
                            <menuitem value="3600" label="1:00 AM" />
                            <menuitem value="7200" label="2:00 AM" />
                            <menuitem value="10800" label="3:00 AM" />
                            <menuitem value="14400" label="4:00 AM" />
                            <menuitem value="18000" label="5:00 AM" />
                            <menuitem value="21600" label="6:00 AM" />
                            <menuitem value="25200" label="7:00 AM" />
                            <menuitem value="28800" label="8:00 AM" />
                            <menuitem value="32400" label="9:00 AM" />
                            <menuitem value="36000" label="10:00 AM" />
                            <menuitem value="39600" label="11:00 AM" />
                            <menuitem value="43200" label="12:00 PM Noon" />
                            <menuitem value="46800" label="1:00 PM" />
                            <menuitem value="50400" label="2:00 PM" />
                            <menuitem value="54000" label="3:00 PM" />
                            <menuitem value="57600" label="4:00 PM" />
                            <menuitem value="61200" label="5:00 PM" />
                            <menuitem value="64800" label="6:00 PM" />
                            <menuitem value="68400" label="7:00 PM" />
                            <menuitem value="72000" label="8:00 PM" />
                            <menuitem value="75600" label="9:00 PM" />
                            <menuitem value="79200" label="10:00 PM" />
                            <menuitem value="82800" label="11:00 PM" />
                        </menupopup>
                    </menulist>
                </hbox>
                </row>
                <row>
                    <label value="ISP Accounting Timezone" />

                    <menulist id="selisptime" disabled="false" oncommand="settingsChanged=true;"
                        preftype="int"
                        prefstring="extensions.netusage.0.vars.isptz"
                        prefattribute="value">
                        <menupopup>
                            <menuitem id="selisptimedefault" value="86400" label="Default/Local Time" />

                            <menuitem value="46800" label="(GMT+13:00)" />
                            <menuitem value="43200" label="(GMT+12:00) New Zealand" />
                            <menuitem value="39600" label="(GMT+11:00) NSW VIC TAS Summer Time" />
                            <menuitem value="37800" label="(GMT+10:30) SA Summer Time" />
                            <menuitem value="36000" label="(GMT+10:00) QLD; NSW VIC TAS Winter Time" />
                            <menuitem value="34200" label="(GMT+09:30) NT; SA Winter Time" />
                            <menuitem value="32400" label="(GMT+09:00) WA Summer Time" />
                            <menuitem value="28800" label="(GMT+08:00) WA Winter Time" />
                            <menuitem value="25200" label="(GMT+07:00)" />
                            <menuitem value="21600" label="(GMT+06:00)" />
                            <menuitem value="18000" label="(GMT+05:00)" />
                            <menuitem value="14400" label="(GMT+04:00)" />
                            <menuitem value="10800" label="(GMT+03:00)" />
                            <menuitem value="7200" label="(GMT+02:00)" />
                            <menuitem value="3600" label="(GMT+01:00)" />
                            <menuitem value="0" label="(GMT+00:00)" />
                            <menuitem value="-3600" label="(GMT-01:00)" />
                            <menuitem value="-7200" label="(GMT-02:00)" />
                            <menuitem value="-10800" label="(GMT-03:00)" />
                            <menuitem value="-14400" label="(GMT-04:00)" />
                            <menuitem value="-18000" label="(GMT-05:00)" />
                            <menuitem value="-21600" label="(GMT-06:00)" />
                            <menuitem value="-25200" label="(GMT-07:00)" />
                            <menuitem value="-28800" label="(GMT-08:00)" />
                            <menuitem value="-32400" label="(GMT-09:00)" />
                            <menuitem value="-36000" label="(GMT-10:00)" />
                            <menuitem value="-39600" label="(GMT-11:00)" />
                            <menuitem value="-43200" label="(GMT-12:00)" />
                        </menupopup>
                    </menulist>
                </row>
            </rows>
        </grid>
    </vbox>

</groupbox>
<spacer style="margin-top:10px;" />
<groupbox orient="horizontal" width="100%">
<checkbox label="Widen NetUsage Bar By" checked="false" prefstring="extensions.netusage.widen" prefattribute="checked" preftype="bool" />
<textbox id="widepix" preftype="int" prefstring="extensions.netusage.widenNumber" />Pixels  (requires a restart)
</groupbox>
<spacer style="margin-bottom:10px;" />
<hbox>
    <hbox>
        <button label="Clear all settings" id="btnclear"  onclick="clearAllSettings();" />
    </hbox>
    <hbox flex="1" pack="end">
        <button label="OK" id="btnok" onclick="if (onOK()) window.close();" />
        <button label="Cancel" onclick="window.close();" />
    </hbox>
</hbox>

</vbox>

</window>

Untitled JavaScript (23-Jun @ 19:21)

yansky

Syntax Highlighted Code

  1. txt=sel.toString().replace(/^(.+)$/mg, '["$1"]');
  2.  
  3. var wName=who.firstChild.nodeValue;
  4. var wLink=who.parentNode.getAttribute('href');
  5. [7 more lines...]

Plain Code

txt=sel.toString().replace(/^(.+)$/mg, '["$1"]');

var wName=who.firstChild.nodeValue;
var wLink=who.parentNode.getAttribute('href');
var pLink=lnk.getAttribute('href');

var ttxt = $xa('./TD[1]/A[2]',post.parentNode).name.substr(1);
var qt=[
  '[+'+ttxt+' '+wName+' writes...+]',
  txt,
  ''
].join('\n');

Untitled JavaScript (22-Jun @ 06:54)

yansky

Syntax Highlighted Code

  1. var enclosedSelection = theSelection.replace(/^(.+)$/mg, '["$1"]');

Plain Code

var enclosedSelection = theSelection.replace(/^(.+)$/mg, '["$1"]');

Untitled ActionScript (22-Jun @ 04:10)

yansky

Syntax Highlighted Code

  1. /*
  2. Copyright (c) 2005, Fabricio Zuardi
  3. All rights reserved.
  4.  
  5. [511 more lines...]

Plain Code

/*
Copyright (c) 2005, Fabricio Zuardi
All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

    * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
    * Neither the name of the author nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
//import Debug.write() utility
import com.interactiveAlchemy.utils.*;

stop();
//autoplay=true
//repeat_playlist = true;
//playlist_size = 3;
//player_title = "customizeable title test"
//song_url = "http://downloads.betterpropaganda.com/music/Imperial_Teen-Ivanka_128.mp3";
//playlist_url = "http://cchits.ning.com/recent/xspf/?xn_auth=no";
//playlist_url = "http://hideout.com.br/shows/radio-test.xspf";
//radio_mode = true;
//song_title = "Imperial Teen - Ivanka";
autoload=true;
//info_button_text = "Add to Cart"
//playlist_url = "http%3A%2F%2Fwebjay%2Eorg%2Fby%2Flucas%5Fgonze%2Flaconic%2Exspf"
//playlist_url= "http://hideout.com.br/tests/hideout2325.xspf"
//constants
DEFAULT_PLAYLIST_URL = "http://hideout.com.br/shows/allshows.xspf";
DEFAULT_WELCOME_MSG = "Hideout XSPF Music Player - by Fabricio Zuardi";
LOADING_PLAYLIST_MSG = "Loading Playlist...";
DEFAULT_LOADED_PLAYLIST_MSG = "- click to start"
DEFAULT_INFOBUTTON_TXT = "Info"
//playlists has priority over songs, if a playlist_url parameter is found the song_url is ignored
//default playlist if none is passed through query string
if(!playlist_url && !js_playlist){
    if(!song_url){
        playlist_url = DEFAULT_PLAYLIST_URL;
    }else{
        single_music_playlist = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><playlist version=\"1\" xmlns = \"http://xspf.org/ns/0/\"><trackList>";
        single_music_playlist += "<track><location>"+song_url+"</location><annotation>"+song_title+"</annotation></track>"
        single_music_playlist += "</trackList></playlist>"
    }
}
info_mc._visible=false;
if(!info_button_text){
    info_button_text = DEFAULT_INFOBUTTON_TXT;
}
info_mc.display_txt.text = info_button_text;

//variables initialization
playlist_array = [];
track_index = 0;
playlist_mc.track_count = 0;
pause_position = 0;
volume_level = 100;
playlist_xml = new XML();
playlist_xml.ignoreWhite = true;
playlist_xml.onLoad = playlistLoaded;
mysound = new Sound(this);
playlist_listener = new Object();
playlist_list.addEventListener("change", playlist_listener)
//play_btn.onPress = playTrack;
//functions
//xml parser
//var jsonPlaylist;
function jsoNplaylistLoaded(j){

    var jList = j;
    playlist_title = jList.title;
    var tracks_array = [];
    for(var i=0;i<jList.tracklist.length;i++){

        addTrack(track_obj.label);
    }
                    
    playlist_array = jList.tracklist;
    if(!playlist_size) playlist_size = playlist_array.length;
    playlist_mc.tracks_mc["track_"+track_index+"_mc"].bg_mc.gotoAndStop(2)
    if(autoplay){
        loadTrack()
    }else{
        start_btn_mc.start_btn.onPress = loadTrack;
        track_display_mc.display_txt.text = playlist_title+" "+DEFAULT_LOADED_PLAYLIST_MSG;
        if(track_display_mc.display_txt._width>track_display_mc.mask_mc._width){
            track_display_mc.onEnterFrame = scrollTitle;
        }else{
            track_display_mc.onEnterFrame = null;
            track_display_mc.display_txt._x = 0;
        }
    }

}
function processResponse(){
Debug.write('processResponse');
Debug.write(this);
    /*var tSplit = this.split('<?xml version="1.0" encoding="iso-8859-1"?>')[1];
    var profile =  new XML(tSplit);
    //var songs = profile.playlist.song;
    //unsafeWindow.console.log(songs);
    var i=0;
    var tracks = '';
    for each(var song in profile.playlist.song){

        tracks += '<track>'+
                        '<title>'+song.@title+'</title>'+
                        '<creator>'+profile.name+'</creator>'+
                        '<location>'+song.@durl+'</location>'+
                        '<image>'+song.@imagename+'</image>'+
                        '<info></info>'+
                        '<identifier>'+i+'</identifier>'+
                    '</track>';
        i++;

    }
    
Debug.write(tracks);*/
}
function playlistLoaded (success){
    if(success){
        var root_node = this.firstChild;
        Debug.write('root_node  '+root_node);
        for(var node = root_node.firstChild; node != null; node = node.nextSibling){
            if(node.nodeName == "title"){
                playlist_title = node.firstChild.nodeValue;
            }
            if(node.nodeName == "trackList"){
                //tracks
                var tracks_array = [];
                for(var track_node = node.firstChild; track_node != null; track_node = track_node.nextSibling){
                    var track_obj = new Object()
                    //track attributes
                    for(var track_child = track_node.firstChild; track_child != null; track_child = track_child.nextSibling){
                        if(track_child.nodeName=="location"){
                            track_obj.location = track_child.firstChild.nodeValue
                        }
                        if(track_child.nodeName=="image"){
                            track_obj.image = track_child.firstChild.nodeValue
                        }
                        if(track_child.nodeName=="title"){
                            track_obj.title = track_child.firstChild.nodeValue
                        }
                        if(track_child.nodeName=="creator"){
                            track_obj.creator = track_child.firstChild.nodeValue
                        }
                        if(track_child.nodeName=="annotation"){
                            track_obj.annotation = track_child.firstChild.nodeValue
                        }
                        if(track_child.nodeName=="info"){
                            track_obj.info = track_child.firstChild.nodeValue
                        }
                    }
                    track_obj.label = (tracks_array.length+1) +". ";
                    if(track_obj.title) {
                        if(track_obj.creator) {
                            track_obj.label += track_obj.creator+' - ';
                        }
                        track_obj.label += track_obj.title;
                    } else {
                        track_obj.label += track_obj.annotation;
                    }
                    tracks_array.push(track_obj)
                    addTrack(track_obj.label);
                }
            }
        }
        playlist_array = tracks_array;
        if(!playlist_size) playlist_size = playlist_array.length;
        playlist_mc.tracks_mc["track_"+track_index+"_mc"].bg_mc.gotoAndStop(2)
        if(autoplay){
            loadTrack()
        }else{
            start_btn_mc.start_btn.onPress = loadTrack;
            track_display_mc.display_txt.text = playlist_title+" "+DEFAULT_LOADED_PLAYLIST_MSG;
            if(track_display_mc.display_txt._width>track_display_mc.mask_mc._width){
                track_display_mc.onEnterFrame = scrollTitle;
            }else{
                track_display_mc.onEnterFrame = null;
                track_display_mc.display_txt._x = 0;
            }
        }
    }else{
        annotation_txt.text = "Error opening "+playlist_url;
    }
}

playlist_listener.change = function(eventObject){
  annotation_txt.text = playlist_list.selectedItem.annotation;
  location_txt.text = playlist_list.selectedItem.location;
}

function loadTrack(){

    //Radio Mode feature by nosferathoo, more info in: https://sourceforge.net/tracker/index.php?func=detail&aid=1341940&group_id=128363&atid=711474
    if (radio_mode && track_index==playlist_size-1) {
        playlist_url=playlist_array[track_index].location;
        for (i=0;i<playlist_mc.track_count;++i) {
            removeMovieClip(playlist_mc.tracks_mc["track_"+i+"_mc"]);
        }
        playlist_mc.track_count=0;
        playlist_size=0;
        track_index=0;
        autoload=true;
        autoplay=true;
        loadPlaylist();
        return(0);
    }

    start_btn_mc.start_btn._visible = false;
    track_display_mc.display_txt.text = playlist_array[track_index].label;
    if(track_display_mc.display_txt._width>track_display_mc.mask_mc._width){
        track_display_mc.onEnterFrame = scrollTitle;
    }else{
        track_display_mc.onEnterFrame = null;
        track_display_mc.display_txt._x = 0;
    }
    cover_mc.content_mc["photo"+last_track_index].removeMovieClip();
    mysound.loadSound(playlist_array[track_index].location,true);
    play_mc.gotoAndStop(2)

    //image from playlist
    if(playlist_array[track_index].image!=undefined){
        cover_mc.content_mc.createEmptyMovieClip("photo"+track_index,track_index)
        cover_mc.content_mc["photo"+track_index].loadMovie(playlist_array[track_index].image)
    }else{
    }
    //info button
    if(playlist_array[track_index].info!=undefined){
        info_mc._visible = true;
        info_mc.info_btn.onPress = function(){
            getURL(playlist_array[track_index].info,"_blank")
        }
    }else{
        info_mc._visible = false;
    }
    _root.onEnterFrame=function(){
        //HACK doesnt need to set the volume at every enterframe
        mysound.setVolume(this.volume_level)
        var sound_load_percent = (mysound.getBytesLoaded()/mysound.getBytesTotal())*100
        track_display_mc.loader_mc.load_bar_mc._xscale = sound_load_percent;
        var image_load_percent = (cover_mc.content_mc["photo"+track_index].getBytesLoaded()/cover_mc.content_mc["photo"+track_index].getBytesTotal())*100
        cover_mc.load_bar_mc._xscale = image_load_percent;
        if((cover_mc.content_mc["photo"+track_index].getBytesLoaded()>4)&&(image_load_percent==100)){
            //image loaded
            //make image fit
            cover_mc.content_mc["photo"+track_index]._width = cover_mc.load_bar_mc._width
            cover_mc.content_mc["photo"+track_index]._height = cover_mc.load_bar_mc._height
        }
    }
}

stop_btn.onRelease = stopTrack;
play_mc.play_btn.onRelease = playTrack
next_btn.onRelease = nextTrack
prev_btn.onRelease = prevTrack
mysound.onSoundComplete = nextTrack;
volume_mc.volume_btn.onPress = volumeChange;
volume_mc.volume_btn.onRelease = volume_mc.volume_btn.onReleaseOutside = function(){
    this._parent.onMouseMove = this._parent.onMouseDown = null;
}

function volumeChange(){
    this._parent.onMouseMove = this._parent.onMouseDown = function(){
        var percent = (this._xmouse/this._width)*100
        if(percent>100)percent=100;
        if(percent<0)percent=0;
        this.volume_bar_mc._xscale = percent
        this._parent.volume_level = percent;
        mysound.setVolume(percent)
    }
}

function stopTrack() {
    mysound.stop();
    play_mc.gotoAndStop(1)
    mysound.stop();
    mysound.start();
    mysound.stop();
    _root.pause_position = 0;

};
function playTrack() {
    if(play_mc._currentframe==1){ //play
        seekTrack(_root.pause_position)
        play_mc.gotoAndStop(2)
    }else if(play_mc._currentframe==2){
        _root.pause_position = mysound.position;
        mysound.stop();
        play_mc.gotoAndStop(1)
    }

};
function seekTrack(p_offset:Number){
    mysound.stop()
    mysound.start(int((p_offset)/1000),1)
}
function nextTrack(){
    if(track_index<playlist_size-1){
        last_track_index = track_index;
        track_index ++;
        loadTrack();
    }else{
        if(repeat_playlist){
            last_track_index = track_index;
            track_index = 0;
            loadTrack()
        }
    }
    playlist_mc.tracks_mc["track_"+last_track_index+"_mc"].bg_mc.gotoAndStop(1)
    playlist_mc.tracks_mc["track_"+track_index+"_mc"].bg_mc.gotoAndStop(2)
}

function prevTrack(){
    if(track_index>0){
        last_track_index = track_index;
        track_index --;
        loadTrack();
    }
    playlist_mc.tracks_mc["track_"+last_track_index+"_mc"].bg_mc.gotoAndStop(1)
    playlist_mc.tracks_mc["track_"+track_index+"_mc"].bg_mc.gotoAndStop(2)
}

function scrollTitle(){
    track_display_mc.display_txt._x -= 5;
    if (track_display_mc.display_txt._x+track_display_mc.display_txt._width<0){
        track_display_mc.display_txt._x = track_display_mc.mask_mc._width;
    }
}

function resizeUI(){
    bg_mc._width = Stage.width;
    track_display_mc.loader_mc._width = Stage.width - track_display_mc._x - 2;
    track_display_mc.mask_mc._width = track_display_mc.loader_mc._width-3;
    if(track_display_mc.display_txt._width>track_display_mc.mask_mc._width){
        track_display_mc.onEnterFrame = scrollTitle;
    }else{
        track_display_mc.onEnterFrame = null;
        track_display_mc.display_txt._x = 0;
    }
    volume_mc._x = Stage.width - 22;
    start_btn_mc._xscale = Stage.width;
    //playlist area tinnier that the album cover
    if(Stage.width<2.5*cover_mc._width){
        //
        if (Stage.height>2.5*cover_mc._height){
            //send album cover to bottom
            cover_mc._y = Stage.height - cover_mc._height -2- info_mc._height -2;
            info_mc._y = Stage.height - info_mc._height -2;
            var covervisible =1;
        }else{
            var covervisible =0;
            //hide album cover
            cover_mc._y = Stage.height;
        }
        //send playlist to left
        playlist_mc._x = cover_mc._x;
        scrollbar_mc.bg_mc._height = Stage.height - (19+(cover_mc._height+info_mc._height+4)*covervisible);
        playlist_mc.bg_mc._height = Stage.height - (19+(cover_mc._height+info_mc._height+4)*covervisible);
        playlist_mc.mask_mc._height = Stage.height - (23+(cover_mc._height+info_mc._height+4)*covervisible);
    }else{
        cover_mc._y = 17;
        info_mc._y = 153;
        playlist_mc._x = 138;
        scrollbar_mc.bg_mc._height = Stage.height -19;
        playlist_mc.bg_mc._height = Stage.height - 19;
        playlist_mc.mask_mc._height = Stage.height - 23;
    }
    scrollbar_mc._x = Stage.width - 12;
    playlist_mc.mask_mc._width = Stage.width - (playlist_mc._x + 19);
    playlist_mc.bg_mc._width = Stage.width - (playlist_mc._x + 14);
}
function addTrack(track_label){
    if(playlist_mc.track_count>0) {
        playlist_mc.tracks_mc.track_0_mc.duplicateMovieClip("track_"+playlist_mc.track_count+"_mc",playlist_mc.track_count);
    }
    playlist_mc.tracks_mc["track_"+playlist_mc.track_count+"_mc"]._y += playlist_mc.track_count*14;
    playlist_mc.tracks_mc["track_"+playlist_mc.track_count+"_mc"].display_txt.autoSize = "left";
    playlist_mc.tracks_mc["track_"+playlist_mc.track_count+"_mc"].display_txt.text = track_label;
    playlist_mc.tracks_mc["track_"+playlist_mc.track_count+"_mc"].bg_mc.index = playlist_mc.track_count;
    playlist_mc.tracks_mc["track_"+playlist_mc.track_count+"_mc"].bg_mc.select_btn.onPress = function(){
        last_track_index = track_index;
        playlist_mc.tracks_mc["track_"+track_index+"_mc"].bg_mc.gotoAndStop(1)
        track_index = this._parent.index;
        playlist_mc.tracks_mc["track_"+track_index+"_mc"].bg_mc.gotoAndStop(2)
        loadTrack();
    }
    playlist_mc.track_count ++;
}
//scroll

scrollbar_mc.up_btn.onPress = function(){
    this._parent.v = -1;
    this._parent.onEnterFrame = scrollTracks;
}
scrollbar_mc.down_btn.onPress = function(){
    this._parent.v = 1;
    this._parent.onEnterFrame = scrollTracks;
}
scrollbar_mc.up_btn.onRelease = scrollbar_mc.down_btn.onRelease = function(){
    this._parent.onEnterFrame = null;
}
scrollbar_mc.handler_mc.drag_btn.onPress = function(){
    var scroll_top_limit = 19;
    var scroll_bottom_limit = scrollbar_mc.bg_mc._height - scrollbar_mc.handler_mc._height - 2;
    this._parent.startDrag(false,this._parent._x,scroll_top_limit,this._parent._x,scroll_bottom_limit)
    this._parent.isdragging = true;
    this._parent.onEnterFrame = scrollTracks;
}
scrollbar_mc.handler_mc.drag_btn.onRelease = scrollbar_mc.handler_mc.drag_btn.onReleaseOutside = function(){
    stopDrag()
    this._parent.isdragging = false;
    this._parent.onEnterFrame = null;
}
function scrollTracks(){
    var scroll_top_limit = 19;
    var scroll_bottom_limit = scrollbar_mc.bg_mc._height - scrollbar_mc.handler_mc._height - 2;
    var list_bottom_limit = 1;
    var list_top_limit = (1-Math.round(playlist_mc.tracks_mc._height))+Math.floor(playlist_mc.mask_mc._height/14)*14
    if(playlist_mc.tracks_mc._height>playlist_mc.mask_mc._height){
        if(scrollbar_mc.handler_mc.isdragging){
            var percent = (scrollbar_mc.handler_mc._y-scroll_top_limit)/(scroll_bottom_limit-scroll_top_limit)
            playlist_mc.tracks_mc._y = (list_top_limit-list_bottom_limit)*percent+list_bottom_limit;
        }else{
            if(scrollbar_mc.v==-1){
                if(playlist_mc.tracks_mc._y+14<list_bottom_limit){
                    playlist_mc.tracks_mc._y += 14;
                }else{
                    playlist_mc.tracks_mc._y = list_bottom_limit;
                }
                var percent = (playlist_mc.tracks_mc._y-1)/(list_top_limit-1)
                scrollbar_mc.handler_mc._y = percent*(scroll_bottom_limit - scroll_top_limit)+scroll_top_limit;
            }else if(scrollbar_mc.v==1){
                if(playlist_mc.tracks_mc._y-14>list_top_limit){
                    playlist_mc.tracks_mc._y -= 14;
                }else{
                    playlist_mc.tracks_mc._y = list_top_limit;
                }
                var percent = (playlist_mc.tracks_mc._y-1)/(list_top_limit-1)
                scrollbar_mc.handler_mc._y = percent*(scroll_bottom_limit - scroll_top_limit)+scroll_top_limit;
            }
        }
    }
}
function loadPlaylist(){
    track_display_mc.display_txt.text = LOADING_PLAYLIST_MSG;
    if(track_display_mc.display_txt._width>track_display_mc.mask_mc._width){
        track_display_mc.onEnterFrame = scrollTitle;
    }else{
        track_display_mc.onEnterFrame = null;
        track_display_mc.display_txt._x = 0;
    }

    //playlist
    if(playlist_url){
    
        if(js_playlist){
            Debug.write('here');
            playlist_xml.parseXML(unescape(playlist_url))
            playlist_xml.onLoad(true);
        
        }
        else{
        
            playlist_xml.load(unescape(playlist_url))
            
            }
    }else{
    //single track
        playlist_xml.parseXML(single_music_playlist)
        playlist_xml.onLoad(true);
    }
}

//first click - load playlist
start_btn_mc.start_btn.onPress = function(){
    autoplay = true;
    loadPlaylist();
}


//main
Stage.scaleMode = "noScale"
Stage.align = "LT";
this.onResize = resizeUI;
Stage.addListener(this);
if(!player_title) player_title = DEFAULT_WELCOME_MSG;
track_display_mc.display_txt.autoSize = "left";
track_display_mc.display_txt.text = player_title;
if(track_display_mc.display_txt._width>track_display_mc.mask_mc._width){
    track_display_mc.onEnterFrame = scrollTitle;
}else{
    track_display_mc.onEnterFrame = null;
    track_display_mc.display_txt._x = 0;
}
//start to play automatically if parameter autoplay is present
if(autoplay){
    start_btn_mc.start_btn.onPress();
} else if (autoload){
    loadPlaylist()
}
//customized menu
var my_cm:ContextMenu = new ContextMenu();
my_cm.customItems.push(new ContextMenuItem("Stop", stopTrack));
my_cm.customItems.push(new ContextMenuItem("Play!", playTrack));
my_cm.customItems.push(new ContextMenuItem("Next", nextTrack));
my_cm.customItems.push(new ContextMenuItem("Previous", prevTrack));
my_cm.customItems.push(new ContextMenuItem("Download this song", function(){getURL(playlist_array[track_index].location,"_blank")},true));
my_cm.customItems.push(new ContextMenuItem("Add song to Webjay playlist", function(){getURL("http://webjay.org/poster?media="+escape(playlist_array[track_index].location),"_blank")}));
my_cm.customItems.push(new ContextMenuItem("About Hideout", function(){getURL("http://www.hideout.com.br","_blank")},true));
//my_cm.customItems.push(new ContextMenuItem("Crossfade", function(){}));
//my_cm.customItems.push(new ContextMenuItem("Mando Diao - Paralyzed", function(){}));
my_cm.hideBuiltInItems();
this.menu = my_cm;
resizeUI();

Untitled ActionScript (22-Jun @ 04:04)

yansky

Syntax Highlighted Code

  1. // ==UserScript==
  2. // @name           mumtest2
  3. // @namespace      userscripts.org
  4. // @include        http://www.myspace.com/*
  5. [110 more lines...]

Plain Code

// ==UserScript==
// @name           mumtest2
// @namespace      userscripts.org
// @include        http://www.myspace.com/*
// @include        http://myspace.com/*
// ==/UserScript==

GM_addStyle('#mp3player{display:none;}');

/***
Code by brazil
http://userscripts.org/scripts/show/8204
***/
var ID_LINK_ID = 'ctl00_Main_ctl00_UserBasicInformation1_hlDefaultImage';
var XML_BASE_URL = 'http://mediaservices.myspace.com/services/media/musicplayerxml.ashx?b=';

// -- [Application] -------------
var id = document.getElementById(ID_LINK_ID).href.match(/friendID=(.*)/).pop();
var url = XML_BASE_URL+id;

/***
End of Code by brazil
***/

function processResponse(text){

    var tSplit = text.split('<?xml version="1.0" encoding="iso-8859-1"?>')[1];
    var profile =  new XML(tSplit);
    /*var jsonTracklist = {

      'title':'ZOMGBBQ!', 
      'tracklist':[]

    }

    var i=0;
    for each(var song in profile.playlist.song){
        
        jsonTracklist.tracklist[i] = {
            
            'track':{

                'location': song.@durl,
                'image':song.@imagename,
                'title': song.@title,
                'creator':'múm',            
                'annotation':'',
                'info':'http://www.myspace.com/mumtheband'    

            }
              
        };
        i++;
    }
    
    jsonTracklist = jsonTracklist.toSource().toString().split('(')[1].split(')')[0];
            unsafeWindow.console.log(jsonTracklist);*/
    //var songs = profile.playlist.song;
    //unsafeWindow.console.log(songs);
    var i=0;
    var tracks = '';
    for each(var song in profile.playlist.song){

        tracks += '<track>'+
                        '<title>'+song.@title+'</title>'+
                        '<creator>'+profile.name+'</creator>'+
                        '<location>'+song.@durl+'</location>'+
                        '<image>'+song.@imagename+'</image>'+
                        '<info></info>'+
                        '<identifier>'+i+'</identifier>'+
                    '</track>';
        i++;

    }
    
var tList = '<?xml version="1.0" encoding="UTF-8"?><playlist version="1" xmlns="http://xspf.org/ns/0/">'+
                '<trackList>'+
                    tracks+
                '</trackList>'+
            '</playlist>';

            
    //var npStyle = document.getElementsByTagName('body')[0].textContent.split('object{')[1].split('}')[0];
            
    var newPlaya = document.createElement('embed');
    newPlaya.src="http://forboden.com/misc/flashtes4greasemonkeyt.swf";
    newPlaya.width="438";
    newPlaya.height="283";
    newPlaya.id="newPlaya";
    newPlaya.pluginspage="http://www.macromedia.com/go/getflashplayer";
    newPlaya.type="application/x-shockwave-flash";
    newPlaya.scale="noscale";
    newPlaya.wmode="opaque";
    //newPlaya.setAttribute("style", npStyle);
    newPlaya.setAttribute("allowscriptaccess","always");
    newPlaya.setAttribute("allowfullscreen","true");
    newPlaya.setAttribute("flashvars","js_playlist=yes&playlist_url="+escape(tList)); 

    var origPlaya = document.getElementById('mp3player');
    origPlaya.parentNode.insertBefore(newPlaya, origPlaya);

    origPlaya.parentNode.removeChild(origPlaya);


}
        
GM_xmlhttpRequest({
    method : 'GET', 
    url : url, 
    onload : function(res){
    
        processResponse(res.responseText);
        
    }
});

Untitled ActionScript (22-Jun @ 01:10)

yansky

Syntax Highlighted Code

  1. /*
  2. Copyright (c) 2005, Fabricio Zuardi
  3. All rights reserved.
  4.  
  5. [486 more lines...]

Plain Code

/*
Copyright (c) 2005, Fabricio Zuardi
All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

    * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
    * Neither the name of the author nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
//import Debug.write() utility
import com.interactiveAlchemy.utils.*;

stop();
//autoplay=true
//repeat_playlist = true;
//playlist_size = 3;
//player_title = "customizeable title test"
//song_url = "http://downloads.betterpropaganda.com/music/Imperial_Teen-Ivanka_128.mp3";
//playlist_url = "http://cchits.ning.com/recent/xspf/?xn_auth=no";
//playlist_url = "http://hideout.com.br/shows/radio-test.xspf";
//radio_mode = true;
//song_title = "Imperial Teen - Ivanka";
autoload=true;
//info_button_text = "Add to Cart"
//playlist_url = "http%3A%2F%2Fwebjay%2Eorg%2Fby%2Flucas%5Fgonze%2Flaconic%2Exspf"
//playlist_url= "http://hideout.com.br/tests/hideout2325.xspf"
//constants
DEFAULT_PLAYLIST_URL = "http://hideout.com.br/shows/allshows.xspf";
DEFAULT_WELCOME_MSG = "Hideout XSPF Music Player - by Fabricio Zuardi";
LOADING_PLAYLIST_MSG = "Loading Playlist...";
DEFAULT_LOADED_PLAYLIST_MSG = "- click to start"
DEFAULT_INFOBUTTON_TXT = "Info"
//playlists has priority over songs, if a playlist_url parameter is found the song_url is ignored
//default playlist if none is passed through query string
if(!playlist_url && !js_playlist){
    if(!song_url){
        playlist_url = DEFAULT_PLAYLIST_URL;
    }else{
        single_music_playlist = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><playlist version=\"1\" xmlns = \"http://xspf.org/ns/0/\"><trackList>";
        single_music_playlist += "<track><location>"+song_url+"</location><annotation>"+song_title+"</annotation></track>"
        single_music_playlist += "</trackList></playlist>"
    }
}
info_mc._visible=false;
if(!info_button_text){
    info_button_text = DEFAULT_INFOBUTTON_TXT;
}
info_mc.display_txt.text = info_button_text;

//variables initialization
playlist_array = [];
track_index = 0;
playlist_mc.track_count = 0;
pause_position = 0;
volume_level = 100;
playlist_xml = new XML();
playlist_xml.ignoreWhite = true;
playlist_xml.onLoad = playlistLoaded;
mysound = new Sound(this);
playlist_listener = new Object();
playlist_list.addEventListener("change", playlist_listener)
//play_btn.onPress = playTrack;
//functions
//xml parser
//var jsonPlaylist;
function jsoNplaylistLoaded(j){

    var jList = j;
    playlist_title = jList.title;
    var tracks_array = [];
    for(var i=0;i<jList.tracklist.length;i++){

        addTrack(track_obj.label);
    }
                    
    playlist_array = jList.tracklist;
    if(!playlist_size) playlist_size = playlist_array.length;
    playlist_mc.tracks_mc["track_"+track_index+"_mc"].bg_mc.gotoAndStop(2)
    if(autoplay){
        loadTrack()
    }else{
        start_btn_mc.start_btn.onPress = loadTrack;
        track_display_mc.display_txt.text = playlist_title+" "+DEFAULT_LOADED_PLAYLIST_MSG;
        if(track_display_mc.display_txt._width>track_display_mc.mask_mc._width){
            track_display_mc.onEnterFrame = scrollTitle;
        }else{
            track_display_mc.onEnterFrame = null;
            track_display_mc.display_txt._x = 0;
        }
    }

}

function playlistLoaded (success){
    if(success){
        var root_node = this.firstChild;
        for(var node = root_node.firstChild; node != null; node = node.nextSibling){
            if(node.nodeName == "title"){
                playlist_title = node.firstChild.nodeValue;
            }
            if(node.nodeName == "trackList"){
                //tracks
                var tracks_array = [];
                for(var track_node = node.firstChild; track_node != null; track_node = track_node.nextSibling){
                    var track_obj = new Object()
                    //track attributes
                    for(var track_child = track_node.firstChild; track_child != null; track_child = track_child.nextSibling){
                        if(track_child.nodeName=="location"){
                            track_obj.location = track_child.firstChild.nodeValue
                        }
                        if(track_child.nodeName=="image"){
                            track_obj.image = track_child.firstChild.nodeValue
                        }
                        if(track_child.nodeName=="title"){
                            track_obj.title = track_child.firstChild.nodeValue
                        }
                        if(track_child.nodeName=="creator"){
                            track_obj.creator = track_child.firstChild.nodeValue
                        }
                        if(track_child.nodeName=="annotation"){
                            track_obj.annotation = track_child.firstChild.nodeValue
                        }
                        if(track_child.nodeName=="info"){
                            track_obj.info = track_child.firstChild.nodeValue
                        }
                    }
                    track_obj.label = (tracks_array.length+1) +". ";
                    if(track_obj.title) {
                        if(track_obj.creator) {
                            track_obj.label += track_obj.creator+' - ';
                        }
                        track_obj.label += track_obj.title;
                    } else {
                        track_obj.label += track_obj.annotation;
                    }
                    tracks_array.push(track_obj)
                    addTrack(track_obj.label);
                }
            }
        }
        playlist_array = tracks_array;
        if(!playlist_size) playlist_size = playlist_array.length;
        playlist_mc.tracks_mc["track_"+track_index+"_mc"].bg_mc.gotoAndStop(2)
        if(autoplay){
            loadTrack()
        }else{
            start_btn_mc.start_btn.onPress = loadTrack;
            track_display_mc.display_txt.text = playlist_title+" "+DEFAULT_LOADED_PLAYLIST_MSG;
            if(track_display_mc.display_txt._width>track_display_mc.mask_mc._width){
                track_display_mc.onEnterFrame = scrollTitle;
            }else{
                track_display_mc.onEnterFrame = null;
                track_display_mc.display_txt._x = 0;
            }
        }
    }else{
        annotation_txt.text = "Error opening "+playlist_url;
    }
}

playlist_listener.change = function(eventObject){
  annotation_txt.text = playlist_list.selectedItem.annotation;
  location_txt.text = playlist_list.selectedItem.location;
}

function loadTrack(){

    //Radio Mode feature by nosferathoo, more info in: https://sourceforge.net/tracker/index.php?func=detail&aid=1341940&group_id=128363&atid=711474
    if (radio_mode && track_index==playlist_size-1) {
        playlist_url=playlist_array[track_index].location;
        for (i=0;i<playlist_mc.track_count;++i) {
            removeMovieClip(playlist_mc.tracks_mc["track_"+i+"_mc"]);
        }
        playlist_mc.track_count=0;
        playlist_size=0;
        track_index=0;
        autoload=true;
        autoplay=true;
        loadPlaylist();
        return(0);
    }

    start_btn_mc.start_btn._visible = false;
    track_display_mc.display_txt.text = playlist_array[track_index].label;
    if(track_display_mc.display_txt._width>track_display_mc.mask_mc._width){
        track_display_mc.onEnterFrame = scrollTitle;
    }else{
        track_display_mc.onEnterFrame = null;
        track_display_mc.display_txt._x = 0;
    }
    cover_mc.content_mc["photo"+last_track_index].removeMovieClip();
    mysound.loadSound(playlist_array[track_index].location,true);
    play_mc.gotoAndStop(2)

    //image from playlist
    if(playlist_array[track_index].image!=undefined){
        cover_mc.content_mc.createEmptyMovieClip("photo"+track_index,track_index)
        cover_mc.content_mc["photo"+track_index].loadMovie(playlist_array[track_index].image)
    }else{
    }
    //info button
    if(playlist_array[track_index].info!=undefined){
        info_mc._visible = true;
        info_mc.info_btn.onPress = function(){
            getURL(playlist_array[track_index].info,"_blank")
        }
    }else{
        info_mc._visible = false;
    }
    _root.onEnterFrame=function(){
        //HACK doesnt need to set the volume at every enterframe
        mysound.setVolume(this.volume_level)
        var sound_load_percent = (mysound.getBytesLoaded()/mysound.getBytesTotal())*100
        track_display_mc.loader_mc.load_bar_mc._xscale = sound_load_percent;
        var image_load_percent = (cover_mc.content_mc["photo"+track_index].getBytesLoaded()/cover_mc.content_mc["photo"+track_index].getBytesTotal())*100
        cover_mc.load_bar_mc._xscale = image_load_percent;
        if((cover_mc.content_mc["photo"+track_index].getBytesLoaded()>4)&&(image_load_percent==100)){
            //image loaded
            //make image fit
            cover_mc.content_mc["photo"+track_index]._width = cover_mc.load_bar_mc._width
            cover_mc.content_mc["photo"+track_index]._height = cover_mc.load_bar_mc._height
        }
    }
}

stop_btn.onRelease = stopTrack;
play_mc.play_btn.onRelease = playTrack
next_btn.onRelease = nextTrack
prev_btn.onRelease = prevTrack
mysound.onSoundComplete = nextTrack;
volume_mc.volume_btn.onPress = volumeChange;
volume_mc.volume_btn.onRelease = volume_mc.volume_btn.onReleaseOutside = function(){
    this._parent.onMouseMove = this._parent.onMouseDown = null;
}

function volumeChange(){
    this._parent.onMouseMove = this._parent.onMouseDown = function(){
        var percent = (this._xmouse/this._width)*100
        if(percent>100)percent=100;
        if(percent<0)percent=0;
        this.volume_bar_mc._xscale = percent
        this._parent.volume_level = percent;
        mysound.setVolume(percent)
    }
}

function stopTrack() {
    mysound.stop();
    play_mc.gotoAndStop(1)
    mysound.stop();
    mysound.start();
    mysound.stop();
    _root.pause_position = 0;

};
function playTrack() {
    if(play_mc._currentframe==1){ //play
        seekTrack(_root.pause_position)
        play_mc.gotoAndStop(2)
    }else if(play_mc._currentframe==2){
        _root.pause_position = mysound.position;
        mysound.stop();
        play_mc.gotoAndStop(1)
    }

};
function seekTrack(p_offset:Number){
    mysound.stop()
    mysound.start(int((p_offset)/1000),1)
}
function nextTrack(){
    if(track_index<playlist_size-1){
        last_track_index = track_index;
        track_index ++;
        loadTrack();
    }else{
        if(repeat_playlist){
            last_track_index = track_index;
            track_index = 0;
            loadTrack()
        }
    }
    playlist_mc.tracks_mc["track_"+last_track_index+"_mc"].bg_mc.gotoAndStop(1)
    playlist_mc.tracks_mc["track_"+track_index+"_mc"].bg_mc.gotoAndStop(2)
}

function prevTrack(){
    if(track_index>0){
        last_track_index = track_index;
        track_index --;
        loadTrack();
    }
    playlist_mc.tracks_mc["track_"+last_track_index+"_mc"].bg_mc.gotoAndStop(1)
    playlist_mc.tracks_mc["track_"+track_index+"_mc"].bg_mc.gotoAndStop(2)
}

function scrollTitle(){
    track_display_mc.display_txt._x -= 5;
    if (track_display_mc.display_txt._x+track_display_mc.display_txt._width<0){
        track_display_mc.display_txt._x = track_display_mc.mask_mc._width;
    }
}

function resizeUI(){
    bg_mc._width = Stage.width;
    track_display_mc.loader_mc._width = Stage.width - track_display_mc._x - 2;
    track_display_mc.mask_mc._width = track_display_mc.loader_mc._width-3;
    if(track_display_mc.display_txt._width>track_display_mc.mask_mc._width){
        track_display_mc.onEnterFrame = scrollTitle;
    }else{
        track_display_mc.onEnterFrame = null;
        track_display_mc.display_txt._x = 0;
    }
    volume_mc._x = Stage.width - 22;
    start_btn_mc._xscale = Stage.width;
    //playlist area tinnier that the album cover
    if(Stage.width<2.5*cover_mc._width){
        //
        if (Stage.height>2.5*cover_mc._height){
            //send album cover to bottom
            cover_mc._y = Stage.height - cover_mc._height -2- info_mc._height -2;
            info_mc._y = Stage.height - info_mc._height -2;
            var covervisible =1;
        }else{
            var covervisible =0;
            //hide album cover
            cover_mc._y = Stage.height;
        }
        //send playlist to left
        playlist_mc._x = cover_mc._x;
        scrollbar_mc.bg_mc._height = Stage.height - (19+(cover_mc._height+info_mc._height+4)*covervisible);
        playlist_mc.bg_mc._height = Stage.height - (19+(cover_mc._height+info_mc._height+4)*covervisible);
        playlist_mc.mask_mc._height = Stage.height - (23+(cover_mc._height+info_mc._height+4)*covervisible);
    }else{
        cover_mc._y = 17;
        info_mc._y = 153;
        playlist_mc._x = 138;
        scrollbar_mc.bg_mc._height = Stage.height -19;
        playlist_mc.bg_mc._height = Stage.height - 19;
        playlist_mc.mask_mc._height = Stage.height - 23;
    }
    scrollbar_mc._x = Stage.width - 12;
    playlist_mc.mask_mc._width = Stage.width - (playlist_mc._x + 19);
    playlist_mc.bg_mc._width = Stage.width - (playlist_mc._x + 14);
}
function addTrack(track_label){
    if(playlist_mc.track_count>0) {
        playlist_mc.tracks_mc.track_0_mc.duplicateMovieClip("track_"+playlist_mc.track_count+"_mc",playlist_mc.track_count);
    }
    playlist_mc.tracks_mc["track_"+playlist_mc.track_count+"_mc"]._y += playlist_mc.track_count*14;
    playlist_mc.tracks_mc["track_"+playlist_mc.track_count+"_mc"].display_txt.autoSize = "left";
    playlist_mc.tracks_mc["track_"+playlist_mc.track_count+"_mc"].display_txt.text = track_label;
    playlist_mc.tracks_mc["track_"+playlist_mc.track_count+"_mc"].bg_mc.index = playlist_mc.track_count;
    playlist_mc.tracks_mc["track_"+playlist_mc.track_count+"_mc"].bg_mc.select_btn.onPress = function(){
        last_track_index = track_index;
        playlist_mc.tracks_mc["track_"+track_index+"_mc"].bg_mc.gotoAndStop(1)
        track_index = this._parent.index;
        playlist_mc.tracks_mc["track_"+track_index+"_mc"].bg_mc.gotoAndStop(2)
        loadTrack();
    }
    playlist_mc.track_count ++;
}
//scroll

scrollbar_mc.up_btn.onPress = function(){
    this._parent.v = -1;
    this._parent.onEnterFrame = scrollTracks;
}
scrollbar_mc.down_btn.onPress = function(){
    this._parent.v = 1;
    this._parent.onEnterFrame = scrollTracks;
}
scrollbar_mc.up_btn.onRelease = scrollbar_mc.down_btn.onRelease = function(){
    this._parent.onEnterFrame = null;
}
scrollbar_mc.handler_mc.drag_btn.onPress = function(){
    var scroll_top_limit = 19;
    var scroll_bottom_limit = scrollbar_mc.bg_mc._height - scrollbar_mc.handler_mc._height - 2;
    this._parent.startDrag(false,this._parent._x,scroll_top_limit,this._parent._x,scroll_bottom_limit)
    this._parent.isdragging = true;
    this._parent.onEnterFrame = scrollTracks;
}
scrollbar_mc.handler_mc.drag_btn.onRelease = scrollbar_mc.handler_mc.drag_btn.onReleaseOutside = function(){
    stopDrag()
    this._parent.isdragging = false;
    this._parent.onEnterFrame = null;
}
function scrollTracks(){
    var scroll_top_limit = 19;
    var scroll_bottom_limit = scrollbar_mc.bg_mc._height - scrollbar_mc.handler_mc._height - 2;
    var list_bottom_limit = 1;
    var list_top_limit = (1-Math.round(playlist_mc.tracks_mc._height))+Math.floor(playlist_mc.mask_mc._height/14)*14
    if(playlist_mc.tracks_mc._height>playlist_mc.mask_mc._height){
        if(scrollbar_mc.handler_mc.isdragging){
            var percent = (scrollbar_mc.handler_mc._y-scroll_top_limit)/(scroll_bottom_limit-scroll_top_limit)
            playlist_mc.tracks_mc._y = (list_top_limit-list_bottom_limit)*percent+list_bottom_limit;
        }else{
            if(scrollbar_mc.v==-1){
                if(playlist_mc.tracks_mc._y+14<list_bottom_limit){
                    playlist_mc.tracks_mc._y += 14;
                }else{
                    playlist_mc.tracks_mc._y = list_bottom_limit;
                }
                var percent = (playlist_mc.tracks_mc._y-1)/(list_top_limit-1)
                scrollbar_mc.handler_mc._y = percent*(scroll_bottom_limit - scroll_top_limit)+scroll_top_limit;
            }else if(scrollbar_mc.v==1){
                if(playlist_mc.tracks_mc._y-14>list_top_limit){
                    playlist_mc.tracks_mc._y -= 14;
                }else{
                    playlist_mc.tracks_mc._y = list_top_limit;
                }
                var percent = (playlist_mc.tracks_mc._y-1)/(list_top_limit-1)
                scrollbar_mc.handler_mc._y = percent*(scroll_bottom_limit - scroll_top_limit)+scroll_top_limit;
            }
        }
    }
}
function loadPlaylist(){
    track_display_mc.display_txt.text = LOADING_PLAYLIST_MSG;
    if(track_display_mc.display_txt._width>track_display_mc.mask_mc._width){
        track_display_mc.onEnterFrame = scrollTitle;
    }else{
        track_display_mc.onEnterFrame = null;
        track_display_mc.display_txt._x = 0;
    }

    //playlist
    if(playlist_url){
    
        if(js_playlist){
            Debug.write('here');
            Debug.write(decodeURI(playlist_url));
            jsoNplaylistLoaded(decodeURI(playlist_url));
        
        }
        else{
        
            playlist_xml.load(unescape(playlist_url))
            
            }
    }else{
    //single track
        playlist_xml.parseXML(single_music_playlist)
        playlist_xml.onLoad(true);
    }
}

//first click - load playlist
start_btn_mc.start_btn.onPress = function(){
    autoplay = true;
    loadPlaylist();
}


//main
Stage.scaleMode = "noScale"
Stage.align = "LT";
this.onResize = resizeUI;
Stage.addListener(this);
if(!player_title) player_title = DEFAULT_WELCOME_MSG;
track_display_mc.display_txt.autoSize = "left";
track_display_mc.display_txt.text = player_title;
if(track_display_mc.display_txt._width>track_display_mc.mask_mc._width){
    track_display_mc.onEnterFrame = scrollTitle;
}else{
    track_display_mc.onEnterFrame = null;
    track_display_mc.display_txt._x = 0;
}
//start to play automatically if parameter autoplay is present
if(autoplay){
    start_btn_mc.start_btn.onPress();
} else if (autoload){
    loadPlaylist()
}
//customized menu
var my_cm:ContextMenu = new ContextMenu();
my_cm.customItems.push(new ContextMenuItem("Stop", stopTrack));
my_cm.customItems.push(new ContextMenuItem("Play!", playTrack));
my_cm.customItems.push(new ContextMenuItem("Next", nextTrack));
my_cm.customItems.push(new ContextMenuItem("Previous", prevTrack));
my_cm.customItems.push(new ContextMenuItem("Download this song", function(){getURL(playlist_array[track_index].location,"_blank")},true));
my_cm.customItems.push(new ContextMenuItem("Add song to Webjay playlist", function(){getURL("http://webjay.org/poster?media="+escape(playlist_array[track_index].location),"_blank")}));
my_cm.customItems.push(new ContextMenuItem("About Hideout", function(){getURL("http://www.hideout.com.br","_blank")},true));
//my_cm.customItems.push(new ContextMenuItem("Crossfade", function(){}));
//my_cm.customItems.push(new ContextMenuItem("Mando Diao - Paralyzed", function(){}));
my_cm.hideBuiltInItems();
this.menu = my_cm;
resizeUI();

Untitled JavaScript (20-Jun @ 15:03)

yansky

Syntax Highlighted Code

  1. jQuery = unsafeWindow.jQuery;
  2. jQuery.fn.farbtastic = function (callback) {
  3.   $.farbtastic(this, callback);
  4.   return this;
  5. [15 more lines...]

Plain Code

jQuery = unsafeWindow.jQuery;
jQuery.fn.farbtastic = function (callback) {
  $.farbtastic(this, callback);
  return this;
};

jQuery.farbtastic = function (container, callback) {
  var container = $(container).get(0);

  //return container.farbtastic || ( container.farbtastic = new jQuery._farbtastic(container, callback));     
  
  return jQuery._farbtastic(container, callback); 
  
}

jQuery._farbtastic = function (container, callback) {

  //code

}

Untitled JavaScript (15-Jun @ 08:52)

yansky

Syntax Highlighted Code

  1. xdoc.getElementById("scrapeInstall").addEventListener('mouseup', function(){
  2.  
  3.     var sfp = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
  4.     sfp.init(window, "Install New Script", nsIFilePicker.modeOpen);
  5. [15 more lines...]

Plain Code

xdoc.getElementById("scrapeInstall").addEventListener('mouseup', function(){

    var sfp = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
    sfp.init(window, "Install New Script", nsIFilePicker.modeOpen);
    sfp.appendFilter("Scrape Scripts", "*.scrapeB.js");

    var rv = sfp.show();
    if (rv == nsIFilePicker.returnOK || rv == nsIFilePicker.returnReplace) {

        var sfPath = sfp.file.path;
        var sN = sfPath.slice(sfPath.lastIndexOf('')+1);
        var sfileOriginal = FileIO.open(sfPath);
        var sfileCopy = FileIO.open(fp+''+sN);
        var sstr = FileIO.read(sfileOriginal);
        FileIO.write(sfileCopy, sstr);    
        var prompts = Components.classes["@mozilla.org/embedcomp/prompt-service;1"].getService(Components.interfaces.nsIPromptService);
        prompts.alert(window, "", "The New Script has Been Installed");
    }        

}, false);

Untitled XML (15-Jun @ 08:51)

yansky

Syntax Highlighted Code

  1. <?xml version="1.0"?>
  2. <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
  3. <?xml-stylesheet href="style/style.css" type="text/css"?>
  4. <window id="main" persist="screenX screenY width height" title="ScrapeBot3000" width="600" orient="horizontal" height="600" xmlns:html="http://www.w3.org/1999/xhtml" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
  5. [93 more lines...]

Plain Code

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<?xml-stylesheet href="style/style.css" type="text/css"?>
<window id="main" persist="screenX screenY width height" title="ScrapeBot3000" width="600" orient="horizontal" height="600" xmlns:html="http://www.w3.org/1999/xhtml" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="text/javascript" src="scrapeB.js"/>    

    <vbox id="holder" flex="1">
        <toolbox>
            <toolbar id="findfilesToolbar">
                <menubar id="scrapeMenubar">
                    <menu id="scrapeFileMenu" label="File">
                        <menupopup id="filePopup">
                            <menuitem id="scrapeInstall" label="Install Script"/>
                            <menuseparator/>
                            <menuitem id="programExit" label="Exit"/>
                        </menupopup>
                    </menu>
                    <menu id="scrapeSettingsMenu" label="Settings">
                        <menupopup id="edit-popup">
                            <menuitem id="scrapePreferences" label="Set Download Folder"/>
                        </menupopup>
                    </menu>
                    <menu id="scrapeHelpMenu" label="Help">
                        <menupopup id="help-popup">
                            <menuitem label="Help Contents"/>
                            <menuitem label="About"/>
                            <menuitem label="Donate"/>
                        </menupopup>
                    </menu>                    
                </menubar>
            </toolbar>
        </toolbox>
        <menuseparator/>
        <spacer style="height: 20px"/>
       
        <description id="descr">
            I can haz intarwebs?
        </description>

        <spacer style="height: 20px"/>

        
        <vbox id="selectContainer">
            
                <menulist id="selectScript">
                    <menupopup id="selectScriptMP">
                        <menuitem value="Select A Script To Run" label="Select A Script To Run"/>
                    </menupopup>
                </menulist>
            
           
                <groupbox id="sInfo">
                    <caption label="Script Info:"/>
                    <label class="sInfoLabels" value="Filename:"/>
                    <description value=""/>
                    <label class="sInfoLabels" value="Script Name:"/>
                    <description value=""/>
                    <label class="sInfoLabels" value="Version:"/>
                    <description value=""/>
                    <label class="sInfoLabels" value="Description:"/>
                    <description value=""/>
                    <label class="sInfoLabels" value="Author:"/>
                    <description value=""/>    
                    <label class="sInfoLabels" value="Start Page:"/>
                    <description id="stPage" value=""/>                        
                </groupbox>
            
        </vbox>
        
        <vbox id="pBucket">
            <label value="Enter Photobucket URL:"/>
            <textbox id="pbucketU" size="300"/>
        </vbox>
        
        <spacer style="height: 20px"/>
        
        <hbox id="rsButtons">    
            <button id="runButton" label="Run Script"/>
            <button id="stopButton" label="Stop Script"/>
        </hbox>
        <spacer style="height: 10px"/>
        <hbox>
            <progressmeter id="progress" value="0%"/>
            <image id="progressImage" height="16px" width="16px" src="images/ajax-loader.gif"/>
            <label id="progressLabel" value="Finished"/>
            <spacer flex="1"/>
        </hbox>   

        <groupbox flex="1">
          <caption label="current page"/><label id="currentPage" value=""/>
          <browser type="content" src="" flex="1" id="showResponse"/>
        </groupbox>
    </vbox>


    
</window>