/**
 * @description lordy is this old!
 * @author PC <paulypopex+php@gmail.com>
 * @date Tue Dec  1 20:04:21 GMT 2009 documenting and thinking about cleaning up...
 */

var s = new Array();
var aUser = 7;
s[1] = 10;
s[2] = 10;
s[7] = 10;
s[21] = 5;
s[772] = 4;
s[1360] = 3;
s[2064] = 10;
s[2471] = 3;
s[2817] = 11;
s[3513] = 5;
s[3873] = 3;
s[4409] = 4;
s[5603] = 3;
s[5734] = 3;
s[8025] = 4;
s[9343] = 3;
s[17458] = 3;
s[22304] = 3;
s[23055] = 3;
s[22946] = 10;
s[23956] = 3;
s[24377] = 4;
s[25244] = 4;
s[25990] = 4;
s[26353] = 3;
s[27904] = 6;
s[29789] = 3;
s[29820] = 3;
s[29827] = 10;
s[36239] = 3;
s[40713] = 10;
s[41436] = 5;
s[81055] = 4;

var user = $.cookie ? parseInt( $.cookie('lN')) : 0;

/**
 * @description bizarre assortment of pre jquery stuff here in library.js, sorry
 * @author PC <paulypopex+php@gmail.com>
 * @date Tue Dec 1 20:12:15 GMT 2009 documenting and starting to clean up...
 */

if (	! aUser || aUser == 0 ) {
	aUser = 7;
}

var d = function ( foo ) {
	window.console && console.log && console.log( foo );
};

function getHttpObject() {
	var xmlhttp;
	/*@cc_on
	@if ( @_jscript_version >= 5 )
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (E) {
				xmlhttp = false;
			}
		}
	@else
		xmlhttp = false;
	@end @*/
	if (	! xmlhttp && typeof XMLHttpRequest != 'undefined' ) {
		try {	xmlhttp = new XMLHttpRequest();
		} catch (e) {
			xmlhttp = false;
		}
	}
	return xmlhttp;
}

function loadPage ( cBack, url ) {
	var request = getHttpObject();
	request.open( "GET", url, true );
	request.onreadystatechange = function() {
		if (	request.readyState && request.readyState == 4 ) {
			if (	request.status && request.status == 200 ) {
				cBack( request );
			}
		}
	}
	request.send(null);
}

function loadPageIntoElement ( url, elem ) {
	loadPage( function ( request ) { elem.innerHTML = request.responseText }, url );
}


function randomNumber( max ) {
	var rNum = NaN;
	while ( isNaN( rNum )) {
		rNum = Math.floor( Math.random() * ( max ));
	}
	return rNum;
}

function GetCookie ( name ) {
	var dc = unescape( document.cookie );
	var v = null;
	d( "cookie is " + dc );
	var packedCookieName = "gbbsEnv";
	var begin = dc.indexOf( packedCookieName + "=" )
	if (	begin != -1 ) {
		var end = document.cookie.indexOf( ";", begin );
		if (	end == -1 ) {
			end = dc.length;
		}
		var gbbsEnv = dc.substring( begin + packedCookieName.length + 1, end );
		d( "gbbsEnv is " + gbbsEnv );
		var gbbsArray = gbbsEnv.split( "&" );
		for (	var i = 0; i < gbbsArray.length; i ++ ) {
			if (	gbbsArray[i] == name ) {
				i ++;
				v = gbbsArray[i];
			}
		}
	}
	if (	v == null ) {
		var begin = dc.indexOf( "; " + name );
		if (	begin == -1 ) {
			begin = dc.indexOf( name + "=" );
			if (	begin != 0 ) {
				begin = dc.indexOf( "&" + name + "&" );
				if (	begin != -1 ) {
					begin += 1;
				}
				else {
					begin = dc.indexOf( name + "&" );
					if (	begin != 0 ) {
						return null;
					}
				}
			}
		}
		else {	begin += 2;
		}
		var end = document.cookie.indexOf( ";", begin );
		var endAmp = document.cookie.indexOf( "&", begin );
		if ((	end > 0 && endAmp > 0 && endAmp < end ) || ( end == -1 && endAmp > end )) {
			end = endAmp;
		}
		if (	end == -1 ) {
			end = dc.length;
		}
		v = dc.substring( begin + name.length + 1, end );
	}
	if (	! v.length ) {
	}
	return v;
}

function toggleElement( elementID ) {
	if (	document.getElementById ) {
		var element = document.getElementById( elementID );
		element.style.visibility = ( element.style.display != "inline" ) ? "visible" : "hidden";
		element.style.display = ( element.style.display != "inline" ) ? "inline" : "none";
	}
}

function toggleAdmin( message ) {
	toggleElement( "admin" + message );
}

