// global vars
var req;			// xml request object
var results;		// ajax call results container
var form_count_url = 1;
var form_count = 1;
var postvote = new Array();	// existing votes
var external = false;
var id;
// suggest stuff
var selected;
var elements = 5;
var param;
var guide_form = false;
var register_form = false;
var newreply = false;
var first_search = true;
var disable_called = false;
var mouseX = 0;
var mouseY = 0;
var jobcnt = 0;
var last_left = 0;

//===============================================
// loadXMLDoc(url, post)
// @param url - url to load
// @param post - bool use post method, defaults to get
// also expects 'results' global to be set
// perform an ajax call
//===============================================
function loadXMLDoc(url, result, post) {
	
	var mode;
	post==null ? mode='GET' : mode='POST';
	// branch for native XMLHttpRequest object
	if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
		req.onreadystatechange = function() {
			processReqChange(result);
		};
		req.open(mode, url, true);
		if (!post)
			req.send(null);
		else {
			req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			req.setRequestHeader("Content-length", param.length);
			req.setRequestHeader("Connection", "close");
			req.send(param);
		}
			
	// branch for IE/Windows ActiveX version
	} else if (window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
		if (req) {
			req.onreadystatechange = function() {
				processReqChange(result);
			};
			req.open(mode, url, true);
			if (!post)
				req.send();
			else {
				req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				req.setRequestHeader("Content-length", param.length);
				req.setRequestHeader("Connection", "close");
				req.send(param);
			}
		}
	}
}

//===============================================
// processReqChange()
// internal ajax function
//===============================================
function processReqChange(result) {
	// only if req shows "loaded"
	if (req.readyState == 4) {
		// only if "OK"
		if (req.status == 200) {
			//alert(req.responseText);
			if (result == 'suggest_name') {
				elements = req.responseText.split("<tr").length-1;
				if (elements > 0) show_suggest();
				else hide_suggest();

				selected = null;
			}				
			if (result == 'suggest_woman') {
				elements = req.responseText.split("<tr").length-1;
				if (elements > 0) show_suggest(1);
				else hide_suggest(1);

				selected = null;
			}				
			if (result=='') {}
			else if (result == 'progress_meter') {
				res = req.responseText.split("|");
				if (res[0]) {
					document.getElementById("upl").innerHTML = res[0];
					document.getElementById("total").innerHTML = res[1];
					document.getElementById("speed").innerHTML = res[2];
					document.getElementById("percent").innerHTML = res[3] + "%";
					var percent = res[3];
					if (percent > 1)
						document.getElementById("fill").style.width = Math.floor( res[3] * 2.48 ) ;
					else
						document.getElementById("fill").style.width = 1;
						
					show_stats();
				}
				
			} else if (result=='content_preview') {

				if (!disable_called) overlib(req.responseText, DELAY, 150, FULLHTML);
			
			} else if (result=='process') {
			
				// calculate total jobs, and how many are left
				var total_jobs = parseInt(document.getElementById('total_jobs').innerHTML);
				var left = parseInt(req.responseText);
				if (left > total_jobs) {
					jobcnt = left;
					document.getElementById('total_jobs').innerHTML = jobcnt;

				} else if (left==0) {
					document.getElementById('process_meter').style.display='none';
					result = 'pp';
					loadXMLDoc('http://skindig.net/upl/pp', 'pp');
					setTimeout("make_boxes_sortable()", 1000);
					setTimeout("upload_refresh()", 500);
					return;
				}

				document.getElementById('process').innerHTML = jobcnt - left;
				
				// refresh thumbs
				if (left != last_left) {
					last_left = left;
					result = 'pp';
					loadXMLDoc('http://skindig.net/upl/pp', 'pp');
					setTimeout("set_processing_callback()", 500);
					setTimeout("upload_refresh()", 500);

				}
			
			} else {
				if (result!='ppb') {
					document.getElementById(result).innerHTML = req.responseText;					
				} else {
					external.document.getElementById(result).innerHTML = req.responseText;
					//external = false;
				}
			}

		// progress meter stuff
		if (result == 'progress_meter')
			setTimeout("loadXMLDoc('http://skindig.net/meter/' + id + '/noui', 'progress_meter')", 500);
		else if (result == 'process') {
			setTimeout("loadXMLDoc('http://skindig.net/process', 'process')", 500);
		} else if (result == 'register_popup') {
			setTimeout("document.getElementById('calogin').focus();", 50);
		} else if (newreply) {
			active_form();
		} else if (result == 'privmsg_reply') {
			setTimeout("document.getElementById('pagetext').focus();", 50);
		}

		} else {
			alert("There was a problem retrieving the XML data:\n" +
			req.statusText);
		}
	}
}

//===============================================
// make_boxes_sortable()
// callback function
//===============================================
function make_boxes_sortable() {

	if (document.getElementById('boxes')) {
		junkdrawer.restoreListOrder("boxes");
		dragsort.makeListSortable(document.getElementById("boxes"), saveOrder);
	}
}

//===============================================
// on_load()
// on page load functions
//===============================================
function on_load() {

	// these are very poor identifiers. there should
	// be unique identifiers for each page.
	
	// private messaging
	// needs to take into consideration if title is blank
	if (document.getElementById('subject'))
		document.getElementById('subject').focus();
	// upload page
	if (document.getElementById('file1')) {
		upload_refresh();
	}
	// new content thread
	if (document.getElementById('suggest_name')) {
		//document.getElementById('name').onkeyup = suggest_up;
		//document.getElementById('name').onkeydown = suggest_down;
	}
	
	// sortable boxes
	if (document.getElementById('boxes')) {
		junkdrawer.restoreListOrder("boxes");
	
		dragsort.makeListSortable(document.getElementById("boxes"),
				saveOrder);
		
	}
	
	// new thread page
	if (document.getElementById('thread_title')) {
		var oFCKeditor = new FCKeditor( 'pagetext' ) ;
		oFCKeditor.BasePath = "/skindig/fckeditor/" ;
		oFCKeditor.Height	= 300 ;
		oFCKeditor.skin = 'default';
		oFCKeditor.ToolbarSet = 'Splodo';
		oFCKeditor.ReplaceTextarea() ;
		document.getElementById('thread_title').focus();
	}
	
	// scale popup positions to screen size
	position_popup();

}

