var tabs = ["global", "imageInfo", "albumWindow", "thumbnailWindow", "controls", "loadingIcon"];
var slideshowWidth = "480";
var slideshowHeight = "360";
var oldResult = "";
var updateForm = false;
var http_request = false;
var attributes = "";
var startWithAlbumID = "monokai";
var loadingPreset = false;

function validateNumber(min, max, ref) {
	if (!isNumber(ref.value)) ref.value = min;
	if (ref.value < min) ref.value = min;
	if (ref.value > max) ref.value = max;
}

function isNumber(s) {
	for (i = 0; i < s.length; i++) {
		var c = s.charAt(i);
		if ((c < '0' || c > '9') && !(c == '.' || c == '-')) return false;
	}
	return true;
}

function toggleDiv(d, ref, s) {
	var b = true;
	if (ref.checked) {
		ref.value = true;
		b = s;
	} else {
		ref.value = false;
		b = !s;
	}
	if (b) {
		document.getElementById(d).style.display = "inline";
	} else {
		document.getElementById(d).style.display = "none";
	}
}

function showDiv(o, d) {
	for (i = 0; i < tabs.length; i++) {
		if (tabs[i] != d) {
			document.getElementById(tabs[i]).style.display = "none";
		} else {
			document.getElementById(tabs[i]).style.display = "block";
		}
	}
	var menu = document.getElementById('configMenu');
	var anchors = menu.getElementsByTagName("a");
	for (i = 0; i < anchors.length; i++) {
		if (anchors[i] == o) {
			anchors[i].id = "selectedTab";
		} else {
			anchors[i].id = "";
		}
	}
}

function makePOSTRequest(url, parameters) {
	http_request = false;
	if (window.XMLHttpRequest) {
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType("text/html");
		}
	} else if (window.ActiveXObject) {
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if (!http_request) {
		alert("Cannot create XMLHTTP instance");
		return false;
	}
	http_request.onreadystatechange = alertContents;
	http_request.open("POST", url, true);
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http_request.setRequestHeader("Content-length", parameters.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.send(parameters);
}

function alertContents() {
	var msg = document.getElementById("configMessage");
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			result = http_request.responseText;
			oldResult = result;
			msg.innerHTML = "&nbsp;";
			updateFlash(result);
		} else {
			alert("There was a problem with the request.");
		}
	}
}

function getValue(tag) {
	if (tag.tagName == "INPUT") {
		if (tag.type == "text") {
			attributes += tag.name + "=" + tag.value + "&";
		}
		if (tag.type == "hidden" && tag.name != "doAction") {
			attributes += tag.name + "=" + tag.value + "&";
		}
		if (tag.type == "checkbox") {
			if (tag.checked) {
				attributes += tag.name + "=" + tag.value + "&";
			} else {
				attributes += tag.name + "=&";
			}
		}
		if (tag.type == "radio") {
			if (tag.checked) {
				attributes += tag.name + "=" + tag.value + "&";
			}
		}
	}   
	if (tag.tagName == "SELECT") {
		attributes += tag.name + "=" + tag.options[tag.selectedIndex].value + "&";
	}
}

function getValues(currentElem) {
	var i = 0;
	var currentElemChild = currentElem.childNodes[i];
	if (currentElem) {
		while (currentElemChild) {
			getValues(currentElemChild);
			i++;
			currentElemChild = currentElem.childNodes[i];
		}
		getValue(currentElem);
	}
}

function get(p) {
	obj = document.getElementById("configuratorForm");
	attributes = p + "&";
	getValues(obj);
	makePOSTRequest("createXML.php", attributes);
}

function getPreset(p) {
	obj = document.getElementById("configuratorForm");
	makePOSTRequest("loadPreset.php", p);
}

function updateFlash(string) {
	var form1 = document.getElementById('configuratorForm');

	var p = string.split("|");
	if (updateForm) {
		var bgColor = p[0].split(">")[1];
	} else {
		var bgColor = form1.mainBackgroundColor.value;
	}
	var so = new SWFObject("monoslideshow_demo.swf", "SOmonoslideshow", slideshowWidth, slideshowHeight, "7", "#" + bgColor);
	if (string != "update") {
		for (i = 0; i < p.length; i++) {
			v = p[i].split(">");
			if (v[0] != "" && v[1] != "" && v[1] != "*") {
				if (updateForm) {
					if (v[0] == "viewport") {
						viewport = v[1].split(",");
						for (j = 0; j < viewport.length; j++) {
							setValue(form1["viewport" + (j + 1)], viewport[j]);
						}
					} else {
						setValue(form1[v[0]], v[1]);
					}
				}
				if (v[0] == "mainBackgroundColor") v[0] = "backgroundColor";
				so.addVariable(v[0], v[1]);
			}
		}
	}

	if (loadingPreset) setPresetInfo();
	so.addVariable("startWithAlbumID", form1.startWithAlbumID.value);
	
	so.write("monoSlideShow");
}

