var http = createRequestObject();

var bb_init = false;
var bb_pageNum = 0;

var bg_hasThumb;
var bg_imageObj;
var bg_imageValid = false;

function createRequestObject() {
	var ro;
	var browser = navigator.appName;
	if(browser == "Microsoft Internet Explorer"){
		ro = new ActiveXObject("Microsoft.XMLHTTP");
	}else{
		ro = new XMLHttpRequest();
	}
	return ro;
}

function BackgroundImage(line)
{
	var tabs = line.split("\t");
	this.filename = tabs[0];
	this.name = tabs[1];
	this.thumb = tabs[2];
	this.thumbImg = new Image();
	this.thumbImg.src = this.thumb;
	this.description = tabs[3];
	this.repeat = tabs[4];
	this.position = tabs[5];
	this.attachment = tabs[6];
}

function bg_imageBlur()
{
	bg_hasThumb = false;
	bg_loadImage();
}

function bg_loadImage()
{
	var x = document.getElementById("bg_image").value;
	bg_imageValid = false;
	bg_imageObj = new Image();
	bg_imageObj.src = x;
	bg_imageObj.onload = bg_loadImageEx;
	bg_imageObj.onerror = bg_loadImageError;
}

function bg_fillPreviewWindow()
{
	if ( !bg_imageValid ) return;

	if ( !bg_hasThumb )
	{
		document.getElementById("bg_imagePreview").innerHTML = "<img height='90' width='120' src='" + bg_imageObj.src + "'>";
	}
}


function bg_loadImageEx()
{
	//if ( bg_imageObj.complete )
	//{
		bg_imageValid = true;
		//alert( "Image load complete: " + document.getElementById("bg_image").value );
	//}
	//else
	//{
	//	alert( "Error loading image - blah: " + document.getElementById("bg_image").value );
	//}
	bg_fillPreviewWindow();
	if ( ieFirstImage )
	{
		runTardBar();
		ieFirstImage = false;
	}
	else
		preview();

}

function bg_loadImageError()
{
	alert( "Error loading image: " + document.getElementById("bg_image").value );
	preview();
}


// display background browser
function bb_display()
{
	showLoadBox("Launching Background Chooser");		
	setTimeout(bb_displayEx, 20);
}

function bb_displayEx()
{
	if ( !bb_init )
	{
		bb_initialize();
	}
	else bb_displayFinish();
}

function bb_displayFinish()
{
	hideLoadBox();
	var x =	document.getElementById("bb")
	x.style.left = getCenterX(580);
	x.style.top = getCenterY(450);
	x.style.display = "block";
	document.getElementById("bb").style.display = "block";
}

function bb_close()
{
	document.getElementById("bb").style.display = "none";
}

function bb_initialize()
{
	bb_readCats();
	bb_init = true;
}

function bb_readCats()
{
	http.open("get", "retrieve-cats.php" );
	http.onreadystatechange = bb_readCatsEx;
	http.send(null);
}

function bb_readCatsEx()
{
	var response;

	if(http.readyState == 4){
		response = http.responseText;
	}
	else return;

	var x = document.getElementById("bb_cat");
	x.options.length = 0;

	var lines = response.split("\n");

	if ( lines[lines.length-1] == "" )
	{
		lines.length -= 1;
	}

	x.options[0] = new Option("", -2, true, true);
	x.options[1] = new Option("All Images", -1, false, false);

	for ( var i=0; i<lines.length; i++ )
	{
		var tabs = lines[i].split("\t");
		x.options[i+2] = new Option(tabs[1], tabs[0], false, false);
	}

	bb_displayFinish();
}

function bb_changeCat()
{
	bb_pageNum = 0;
	bb_loadPage();
}

function bb_goPrev()
{
	bb_pageNum--;
	bb_loadPage();
}

function bb_goNext()
{
	bb_pageNum++;
	bb_loadPage();
}

function bb_loadPage()
{
	var cat = document.getElementById("bb_cat").value;
	if ( cat == -2 )
		return;
	
	var start = bb_pageNum * 8;

	// get 9 images so we can see if there are more pages
	var url = "retrieve-image-info.php?start=" + start + "&num=9&cat=" + cat;

	//document.getElementById("status").innerHTML = url;

	http.open("get", url );
	http.onreadystatechange = bb_loadPageEx;
	http.send(null);
}

function bb_loadPageEx()
{
	var response;

	if(http.readyState == 4){
		response = http.responseText;
	}
	else return;


	var lines = response.split("\n");

	if ( lines[lines.length-1] == "" )
	{
		lines.length -= 1;
	}

	
	bb_images = new Array();
	var max = lines.length;
	if ( max > 8 )
	{	
		//also, there are more pages
		max = 8;
	}

	for ( var i=0; i<max; i++ )
	{
		bb_images[i] = new BackgroundImage(lines[i]);
	}

	for ( var i=0; i<max; i++ )
	{
		var div = document.getElementById("bb_image" + i);
		div.innerHTML = "<img src='http://www.grumpychimp.com/background-images/" + bb_images[i].thumb + "'>";
		div.style.display = "block";

		div = document.getElementById("bb_name" + i);
		div.innerHTML = bb_images[i].name;
		div.style.display = "block";
	}

	for (var i=max; i<8; i++ )
	{
		var div = document.getElementById("bb_image" + i);
		div.innerHTML = "";
		div.style.display = "none";

		div = document.getElementById("bb_name" + i);
		div.innerHTML = "";
		div.style.display = "none";
	}

	if ( bb_pageNum > 0)
		document.getElementById("bb_prev").style.display = "block";
	else
		document.getElementById("bb_prev").style.display = "none";

	if ( lines.length > 8 )
		document.getElementById("bb_next").style.display = "block";
	else
		document.getElementById("bb_next").style.display = "none";
}

function bb_selectImage(which)
{
	bg_has_thumb = true;
	x = bb_images[which];
	document.getElementById("bg_imagePreview").innerHTML = "<img src='http://www.grumpychimp.com/background-images/" + x.thumb + "'>";
	document.getElementById("bg_image").value = 'http://www.grumpychimp.com/background-images/' + x.filename;

	document.getElementById("bg_repeat").value = x.repeat;
	document.getElementById("bg_attachment").value = x.attachment;
	document.getElementById("bg_position").value = x.position;
	bg_loadImage();
}
