var VISIBLE_OBJECTS = new Array('home');

var PORTFOLIO_DIGITAL = new Array(
	["ThisIsJoe.DesignInDigital", "portfolio-digital-0.jpg"],
	["Blockbuster Recommends on Web", "portfolio-digital-1.jpg"],
	["Sourcelight Movie Guide on Kiosk", "portfolio-digital-2.jpg"],
	["Sourcelight Movie Guide on Ipaq", "portfolio-digital-3.jpg"],
	["Blockbuster-on-Demand for Television (concept)", "portfolio-digital-4.jpg"],
	["Sourcelight Movie Guide on Kiosk (Infavo concept)", "portfolio-digital-5.jpg"],
	["Sourcelight Movie Guide on Kiosk (concept)", "portfolio-digital-6.jpg"],
	["Sourcelight Movie Guide Concept for Web", "portfolio-digital-7.jpg"],
	["Entertainment Decisions Corporate Site", "portfolio-digital-8.jpg"],
	["Banner Ad for Discocity Records Event", "portfolio-digital-9.jpg"],
	["Golden Eagle Martial Arts Web Site (pending concept)", "portfolio-digital-10.jpg"],
	["Syro Malabar 2001 Catholic Convention Web Site", "portfolio-digital-11.jpg"],
	["Midtown Education Foundation Web Site (concept/usability exercise)", "portfolio-digital-12.jpg"],
	["Sourcelight Movie Guide on Kiosk - Flash Intro Sequence", "portfolio-digital-13.jpg"],
	["Sock World (just having a little fun :))", "portfolio-digital-14.jpg"]);

var PORTFOLIO_PRINT = new Array(
	["ThisIsJoe.DesignInPrint", "portfolio-print-0.jpg"],
	["Sourcelight Technologies, Inc.", "portfolio-print-1.jpg"],
	["Jessie Kunnel DDS General Dentistry", "portfolio-print-2.jpg"],
	["Jim Chalil Landscape Design", "portfolio-print-3.jpg"],
	["Golden Eagle Martial Arts", "portfolio-print-4.jpg"],
	["\"Team Fintan\" T-Shirt for Sourcelight Team Building", "portfolio-print-5.jpg"],
	["Coco Grill Asian Kitchen", "portfolio-print-6.jpg"],
	["Sourcelight 2002 \"Popcorn and Movie\" Holiday Greeting", "portfolio-print-7.jpg"]);

var PORTFOLIO_ETC = new Array(
	["ThisIsJoe.EtcDesign - currently being updated", "spacer.gif"],
	["Visual Basic Database Converter for GE Information Services", "portfolio-etc-1.jpg"]);

var PORTFOLIO_INDEX = 0;

var PORTFOLIO_MODE = ""; //Values: "digital", "print", "etc"

var PORTFOLIOS = {"digital": PORTFOLIO_DIGITAL,
		"print": PORTFOLIO_PRINT,
		"etc": PORTFOLIO_ETC};

var PORTFOLIO_NOENLARGE = {"digital": [0],
			   "print": [0],
			   "etc": [0, 1]};

var preloadFlag = false;
var reWhitespace = /^\s+$/
var reEmail = /^.+\@.+\..+$/

function newImage(arg) {
	if (document.images) {
		rslt = new Image();
		rslt.src = arg;
		return rslt;
	}
}

function changeImages() {
	if (document.images && (preloadFlag == true)) {
		for (var i=0; i<changeImages.arguments.length; i+=2) {
			document[changeImages.arguments[i]].src = changeImages.arguments[i+1];
		}
	}
}

function preloadImages() {
	if (document.images) {
		mainmenu_mapContact_over = newImage("images/mainmenu-mapContact-over.gif");
		mainmenu_mapResume_over = newImage("images/mainmenu-mapResume-over.gif");
		mainmenu_mapPortfolio_over = newImage("images/mainmenu-mapPortfolio-over.gif");
		preloadFlag = true;
	}
}

function sendDataViaHttp(req) {
	if ( typeof XMLHttpRequest == "object" ) {
		var xhr = new XMLHttpRequest();
	}
	if ( typeof ActiveXObject == "object" || typeof ActiveXObject == "function") {
		var xhr = new ActiveXObject("Msxml2.XMLHTTP")
	}
	if ( typeof xhr != "object" ) {
		alert("Could not get an XML HTTP object (" + typeof xhr + " " + typeof ActiveXObject + ")");
		return;
	}
	xhr.open("GET", req, false);
	xhr.send(null);
	resp = xhr.responseText;
	if ( resp.length < 0 ) {
		alert("Response too short");
		return;
	}
	var rawLines = resp.split("\n");
	if ( typeof rawLines != "object" ) {
		alert("Bad Response (it may be empty)");
		return;
	}
}