//================================================
// on_unload()
// called when page exits
//================================================
function on_unload() {

	if (document.getElementById('file1'))
		document.getElementById('progress_meter').style.display='none';
		
	if (document.getElementById('uid'))
		document.getElementById('uid').value='';
}

//===============================================
// back()
// page history function
//===============================================
function back() {
	history.back(1);
}

//===============================================
// on_resize()
// window resize function
//===============================================
function on_resize() {

	position_popup();
}

//===============================================
// new_reply(t,x)
// @param t - threadid
// @param x- postnum
// ajax reply form
//===============================================
function new_reply(t,x) {

	// clear any other reply forms
	var postform = getElementsByName_iefix('div', 'postform');
	for (var i = 0; i < postform.length; i++)
		postform[i].innerHTML = '';

	results = 'postform' + x;
	//loadXMLDoc('http://skindig.net/root.php?m=newreply&t=' + t + '&noui=on');
	var url = location.href;
	if (url.indexOf('#lastview')!==-1)
		url = url.substring(0, url.length - 9);
	
	newreply = true;
	loadXMLDoc(url + '/newreply', results);
}

//===============================================
// new_quote(t,x)
// @param t - threadid
// @param x- postnum
// ajax reply form
//===============================================
function new_quote(t,x) {

	// clear any other reply forms
	var postform = getElementsByName_iefix('div', 'postform');
	for (var i = 0; i < postform.length; i++)
		postform[i].innerHTML = '';
	results = 'postform' + x;

	var url = location.href;
	if (url.indexOf('#lastview')!==-1)
		url = url.substring(0, url.length - 9);
	
	newreply = true;
	loadXMLDoc(url + '/newquote/' + x, results);
}

//================================================
// active_form()
// activate form when new reply clicked
//================================================
function active_form() {

	var div = document.getElementById("pagetext");
	var fck = new FCKeditor("pagetext");
	fck.BasePath	= '/skindig/fckeditor/';
	fck.Width = 800;
	fck.Height	= 300;
	fck.skin = 'default';
	fck.ToolbarSet = 'Splodo';
	div.innerHTML = fck.CreateHtml();
	
	var quote_text = document.getElementById("quotetext").innerHTML;
	if (quote_text.length > 0) {
		setTimeout("active_quote()", 500);
	}
	newreply = false;
}

//================================================
// active_quote()
// activate quote when new quote is clicked
//================================================
function active_quote() {

	var quote_text = document.getElementById("quotetext").innerHTML;
	var inst = FCKeditorAPI.GetInstance('pagetext');
	inst.SetHTML("<blockquote>" + quote_text + "</blockquote>");
	document.getElementById("quotetext").innerHTML = null;
}

//===============================================
// upload()
// open upload form in a new window
//===============================================
function upload() {

	//var f = document.getElementById('forum').value;
	//childWindow = window.open('http://skindig.net/forum/' + f + '/upl', "Splodo_Upload", "width=520,height=650,scrollbars=yes");
	var order = document.getElementById('order').value;
	childWindow = window.open('http://skindig.net/upl?order=' + order, "Splodo_Upload", "width=785,height=875,scrollbars=yes,resizable=yes");
	childWindow.opener = self;	
}

//===============================================
// toggle_select()
// @param f - form object
// toggle all of the select boxes on and off
//===============================================
function toggle_select(f) {

	button = document.getElementById('toggleSelect');

	for (var i = 0; i < f.length; i++) {

		var e = f.elements[i];
	
		if (e.type != 'checkbox')
			continue;

		button.value == 'Select all' ? e.checked = true : e.checked = false;
			
	}
	button.value == 'Select all' ? button.value = 'Deselect all' : button.value = 'Select all';
}

//===============================================
// new_attachment()
// add a new attachment input to the upload form
//===============================================
function new_attachment() {

	// increase the form count
	form_count++;
	
	// create new input element
	var new_attachment = document.createElement('input');
	new_attachment.setAttribute('id', 'file' + form_count);
	new_attachment.setAttribute('name', 'file' + form_count);
	new_attachment.setAttribute('size', '42');
	new_attachment.setAttribute('type', 'file');
	document.getElementById('content').appendChild(new_attachment);
	
	// remove text link
	var remove = document.createElement('span');
	remove.setAttribute('id', 'remove' + form_count);
	remove.innerHTML = '<span class="remove"><a href="javascript:remove(\'file\', ' + form_count + ');">remove</a></span><br>';
	document.getElementById('content').appendChild(remove);
}

//===============================================
// new_url()
// add a new url attachment input field
//===============================================
function new_url() {

	// increase the form count
	form_count_url++;
	
	// create new input element
	var new_attachment = document.createElement('input');
	new_attachment.setAttribute('id', 'url' + form_count_url);
	new_attachment.setAttribute('name', 'url' + form_count_url);
	new_attachment.setAttribute('size', '52');
	new_attachment.setAttribute('type', 'text');
	document.getElementById('content_url').appendChild(new_attachment);
	
	// remove text link
	var remove = document.createElement('span');
	remove.setAttribute('id', 'remove_url' + form_count_url);
	remove.innerHTML = '<span class="remove"><a href="javascript:remove(\'url\', ' + form_count_url + ');">remove</a></span><br>';
	document.getElementById('content_url').appendChild(remove);
}

