var baseCategories = new Array();
var currentCategoryId = -1;
var currentCategoryName = "All Categories";
var selectedCategoryId = -1;
var selectedCategoryName = "All Categories";

var plainCateString = "";

var currentCategoryListingArray = new Array();

function initCategoryLoader(){
	var sUrl = "php/categoryChildLister.php?parentCategory=-1";
	var sendTransaction = YAHOO.util.Connect.asyncRequest('POST', sUrl, baseCategoryLoad, null); 
}

var baseCategoryLoad = {  
	success: baseCategoryLoaded,
	failure: function() { alert("could not connect to categorylist server.")}
};
var globalDebug;
function baseCategoryLoaded(raw){
	globalDebug = raw;
	var categoryTexts = raw.responseText.split("::");
	for(var i = 0; i < categoryTexts.length; i++){
		var x = new Object();
		x.id = categoryTexts[i].split("**")[0];
		x.name = categoryTexts[i].split("**")[1];
		baseCategories.push(x);
	}
	baseCategory();
}

function baseCategory(){
	currentCategoryId = -1;
	currentCategoryName = "All Categories";
	
	//currentCategoryListingArray = new Array();
	plainCateString = "";
	
	var tarCategoryListing = document.getElementById('currentCategory');
	var clearCategorySpan = document.getElementById('clearCategorySpan');
	tarCategoryListing.innerHTML = "None";
	clearCategorySpan.style.display = "none";

	
	var tar1 = document.getElementById('categoryListings1');
	var tar2 = document.getElementById('categoryListings2');
	var tarCategoryListing = document.getElementById('currentCategory');
	tarCategoryListing.innerHTML = "None";
	while(tar1.childNodes.length > 0){
		tar1.removeChild(tar1.childNodes[0]);
	}
	while(tar2.childNodes.length > 0){
		tar2.removeChild(tar2.childNodes[0]);
	}
	
	for(var i = 0; i < baseCategories.length; i++){
		if(baseCategories[i].name != undefined){
			var s = document.createElement('div');
			s.className = "categoryDiv";
			var a = document.createElement('a');
			a.innerHTML = baseCategories[i].name;
			a.href = "javascript:expandCategory(\""+baseCategories[i].name+"\","+baseCategories[i].id+")";
			s.appendChild(a);
			if(i < 18)
				tar1.appendChild(s);
			else
				tar2.appendChild(s);
		}
	}
}

function expandCategory(nam,catId){
	var tar1 = document.getElementById('categoryListings1');
	var tar2 = document.getElementById('categoryListings2');
	var tarCategoryListing = document.getElementById('currentCategory');
	var clearCategorySpan = document.getElementById('clearCategorySpan');
	
	currentCategoryId = catId;
	currentCategoryName = nam;
	
	document.getElementById('categoryLoaderDiv').style.display = "";
	
	if(tarCategoryListing.innerHTML == "None"){
		tarCategoryListing.innerHTML = "";
		plainCateString = "";
	}else{
		tarCategoryListing.innerHTML += " >> ";
		plainCateString += " >> ";
	}
	
	clearCategorySpan.style.display = "";
	
	var a = document.createElement('a');
	a.href= "javascript:clearBackToCategory(\""+nam+"\","+catId+")";
	a.innerHTML = nam;
	
	tarCategoryListing.appendChild(a);
	plainCateString += nam;
	
	while(tar1.childNodes.length > 0){
		tar1.removeChild(tar1.childNodes[0]);
	}
	while(tar2.childNodes.length > 0){
		tar2.removeChild(tar2.childNodes[0]);
	}
	
	var x = new Object();
	x.name = nam;
	x.id = catId;
	currentCategoryListingArray.push(x);
	
	var sUrl = "php/categoryChildLister.php?parentCategory="+catId;
	var sendTransaction = YAHOO.util.Connect.asyncRequest('POST', sUrl, categoryLoad, null);
	
}

var categoryLoad = {  
	success: categoryLoaded,
	failure: function() { alert("could not connect to categorylist server.")}
};

function categoryLoaded(raw){
	globalDebug = raw;
	var categories = new Array();
	var categoryTexts = raw.responseText.split("::");
	for(var i = 0; i < categoryTexts.length; i++){
		if(categoryTexts[i] != ""){
			var x = new Object();
			x.id = categoryTexts[i].split("**")[0];
			x.name = categoryTexts[i].split("**")[1];
			categories.push(x);
		}
	}
	populateCategories(categories);
}

function populateCategories(categories){
	var tar1 = document.getElementById('categoryListings1');
	var tar2 = document.getElementById('categoryListings2');
	var tarCategoryListing = document.getElementById('currentCategory');

	document.getElementById('categoryLoaderDiv').style.display = "none";
	if(categories.length == 0){
		var s = document.createElement('div');
		s.className = "emptyCategoryDiv";
		s.innerHTML = "No more sub-categories.";
		tar1.appendChild(s);
	}
	
	for(var i = 0; i < categories.length; i++){
		if(categories[i].name != undefined){
			var s = document.createElement('div');
			s.className = "categoryDiv";
			var a = document.createElement('a');
			a.innerHTML = categories[i].name;
			a.href = "javascript:expandCategory(\""+categories[i].name+"\","+categories[i].id+")";
			s.appendChild(a);
			if(i < categories.length/2)
				tar1.appendChild(s);
			else
				tar2.appendChild(s);
		}
	}
}

function clearBackToCategory(nam,catId){
	var tarCategoryListing = document.getElementById('currentCategory');
	var clearCategorySpan = document.getElementById('clearCategorySpan');
	clearCategorySpan.style.display = "none";
	tarCategoryListing.innerHTML = "";

	var tempCatListing = new Array();
	
	var i = 0;
	if(currentCategoryListingArray[i+1] && currentCategoryListingArray[0].id != catId){
		while(currentCategoryListingArray[i+1].id != catId){
			var a = document.createElement('a');
			a.href= "javascript:clearBackToCategory(\""+currentCategoryListingArray[i].name+"\","+currentCategoryListingArray[i].id+")";
			a.innerHTML = currentCategoryListingArray[i].name;
			tarCategoryListing.appendChild(a);
			tarCategoryListing.innerHTML += " >> ";
			var x = new Object();
			x.name = currentCategoryListingArray[i].name;
			x.id = currentCategoryListingArray[i].id;
			tempCatListing.push(x);
			i++;
		}
		var tempName = currentCategoryListingArray[i].name;
		var tempId = currentCategoryListingArray[i].id;
		currentCategoryListingArray = tempCatListing;
		expandCategory(tempName,tempId);		
	}
	else{
		baseCategory();
	}

}

function selectCategory(){
	document.getElementById('categoryNameSpan').innerHTML = currentCategoryName;
	selectedCategoryId = currentCategoryId;
	document.getElementById('categorySelector').style.display = "none";
	selectedCategoryName = currentCategoryName;
	if(plainCateString.length > 50)
		document.getElementById('searchBarCategoryListings').innerHTML = plainCateString.substr(0,50) + "...";
	else
		document.getElementById('searchBarCategoryListings').innerHTML = plainCateString;
}

function showCategorySelector(){
	document.getElementById('categorySelector').style.display = "";
}