function encodeFields(id) {
	var val = document.getElementById(id).value;
	return encodeURI(val);
}

function newWin(urllink) {
	var width = 525;
	var height = 475;
	if (PORTFOLIO_MODE != "") {
		var p = PORTFOLIO_NOENLARGE[PORTFOLIO_MODE];
		for (var i=0; i < p.length; i++) {
			if (p[i] == PORTFOLIO_INDEX) {
				visibilityOff('portfolioEnlarge');
				return;
			}
		}
		var win = window.open(urllink, '_all', 'toolbar=0,location=0,directories=0,status=1,menubar=0,scrollbars=1,resizable=1,width=' + width + ',height=' + height);
		win.focus();
	}
}

function visibilityOn(id) {
	if (document.getElementById) {
		document.getElementById(id).style.visibility = "visible";
	} else {
		if (document.layers) {
			document.layers[id].visibility = "show";
		} else {
			if (document.all) {
				document.all.id.style.visibility = "visible";
			}
		}
	}
}

function visibilityOff(id) {
	if (document.getElementById) {
		document.getElementById(id).style.visibility = "hidden";
	} else {
		if (document.layers) {
			document.layers[id].visibility = "hidden";
		} else {
			if (document.all) {
				document.all.id.style.visibility = "hidden";
			}
		}
	}
}

function visibilityInherit(id) {
	if (document.getElementById) {
		document.getElementById(id).style.visibility = "inherit";
	} else {
		if (document.layers) {
			document.layers[id].visibility = "inherit";
		} else {
			if (document.all) {
				document.all.id.style.visibility = "inherit";
			}
		}
	}
}

function visibilityCheck(id) {
	var i;
	if (document.getElementById) {
		i = document.getElementById(id).style.visibility;
	} else {
		if (document.layers) {
			i = document.layers[id].visibility;
		} else {
			if (document.all) {
				i = document.all.id.style.visibility;
			}
		}
	}
	if (i == "hidden" || !i) {
		return false;
	} else {
		return true;
	} 
}

function visObjOff() {
	for (var i = 0; i < VISIBLE_OBJECTS.length; i++) {
		visibilityOff(VISIBLE_OBJECTS[i]);
	}
	VISIBLE_OBJECTS = new Array();
}

function navHandler(btn, args) {
	switch (btn) {
		case "home":
			homeBtn();
			break;
		case "mainmenu-portfolio":
			portMenuBtn();
			break;
		case "mainmenu-resume":
			resMenuBtn();
			break;
		case "mainmenu-contact":
			contMenuBtn();
			break;
		case "portfolio-digital":
		case "portfolio-print":
		case "portfolio-etc":
			portBtn(btn);
			break;
		case "portnav-next":
		case "portnav-prev":
		case "portnav-enlarge":
			portNavBtn(btn);
			break;
		case "contact-hello":
			contBtn();
			break;
		default:
			alert("sumthin weird happened");
			return;
	}
}

function homeBtn() {
	visObjOff();
	visibilityOn('home');
	VISIBLE_OBJECTS = ['home'];
}

function portMenuBtn() {
	visObjOff();
//	document.getElementById('portfolioTitle').innerHTML = "Select to view items from Digital, Print, or Etc.";
	changeImages('portfolioImg', "images/portfolio.jpg");
	PORTFOLIO_MODE = "";
	visibilityOn('portfolioMenu');
	visibilityOn('portfolioBG');
	VISIBLE_OBJECTS = ['portfolioMenu', 'portfolioBG'];
}

function portEnlargeBtnVis() {
	var p = PORTFOLIO_NOENLARGE[PORTFOLIO_MODE];
	for (var i=0; i < p.length; i++) {
		if (p[i] == PORTFOLIO_INDEX) {
			visibilityOff('portfolioEnlarge');
			return;
		}
	}
	visibilityOn('portfolioEnlarge');
	VISIBLE_OBJECTS = VISIBLE_OBJECTS.concat(['portfolioEnlarge']);
}

function portBtn(btn) {
	switch (btn) {
		case "portfolio-digital":
			PORTFOLIO_MODE = "digital";
			break;
		case "portfolio-print":
			PORTFOLIO_MODE = "print";
			break;
		case "portfolio-etc":
			PORTFOLIO_MODE = "etc";
			break;
		default:
			alert("sumthin weird happened");
			return;
	}
	PORTFOLIO_INDEX = 0;
	var port = PORTFOLIOS[PORTFOLIO_MODE];
	var p = port[PORTFOLIO_INDEX];
	var len = port.length - 1;
	var txt = p[0] + " (" + len + ")"
	document.getElementById('portfolioTitle').innerHTML = txt;
	changeImages('portfolioImg', "images/" + p[1]);
	visibilityOn('portfolioNav');
	VISIBLE_OBJECTS = VISIBLE_OBJECTS.concat(['portfolioNav']);
	portEnlargeBtnVis();
}