//===============================================
// remove(mode, x)
// remove an attachment from the upload form
// @param mode - upload mode
// @param x - node to remove
//===============================================
function remove(mode, x) {

	if (mode=='file') {
		document.getElementById('content').removeChild(document.getElementById('file' + x));
		document.getElementById('content').removeChild(document.getElementById('remove' + x));
	} else if (mode=='url') {
		document.getElementById('content_url').removeChild(document.getElementById('url' + x));
		document.getElementById('content_url').removeChild(document.getElementById('remove_url' + x));
	}	
}

//===============================================
// swap_img(id, img)
// @param id - image id
// @param img - new image url to swap
//===============================================
function swap_img(img, id) {

	if (!postvote[id])
		document.getElementById(id).src = img;
}

//===============================================
// vote(vote, postid)
// voting procedure
//===============================================
function vote(vote, postid) {

	results = 'vote' + postid;
	//loadXMLDoc('http://skindig.net/root.php?postid=' + postid + '&vote=' + vote + '&noui=on');
	loadXMLDoc('http://skindig.net/vote/' + postid + '/' + vote, results);

	if (vote == -1) {
		postvote[postid + 'vd'] = 'on';
		postvote[postid + 'vu'] = null;
		document.getElementById(postid + 'vu').src = '/skindig/images/up.png';
 	} else {
		postvote[postid + 'vd'] = null;
		postvote[postid + 'vu'] = 'on';
		document.getElementById(postid + 'vd').src = '/skindig/images/down.png';
	}
}

//===============================================
// admin_select(toggle)
// toggle select boxes on admin form
//===============================================
function admin_select(toggle) {

	var f = document.getElementById('forum');
	
	for (var i = 0; i < f.length; i++) {

		var e = f.elements[i];
	
		if (e.type != 'checkbox')
			continue;
			
		toggle == 'on' ? e.checked = true : e.checked = false;

	}

}

//===============================================
// quick_admin()
// submit the quickadmin form
//===============================================
function quick_admin() {

	document.getElementById('mode').value = 'quickadmin';
	document.getElementById('forum').submit();
}


//===============================================
// reply_to(postnum)
// @param postnum - post to reply to
// ???
//===============================================
function reply_to(postnum) {

	document.getElementById('reply_to').value = postnum;
	window.location.href='#reply_to';
	document.getElementById('pagetext').focus();
}


//===============================================
// change_page(page)
// @param page - page to change to
// changes the page in a forum
//===============================================
function change_page(page) {

	form = document.getElementById('forum');
	form.action += '/' + page;
	form.submit();

}

//===============================================
// change_thread_page(page)
// @param page - page to change to
// changes the page in a thread
//===============================================
function change_thread_page(page) {

	form = document.getElementById('forum');
	document.getElementById('mode').value='change_page';
	form.action += '/page_' + page;
	form.submit();

}

//===============================================
// change_profile_page(page)
// @param page - page to change to
// changes the page in user profile
//===============================================
function change_profile_page(page) {

	// check if last token is numeric
	// if it is, remove it
	var removed = new String(document.location);
	var last_tok = removed.substr(removed.lastIndexOf('/')+1);

	if (is_numeric(last_tok))
		removed = removed.substr(0, removed.lastIndexOf('/'));
		
	var url = removed + '/' + page;
	
	form = document.getElementById('profile');
	form.action = url;
	form.submit();
}

//===============================================
// change_inbox_page(page)
// @param page - page to change to
// changes the page in user inbox
//===============================================
function change_inbox_page(page) {

	form = document.getElementById('inbox');
	form.action += '/' + page;
	form.submit();

}

//===============================================
// do_search()
// execute the search form
//===============================================
function do_search() {

	document.getElementById('forum').action = 'http://skindig.net/search';
	document.getElementById('forum').submit();
}

//===============================================
// handle_search()
// activate the search form
//===============================================
function handle_search() {

	document.getElementById('forum').action = 'http://skindig.net/search';
}

//================================================
// handle_mouse_search()
// handles clicking of mouse on the search results
//================================================
function handle_mouse_search(term, tag) {

	if (tag==null)
		document.getElementById('name').value = term;
	else
		document.getElementById('woman').value = term;
		
	if (tag==null)	document.getElementById('search_form').submit();
}


//===============================================
// sort(x)
// @param x - new sort method
// sets the sort method and submit
//===============================================
function sort(x) {

	// alter to support any form
	document.getElementById('sort').value = x;
	document.getElementById('forum').submit();
}

//===============================================
// sort_profile(x)
// @param x - new sort method
// sets the sort method and submit
//===============================================
function sort_profile(x) {

	document.getElementById('sort').value = x;
	document.getElementById('profile').submit();
}

//===============================================
// toggle_qa(option)
// @param option - new option
// toggle the quickadmin form
//===============================================
function toggle_qa(option) {

	document.getElementById('mode').value = option + '_qa';
	document.getElementById('forum').submit();
}

//===============================================
// do_login()
// display the login form
//===============================================
function do_login() {

	//results = 'login';
	//loadXMLDoc('http://skindig.net/login');
	document.getElementById('login_box').style.display == 'block' ?
	document.getElementById('login_box').style.display = 'none' :
	document.getElementById('login_box').style.display = 'block';
	
	document.getElementById('register_popup').style.display = 'none';
	document.getElementById('search').style.display = 'none';
	
	document.getElementById('loginbox').focus();
}

//===============================================
// check_available()
// checks if a username is available
//===============================================
function check_available() {

	results = 'avail';
	login = document.getElementById('calogin').value.replace(/^\s+|\s+$/g,"");
	if (login=='')	return;
	loadXMLDoc('http://skindig.net/register/' + login, 'avail');
}

//===============================================
// view_message(id)
// @param id - messageid
// view a message in the inbox
//===============================================
function view_message(id) {

	window.location = 'http://skindig.net/inbox/' + id;
}