function getAttribute ( elm, aname ) {
	var avalue = elm.getAttribute( aname );
	if (	! avalue && elm.attributes ) {
		for (	var i = 0; i < elm.attributes.length; i ++ ) {
			var taName = elm.attributes[i].name.toLowerCase();
			if (	taName == aname ) {
				avalue = elm.attributes[i].value;
			}
		}
	}
	return avalue;
}

function setAttribute ( elm, aname, avalue ) {
	if (	elm && elm.attributes && elm.getAttributeNode( aname )) {
		for (	var i = 0; i < elm.attributes.length; i++ ) {
			var taName = elm.attributes[i].name.toLowerCase();
			if (	taName == aname ) {
				elm.attributes[i].value = avalue;
			}
		}
	}
	else {	elm.setAttribute( aname, avalue );
	}
}

function thisDomain( ) {
	var h = location.hostname;

	if (	! h || h == "" ) {
		h = 'http://www.popbitch.com';
	}

	return h;
}





function addEvent( obj, type, fn ) {
	if (	obj.addEventListener ) {
		obj.addEventListener( type, fn, false );
		EventCache.add(obj, type, fn);
	}
	else if (	obj.attachEvent ) {
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
		EventCache.add(obj, type, fn);
	}
	else {	obj["on"+type] = obj["e"+type+fn];
	}
}

Array.prototype.inArray = function ( value ) {
	var i;
	for (	i=0; i < this.length; i++ ) {
		if (	this[i] === value ) {
			return true;
		}
	}
	return false;
};
	
var EventCache = function(){
	var listEvents = [];
	return {
		listEvents : listEvents,
		add : function(node, sEventName, fHandler){
			listEvents.push(arguments);
		},
		flush : function(){
			var i, item;
			for(i = listEvents.length - 1; i >= 0; i = i - 1){
				item = listEvents[i];
				if(item[0].removeEventListener){
					item[0].removeEventListener(item[1], item[2], item[3]);
				};
				if(item[1].substring(0, 2) != "on"){
					item[1] = "on" + item[1];
				};
				if(item[0].detachEvent){
					item[0].detachEvent(item[1], item[2]);
				};
				item[0][item[1]] = null;
			};
		}
	};
}();
addEvent(window,'unload',EventCache.flush);

