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 ) ); }