//===============================================
// letter(letter)
// @param letter - letter to select
// for admin use
//===============================================
function letter(letter) {

	document.getElementById('letter').value=letter;
	document.getElementById('admin_user').submit();
}

//===============================================
// select_user(uid)
// @param uid - userid
// for admin use
//===============================================
function select_user(uid) {

	document.getElementById('uid').value=uid;
	document.getElementById('user_select').submit();
}

//===============================================
// upload_refresh()
// refreshes the main window after file upload
//===============================================
function upload_refresh() {

	external = opener;
	order = document.getElementById('order').value;
	external.document.getElementById('order').value = order;
	loadXMLDoc('http://skindig.net/pp?order=' + order, 'ppb');
}

//===============================================
// progress_meter()
// begins the progress meter+upload process
//===============================================
function progress_meter()
{
	document.getElementById('progress_meter').style.display='block';
	results = 'progress_meter';
	id = document.getElementById('id').value;
	setTimeout("loadXMLDoc('http://skindig.net/meter/' + id + '/noui', 'progress_meter')", 650);

	document.getElementById('upload').submit();
	return true;
	
}

//===============================================
// do_preview(f)
// populate the preview form and unhide
// @param f - form to work with
//===============================================
function do_preview(f)
{
	var pagetext = f.pagetext.value;
	var pagetext_preview = document.getElementById('pagetext_preview');

	pagetext_preview.innerHTML = pagetext;
	
	document.getElementById('preview').style.display = 'block';
	
	// should hide on page load/unload?
	// this current doesn't even use an xml call
	results = 'postdate_preview';
	loadXMLDoc('http://skindig.net/gettime.php', 'postdate_preview');
}

//================================================
// do_preview_new()
// new do preview
//================================================
function do_preview_new() {

	var preview_ajax_call = 'http://skindig.net/post_preview';

	var title = document.getElementById('thread_title').value;
	var inst = FCKeditorAPI.GetInstance('pagetext');
	var pagetext = inst.GetHTML();
	
	$.post(preview_ajax_call, {
		   title: title, pagetext: pagetext },
		   function(data) {
		   		$("#preview").html(data);
			}
	);
}

//================================================
// switch_tab(x)
// switch tabs on post form
//================================================
function switch_tab(x)
{
	for (i = 1; i <= 3; i++ ) {

		// hide and display the appropriate pages and tabs
		if (x == i) {
			document.getElementById('page' + i).style.display = 'block';
			document.getElementById('tab' + i).className = 'current_tab';
		} else {
			document.getElementById('page' + i).style.display = 'none';
			document.getElementById('tab' + i).className = '';
		}

	}
	
}

//===============================================
// do_infoband()
// retrieves the name+source values from the opener window
//===============================================
function do_infoband()
{
	// get name and source from parent window
	//document.getElementById('name').value = external.document.getElementById('name').value;
	//document.getElementById('source').value = external.document.getElementById('source').value;
	document.getElementById('title').value = external.document.getElementById('thread_title').value;

	// submit the form
	//document.getElementById('process_meter').style.display='block';
	//results = 'process';
	document.getElementById('do').value = 'infoband';
	//setTimeout("loadXMLDoc('http://skindig.net/process', 'process')", 650);
	document.forms.upload.submit();
}

//================================================
// do_flv()
// make a streamable flash video
//================================================
function do_flv() {

	// submit the form
	document.getElementById('process_meter').style.display='block';
	results = 'process';
	document.getElementById('do').value = 'flv';
	setTimeout("loadXMLDoc('http://skindig.net/process', 'process')", 650);
	document.forms.upload.submit();
}

//================================================
// show_stats()
// for upload progress meter
//================================================
function show_stats()
{
	document.getElementById('percent').style.display='block';
	document.getElementById('bar').style.display='block';
	document.getElementById('stat').style.display='block';
}

//===============================================
// suggest_up()
// event handler for suggest onkeyup
//===============================================
function suggest_up(event, tag) {

	if (event==null) return;

	switch (event.keyCode) {

	case 38:
		break;
	case 40:
		break;

	// handle everything else
	default:
		if (tag==null)
			var text = document.getElementById('name').value;
		else
			var text = document.getElementById('woman').value;
	
		// ajax call... dispatch this request to app
		if (tag==null) {
			results = 'suggest_name';
			loadXMLDoc('http://skindig.net/suggest/' + text, results);
		} else {
			results = 'suggest_woman';
			loadXMLDoc('http://skindig.net/suggest/' + text + '/1', results);
		}
		break;
	}
	
}

//===============================================
// suggest_down()
// event handler for suggest onkeydown
//===============================================
function suggest_down(event, tag) {

	switch (event.keyCode) {	

	case 38:
		// handle up arrow
		handle_up(tag);
		break;
	case 40:
		// handle down arrow
		handle_down(tag);
		break;
	default:
		break;
	}
	
}

//===============================================
// handle_up()
// event handler for up arrow
//===============================================
function handle_up(tag) {

	if (elements==0) return;
	// clear old highlight, if exist
	if (selected)
		document.getElementById('s'+ selected).className = 'normal';
	
	
	if (selected == null || selected == 1)	
		selected = elements;
	else
		--selected;
		
	// new highlight
	var now_selected = document.getElementById('s'+ selected);

	now_selected.className = 'highlight';
	if (tag==null)
		document.getElementById('name').value = now_selected.innerHTML;
	else
		document.getElementById('woman').value = now_selected.innerHTML;
		
}


//===============================================
// handle_down()
// event handler for down arrow
//===============================================
function handle_down(tag) {

	if (elements==0) return;
	// clear old highlight, if exist
	if (selected)
		document.getElementById('s'+ selected).className = 'normal';
	
	if (selected == null || selected == elements)
		selected = 1;
	else
		++selected;
		
	// new highlight
	var now_selected = document.getElementById('s'+ selected);

	now_selected.className = 'highlight';
	if (tag==null)
		document.getElementById('name').value = now_selected.innerHTML;
	else
		document.getElementById('woman').value = now_selected.innerHTML;
		
}

