//Define Globals
var currentPage, buttonDir, buttonPrefix, buttonOverSuffix, buttonOutSuffix, buttonClickSuffix, phpImageswapCurrent = null;

function registerButtons(buttonArray, dir, prefix, oversuffix, outsuffix, clicksuffix, current) {
	//Fill in the globals
	buttonDir = dir;
	buttonPrefix = prefix;
	buttonOverSuffix = oversuffix;
	buttonClickSuffix = clicksuffix;
	buttonOutSuffix = outsuffix;
	//Set the default selected button
	if (phpImageswapCurrent != null) {
		//The php script for frame detection has forwarded to the home page from a framepage - setup the current page to reflect that
		//First search the link tags for a matching page location
		for (var i=0; i<buttonArray.length; i++) {
			var path = document.getElementById(buttonArray[i]).parentNode.href;
			var pathArr = path.split('/');
			if (pathArr[pathArr.length-1].indexOf(phpImageswapCurrent) != -1) {
				currentPage = document.getElementById(buttonArray[i]);
				currentPage.src = buttonDir + buttonPrefix + currentPage.id + buttonClickSuffix;
				break;
			}
		}
	} else {
		currentPage = document.getElementById(current);
		currentPage.src = buttonDir + buttonPrefix + currentPage.id + buttonClickSuffix;
	}
	//Loop through button array that was given to us and add event listeners for each button
	for (var i=0; i<buttonArray.length; i++) {
		buttonPointer = document.getElementById(buttonArray[i]);
		if (buttonPointer.addEventListener){
		  //Mozilla, webkit, etc - Add Listeners
		  buttonPointer.addEventListener('click', buttonClick, false); 
		  buttonPointer.addEventListener('mouseover', buttonOver, false); 
		  buttonPointer.addEventListener('mouseout', buttonOut, false);
		} else if (buttonPointer.attachEvent) {
		  //IE code - Add Listeners
		  buttonPointer.attachEvent('onclick', buttonClick);
		  buttonPointer.attachEvent('onmouseover', buttonOver);
		  buttonPointer.attachEvent('onmouseout', buttonOut);
		}
		//Set up a self-reference pointer so we can later discover which button is calling a particular event
		buttonPointer.myflag = buttonPointer;
		//Preload Images
		preload(buttonDir + buttonPrefix + buttonPointer.id + buttonOutSuffix);
		preload(buttonDir + buttonPrefix + buttonPointer.id + buttonOverSuffix);
		preload(buttonDir + buttonPrefix + buttonPointer.id + buttonClickSuffix);
	}
}
function buttonClick(evt) {
	//We use this method of passing variables since the 'this' property isnt supported in IE
	var button;
	var ie_var = "srcElement";
	var moz_var = "target";
	var prop_var = "myflag";
	// "target" for Mozilla, Netscape, Firefox et al. ; "srcElement" for IE
	evt[moz_var] ? button = evt[moz_var][prop_var] : button = evt[ie_var][prop_var];
	//Set button to selected state
	button.src = buttonDir + buttonPrefix + button.id + buttonClickSuffix;
	if (currentPage != button) {
		//If the currently selected button is different from the last selected button, then reset the last selected button to its unselected and unhighlited state
		currentPage.src = buttonDir + buttonPrefix + currentPage.id + buttonOutSuffix;
		currentPage = button;
	}
}
function buttonOver(evt) {
	//We use this method of passing variables since the 'this' property isnt supported in IE
	var button;
	var ie_var = "srcElement";
	var moz_var = "target";
	var prop_var = "myflag";
	// "target" for Mozilla, Netscape, Firefox et al. ; "srcElement" for IE
	evt[moz_var] ? button = evt[moz_var][prop_var] : button = evt[ie_var][prop_var];
	if (currentPage != button) {
	  //Set button to highlited state only if we are hovering over the button for a different page then the current one
	  button.src = buttonDir + buttonPrefix + button.id + buttonOverSuffix;
	}
}
function buttonOut(evt) {
	//We use this method of passing variables since the 'this' property isnt supported in IE
	var button;
	var ie_var = "srcElement";
	var moz_var = "target";
	var prop_var = "myflag";
	// "target" for Mozilla, Netscape, Firefox et al. ; "srcElement" for IE
	evt[moz_var] ? button = evt[moz_var][prop_var] : button = evt[ie_var][prop_var];
	if (button == currentPage) {
		//This is the currently selected button so reset its image to the selected image
		button.src = buttonDir + buttonPrefix + button.id + buttonClickSuffix;
	} else {
		//Set button to unselected, unhighlited state
		button.src = buttonDir + buttonPrefix + button.id + buttonOutSuffix;
	}
}
function preload(img) {
	imageObj = new Image();
	imageObj.src = img;
}