function setValue(tag, val) {
	if (tag == "" || tag == null) return;
	if (tag.tagName == "INPUT") {
		if (tag.type == "text") {
			tag.value = val;
		}
		if (tag.type == "hidden" && tag.name != "doAction") {
			tag.value = val;
			if (tag.name.substring(tag.name.length - 5, tag.name.length) == "Color") {
				var swatch = tag.name + "Swatch";
				changecss("#" + swatch, "backgroundColor", val, "hex", true, tag.name);
			}
		}
		if (tag.type == "checkbox") {
			if (val == "true") {
				tag.checked = true;
			} else {
				tag.checked = false;
			}
		}
		if (tag.type == "radio") {
			tag.checked = val;
		}
	}   
	if (tag.tagName == "SELECT") {
		for (var i = 0; i < tag.options.length; i++) {
			if (tag.options[i].value == val) {
				tag.selectedIndex = i;
			}
		}
	}
}

function setSize() {
	obj = document.getElementById("sizeForm");
	slideshowWidth = obj.slideshowWidth.value;
	slideshowHeight = obj.slideshowHeight.value;
	updateFlash(oldResult);
}

function changeAction(ins) {
	var form1 = document.getElementById("configuratorForm");
	var msg = document.getElementById("configMessage");
	form1.doAction.value = ins;
	updateForm = false;
	if (ins == 1) {
		form1.action = "createXML.php";
	} else if (ins == 2) {
		form1.action = "javascript:get(\'doAction=2\');";
		msg.innerHTML = "Refreshing slideshow...";
	}
	form1.submit();
}

function setPresetInfo() {
	var msg = document.getElementById("configMessage");
	var form1 = document.getElementById('presetForm');
	var form2 = document.getElementById('configuratorForm');
	var presetFile = form1.presetFile.options[form1.presetFile.selectedIndex].value;
	var presetText = form1.presetFile.options[form1.presetFile.selectedIndex].text;
	var string;
	startWithAlbumID = "monokai";
	switch (presetFile) {
		case "portfoliomenno.mss":
			startWithAlbumID = "portfolioMenno";
			string = 'Preset "' + presetText + '" was made by <a href="http://www.portfoliomenno.nl" target="_blank">Portfolio Menno</a>.';
			break;
		case "simplegolden.mss":
			string = 'Preset "' + presetText + '" was made by <a href="http://www.limousique.nl" target="_blank">Peter</a>.';
			break;
		case "applepie.mss":
			string = 'Preset "' + presetText + '" was made by <a href="http://www.phlot.com" target="_blank">Phlot</a>.';
			break;
		case "doornbos.mss":
			startWithAlbumID = "rickyDoornbos";
			string = 'Preset "' + presetText + '" was made by <a href="http://www.rickydoornbos.com" target="_blank">Ricky Doornbos</a>.';
			break;
		case "leftslider.mss":
			startWithAlbumID = "monokai";
			string = 'Preset "' + presetText + '" was made by <a href="http://www.zeptonn.nl" target="_blank">Zeptonn</a>.';
			break;
		case "topfader.mss":
			startWithAlbumID = "zeptonn";
			string = 'Preset "' + presetText + '" was made by <a href="http://www.zeptonn.nl" target="_blank">Zeptonn</a>.';
			break;
		case "toon.mss":
			startWithAlbumID = "toon";
			string = 'Preset "' + presetText + '" was made by <a href="http://www.eelkedekker.nl/" target="_blank">Toon</a>.';
			break;	
		case "standard.mss":
		case "hospital.mss":
		case "nano.mss":
		case "minimal.mss":
		case "thumbsup.mss":
		case "filmroll.mss":
			startWithAlbumID = "monokai";
			string = 'Preset "' + presetText + '" was made by <a href="http://www.monokai.nl" target="_blank">Monokai</a>.';
			break;
		default:
			string = '&nbsp;';
			break;
	}
	form2.startWithAlbumID.value = startWithAlbumID;
	msg.innerHTML = string;
	loadingPreset = false;
}

function loadPresetFile() {
	loadingPreset = true;
	var form1 = document.getElementById("presetForm");
	var msg = document.getElementById("configMessage");
	var presetFile = form1.presetFile.options[form1.presetFile.selectedIndex].value;
	updateForm = true;
	form1.action = "javascript:getPreset(\'presetFile=presets/" + presetFile + "\');";
	msg.innerHTML = "Loading preset...";
	form1.submit();
}
