
var blockreq;
String.prototype.trim = function (){ return this.replace(/^\s+/g, '').replace(/\s+$/g, '');}
function blockloaded() {return blockreq.status == 200;}
function object(objectId){

  if(document.getElementById && document.getElementById(objectId)){
  	return document.getElementById(objectId);
  }else if (document.all && document.all(objectId)){
  	return document.all(objectId);
  }else if (document.layers && document.layers[objectId]){
  	return document.layers[objectId];
  } else  {	return false; }
}
function dbg( aString ){object('debug').innerHTML += "<b>"+aString+"</b><br/>";}
function dbgt( tgt, aString ){object(tgt).innerHTML = "<p>"+aString+"</p>";}
function dbs( aString ){object('debug').innerHTML = "<b>"+aString+"</b>";}
function togglepanel(id){

    closeall(id);
	var ele = object(id);
	if( ele.style.display=='none') ele.style.display='block';
	else ele.style.display='none';
}
function togglehelp(){

	var ele = object('markuphelp');
	if( ele.style.display=='none')
	    ele.style.display='block';
	else
	    ele.style.display='none';
}

function closeall(id){

	if(!object('wikileftpage'))return;
	var divs = object('wikileftpage').getElementsByTagName('div');
	for(var i=0;i<divs.length;i++)
		if(divs[i].id != id && divs[i].getAttribute('iscat')=='true')
			divs[i].style.display='none';

}
function setindexmarkup(){

	var editarea = object('editarea');
	var list = object('indexes');
	var item = ''+list.options[list.selectedIndex].value;
	var tag = item.match(/\[\[anime\]\]/);
	item = item.replace(/\[\[anime\]\]/, '');
	var v = '<br/>----<br/><<|'+item+'|>>'+(tag?tag:'')+'<br/>';
	editarea.value += v.unbroken();
}
function checkauthor(event){
	var authorinput = object('authorinput');
	var author = ''+authorinput.value;
	author = author.trim();
	if(author==''){
        object('inputform').action='#';
		object('inputmessage').innerHTML='please make up a wiki handle';
		authorinput.focus();
		return false;
	}
	return true;
}
function sendurl(url){

	delete	blockreq;
	if (window.XMLHttpRequest) {

		blockreq = new XMLHttpRequest();
	    blockreq.open('get', url, false);
	    blockreq.send(null);

	} else if (window.ActiveXObject) {
		try { blockreq = new ActiveXObject('Msxml2.XMLHTTP'); } catch (e1) {
	  		try {	blockreq = new ActiveXObject('Microsoft.XMLHTTP'); } catch (e2) {
	    		/* No HTTP request for you! I suppose a message about a browser upgrade should go here. */
	  		}//second try
		}//first try
	 	if (blockreq) { blockreq.open('get', url, false); blockreq.send(); }
	}// if activex
}
////////////////////////////////////
function unlock(page) {

	var url = 'http://'+window.location.hostname
	url += '/pmwiki/unlock.php?pagename='+page;
    sendurl(url);
	window.location.href = window.location.href;
}
////////////////////////////////////
function getselection(pulldown) {

	var st = '';
	for (var i=0; i<pulldown.options.length; i++)
		if (pulldown.options[i].selected) {
			if (pulldown.options[i].value)	st = pulldown.options[i].value;
			else st = pulldown.options[i].text;
			break;
		}
	return st;
}
function flag(){

    var flagselect = object('flagselect');
    var entry = escape(window.location.href);
    var flag = ''+getselection(flagselect);
    if(flag=='none')return;
    var url = 'http://tvtropes.org/pmwiki/flag.php?action=flag'
	+ '&entry='+entry
	+ '&flag='+flag;
	sendurl(url);
	object('flagmessage').innerHTML='flag saved';
}
function makeknown(){

	clearmsg();
	var msg = object('messages');
	var handle = ''+object('handle').value;
	var p = ''+object('zombiebutt-knucklesfrommars').value;
	if(p == '' || handle == ''){
		msg.innerHTML='We\'ll need a handle and a password to do this.';
		return;
	}
	var url = 'knower.php?action=makeknown&handle='+handle+'&pass='+p;
	sendurl(url);
	if(blockreq &&  blockloaded()){

        msg.innerHTML =  blockreq.responseText;
        object('doit').style.display='none';
		delete blockreq;
	}
	return;
}
function renewcookie(){

	clearmsg();
	var msg = object('messages');
	var handle = ''+object('handle').value;
	var p = ''+object('zombiebutt-knucklesfrommars').value;
	if(p == '' || handle == ''){
		msg.innerHTML='We\'ll need a handle and a password to do this.';
		return;
	}
	var url = 'knower.php?action=checklogin&handle='+handle+'&pass='+p;
	sendurl(url);
	var reply ="";
	if(blockreq &&  blockloaded()){
        msg.innerHTML =  blockreq.responseText;
		delete blockreq;
	}
	return;
}
function clearmsg(){ object('messages').innerHTML = '';}
function setfocus( id ){var mb = object( id ); mb.focus(); }