//===============================================
// show_suggest()
// show name suggestions
//===============================================
function show_suggest(tag) {

	if (tag==null)
		document.getElementById('suggest_name').style.display='block';
	else
		document.getElementById('suggest_woman').style.display='block';
}

//===============================================
// hide_suggest()
// hide name suggestions
//===============================================
function hide_suggest(tag) {

	if (tag==null)
		setTimeout("document.getElementById('suggest_name').style.display='none';", 250);
	else
		setTimeout("document.getElementById('suggest_woman').style.display='none';", 250);
}

//================================================
// showtab(x)
// virtual tab switching for upload form
// @param x - tab to switch to
//================================================
function showtab(x) {
	
	// do the tab swapping
	for (i = 1; i <= 2; i++ ) {
		if (x == i) {
			document.getElementById('upload_page' + i).style.display = 'block';
			document.getElementById('tab' + i).className = 'upload_current_tab';
		} else {
			document.getElementById('upload_page' + i).style.display = 'none';
			document.getElementById('tab' + i).className = '';
		}
	}

	// set the form function	
	document.getElementById('do').value = (x == 1) ? 'upload' : 'url';

}

//================================================
// showtab_options(x)
// tab switching for options form
// @param x - tab to switch to
//================================================
function showtab_options(x, error) {

	// do the tab swapping
	for (i = 1 ; i <= 2; i++) {
		if (x == i) {
			document.getElementById('page' + i).style.display = 'block';
			document.getElementById('tab' + i).className = 'current_tab';
		} else {
			document.getElementById('page' + i).style.display = 'none';
			document.getElementById('tab' + i).className = '';
		}
	}
	
	// clear any results message on tab switch..
	if (error==null) error = true;

	if (error && document.getElementById('errors'))
		document.getElementById('errors').style.display = 'none';
	
	document.getElementById('active_page').value = x;
}

//================================================
// do_thumbnail()
// displays the thumbnail processing dialog
//================================================
function do_thumbnail() {

	document.getElementById('process_meter').style.display='block';
	results = 'process';
	document.getElementById("do").value="thumbnail";
	setTimeout("loadXMLDoc('http://skindig.net/process', 'process')", 650);
	document.forms.upload.submit();
	
}

//================================================
// set_processing_callback()
// displays and starts processing meter
//================================================
function set_processing_callback() {

	document.getElementById('process_meter').style.display='block';
	results = 'process';
	setTimeout("loadXMLDoc('http://skindig.net/process', 'process')", 650);
}

//================================================
// do_edit(postid)
// display an editable form of a post
// @param postid - post to edit
//================================================
function do_edit(postid) {

	document.getElementById('postid').value=postid;
	document.getElementById('forum').submit();
}

//================================================
// do_delete(postid)
// delete a post
// @param postid - postid to delete
//================================================
function do_delete(postid) {

	if (confirm("Are you sure you want to DELETE this post?")) {

		document.getElementById('mode').value='edit_delete';
		document.getElementById('postid').value=postid;
		document.getElementById('forum').submit();
	}
}

//================================================
// change_style(style)
// swap stylesheet on-the-fly
//================================================
function change_style(style) {
	
	// get existing base dir
	var exist = document.getElementById('stylesheet').href;
	var dir = exist.substring(0, exist.lastIndexOf('/')+1);
	
	// swap it
	document.getElementById('stylesheet').href = dir + style + '.css';

}

//================================================
// set_mode(new_mode)
// changes the form mode
//================================================
function set_mode(new_mode) {

	document.getElementById('mode').value=new_mode;
}

//================================================
// admin_ban_user(id)
// @param id - user to ban
// admin function
//================================================
function admin_ban_user(id) {

	document.getElementById('dob').value='show_userban';
	document.getElementById('uid').value=id;
	document.getElementById('admin_ban').submit();
}

//================================================
// admin_ban_ip(ip)
// @param ip - ip to ban
// admin function
//================================================
function admin_ban_ip(ip) {

	document.getElementById('dob').value='show_ipban';
	document.getElementById('ip').value=ip;
	document.getElementById('admin_ban').submit();
}

//================================================
// show_names(letter)
// @param letter - first letter of last name
// show names on index page
//================================================
function show_names(letter) {

	form = document.getElementById('forum');
	form.action = 'http://skindig.net/women/' + letter;
	form.submit();

}

//================================================
// quick_search()
// displays/hides the search box
//================================================
function quick_search() {
	
	document.getElementById('search').style.display == 'block' ?
	document.getElementById('search').style.display = 'none' :
	document.getElementById('search').style.display = 'block';
	
	document.getElementById('register_popup').style.display = 'none';
	document.getElementById('login_box').style.display = 'none';

	document.getElementById('searchbox').focus();
}

//================================================
// set_media_type(media_type)
// @param media_type - new media type to switch
// changes the media type setting
//================================================
function set_media_type(media_type) {

	document.getElementById('media_type').value = media_type;
	if (media_type != 'all')
		document.getElementById('forum').action += '/' + media_type;
	if (document.getElementById('page')!=null)
		document.getElementById('page').value=1;
	document.getElementById('forum').submit();

}

//================================================
// change_view(view)
// @param view - forum or gallery
// sets the view mode for the woman pages
//================================================
function change_view(view) {

	document.getElementById('view').value=view;
	//if (view='forum')
		//document.getElementById('forum').action += '/forum';
	document.getElementById('forum').submit();
}

//================================================
// reload_forum()
// reloads the woman forum page
//================================================
function reload_forum() {
	document.getElementById('forum').submit();
}

