var current_offset = 0;
var increment = 3;
var locNode = false;

function icon(node) {
	var pNode = node.parentNode;
	
	while (!hasClass(pNode,"gallery")) {
		pNode = pNode.parentNode;
	}

	pNode.className = "gallery iconview";
	
	var gDivs = pNode.getElementsByTagName("div");
	
	for (i=0;i<gDivs.length;i++) {
		if (hasClass(gDivs[i],"slider")) {
			gDivs[i].style.display = "block";
		} else if (hasClass(gDivs[i],"list")) {
			gDivs[i].style.display = "none";
		} else if (hasClass(gDivs[i],"gallerynav")) {
			gDivs[i].getElementsByTagName("span")[0].style.display = "inline";
		}
	}
}

function list(node) {
	var pNode = node.parentNode;
	
	while (!hasClass(pNode,"gallery")) {
		pNode = pNode.parentNode;
	}

	pNode.className = "gallery listview";
	
	var gDivs = pNode.getElementsByTagName("div");
	
	for (i=0;i<gDivs.length;i++) {
		if (hasClass(gDivs[i],"slider")) {
			gDivs[i].style.display = "none";
		} else if (hasClass(gDivs[i],"list")) {
			gDivs[i].style.display = "block";
		} else if (hasClass(gDivs[i],"gallerynav")) {
			gDivs[i].getElementsByTagName("span")[0].style.display = "none";
		}
	}
}

function gallery_oc(node) {
	var pNode = node.parentNode;
	var ocNode = false;
	
	while (!hasClass(pNode,"gallery")) {
		pNode = pNode.parentNode;
	}

	var gDivs = pNode.getElementsByTagName("div");

	for (i=0;i<gDivs.length;i++) {
		if (gDivs[i].getAttribute("id") == "gallery_oc") {
			return false;
		} else if (hasClass(gDivs[i],"slider")) {
			var sliderArea = gDivs[i];
		} else if (hasClass(gDivs[i],"list")) {
			var listArea = gDivs[i];
		}
	}
	
	if (hasClass(pNode,"iconview")) {
		ocNode = sliderArea;
		locNode = ocNode;

		hideArrows(ocNode);
		setTimeout("showArrows(locNode)",600);
	} else if (hasClass(pNode,"listview")) {
		ocNode = listArea;
	}
	
	ocNode.setAttribute("id",'gallery_oc');
	
	if (hasClass(pNode,"collapsed")) {
		removeClass(pNode,"collapsed");
		Effect.BlindDown('gallery_oc',{duration: .5,scaleContent: false});
	} else {
		addClass(pNode,"collapsed");
		Effect.BlindUp('gallery_oc',{duration: .5});
	}

	ocNode.setAttribute("id",' ');
}

function hideArrows(node) {
	var arrows = node.getElementsByTagName("a");
	
	for (i=0;i<2;i++) {
		arrows[i].style.display = "none";
	}
}

function showArrows(node) {
	var arrows = node.getElementsByTagName("a");
	
	for (i=0;i<2;i++) {
		arrows[i].style.display = "block";
	}
}

function advance_slider(node,direction,searchstr,offset,results) {	
	if (results <= increment) {
		return false; 										// For l/r buttons
	} else if (offset == 0 && offset == current_offset && direction == "prev") {
		offset = results - increment;						// Left button on first load
	} else if (offset == results) {
		offset = 0;
	} else if (offset == current_offset) {
		return false;										// Clicking the same button
	}
	
	if (direction == "ask") {
		if (offset >= results) {
			direction = "next";
			offset = 0;
		} else if (offset > current_offset) {
			direction = "next";
		} else if (offset < current_offset) {
			direction = "prev";
		}
	}
	
	current_offset = offset;
	
	var url = "/ali/search.php?output=XML&offset=" + offset + "&results=" + increment + searchstr;
	
	request.open("GET",url,true);
	request.onreadystatechange = function () { slider_results(node,direction,searchstr,offset,results); };
	request.send(null);
	
	return false;
}

