/*******************************************************************************

FILE: mud_Scripts.js
REQUIRES: prototype-1.3.1.js
AUTHOR: Takashi Okamoto mud(tm) - http://www.mudcorp.com/
VERSION: 1.0 - initial public release
DATE: 12/08/2005

*******************************************************************************/

////////////////////////////////////////////////////////////////////////////////
// GLOBAL VARS

var imgsOver = new Array();
var imgsOff = new Array();
var imgsVisited = new Array();
var selected = false;
var visited = new Array();
visited["about"] = false;
visited["work"] = false;
visited["foxx"] = false;
visited["shop"] = false;
visited["links"] = false;
visited["contact"] = false;

////////////////////////////////////////////////////////////////////////////////
// FUNCTIONS

function toggleDisplay(evt) {
	// get id
	evt = (evt) ? evt : ((event) ? event : null);
	if (evt) {
		var target = (evt.target) ? evt.target : evt.srcElement;
		var targetID = (target.id) ? target.id : target.name;
		if (targetID == selected) {
			unsetContent(selected);
			visited[selected] = true;
			selected = false;
		}
		else {
			// turn off other selected
			if (selected) {
				unsetContent(selected);
				visited[selected] = true;
			}
			selected = targetID;
			setContent(selected);
		}
	}
}

function unsetContent(obj) {
	// set img to visited
	document.images[obj].src = imgsVisited[obj].src;
	$(obj+"-content").style.display = 'none';
}

function setContent(obj) {
	// set img to active
	document.images[obj].src = imgsOver[obj].src;
	$(obj+"-content").style.display = 'block';
}

function toggleContentDisplay(obj) {
  var o = $(obj);
  if (o.visible()) {
    o.style.display = 'none';
  } else {
    o.style.display = 'block';
  }
}

function preloadImgs() {
	if (document.images) {
		// preloadmenu images
		var container = $('menu');
		var elements = container.getElementsByTagName('a');
		for (var i = 0; i < elements.length; i++) {
			if (elements[i].className == "menu") {
				var e = elements[i].childNodes[0].id;
				imgsOff[e] = new Image();
				imgsOff[e].src = "images/menu/menu_" + e + ".gif";
				imgsOver[e] = new Image();
				imgsOver[e].src = "images/menu/menu_" + e + "-on.gif";
				imgsVisited[e] = new Image();
				imgsVisited[e].src = "images/menu/menu_" + e + "-visited.gif";
			}
		}
	}
}

function imgOn(evt) {
	evt = (evt) ? evt : ((event) ? event : null);
	if (evt) {
		var target = (evt.target) ? evt.target : evt.srcElement;
		var imgID = (target.id) ? target.id : target.name;
		if (imgID) target.src = imgsOver[imgID].src;
	}
}

function imgOff(evt) {
	evt = (evt) ? evt : ((event) ? event : null);
	if (evt) {
		var target = (evt.target) ? evt.target : evt.srcElement;
		var imgID = (target.id) ? target.id : target.name;
		if (imgID != selected) {
			if (visited[imgID]) target.src = imgsVisited[imgID].src;
			else target.src = imgsOff[imgID].src;
		}
	}
}

function loadProject(cat_id, offset) {
	$('work-title').hide(); // make sure work image is hidden
	$('work-info').update("Loading...");
	$('work-images').hide();
	var params = "cat_id=" + cat_id + "&offset=" + offset;
	var myAjax = new Ajax.Request("project.php", 
		{
			method: 'get',
			parameters: params,
			onComplete: showInfo
		}
	);
}

function getElementTextNS(prefix, local, parentElem, index) {
	var result = "";
	if (prefix && isIE) {
		// IE/Windows way of handling namespaces
		result = parentElem.getElementsByTagName(prefix + ":" + local)[index];
	} else {
		result = parentElem.getElementsByTagName(local)[index];
	}
	if (result) {
		// get text, accounting for possible
		// whitespace (carriage return) text nodes 
		if (result.childNodes.length > 1) {
			return result.childNodes[1].nodeValue;
		} else {
			return result.firstChild.nodeValue;    		
		}
	}
	else {
		return "";
	}
}

function showInfo(req) {
	$('work-info').innerHTML = "";
	$('work-images').innerHTML = "";
	var item = req.responseXML.getElementsByTagName('item')[0];
	var info = getElementTextNS("", "workinfo", item, 0);
	var firstimage = getElementTextNS("", "workimage", item, 0);
	$('work-info').innerHTML = info;
	$('work-images').innerHTML = firstimage;
	if (/<img/.test(firstimage)) {
		Effect.Appear('work-images',
			{
				afterFinish: function() {
					Element.setOpacity('work-images', 0.99);
				}
			}
		);
	}
	else {
		$('work-images').show();
	}
}

function showImage(image) {
	setLoading();
	Element.setOpacity('work-images', 0);
	$('work-images').style.display = "none";
	Effect.Appear('work-images',
		{
			beforeStart: function() {
				$('work-image').src = image;
			},
			afterFinish: function() {
				unsetLoading();
			}
		}
	);
}

function setLoading() {
	$('loading').show();
}

function unsetLoading() {
	$('loading').hide();
}

function checkFields() {
	var sendername = getRawObject('sendername').value;
	sendername = sendername.replace(/&/g,"\&");
	sendername = sendername.replace(/\+/g,"\+");
	sendername = sendername.replace(/\=/g,"\=");

	var senderemail = getRawObject('senderemail').value;
	senderemail = senderemail.replace(/&/g,"\&");
	senderemail = senderemail.replace(/\+/g,"\+");
	senderemail = senderemail.replace(/\=/g,"\=");

	var message = getRawObject('message').value;
	message = message.replace(/&/g,"\&");
	message = message.replace(/\+/g,"\+");
	message = message.replace(/\=/g,"\=");

	if (!sendername || !senderemail || !message) {
		alert('Please make sure all fields are filled.');
		return false;
	}
	else return true;
}

////////////////////////////////////////////////////////////////////////////////
// MOUSE EVENTS

function setMouseClick() {
	var container = $('menu');
	var anchors = container.getElementsByTagName('a');
	for (var i = 0; i < anchors.length; i++) {
		if (anchors[i].className == "menu")
			anchors[i].onclick = function(evt) {
				toggleDisplay(evt);
				return false;
			};
	}
}

function setMouseOver() {
	var container = $('menu');
	var elements = container.getElementsByTagName('a');
	for (var i = 0; i < elements.length; i++) {
		if (elements[i].className == "menu")
			elements[i].onmouseover = imgOn;
	}
}

function setMouseOut() {
	var container = $('menu');
	var elements = container.getElementsByTagName('a');
	for (var i = 0; i < elements.length; i++) {
		if (elements[i].className == "menu")
			elements[i].onmouseout = imgOff;
	}
}

////////////////////////////////////////////////////////////////////////////////
// INIT

function init() {
	preloadImgs();
	setMouseClick();
	setMouseOver();
	setMouseOut();
	selected = 'work';
	setContent('work');
}

////////////////////////////////////////////////////////////////////////////////
// WINDOW EVENTS

Event.observe(window, 'load', init, false);