//================================================
// toggle_filters()
// toggle display of filters selection box
//================================================
function toggle_filters() {

	document.getElementById('filters').style.display == 'block' ?
	document.getElementById('filters').style.display = 'none' :
	document.getElementById('filters').style.display = 'block';
}

//================================================
// do_filters()
// process and submit the filters form
//================================================
function do_filters() {

	// get the form
	var f = document.getElementById('forum');
	var url = '';
	for (var i = 0; i < f.length; i++) {
		var e = f.elements[i];
		if (e.type != 'hidden' && e.type != 'checkbox' &&
			e.type != 'select-one')
			continue;
		if (e.type=='checkbox' && !e.checked)
			continue;
		if (e.value==null || e.value=='')
			continue;
		if (e.name=='page') continue;
		
		// add to url
		if (url != '')
			url += "&";
		url += e.name + "=" + e.value;
	}
	results = 'woman_content';
	param = url + "&noui=t";

	// submit
	loadXMLDoc(f.action, 'woman_content', true);
}

//================================================
// edit_tags(threadid)
// display the popup window to edit tags
//================================================
function edit_tags(threadid) {

	window.open('http://skindig.net/edittags/' + threadid, "Tag_edit", "width=785,height=875,top=205,left=220,scrollbars=yes,resizable=yes");
}

//================================================
// show_guide(letter)
// @param letter - first letter of guide entry
// letter rolodex for guide entries
//================================================
function show_guide(letter) {

	form = document.getElementById('forum');
	form.action = 'http://skindig.net/guide/' + letter;
	form.letter.value = letter;
	form.mode.value = 'letter';
	form.submit();
}

//================================================
// add_scene()
// toggles the add new guide scene form
//================================================
function add_scene() {

	if (guide_form) {
		setTimeout("document.getElementById('scene_data').style.display = 'none';", 40);
		guide_form=false;
		
	} else {
		results = 'scene_data';
		loadXMLDoc('http://skindig.net/guide/addform', 'scene_data');
		setTimeout("document.getElementById('scene_data').style.display = 'block';", 80);
		guide_form=true;
	}
}

//================================================
// submit_scene()
// submits the add new guide scene form
//================================================
function submit_scene() {

	form = document.getElementById('forum');
	form.action='http://skindig.net/guide/addscene';
	form.mode.value='addscene';
	form.submit();
}

//================================================
// show_file(id)
// displays an image
//================================================
function show_file(id) {

	if (!getCookie('id')) {
		var viewed = getCookie('viewed');
		if (viewed >= 10) {
			move_register(1);
			return;
		}
	}
	window.open('http://skindig.net/view/' + id, 'sdcontent');
}

//================================================
// show_movie(id)
// displays the movie popup window
// @param id - movie id
//================================================
function show_movie(id) {

	if (!getCookie('id')) {
		var viewed = getCookie('viewed');
		if (viewed >= 10) {
			move_register(1);
			return;
		}
	}
	window.open('http://skindig.net/flash/' + id, "Movie", "width=800,height=485,scrollbars=yes,resizable=yes");
}

//================================================
// show_reorder()
// displays the file upload re-order form
//================================================
function show_reorder() {
	
	document.getElementById('do').value="reorder";
	document.forms.upload.submit();
}

//================================================
// save_order()
// saves the new order of file upload list
//================================================
function save_order() {

	document.getElementById('do').value = 'commit_reorder';
	//junkdrawer.inspectListOrder('boxes');
	document.upload.order.value = junkdrawer.serializeList(document.getElementById('boxes'));
	document.upload.submit();
}

//================================================
// toggle_category(id)
// @param id - category id
// enable/disable display of a category
// on the front page index
//================================================
function toggle_category(id) {

	/*var aElm=document.body.getElementsByTagName('*');
	for(var i=0; i<aElm.length; i++) {
    	if(aElm[i].className=='cat'+id) {
			aElm[i].style.display == 'block' ?
			aElm[i].style.display = 'none' :
			aElm[i].style.display = 'block';
        }
    }*/
	
	// close window
	if (document.getElementById('cat' + id + '_closed').style.display == 'table') {
		document.getElementById('cat' + id + '_closed').style.display = 'none';
		document.getElementById('cat' + id + '_opened').style.display = 'table';
	
	// open window
	} else {
		document.getElementById('cat' + id + '_closed').style.display = 'table';
		document.getElementById('cat' + id + '_opened').style.display = 'none';
	}
	
}

//================================================
// close(id)
// friendly alias for toggle_category
//================================================
function close(id) {
	toggle_category(id);
}

//================================================
// register()
// toggle registration popup display
//================================================
function register() {

	if (document.getElementById('register_popup').style.display != 'block') {
		if (!register_form) {
			results = 'register_popup';
			loadXMLDoc('http://skindig.net/register/noui', 'register_popup');
			//register_form = true;
		}
		setTimeout("document.getElementById('register_popup').style.display = 'block';", 80);

	} else
		setTimeout("document.getElementById('register_popup').style.display = 'none';", 40);
		
	//document.getElementById('search').style.display = 'none';
	//document.getElementById('login_box').style.display = 'none';
}

//================================================
// move_register(ad)
// toggle registration popup display
//================================================
function move_register(ad) {

	document.getElementById('register_popup').style.display = 'none';
	if (document.getElementById('register_popup').style.display != 'block') {
		if (!register_form) {
			results = 'register_popup';
			loadXMLDoc('http://skindig.net/register/noui/' + ad, 'register_popup');
			//register_form = true;
		}
		setTimeout("document.getElementById('register_popup').style.display = 'block';", 80);

	} else
		setTimeout("document.getElementById('register_popup').style.display = 'none';", 40);
		
	//document.getElementById('search').style.display = 'none';
	//document.getElementById('login_box').style.display = 'none';

	var posX = mouseX;
	var posY = mouseY;
	// set window constraints
	if (window.innerHeight) {
		winHeight = window.innerHeight;
		winWidth = window.innerWidth;
	} else {
		winHeight = document.body.clientHeight;
		winWidth = document.body.clientWidth;
	}
	offset = getScrollXY();
	winWidth += offset[0];
	winHeight += offset[1];
	
	if (posX + 505 > winWidth) posX = winWidth - 505;
	if (posY + 310 > winHeight) posY = winHeight - 310;
	// set position
	document.getElementById('register_popup').style.left = posX;
	document.getElementById('register_popup').style.top = posY;
	//if (document.getElementById('link_user_popup')) {
		document.getElementById('link_user_popup').style.left = posX;
		document.getElementById('link_user_popup').style.top = posY;
	//}
}