function portNavBtn(btn) {
	var port = PORTFOLIOS[PORTFOLIO_MODE];
	var len = port.length;
	switch (btn) {
		case "portnav-enlarge":
			alert("This function has been disabled temporarily... sorry :).");
			return;
		case "portnav-next":
			PORTFOLIO_INDEX++;
			PORTFOLIO_INDEX %= len;
			break;
		case "portnav-prev":
			PORTFOLIO_INDEX--;
			if (PORTFOLIO_INDEX < 0) {
				PORTFOLIO_INDEX = len - 1;
			}
			break;
		default:
			alert("sumthin weird happened");
			return;
	}
	var p = port[PORTFOLIO_INDEX];
	len--;
	if (PORTFOLIO_INDEX) {
		var txt = p[0] + " (" + PORTFOLIO_INDEX + "/" + len + ")";
	} else {
		var txt = p[0] + " (" + len + ")";
	}
	document.getElementById('portfolioTitle').innerHTML = txt;
	changeImages('portfolioImg', "images/" + p[1]);
	portEnlargeBtnVis();
}

function portLink() {
	var url = "./portfolio.php?type=" + PORTFOLIO_MODE + "&index=" + PORTFOLIO_INDEX;
	return url;
}

function updatePortAlt(i) {
		var img = document.getElementById(i);
	if (PORTFOLIO_MODE != "") {
		var alttxt = 'See more about ' + PORTFOLIOS[PORTFOLIO_MODE][PORTFOLIO_INDEX][0];
		img.alt = alttxt;
	} else {
		img.alt = "Portfolio";
	}
}

function resMenuBtn() {
	visObjOff();
	visibilityOn('resumeMenu');
	visibilityOn('resumeBG');
	VISIBLE_OBJECTS = ['resumeMenu', 'resumeBG'];
}
		
function contMenuBtn() {
	visObjOff();
	document.mailster.reset();
	visibilityOn('contactBG');
	VISIBLE_OBJECTS = ['contactBG'];
	document.mailster.contactName.focus();
}

function isEmpty(s) {
	return ((s == null) || (s.length == 0));
}

function isWhitespace(s) {
	return (isEmpty(s) || reWhitespace.test(s));
}

function isEmail(s) {
	return (!(isEmpty(s)) && reEmail.test(s));
}

function highlightLabel(styleObj) {
	styleObj.color = "#ff0000";
	styleObj.textDecorationBlink = "blink";
	styleObj.fontWeight = "bold";
}

function normalLabel(styleObj) {
	styleObj.color = "#000000";
	styleObj.textDecorationBlink = "";
	styleObj.fontWeight = "normal";
}

function formCheck() {
	var contact	= document.getElementById('contactName');
	var email	= document.getElementById('emailAddress');
	var inquiry	= document.getElementById('inquiry');
	var contactLbl	= document.getElementById('nameLbl');
	var emailLbl	= document.getElementById('emailLbl');
	var inquiryLbl	= document.getElementById('inquiryLbl');
	var formOk	= true;
	
	if (isWhitespace(contact.value)) {
		highlightLabel(contactLbl.style);
		formOk = false;
	} else {
		normalLabel(contactLbl.style);
	}
	if (!isEmail(email.value)) {
		highlightLabel(emailLbl.style);
		formOk = false;
	} else {
		normalLabel(emailLbl.style);
	}
	if (isWhitespace(inquiry.value)) {
		highlightLabel(inquiryLbl.style);
		formOk = false;
	} else {
		normalLabel(inquiryLbl.style);
	}
	return formOk;
}

function combineChecks(form, chk) {
	var str = "";
	var chks = document.getElementById(form).elements[chk];
	for (var i = 0; i < chks.length; i++) {
		if (chks[i].checked) {
			if (str.length != 0) {
				str += " : ";
			}
			str += encodeURI(chks[i].value);
		}
	}
	return str;
}

function submitMailster() {
	if (formCheck()) {
		//submit data via http req
		var n = encodeFields("contactName");
		var e = encodeFields("emailAddress");
		var p = encodeFields("phoneNumber");
		var it = combineChecks("mailster", "inquiryType[]");
		var i = encodeFields("inquiry");
		var req = "PHPMail.php?from=" + n + "&email=" + e + "&phoneNumber=" + p + "&inquiryType=" + it + "&inquiry=" + i;
		sendDataViaHttp(req);
	}
}

function contBtn() {
	submitMailster();
	visObjOff();
	visibilityOn('contactConfirm');
	VISIBLE_OBJECTS = ['contactConfirm'];
}