function slider_results(node,direction,searchstr,offset,results) {
	if (request.readyState == 4) {
		var response = request.responseXML;
		
		var items = response.getElementsByTagName("xmlitem");
		
		var container = document.createElement("div");
		container.className = "icons";
		container.setAttribute("id","new");
		
		for (i=0; i<items.length; i++) {			
			var column = createColumn(items[i]);
			container.appendChild(column);
		}
		
		// Find old area
		pNode = node.parentNode;		
		while (!hasClass(pNode,"gallery")) {
			pNode = pNode.parentNode;
		}
		
		var gDivs = pNode.getElementsByTagName("div");
		
		for (i=0;i<gDivs.length;i++) {
			if (hasClass(gDivs[i],"icons")) {
				gDivs[i].setAttribute("id","old");
				old_container = gDivs[i];
			} else if (hasClass(gDivs[i],"slider")) {
				var offPrev = offset - increment;
				if (offPrev < 0) { offPrev = 0; }	
				
				var offNext = offset + increment;
			
				gDivs[i].getElementsByTagName("a")[0].onclick = function() { advance_slider(this,"prev",searchstr,offPrev,results); return false; }
				gDivs[i].getElementsByTagName("a")[1].onclick = function() { advance_slider(this,"next",searchstr,offNext,results); return false; }
			} else if (hasClass(gDivs[i],"gallerynav")) {
				var nNode = gDivs[i].getElementsByTagName("span")[0];
			}
		}
		
		var navLinks = nNode.getElementsByTagName("a");
		if (navLinks.length > 1) { // Just in case collection is empty - for admin functions
			for (i=0,j=0;i<results;i=i+increment,j++) {
				if (i == offset) {
					navLinks[j].className = "current";
				} else {
					try {
						navLinks[j].className = "";
					} catch(err) {
						
					}
				}
			}
		}

		old_container.style.position = "absolute";
		old_container.style.top = "0px";
		old_container.style.width = "406px";
		
		container.style.position = "relative";
		if (direction == 'prev') {
			container.style.left = "-444px";
			container.style.top = "0px";
			container.xpos = -444;
		} else if (direction == 'next') {
			container.style.left = "444px";
			container.style.top = "0px";
			container.xpos = 444;
		}

		container.sliding = null;
		container.style.display = "none";
		old_container.parentNode.insertBefore(container,old_container);

		if (direction == 'prev') {
			slideElement("old",444,0,5);
			slideElement("new",0,0,5);
		} else if (direction == 'next') {
			slideElement("old",-444,0,5);
			slideElement("new",0,0,5);
		}		
	}	
}

function createColumn(response) {
	var id = response.getElementsByTagName("id")[0].firstChild.data;
	var desc = response.getElementsByTagName("desc")[0].firstChild.data;
	var title = response.getElementsByTagName("title")[0].firstChild.data;
	var fulltitle = response.getElementsByTagName("fulltitle")[0].firstChild.data;

	try {
		var thumb = response.getElementsByTagName("thumb")[0].firstChild.data;
	} catch(err) {
		var thumb = 'images/no_thumb.gif';
	}

	var column = document.createElement("div");
	column.className = "column";

	// Thumb
	var thumbLink = document.createElement("a");
	var thumbSrc = document.createElement("img");
	thumbSrc.className = 'thumb';
	thumbSrc.src = thumb;
	thumbSrc.setAttribute("width","90px");
	thumbSrc.setAttribute("height","60px");
	thumbLink.setAttribute("title",fulltitle);
	thumbLink.appendChild(thumbSrc);
	thumbLink.href = "item.php?itemID=" + id;
	
	var linkP = document.createElement("p");
	var linkA = document.createElement("a");
	linkA.href = "item.php?itemID=" + id;
	linkA.title = fulltitle;
	linkA.innerHTML = title;
	linkP.appendChild(linkA);
	
	column.appendChild(thumbLink);
	column.appendChild(linkP);
	
	return column;
}

function slideElement(elementId,x,y,inc) {
	if (!document.getElementById) return false;
	if (!document.getElementById(elementId)) return false;

	var element = document.getElementById(elementId);
	
	if (element.sliding) clearTimeout(element.sliding);
		
	if (!element.xpos) element.xpos = 0;
	if (!element.ypos) element.ypos = 0;

	if (element.xpos == x && element.ypos == y) { 
		if (elementId == 'new') { 
			element.setAttribute("id","");

			var area = element.parentNode;
			area.style.position = "relative";
		} else {
			var area = element.parentNode;
			area.removeChild(element);
		} 
		
		return true;
	};

	if (element.xpos > x) {

		var dist = Math.ceil((element.xpos-x)/inc);
		element.xpos = element.xpos - dist;

	}

	if (element.xpos < x) {

		var dist = Math.ceil((x-element.xpos)/inc);
		element.xpos = element.xpos + dist;

	}

	if (element.ypos > y) {

		var dist = Math.ceil((element.ypos-y)/inc);
		element.ypos = element.ypos - dist;

	}

	if (element.ypos < y) {

		var dist = Math.ceil((y-element.ypos)/inc);
		element.ypos = element.ypos + dist;

	}

	element.style.left = element.xpos+'px';
	element.style.top = element.ypos+'px';

	element.style.display = "block";
	
	element.sliding = setTimeout('slideElement("'+elementId+'",'+x+','+y+','+inc+')',10);
}