//================================================
// create_account()
// submit registration form
//================================================
function create_account() {

	var f = document.getElementById('register_form');
	f.action = 'http://skindig.net/register/noui';
	var url = '';
	for (var i = 0; i < f.length; i++) {
		var e = f.elements[i];
		/*if (e.type != 'hidden' && e.type != 'checkbox')
			continue;
		if (e.type=='checkbox' && !e.checked)
			continue;
		if (e.value==null || e.value=='')
			continue;*/
		if (e.type=='button') continue;
		
		// add to url
		if (url != '')
			url += "&";
		url += e.name + "=" + e.value;
	}
	results = 'register_popup';
	param = url;

	// submit
	loadXMLDoc(f.action, 'register_popup', true);
}

//================================================
// lost_password()
// show the lost password form
//================================================
function lost_password() {

	results = 'register_popup';
	loadXMLDoc('http://skindig.net/lostpass', 'register_popup');
}

//================================================
// submit_inline_form()
// submits the an ajax form
// so the results appear in the same place
// @param f - an input form
//================================================
function submit_inline_form(f) {

	var url = '';
	for (var i = 0; i < f.length; i++) {
		var e = f.elements[i];
		/*if (e.type != 'hidden' && e.type != 'checkbox')
			continue;
		if (e.type=='checkbox' && !e.checked)
			continue;
		if (e.value==null || e.value=='')
			continue;*/
		if (e.type=='button') continue;
		
		// add to url
		if (url != '')
			url += "&";
		url += e.name + "=" + e.value;
	}
	results = 'register_popup';
	param = url;
	
	// submit
	loadXMLDoc(f.action, 'register_popup', true);
}

//================================================
// switch_gallery_page(page)
// @param page - page to switch to in gallery
//================================================
function switch_gallery_page(page) {

	var current_url = document.location + "/page_gal" + page;
	results = 'gallery';
	loadXMLDoc(current_url, 'gallery');
}


//================================================
// restrict_log(mode, value)
// @param mode - mode to restrict log to
// @param vlaue
//================================================
function restrict_log(mode, value) {
	
	document.getElementById('ip').value=
	document.getElementById('login').value=
	document.getElementById('url').value='';
	
	document.getElementById(mode).value = value;
	document.getElementById('admin_log').submit();
}

//===============================================
// change_log_page(page)
// @param page - page to change to
// changes the page in admin log
//===============================================
function change_log_page(page) {

	document.getElementById('page').value = page;
	document.getElementById('admin_log').submit();
}

//================================================
// is_numeric(a)
// checks if value is a number
//================================================
function is_numeric(a) {

	var valid_char = "0123456789";
	var is_num = true;
	
	for (i=0; i < a.length && is_num; i++) {
		if (valid_char.indexOf(a.charAt(i)) == -1)
			is_num=false;
	}
	
	return is_num;
}

//================================================
// add_smilie(name)
// appends smilie onto post form
//================================================
function add_smilie(name) {

	var smilie_code = "<img src=\"//skindig.net/images/smilies/0/" + name + "\">";
	//document.getElementById('pagetext').value += smilie_code;
	var inst = FCKeditorAPI.GetInstance('pagetext');
	var cur_text = inst.GetHTML();
	cur_text = cur_text.substring(0, cur_text.length-4);
	inst.SetHTML(cur_text + smilie_code + "</p>");
}

//================================================
// toggle_tags()
// toggle tags display on post form
//================================================
function toggle_tags() {

	document.getElementById('tags').style.display == 'block' ?
	document.getElementById('tags').style.display = 'none' :
	document.getElementById('tags').style.display = 'block';
}

//================================================
// do_tags()
// toggles display of tags form
//================================================
function do_tags() {

	document.getElementById('do').value='tag';
	//document.getElementById('newthread').action=document.getElementById('newthread').action+'/tag';
	document.getElementById('newthread').submit();
}

//================================================
// getElementsByName_iefix
// fixes getElementsByName ie bug
//================================================
function getElementsByName_iefix(tag, name) {
     
     var elem = document.getElementsByTagName(tag);
     var arr = new Array();
     for(i = 0,iarr = 0; i < elem.length; i++) {
          att = elem[i].getAttribute("name");
          if(att == name) {
               arr[iarr] = elem[i];
               iarr++;
          }
     }
     return arr;
}

//================================================
// highlight_search()
// clears the search box if its the first time
//================================================
function highlight_search() {

	if (!first_search)
		return;
		
	document.getElementById('search').value='';	
	first_search = false;
}

//================================================
// position_popup()
// determine popup position by window dimensions
//================================================
function position_popup() {

	if (window.innerHeight) {
		winHeight = window.innerHeight;
		winWidth = window.innerWidth;
	} else {
		winHeight = document.body.clientHeight;
		winWidth = document.body.clientWidth;
	}
	
	// set new x-pos in search popup
	if (document.getElementById('suggest_name')!=null)
		document.getElementById('suggest_name').style.left = winWidth - 239;
	
	if (document.getElementById('register_popup')!=null)
		document.getElementById('register_popup').style.left = (winWidth / 2) - 239;

	if (document.getElementById('link_user_popup')!=null) {
		document.getElementById('link_user_popup').style.left = (winWidth / 2) - 239;
		document.getElementById('link_user_popup').style.top = 64;
	}
}