function danumberoverride(){
	var daNumber = "" + object('danumber').value;
    window.location.href = "http://tvtropes.org/pmwiki/changes.php?daNumber="+daNumber.trim();
}
function dropwatch( button, entry ){
   	url = "http://tvtropes.org/pmwiki/watchlist.php?action=dropwatch&entry="+entry;
    sendurl(url);
    if(blockreq && blockloaded()){
		object('watchmsg').innerHTML = '<br/><span class="asscaps">'+ entry +' ' + blockreq.responseText +'</span>';
		button.parentNode.parentNode.removeChild(button.parentNode);
	}
}
function filterchanges(select, daNumber){

	var item =  getselection(select);
	window.location.href = 'http://tvtropes.org/pmwiki/changes.php?filter='+item+'&daNumber='+daNumber;
}
// code approach by Tangent128
function createanchor(subject, url) {
    subject.setAttribute('href',url);
}
function findfor(){
	var target = ""+object('findfor').value;
	if(target=="")return;
	window.location.href = 'http://tvtropes.org/pmwiki/el.php?findfor='+target;
}
function submitsearch(){
	var searchform = object('searcher');
	searchform.setAttribute('action', 'http://tvtropes.org/pmwiki/pmwiki.php/Main/SearchWiki');
	searchform.submit();
}
function hidegoogles(){
	var trs = document.getElementsByTagName('tr');
	for(var i=0;i<trs.length;i++){
        var rowclass = ""+trs[i].getAttribute('class');
		if (rowclass == "inboundrow"){
			var tds = trs[i].getElementsByTagName( 'td' );
			var txt = ""+tds[0].innerHTML;
			if(	txt.indexOf('google')!=-1
				|| txt.indexOf('yahoo')!=-1
				|| txt.indexOf('search')!=-1
			) trs[i].style.display='none';
		}
	}
}
function chpass(){
	dbgt('amessage','');
	dbgt('bmessage','');
	var troper = ""+object('troper').value;
	var cpass = ""+object('cpass').value;
	var npass = ""+object('npass').value;
	var ncheck = ""+object('ncheck').value;
	if(troper=="" || cpass==""){
		dbgt('amessage','please enter both a handle and your current password');
	}else{
		var url = 'knower.php?action=checklogin&handle='+troper+'&pass='+cpass;
		sendurl(url);
		if(blockreq &&  blockloaded()){
			var rsp = ""+blockreq.responseText;
			if(rsp.indexOf('cookied up')==-1){
	        	object('amessage').innerHTML =  blockreq.responseText;
				delete blockreq;
	        	return;
			}
		}
	}

	if(npass=="" || ncheck==""){
		dbgt('bmessage','gonna need both a new password and that image word');
	}else{
		var url = 'knower.php?action=changepass&handle='+troper
		+'&pass='+cpass
		+'&captchaText='+ncheck
		+'&npass='+npass;
		sendurl(url);
		if(blockreq &&  blockloaded()){
        	object('bmessage').innerHTML =  blockreq.responseText;
			delete blockreq;
        	return;
		}
	}
}
function fixptitle(id){
	var p_value = ""+object(id).value;
	if(p_value=="")return;
	var url = "http://tvtropes.org/pmwiki/ptitlecontrol.php?id="+id+"&p_value="+p_value;
	sendurl(url);
	if(blockreq &&  blockloaded()){
		object('spanfor'+id).innerHTML = ' fixed!';
	}
}
function ptitlezap(id){
	var url = "http://tvtropes.org/pmwiki/ptitlezap.php?id="+id;
	sendurl(url);
	if(blockreq &&  blockloaded()){
		window.location.href = window.location.href;
	}
}
function toggleinline(anchor){
	var tgt = anchor.getElementsByTagName('div')[0];
	if(	tgt.style.display=='none' )	tgt.style.display='inline';
	else 	tgt.style.display='none';
}