function getEventSrc( e ) {
	if (!e) e = window.event;
	if (	e.originalTarget )
		return e.originalTarget;
	else if (	e.srcElement )
		return e.srcElement;
}
function findPosX( obj ) {
	var curleft = 0;
	if (	obj.offsetParent ) {
		while (	obj.offsetParent ) {
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if ( obj.x ) {
		curleft += obj.x;
	}
	return curleft;
}

function findPosY( obj ) {
	var curtop = 0;
	if (	obj.offsetParent ) {
		while (	obj.offsetParent ) {
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if ( obj.y ) {
		curtop += obj.y;
	}
	return curtop;
}

//function ajaxPopUp( v, lastSearch ) {
//}


String.prototype.trim = function () {
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
}

$( function () {
	try {	if ( $.cookie('d')) {
			$('a[@rel]').each( function () {
				if ( /d:(\d+)/.test($(this).attr('rel')) == true ) {
					var d = RegExp.$1;
					if ( d > ( $.cookie('d') - 60 )) {
						$(this).addClass('new');
					}
				}
			} );
		}
	}
	catch ( e ) {
	}
	var d = new Date();
	$.cookie('d', d.getTime( ) / 1000 );
} );

var barfTitles = new Array( "Me no like", "Down with this sort of thing", "Disapprove", "Anti-approve!", "What is the opposite of approve?", "Not approve so much...", "The old wanker button was considered too negative", "Unapprove!" );

function dM ( m ) {
	if (	document.getElementById && modernBrowser ) {
		var message = document.getElementById("message:" + m);
		var oColor = message.style.backgroundColor;
		message.style.backgroundColor = "#fcc";
		var url = '/cgi-bin/newboard/admin.cgi?table=message&mode=delete&key=' + m;
		if (	confirm( "Really delete message " + m + "?" )) {
			d( "Really ajax it..." );
			var dLink = document.getElementById("delete" + m);
			d( "Got delete, innerHTML is " + dLink.innerHTML );
			dLink.innerHTML = "Deleting, and rebuilding the board, please hold tight...";
			dLink.href = "#";
			dLink.onclick = null;
			url += '&confirm=1';
			d( "Calling " + url );
			loadPage( function ( request ) {
				d( "Called " + url + ", and deleted..." );
				$(message).empty().parent().slideUp('slow')
			}, url );
		}
		else {	d( "Not really deleting, clean up..." );
			message.style.backgroundColor = oColor;
		}
	}
	else {	location.href = url;
	}
	return false;
}
function mM ( m, b ) {
	var url = '/cgi-bin/newboard/admin.cgi?table=message&mode=move&key=' + m;
	if (	m && b && document.getElementById && modernBrowser ) {
		var message = document.getElementById("message:" + m);
		var oColor = message.style.backgroundColor;
		message.style.backgroundColor = "#cfc";
		if (	confirm( "Really move message " + m + " to board " + b + "?" )) {
			url += '&newBoard=' + b + '&confirm=1';
			d( "Calling " + url );
			message.innerHTML = "Moving, hold tight...";
			loadPage( function ( request ) {
				d( "Called " + url + ", and moved..." );
				message.innerHTML = "";
			}, url );
		}
		else {
			message.style.backgroundColor = oColor;
		}
	}
	else {	location.href = url;
	}
	return false;
}
function w ( poster, m ) {
	var url = '/cgi-bin/newboard/w.cgi?weasel=' + poster + '&message=' + m;
	if (	w && document.getElementById && modernBrowser ) {
		var message = document.getElementById("message:" + m);
		var wLink = document.getElementById("w" + m);
		var oColor = message.style.backgroundColor;
		message.style.backgroundColor = "#ddd";
			d( "Calling " + url );
			wLink.innerHTML = "Hold tight...";
			wLink.href = "#";
			wLink.onclick = null;
			loadPage( function ( request ) {
				d( "Called " + url + ", and done what I had to do..." );
				d( "Got wLink, innerHTML is " + wLink.innerHTML );
				wLink.innerHTML = "Thanks!";
				message.style.backgroundColor = oColor;
			}, url );
	}
	else {	location.href = url;
	}
	return false;
}
function modernBrowser () {
	var good = true;
	if (	! document.getElementById ) {
		good = false;
	}
	if (	navigator.userAgent.indexOf( "Mac" ) != -1 && navigator.userAgent.indexOf( "Microsoft" ) != -1 ) {
		good = false;
	}
	return good;
}
function aM ( m, s, l ) {
	var url = '/cgi-bin/newboard/admin.cgi?table=message&mode=approve&key=' + m;
	if (	m && document.getElementById && modernBrowser ) {
		if ( 	s == 0 || s == undefined ) {
			s = 1;
		}
		d( "s is " + s );
		var approve = s >= 0 ? "approve" : "barf";
		var Approve = s >= 0 ? "approve" : "Unapprove";
		var Approving = s >= 0 ? "Approving" : "Disapproving";
		var message = document.getElementById("message:" + m);
		var voteLink = document.getElementById(approve + m);
		var oColor = message.style.backgroundColor;
		message.style.backgroundColor = "#ccf";
			url += '&actionScore=' + s;
			url += '&confirm=1';
			d( "Calling " + url );
			voteLink.innerHTML = Approving + ", hold tight...";
			voteLink.href = "#";
			voteLink.onclick = null;
			if (	isNaN( user ) || isNaN( s ) || ( s < l )) {
				voteLink.innerHTML = "Please log in";
				voteLink.href = "/cgi-bin/newboard/board.cgi";
			}
			else {	
				loadPage( function ( request ) {
					voteLink.innerHTML = "done, thanks!";
					message.style.backgroundColor = oColor;
				}, url );
			}
	}
	else {	location.href = url;
	}
	return false;
}

function eL ( m, poster, boardID, parent ) {
	document.write( '<span class="aL">' );
	if (	boardID == 15 ) {
		document.write( 'Product ID: ' + m + ', ' );
	}
	try {	var u =user;
	}
	catch ( e ) {
		user = window.user;
		d( 'user gave error, now it is ' + user );
	}
	if (	user && s[user] == undefined ) {
		s[user] = 0;
	}
	try {	
		if (	poster == user || s[user] >= 3 ) {
			document.write( '<a id="delete' + m + '" href="' );
			document.write( '/cgi-bin/newboard/' );
			document.write( 'admin.cgi?table=message&mode=delete&key=' + m + '&boardID=' + boardID );
			document.write( '" onClick="dM(' + m + '); return false;"' );
			document.write( '">delete</a>, ' );
		}
	}
	catch ( e ) {
		d( e + " in admin links..." );
	}
	try {	
		if (	poster == user || s[user] >= 3 ) {
			document.write( '<a href="/cgi-bin/newboard/' );
			document.write( 'admin.cgi?table=message&mode=edit&key=' + m + '&boardID=' + boardID + '">edit</a>, ' );
		}
	}
	catch ( e ) {
		d( e + " in admin links..." );
	}
	try {
			document.write( '<a class="approve" id="approve' + m + '" href="' );
			document.write( '/cgi-bin/newboard/' );
			document.write( 'admin.cgi?table=message&mode=approve&key=' + m + '&confirm=1&boardID=' + boardID );
			document.write( '" onClick="aM(' + m + ',0,-1); return false;' );
			document.write( '" title="Approve!' );
			document.write( '">' );
			document.write( s[user] ? 'approve' : 'arf' );
			document.write( '</a>, ' );
	}
	catch ( e ) {
		d( e + " in admin links / arf..." );
	}
	try {
			document.write( '<a class="barf" id="barf' + m + '" href="' );
			document.write( '/cgi-bin/newboard/admin.cgi?table=message&mode=approve&actionScore=-1&key=' + m + '&confirm=1&boardID=' + boardID + '"' );
			document.write( ' onClick="aM(' + m + ',-1,-1); return false;" ' );
			try {
				var n = randomNumber( barfTitles.length );
				document.write( ' title="' + barfTitles[n] + '" ');
			}
			catch ( e ) {
			}
			document.write( '>barf</a>, ' );
	}
	catch ( e ) {
	}
	document.write( '</span>' );
}
function cL ( m, boardID ) {
	if (	s[user] >= "-1" ) {
		document.writeln( '<a href="/cgi-bin/newboard/' );
		document.write( 'admin.cgi?table=message&mode=approve&key=' + m + '&confirm=1&boardID=' + boardID + '">approve</a>, or' );
	}
	document.write( '<a href="/cgi-bin/newboard/board.cgi?mParent=' + m + '&boardID=' + boardID + '">Click here to respond to / comment on this ad</a>' );
}
var q = location.href.substr( location.href.indexOf( "?" ) + 1 );

if (	q.length >= 0 ) {
	pairs = new Object();
	i = 1;
	while (	q.indexOf("&") > -1 ) {
		pairs[i] = q.substring( 0, q.indexOf( "&" ));
		q = q.substring(( q.indexOf("&")) + 1 );
		i++;
	}
	pairs[i] = q;
	for (	i in pairs ) {
		n = pairs[i].substring( 0, pairs[i].indexOf( "=" ));
		v = pairs[i].substring(( pairs[i].indexOf( "=" )) + 1 );
		if (	n == "ignore" ) {
			document.writeln( "<style>.u" + v + " { display: none; }</style>\n" );
		}
	}
}

var majax = {
	subjectTest : /mSubject:?([0-9]+)/i,
	hrefTest : /(\w+):\/\/([^\/]+)(.*)\/([^\/]+)\.([a-z-9]+)$/i,
	messageThreadPage : 'thread.html',
	loadingImage : '/img/i/ajaxLoading.gif',
	banner : '/ad.html',
	init : function () {
		try {
			var a = document.getElementsByTagName('a');
			if (	a.length ) {
				d( 'Got ' + a.length + ' a' );
				for (   var i = 0; i < a.length; i ++ ) {
					var r = a[i].rel;
					if (	r && a[i].rel.indexOf( 'mSubject' ) != -1 ) {
						if (	majax.subjectTest.test(r) == true ) {
							var id = RegExp.$1;
							a[i].id = 'mSubject' + id;
							a[i].oHref = a[i].href;
							a[i].href = 'javascript:majax.loadThread(' + id + ');';
						}
					}
				}
			}
		}
		catch ( e ) {
			d( 'init failed; ' + e );
		}
	},
	ajaxLoading : function ( ) {
		if (	majax.loadingImage == '' || majax.loadingImage.indexOf( "<" ) == 0 ) {
			majax.loadingImage = "/img/i/ajaxLoading.gif";
		}
		var img = document.createElement("img");
		img.src = majax.loadingImage;
		img.alt = "Loading results, please wait...";
		return img;
	},
	loadThread : function ( id ) {
		try {	
			var a = document.getElementById('mSubject' + id );
			if (	majax.hrefTest.test(a.oHref) == true ) {
				a.appendChild(majax.ajaxLoading());
				var url = RegExp.$3 + majax.messageThreadPage;
				d( 'Loading ' + url );
				var messageDivId = 'message:' + id;
				var mDiv = document.getElementById( messageDivId );
				var mDivContent = mDiv.innerHTML.toString();
				d( 'mDiv ' + messageDivId + ' is ' + mDiv.className + ' / ' + mDiv.rel );
				try {	mDiv.className.replace( 'gbbs', '' );
					d( 'class is now  ' + mDiv.className );
				}
				catch ( e ) {
					d( 'Could not take gbbs out of class, it is still  ' + mDiv.className + '; ' + e );
				}
				loadPage( function ( request ) {
					mDiv.innerHTML = request.responseText;
					d( 'Called ' + url );
					var bannerDiv = document.getElementById('banner');
					var n = randomNumber( 1000000 );
					loadPage( function ( request ) {
						bannerDiv.innerHTML = request.responseText;
						d( 'Called ' + majax.banner );
					}, majax.banner + '?' + n );
				}, url );
			}
			else {	d( 'oHref was ' + a.oHref );
			}
		}
		catch ( e )  {
			d( 'loadThread failed; ' + e );
		}
	}
}