//================================================
// preview_popup(threadid)
// content preview popup
//================================================
function preview_popup(threadid) {

	disable_called = false;
	results	 = 'content_preview';
	loadXMLDoc('http://skindig.net/quickpreview/' + threadid, 'content_preview');
	//return overlib("blah", DELAY, 333, FULLHTML);
}

//================================================
// s_nd()
// splodo wrapper to overlib nd()
//================================================
function s_nd() {

	disable_called = true;
	return nd();
}

//================================================
// set_rating(value, threadid)
// user set rating
// @param value - new rating
// @param threadid
//================================================
function set_rating(value, threadid) {

	// ajax call
	results = '';
	loadXMLDoc('http://skindig.net/rating/' + threadid + '/' + value, '');
}

//================================================
// prepare_tag()
// prepare tag form
//================================================
function prepare_tag() {

	jQuery(".tag_tree").checkboxTree({
			collapsedarrow: "/skindig/images/tree_collapsed.gif",
			expandedarrow: "/skindig/images/tree_expanded.gif",
			blankarrow: "/skindig/images/tree_blank.gif",
			checkchildren: false
	});
}

//================================================
// change_woman_sorting()
// change the sorting on the woman pages
//================================================
function change_woman_sorting() {

	do_filters();
}

//================================================
// toggle(id)
// toggles display of a div on & off
//================================================
function toggle(id) {
	var elem = document.getElementById(id);
	if (!elem) return;
	elem.style.display == 'block' ?
	elem.style.display = 'none' :
	elem.style.display = 'block';
	
}

//================================================
// turn_on(id)
// turns on display of an element
//================================================
function turn_on(id) {
	var elem = document.getElementById(id);
	if (!elem) return;
	elem.style.display = 'block';
}

//================================================
// create_inbox_folder()
// submits creation form
//================================================
function create_inbox_folder() {

	document.getElementById('mode').value='create_folder';
	document.getElementById('inbox').submit();
}

//================================================
// move_inbox_messages()
// moves messages in user inbox
//================================================
function move_inbox_messages() {

	document.getElementById('mode').value='move_messages';
	document.getElementById('inbox').submit();
}

//================================================
// delete_folder()
// removes a folder from user's inbox
//================================================
function delete_folder() {

	document.getElementById('mode').value='remove_folder';
	document.getElementById('inbox').submit();
}

//================================================
// empty_trash()
// empties users trash bin
//================================================
function empty_trash() {

	document.getElementById('mode').value='empty_trash';
	document.getElementById('inbox').submit();
}

//================================================
// reply_to_privmsg()
// display the privmsg reply form
//================================================
function reply_to_privmsg() {

	results = 'privmsg_reply';
	//loadXMLDoc('http://skindig.net/root.php?m=newreply&t=' + t + '&noui=on');
	var url = location.href;

	loadXMLDoc(url + '/reply', 'privmsg_reply');
}

//================================================
// quote_privmsg()
// displays the privmsg reply form with quote
//================================================
function quote_privmsg() {

	results = 'privmsg_reply';
	var url = location.href;
	loadXMLDoc(url + '/quote', 'privmsg_reply');
}

//================================================
// mark_as_read()
// marks messages as read
//================================================
function mark_as_read() {

	document.getElementById('mode').value='mark_read';
	document.getElementById('inbox').submit();
}

//================================================
// getMouseXY(e)
// get mouse coordinates
//================================================
function getMouseXY(e) {

	var IE = document.all?true:false

	if (IE) {
		// grab the x-y pos.s if browser is IE
		mouseX = event.clientX + document.body.scrollLeft;
		mouseY = event.clientY + document.body.scrollTop;
	} else {
		// grab the x-y pos.s if browser is NS
		mouseX = e.pageX;
		mouseY = e.pageY;
	}

}

//================================================
// getScrollXY()
// get window scroll offset
//================================================
function getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}

//================================================
// getCookie()
// reads a cookie
//================================================
function getCookie(name) {

	var arg = name + "=";
	var alen = arg.length;
	var clen = document.cookie.length;
	var i = 0;
	while (i < clen) {
		var j = i + alen;
		if (document.cookie.substring(i, j) == arg) {
			return getCookieVal (j);
		}
		i = document.cookie.indexOf(" ", i) + 1;
		if (i == 0) break; 
    }
	return null;
}

function getCookieVal (offset) {
	var endstr = document.cookie.indexOf (";", offset);
	if (endstr == -1) { endstr = document.cookie.length; }
	return unescape(document.cookie.substring(offset, endstr));
}

//================================================
// subscribe()
// launches the subscription form
//================================================
function subscribe() {

	document.getElementById('signup_form').submit();
}

//================================================
// close_link()
// closes the link user dialog box
//================================================
function close_link() {
	
	document.getElementById('link_user_popup').style.display='none';
}

//================================================
// delete_icon()
// deletes the user avatar icon
//================================================
function delete_icon() {

	document.getElementById("do").value='delete_icon';
	document.getElementById("user_options").submit();
}

//================================================
// capture_mouse_events()
// captures mouse movement position
//================================================
function capture_mouse_events() {

	var IE = document.all?true:false
	
	// If NS -- that is, !IE -- then set up for mouse capture
	if (!IE) document.captureEvents(Event.MOUSEMOVE)
	document.onmousemove = getMouseXY;
}

//================================================
// toggle_username_popup(idx)
// toggles display of username popup window
// @param idx - username index on page
//================================================
function show_username_popup(idx) {

	if (document.getElementById('user_popup' + idx).style.display != 'block')
		document.getElementById('user_popup' + idx).style.display = 'block';
	else
		document.getElementById('user_popup' + idx).style.display = 'none';
}
