function $( id ) {
return document.getElementById( id );
}
Dr = {
dR: 0.3,
Try: function() {
for( var i = 0; i < arguments.length; i++ ) {
var trying = arguments[ i ];
try {
return trying();
} catch( e ) {}
}
},
emptyFunction: function() {},
ie: document.all,
moz: document.getElementById && !document.all,
safari: navigator.userAgent.indexOf( 'Safari' ) != -1
}
DrPage = {
getScrollTop: function() {
return Dr.ie ? document.body.scrollTop : window.pageYOffset
},
getScrollLeft: function() {
return Dr.ie ? document.body.scrollLeft : window.pageXOffset
},
getWidth: function() {
if( typeof( window.innerWidth ) == 'number' ) { return window.innerWidth; }
if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) { return document.documentElement.clientWidth; }
if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) { return document.body.clientWidth; }
},
getHeight: function() {
if( typeof( window.innerHeight ) == 'number' ) { return window.innerHeight; }
if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) { return document.documentElement.clientHeight; }
if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) { return document.body.clientHeight; }
}
}
DrEvent = {
getX: function( e ) {
return Dr.ie ? event.clientX + document.body.scrollLeft : e.pageX;
},
getY: function( e ) {
return Dr.ie ? event.clientY + document.body.scrollTop : e.pageY;
}
}
DrElement = {
drElement: 0.2,
setStyle: function( element, style ) {
for( n in style ) {
if ( typeof n != 'function' ) {
element.style[ n ] = style[ n ];
}
}
},
searchClass: function( element, className ) {
if( !element.className ) {
return false;
}
var classNames = element.className.split( ' ' );
for( var i = 0; i < classNames.length; i++ ) {
if( classNames[ i ] == className ) {
return true;
}
}
return false;
},
create: function( parent, tagName, id, style, classNames ) {
var element = document.createElement( tagName );
if( id ) { element.setAttribute( 'id', id ); }
if( style ) { DrElement.setStyle( element, style ); }
if( classNames ) { element.className = typeof classNames == 'string' ? classNames : classNames.join( ' ' ); }
parent.appendChild( element );
return element;
},
setX: function( element, x ) {
element.style.left = parseInt( x ) + 'px';
},
setY: function( element, y ) {
element.style.top = parseInt( y ) + 'px';
},
moveTo: function( element, x, y ) {
DrElement.setX( element, x );
DrElement.setY( element, y );
},
show: function( element ) {
element.style.display = 'block';
},
showInline: function( element ) {
element.style.display = 'inline';
},
hide: function( element ) {
element.style.display = 'none';
},
setOpacity: function( element, opacity ) {
if( Dr.moz ) {
element.style.opacity = opacity / 100;
} else if( Dr.ie ) {
if( element.style.filter.indexOf( 'alpha' ) == -1 ) {
element.style.filter += ' alpha(opacity=' + opacity + ')';
} else {
element.filters.alpha.opacity = opacity;
}
}
},
fadeOut: function( element, time, kill, delay ) {
if( delay > 0 ) {
setTimeout( 'DrElement.fadeOut( $(\'' + element.id + '\'), ' + time + ', ' + kill + ')', delay );
return;
}
if( !time ) { time = 500; }
var steps = parseInt( time / 50 );
for( var i = steps; i > 0; i-- ) {
setTimeout( 'DrElement.setOpacity( $( \'' + element.id + '\'), ' + ( 100 * i / steps ) + ' ) ', 50 * ( steps - i ) );
}
setTimeout( 'DrElement.hide( $(\'' + element.id + '\' ) )', time + 50 );
if( kill ) {
setTimeout( 'DrElement.kill( $(\'' + element.id + '\' ) )', time + 50 );
}
},
fadeIn: function( element, time, delay ) {
if( delay > 0 ) {
setTimeout( 'DrElement.fadeIn( $(\'' + element.id + '\'), ' + time + ')', delay );
return;
}
if( !time ) { time = 500; }
var steps = parseInt( time / 50 );
DrElement.setOpacity( element, 0 );
DrElement.show( element );
for( var i = steps; i > 0; i-- ) {
setTimeout( 'DrElement.setOpacity( $( \'' + element.id + '\'), ' + ( 100 * i / steps ) + ' ) ', 50 * i );
}
},
kill: function( element, fade ) {
if( fade ) {
DrElement.fadeOut( element, 300, true );
} else {
element.parentNode.removeChild( element );
}
}
}
PopupTrasher = {
opened: [],
killEmAll: function( dontFade ) {
for( var i in PopupTrasher.opened ) {
if( PopupTrasher.opened[ i ] ) {
PopupTrasher.killOne( PopupTrasher.opened[ i ], !dontFade );
}
}
PopupTrasher.opened = [];
},
killOne: function( element, fade ) {
for( var i in PopupTrasher.opened ) {
if( PopupTrasher.opened[ i ] == element ) {
PopupTrasher.opened[ i ] = null;
}
}
DrElement.kill( element, fade );
},
click: function( e ) {
function check( element, search ) {
if( element == search || DrElement.searchClass( element, 'noPopupTrasher' ) ) {
return true;
}
if ( element.parentNode ) {
return check( element.parentNode, search )
}
}
var target = ( e && e.target ) || ( event && event.srcElement );
if( !target ) { return; }
for( i in PopupTrasher.opened ) {
if( check( target, PopupTrasher.opened[ i ] ) ) {
return;
}
}
PopupTrasher.killEmAll();
},
register: function( element ) {
PopupTrasher.opened.push( element );
},
install: function() {
document.body.onclick = PopupTrasher.click;
}
}
String.prototype.htmlEntities = function() {
var aChars = new Array (
'&','à ','á','â','ã','ä','å','æ','ç','è','é',
'ĂŞ','Ă«','ì','Ă','Ă®','ĂŻ','ð','ñ','ò','Ăł','Ă´',
'õ','ö','ø','ù','ú','û','ü','ý','þ','ÿ','À',
'�','Â','�','Ä','Å','Æ','Ç','�','É','Ê','Ë',
'Ì','Í','Î','Ï','�','Ñ','Ò','Ó','Ô','Õ','Ö',
'�','Ù','Ú','Û','Ü','Ý','Þ','€','\"','ß','<',
'>','¢','£','¤','¥','¦','§','¨','©','ª','«',
'¬','Â','®','ÂŻ','°','±','²','Âł','´','µ','¶',
'·','¸','¹','º','»','¼','½','¾'
);
var aEntities = new Array (
'amp','agrave','aacute','acirc','atilde','auml','aring',
'aelig','ccedil','egrave','eacute','ecirc','euml','igrave',
'iacute','icirc','iuml','eth','ntilde','ograve','oacute',
'ocirc','otilde','ouml','oslash','ugrave','uacute','ucirc',
'uuml','yacute','thorn','yuml','Agrave','Aacute','Acirc',
'Atilde','Auml','Aring','AElig','Ccedil','Egrave','Eacute',
'Ecirc','Euml','Igrave','Iacute','Icirc','Iuml','ETH','Ntilde',
'Ograve','Oacute','Ocirc','Otilde','Ouml','Oslash','Ugrave',
'Uacute','Ucirc','Uuml','Yacute','THORN','euro','quot','szlig',
'lt','gt','cent','pound','curren','yen','brvbar','sect','uml',
'copy','ordf','laquo','not','shy','reg','macr','deg','plusmn',
'sup2','sup3','acute','micro','para','middot','cedil','sup1',
'ordm','raquo','frac14','frac12','frac34'
);
sNewString = this;
for (var i = 0; i < aChars.length; i++) {
oRE = new RegExp (aChars[i], 'g');
sNewString = sNewString.replace (oRE, '&' + aEntities[i] + ';');
}
return sNewString;
}
var DrAjax = {
version: 0.1,
maxId: 0,
requests: [],
statuses: [ 'Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete', 'Error' ],
XmlHttp: function() {
return Dr.Try(
function() { return new ActiveXObject( 'Msxml2.XMLHTTP' ) },
function() { return new ActiveXObject( 'Microsoft.XMLHTTP' ) },
function() { return new XMLHttpRequest() }
) || false;
},
nextId: function() {
return ++this.maxId;
},
sendRequest: function( url, handler, POST ) {
var id = this.nextId();
this.requests[ id ] = new this.Request( id, url, handler, POST );
},
deleteRequest: function( id ) {
this.requests[ id ] = Dr.emptyFunction();
},
getResponse: function( id, type ) {
var response = false;
if( this.requests[ id ] ) {
switch( this.statuses[ this.requests[ id ].getStatus() ] ) {
case 'Complete':
switch( type ) {
case 'text':
response = this.requests[ id ].getResponseText();
break;
case 'both':
response = {
'xml': this.requests[ id ].getResponse(),
'text': this.requests[ id ].getResponseText()
};
break;
default:
response = this.requests[ id ].getResponse();
break;
}
break;
case 'Error':
response = -1;
break;
}
} else {
return -1;
}
if( response ) {
this.deleteRequest( id );
}
return response;
},
Request: function ( id, url, handler, POST ) {
var responseXML = '';
var responseText = '';
var status = DrAjax.statuses[ 'Uninitialized' ];
this.getStatus = function() {
return status;
}
this.getResponse = function() {
return responseXML;
}
this.getResponseText = function() {
return responseText;
}
var XmlHttp = new DrAjax.XmlHttp();
if( !XmlHttp ) {
status = DrAjax.statuses[ 'Error' ];
return false;
}
this.onReadyStateChange = function() {
status = XmlHttp.readyState;
if( DrAjax.statuses[ status ] == 'Complete' ) {
if( XmlHttp.status >= 200 && XmlHttp.status < 300 ) {
responseXML = XmlHttp.responseXML;
responseText = XmlHttp.responseText;
} else {
status = 5;
}
handler( id, status );
XmlHttp = Dr.emptyFunction;
}
}
with( XmlHttp ) {
onreadystatechange = this.onReadyStateChange;
open( POST == null ? 'GET' : 'POST', url, true );
if( POST ) {
setRequestHeader( 'content-type', 'application/x-www-form-urlencoded' );
}
send( POST === true ? null : POST );
}
}
}
Object.extend = function( destination, source ) {
for( n in source ) {
destination[ n ] = source[ n ];
}
return destination;
}
function request (sURL, sQS, sHandler) {
if (window.XMLHttpRequest) { // code for Mozilla, Safari, etc
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = sHandler;
xmlhttp.open ("POST", sURL, true);
xmlhttp.setRequestHeader ("content-type", "application/x-www-form-urlencoded");
xmlhttp.send (sQS);
} else if (window.ActiveXObject) { //IE
xmlhttp = new ActiveXObject ("Microsoft.XMLHTTP");
if (xmlhttp) {
xmlhttp.onreadystatechange = sHandler;
xmlhttp.open ("POST", sURL, true);
xmlhttp.setRequestHeader ("content-type", "application/x-www-form-urlencoded");
xmlhttp.send (sQS);
}
}
}
function moveObj (sObj, e, iVerticalOffset) {
var iTempX = 0;
var iTempY = 0;
var iOffset = 10;
oObj = getObj (sObj);
if (oObj == null) return;
if (document.all) {
iTempX = event.clientX + document.body.scrollLeft;
iTempY = event.clientY + document.body.scrollTop;
} else {
iTempX = e.pageX;
iTempY = e.pageY;
}
if (iTempX < 0) {iTempX = 0}
if (iTempY < 0) {iTempY = 0}
oObj.style.top = (iTempY + iOffset + iVerticalOffset) + 'px';
oObj.style.left = (iTempX + iOffset) + 'px';
displayObj (sObj, true);
}
function getObj (sObj) {
if (document.getElementById) {
return document.getElementById (sObj);
} else if (document.all) {
return document.all.item (sObj);
} else {
return null;
}
}
function displayObj (sObj, bShow) {
oObj = getObj (sObj);
if (oObj == null) return;
oObj.style.display = bShow ? 'block' : 'none';
oObj.style.visibility = bShow ? 'visible' : 'hidden';
}
function tempUpdateCount ( field, maxLength ) { // Character counter
var count = maxLength - $( field ).value.length;
$( 'cnt_' + field ).innerHTML = count < maxLength ? count : '';
$( 'cnt_' + field ).className = count < 0 ? 'charcountneg' : 'charcount';
}
function updateTopic ( field, maxLength )
{
tempUpdateCount ( field, maxLength )
tags = $('form_tags');
radios = $('form_topics');
aTags = tags.value.split(' ');
html = '';
for( i = 0; i < aTags.length; i++) {
if( aTags[i] != '' && aTags[i] != ' ' ) {
html += '' + aTags[i] + '
';
}
}
if( html.length ) {
html = 'Choose main tag: *
' + html;
DrElement.show( $( 'form_topics_help' ) )
} else {
DrElement.hide( $( 'form_topics_help' ) )
}
radios.innerHTML = html;
}
function CsCountdown( time, counter ) {
var expireMessage, expireMessageLayer;
this.setExpireMessage = function( layer, message ) {
expireMessageLayer = layer;
expireMessage = message;
}
function countdown() {
$( counter ).innerHTML = clock (--time);
if( time > 0 ) {
scheduleCountdown();
} else {
if( expireMessage && expireMessageLayer ) {
$( expireMessageLayer ).innerHTML = expireMessage;
}
}
}
function clock (seconds) {
var min = Math.floor (seconds / 60);
var sec = seconds % 60;
sec = sec.toString();
if (sec.length == 1) sec = '0'.concat (sec);
return min + ":" + sec;
}
function scheduleCountdown() {
setTimeout( countdown, 1000 );
}
scheduleCountdown();
}
function positionRegisterLayer() {
var x = ( DrPage.getWidth() ) /2 - 244 + DrPage.getScrollLeft();
var y = ( DrPage.getHeight() ) /2 - 170 + DrPage.getScrollTop();
DrElement.moveTo( $( 'registerLayer' ), x > 0 ? x : 0, y > 0 ? y : 0 );
}
function hideRegisterLayer() {
if( Dr.safari ) {
DrElement.hide( $( 'registerLayer' ) );
} else {
DrElement.setOpacity( $( 'page' ), 100 );
DrElement.fadeOut( $( 'registerLayer' ) );
}
}
CsRegisterLayer = function( reason, loginUrl, launchPostReg ) {
this.getResponse = function( id, status ) {
if( DrAjax.statuses[ status ] == 'Complete' ) {
var xml = DrAjax.getResponse( id );
var redirect = xml.getElementsByTagName("redirect").item(0);
if ( redirect ) {
self.location = redirect.getAttribute("url");
} else {
var error = xml.getElementsByTagName("e").item(0);
if ( error ) {
alert ( error.getAttribute("m") );
} else {
parseResponse( xml );
}
}
}
}
var parseResponse = function( xml ) {
if( xml ) {
var response = xml.getElementsByTagName( 'r' ).item(0);
if( response ) {
$( 'registerLayer' ).innerHTML = response.getAttribute( 'c' );
positionRegisterLayer();
if( Dr.safari ) {
DrElement.show( $( 'registerLayer' ) );
DrElement.setOpacity( $( 'registerLayer' ), 100 );
} else {
DrElement.setOpacity( $( 'page' ), 30 );
DrElement.fadeIn( $( 'registerLayer' ) );
}
window.onscroll = positionRegisterLayer;
window.onresize = positionRegisterLayer;
}
}
}
DrAjax.sendRequest( 'AjaxServer.php', this.getResponse, 'call=User.getRegisterForm&reason=' + ( reason ? reason : '' ) + '&postreg=' + ( launchPostReg == true ? 1 : 0 ) + '&href=' + (loginUrl ? loginUrl : document.location.href.replace( /\+/, '%2B') ) );
}
var fixedRegLayer = false;
CsRegister = function( fixed, launchPostReg ) {
this.getResponse = function( id, status ) {
if( DrAjax.statuses[ status ] == 'Complete' ) {
var xml = DrAjax.getResponse( id );
var redirect = xml.getElementsByTagName("redirect").item(0);
if ( redirect ) {
self.location = redirect.getAttribute("url");
} else {
var error = xml.getElementsByTagName("e").item(0);
if ( error ) {
alert ( error.getAttribute("m") );
} else {
parseResponse( xml );
}
}
}
}
var parseResponse = function( xml ) {
if( xml ) {
var response = xml.getElementsByTagName( 'r' ).item(0);
if( response ) {
if( fixedRegLayer ) {
DrElement.setOpacity( $( 'page' ), 100 );
DrElement.hide( $( 'registerLayer' ) );
$( 'regLayerFixed' ).innerHTML = response.getAttribute( 'c' );
} else {
$( 'registerLayer' ).innerHTML = response.getAttribute( 'c' );
positionRegisterLayer();
if( !Dr.safari ) {
DrElement.setOpacity( $( 'page' ), 30 );
}
DrElement.show( $( 'registerLayer' ) );
DrElement.setOpacity( $( 'registerLayer' ), 100 );
window.onscroll = positionRegisterLayer;
window.onresize = positionRegisterLayer;
}
}
}
}
var username = $( 'reg_username' ) ? $( 'reg_username' ).value : null;
var email = $( 'reg_email' ) ? $( 'reg_email' ).value : null;
var pass1 = $( 'reg_pass1' ) ? $( 'reg_pass1' ).value : null;
var pass2 = $( 'reg_pass2' ) ? $( 'reg_pass2' ).value : null;
var agree = $( 'reg_agree' ) && $( 'reg_agree' ).checked ? 1 : 0;
var o13 = $( 'reg_o13' ) && $( 'reg_o13' ).checked ? 1 : 0;
fixedRegLayer = fixed;
DrAjax.sendRequest( 'AjaxServer.php', this.getResponse, 'call=User.register&username=' + username + '&email=' + email + '&pass1=' + pass1 + '&pass2=' + pass2 + '&agree=' + agree + '&o13=' + o13 + '&href=' + document.location.href.replace( /\+/, '%2B') + '&fixed=' + fixed + '&postreg=' + ( launchPostReg ? 1 : 0 ) );
}