2013-08-06 08:08:35 -07:00
/ * *
* XDCC Parser
* | - Javascript Module
*
* This software is free software and you are permitted to
* modify and redistribute it under the terms of the GNU General
* Public License version 3 as published by the Free Sofware
* Foundation .
*
* @ link http : //xdccparser.is-fabulo.us/
* @ version 1.2 . 0
* @ author Alex 'xshadowfire' Yu < ayu @ xshadowfire . net >
* @ author DrX
* @ copyright 2008 - 2009 Alex Yu and DrX
* /
function p ( ) {
this . k = new Array ( ) ;
this . lastType = 0 ;
this . lastValue = "" ;
this . url = "" ;
this . init = function ( url ) {
this . url = url ;
this . table = document . getElementById ( 'listtable' ) ;
this . status = document . getElementById ( 'status' ) ;
this . searchdiv = document . getElementById ( 'searchdiv' ) ;
this . listname = document . getElementById ( 'listname' ) ;
this . tablehead = "<table cellspacing='0' id='listtable'><tr class='animeColumn'><th class='number'>Bot <a href='javascript:p.k.sort(p.botDesc);p.flush();'>↑</a> <a href='javascript:p.k.sort(p.botAsc);p.flush();'>↓</a></th><th class='number'>Pack <a href='javascript:p.k.sort(p.numberDesc);p.flush();'>↑</a> <a href='javascript:p.k.sort(p.numberAsc);p.flush();'>↓</a></th><th class='number'>Size <a href='javascript:p.k.sort(p.sizeDesc);p.flush();'>↑</a> <a href='javascript:p.k.sort(p.sizeAsc);p.flush();'>↓</a></th><th class='name'>Filename <a href='javascript:p.k.sort(p.nameDesc);p.flush();'>↑</a> <a href='javascript:p.k.sort(p.nameAsc);p.flush();'>↓</a></th></tr>" ;
this . search ( ) ;
} ;
this . ajax _init = function ( ) {
try {
this . ajax _request = new XMLHttpRequest ( ) ;
} catch ( trymicrosoft ) {
try {
this . ajax _request = new ActiveXObject ( "Msxml2.XMLHTTP" ) ;
} catch ( othermicrosoft ) {
try {
this . ajax _request = new ActiveXObject ( "Microsoft.XMLHTTP" ) ;
} catch ( failed ) {
this . ajax _request = null ;
}
}
}
if ( ! this . ajax _request )
alert ( "Sorry, your browser is to old. To use this page, please make yourself happier and download a newer browser." ) ;
} ;
this . flush = function ( ) {
var buffer = this . tablehead ;
if ( this . k . length < 1 ) {
buffer += "<tr class='anime0' id='none' ><td class='none' colspan='4'>No packs found.</td></tr>" ;
} else {
for ( i = 0 ; i < this . k . length ; i ++ ) {
var size = ( this . k [ i ] [ 's' ] == 0 ) ? "<1" : this . k [ i ] [ 's' ] ;
size += "M" ;
buffer += "<tr class='anime" + ( i % 2 ) + "' onclick=\"p.genCommand('" + this . k [ i ] [ 'b' ] + "'," + this . k [ i ] [ 'n' ] + ");\"><td class='number'>" + this . k [ i ] [ 'b' ] + "</td><td class='number'>" + this . k [ i ] [ 'n' ] + "</td><td class='number'>" + size + "</td><td class='name'>" + this . k [ i ] [ 'f' ] + "</td></tr>" ;
}
}
buffer += "</table>" ;
this . listname . innerHTML = this . getLastName ( ) ;
this . table . innerHTML = buffer ;
this . status . style . display = 'none' ;
} ;
this . getLastName = function ( ) {
var name = ( this . lastType == 1 ) ? "Search: " : "Bot: " ;
name += this . lastValue ;
2013-08-06 08:27:11 -07:00
name += ( this . lastType != 1 ) ? ' [<a href="rss.php?nick=' + this . lastValue + '">rss</a>]' : "" ;
2013-08-06 08:08:35 -07:00
return name ;
} ;
this . getLastURI = function ( ) {
var param = ( this . lastType == 1 ) ? "?search=" : "?nick=" ;
param += this . lastValue ;
prompt ( 'Permalink:' , this . url + param ) ;
} ;
this . genCommand = function ( nick , pack ) {
prompt ( 'Paste this in your irc client:' , '/msg ' + nick + ' xdcc send #' + pack ) ;
} ;
this . search = function ( ) {
if ( document . getElementById ( 'search' ) . value != "" && document . getElementById ( 'search' ) . value != " " ) {
var search = document . getElementById ( 'search' ) . value . replace ( /\+/ig , "%2B" ) ;
this . request ( "t=" + search ) ;
this . lastType = 1 ;
this . lastValue = search ;
} else {
this . table . innerHTML = this . tablehead + "<tr class='anime0' id='start'><td class='none' colspan='4'>Please select a bot or enter search terms to start.</td></tr></table>" ;
}
} ;
this . nickPacks = function ( nick ) {
this . request ( "nick=" + nick ) ;
this . lastType = 2 ;
this . lastValue = nick ;
} ;
this . numberAsc = function ( a , b ) {
var x = a . n ;
var y = b . n ;
return ( ( x < y ) ? - 1 : ( ( x > y ) ? 1 : 0 ) ) ;
} ;
this . numberDesc = function ( a , b ) {
var x = a . n ;
var y = b . n ;
return ( ( x < y ) ? 1 : ( ( x > y ) ? - 1 : 0 ) ) ;
} ;
this . sizeAsc = function ( a , b ) {
var x = a . s ;
var y = b . s ;
return ( ( x < y ) ? - 1 : ( ( x > y ) ? 1 : 0 ) ) ;
} ;
this . sizeDesc = function ( a , b ) {
var x = a . s ;
var y = b . s ;
return ( ( x < y ) ? 1 : ( ( x > y ) ? - 1 : 0 ) ) ;
} ;
this . nameAsc = function ( a , b ) {
var x = a . f . toLowerCase ( ) ;
var y = b . f . toLowerCase ( ) ;
return ( ( x < y ) ? - 1 : ( ( x > y ) ? 1 : 0 ) ) ;
} ;
this . nameDesc = function ( a , b ) {
var x = a . f . toLowerCase ( ) ;
var y = b . f . toLowerCase ( ) ;
return ( ( x < y ) ? 1 : ( ( x > y ) ? - 1 : 0 ) ) ;
} ;
this . botAsc = function ( a , b ) {
var x = a . b . toLowerCase ( ) ;
var y = b . b . toLowerCase ( ) ;
return ( ( x < y ) ? - 1 : ( ( x > y ) ? 1 : 0 ) ) ;
} ;
this . botDesc = function ( a , b ) {
var x = a . b . toLowerCase ( ) ;
var y = b . b . toLowerCase ( ) ;
return ( ( x < y ) ? 1 : ( ( x > y ) ? - 1 : 0 ) ) ;
} ;
this . request = function ( request ) {
request = "search.php?" + request ;
this . center _status ( ) ;
this . ajax _init ( ) ;
this . ajax _request . onreadystatechange = this . ajax _callback ;
this . ajax _request . open ( "GET" , request , true ) ;
this . ajax _request . send ( null ) ;
this . inited = true ;
} ;
this . ajax _callback = function ( ) {
if ( p . ajax _request . readyState == 4 && p . ajax _request . status == 200 ) {
p . k = new Array ( ) ;
eval ( p . ajax _request . responseText ) ;
p . flush ( ) ;
}
} ;
this . center _status = function ( ) {
var my _width = 0 ;
var my _height = 0 ;
if ( typeof ( window . innerWidth ) == 'number' ) {
my _width = window . innerWidth ;
my _height = window . innerHeight ;
} else if ( document . documentElement && ( document . documentElement . clientWidth || document . documentElement . clientHeight ) ) {
my _width = document . documentElement . clientWidth ;
my _height = document . documentElement . clientHeight ;
} else if ( document . body && ( document . body . clientWidth || document . body . clientHeight ) ) {
my _width = document . body . clientWidth ;
my _height = document . body . clientHeight ;
}
this . status . style . position = 'absolute' ;
this . status . style . display = 'block' ;
this . status . style . zIndex = - 1 ;
var divheight = parseInt ( this . status . style . height , 10 ) ? parseInt ( this . status . style . height , 10 ) : parseInt ( this . status . offsetHeight , 10 ) ;
var divwidth = parseInt ( this . status . style . width , 10 ) ? parseInt ( this . status . style . width , 10 ) : parseInt ( this . status . offsetWidth , 10 ) ;
divheight = divheight ? divheight : 200 ;
divwidth = divwidth ? divwidth : 400 ;
var scrollY = this . getScrollY ( ) ;
var setX = ( my _width - divwidth ) / 2 ;
var setY = ( my _height - divheight ) / 2 + scrollY ;
setX = ( setX < 0 ) ? 0 : setX ;
setY = ( setY < 0 ) ? 0 : setY ;
this . status . style . left = setX + "px" ;
this . status . style . top = setY + "px" ;
this . status . style . zIndex = 99 ;
} ;
this . getScrollY = function ( ) {
var scrollY = 0 ;
if ( document . documentElement && document . documentElement . scrollTop ) {
scrollY = document . documentElement . scrollTop ;
} else if ( document . body && document . body . scrollTop ) {
scrollY = document . body . scrollTop ;
} else if ( window . pageYOffset ) {
scrollY = window . pageYOffset ;
} else if ( window . scrollY ) {
scrollY = window . scrollY ;
}
return scrollY ;
} ;
this . goTop = function ( ) {
var dx = 0 ;
var dy = 0 ;
var bx = 0 ;
var by = 0 ;
if ( document . documentElement ) {
dx = document . documentElement . scrollLeft || 0 ;
dy = document . documentElement . scrollTop || 0 ;
}
if ( document . body ) {
bx = document . body . scrollLeft || 0 ;
by = document . body . scrollTop || 0 ;
}
var wx = window . scrollX || 0 ;
var wy = window . scrollY || 0 ;
var x = Math . max ( wx , Math . max ( bx , dx ) ) ;
var y = Math . max ( wy , Math . max ( by , dy ) ) ;
window . scrollTo ( Math . floor ( x / 1.5 ) , Math . floor ( y / 1.5 ) ) ;
if ( x > 0 || y > 0 ) {
window . setTimeout ( "p.goTop()" , 15 ) ;
}
} ;
this . setSkin = function ( id ) {
document . getElementById ( "skin" ) . href = "style" + id + ".css" ;
var exdate = new Date ( ) ;
exdate . setDate ( exdate . getDate ( ) + 7 ) ;
document . cookie = "skin" + "=" + escape ( id ) + ";expires=" + exdate . toGMTString ( ) ;
} ;
}
var p = new p ( ) ;
window . onscroll = function ( ) {
var scrollY = p . getScrollY ( ) ;
if ( scrollY > 76 ) {
p . searchdiv . style . top = ( scrollY - 79 ) + "px" ;
} else {
p . searchdiv . style . top = "0px" ;
}
} ;