var currentdateinput;
var definedvalidationfuncs = new Array;
var validationerrormessages = new Array;
var nedDoNotValidateForm = false;
var webcolours = new Array("#f0f8ff", "#faebd7", "#00ffff", "#7fffd4", "#f0ffff", "#f5f5dc", "#ffe4c4", "#000000", "#ffebcd", "#0000ff", "#8a2be2", "#a52a2a", "#deb887", "#5f9ea0", "#7fff00", "#d2691e", "#ff7f50", "#6495ed", "#fff8dc", "#dc143c", "#00ffff", "#00008b", "#008b8b", "#b8860b", "#a9a9a9", "#006400", "#bdb76b", "#8b008b", "#556b2f", "#ff8c00", "#9932cc", "#8b0000", "#e9967a", "#8fbc8f", "#483d8b", "#2f4f4f", "#00ced1", "#9400d3", "#ff1493", "#00bfff", "#696969", "#1e90ff", "#b22222", "#fffaf0", "#228b22", "#ff00ff", "#dcdcdc", "#f8f8ff", "#ffd700", "#daa520", "#808080", "#008000", "#adff2f", "#f0fff0", "#ff69b4", "#cd5c5c", "#4b0082", "#fffff0", "#f0e68c", "#e6e6fa", "#fff0f5", "#7cfc00", "#fffacd", "#add8e6", "#f08080", "#e0ffff", "#fafad2", "#90ee90", "#d3d3d3", "#ffb6c1", "#ffa07a", "#20b2aa", "#87cefa", "#778899", "#b0c4de", "#ffffe0", "#00ff00", "#32cd32", "#faf0e6", "#ff00ff", "#800000", "#66cdaa", "#0000cd", "#ba55d3", "#9370db", "#3cb371", "#7b68ee", "#00fa9a", "#48d1cc", "#c71585", "#191970", "#f5fffa", "#ffe4e1", "#ffe4b5", "#ffdead", "#000080", "#fdf5e6", "#808000", "#6b8e23", "#ffa500", "#ff4500", "#da70d6", "#eee8aa", "#98fb98", "#afeeee", "#db7093", "#ffefd5", "#ffdab9", "#cd853f", "#ffc0cb", "#dda0dd", "#b0e0e6", "#800080", "#ff0000", "#bc8f8f", "#4169e1", "#8b4513", "#fa8072", "#f4a460", "#2e8b57", "#fff5ee", "#a0522d", "#c0c0c0", "#87ceeb", "#6a5acd", "#708090", "#fffafa", "#00ff7f", "#4682b4", "#d2b48c", "#008080", "#d8bfd8", "#ff6347", "#40e0d0", "#ee82ee", "#f5deb3", "#ffffff", "#f5f5f5", "#ffff00", "#9acd32");

if(navigator.appName == "Netscape") {
	document.captureEvents(Event.KEYPRESS);
}
//window.addEventListener("keypress", shortcutkey, true);
document.onkeypress = shortcutkey;

function formParseDateWrite(str) {
	currentdateinput.value=str;
}

function makeFileInputs(num)
{
	var obj;
	var str;
	num = parseInt(num);

	obj = document.getElementById('fileInputDiv');
	str = "\n";
	for (i=0; i < num; i++)
	{
		str = str + '<br><input type="file" name="{/literal}{$field_name}{literal}_'+i+'">\n';
	}
	obj.innerHTML = str;
}

function all(name,prefix)
{
   for ( var i=0; i < document.form.elements.length; i++ ) {
          	if (document.form.elements[i].name.substring(0,prefix.length) == prefix)
      		document.form.elements[i].checked = name;
   }
   var rows = document.getElementsByTagName('tr');
   for (i=0; i < rows.length; i++) {
   		if (rows[i].id.indexOf("listrow")==0) {
    		if (rows[i].className.indexOf(' rowselected')>=0) {
				if (!name) rows[i].className=rows[i].className.replace(' rowselected','');
			} else {
				if (name) rows[i].className += ' rowselected';
			}
		}
	}
}

var formDefaultValues = new Array; //not being used yet.

function clearForm() {
	var i=0;
	var el;
	for (i=0; i < document.forms.form.elements.length; i++) {
		if (document.forms.form.elements[i].type != "hidden") {
		el = document.forms.form.elements[i];
			if (el.options) {
				el.selectedIndex = 0;
			} else if (el.type == "checkbox" || el.type == "radio") {
				el.checked = false;
			} else if (el.type == "submit" || el.type == "image" || el.type == "button") {
				//do nothing!
			} else {
				el.value='';
			}
		}
	}
}
function getEachElementId(str) {
	var els = document.getElementsByTagName(str);
	var out = "";
	out += "Ids of tags '"+str+"'";
	for (i=0; i < els.length; i++) {
		if (els[i].id != "") out += "\n" + els[i].id; else out += "\n[" + i + "]";
	}
	alert(out);
}
/**
* Not quite finished, but getting an idea of dommishness.
*/
function orderRowMove(whichrow, num) {
	var row = document.getElementById(whichrow);
	var tbody = row.parentNode;
	var ref;
	
	if (num > 0) {
		ref = row.nextSibling.nextSibling;
		for (i=0; i < num; i++) {
	 	 ref = ref.nextSibling;
		}
	} else if (num < 0) {
		ref = row.previousSibling;
		for (i=0; i < num*-1; i++) {
		 ref = ref.previousSibling;
		}
	}
	var tomove = tbody.removeChild(row);
	tbody.insertBefore(tomove, ref);
	
	tbody.normalize();	
	
	//now we must put the colors right:
	var trs = document.getElementsByTagName('tr');
	var onoff = 0;
	var p = 1;
	var strname = "";
	for (i=0; i < trs.length; i++) {
		if (trs[i].id.indexOf("listrow")!=-1) {
			p++;
			strname = trs[i].id.replace("listrow", "orderfield");
			document.getElementById(strname).setAttribute("value", p);
			if (!onoff) {
				trs[i].className = 'row_light';
				onoff = 1;
			} else {
				trs[i].className = 'row_dark';
				onoff = 0;
			}
		}
	}
}
function comboBoxWrite(str) {
	if (str == "") return false;
	
	var first = str.split("--*--");
	eval('var selector=document.forms.form.'+first[0]);
	selector.options.length = 0;
	
	var rows = first[1].split("|");
	var offset = 0;
	if (rows.length > 0) {
		if (rows.length > 1) {
			offset = 1;
			selector.options[0] = new Option('---- '+rows.length+' Results ----', ''); 
		}
		for (i=0; i < rows.length; i++) {
			var row = rows[i].split("~");
			selector.options[(i+offset)] = new Option(row[1], row[0]); 
		}
	} else {
		selector.options[0] = new Option('---- No Results ----', '');
	}
}

function changecss(myclass,element,value) {
	var CSSRules
	if (document.all) {
		CSSRules = 'rules'
	}
	else if (document.getElementById) {
		CSSRules = 'cssRules'
	}
	for (var i = 0; i < document.styleSheets[0][CSSRules].length; i++) {
		
		if (document.styleSheets[0][CSSRules][i].selectorText == myclass) {
			document.styleSheets[0][CSSRules][i].style[element] = value
		    
		}
	}
}
function getcssvalue(myclass,element) {
	var CSSRules
	if (document.all) {
		CSSRules = 'rules'
	}
	else if (document.getElementById) {
		CSSRules = 'cssRules'
	}
	for (var i = 0; i < document.styleSheets[0][CSSRules].length; i++) {
		
		if (document.styleSheets[0][CSSRules][i].selectorText == myclass) {
			return document.styleSheets[0][CSSRules][i].style[element]
		}
	}
}

function shortcutkey(e) {
	if(navigator.appName != "Netscape") return;
	if (e.altKey) {
		//AlT-S saves
		if (e.charCode == 115) {
			//SUBMIT
			document.forms.form.submit();
			e.preventDefault();
		}
		//ALT-D switches on debug
		if (e.charCode == 100) {
			//TEST
			if (getcssvalue('.feedback_debug','display')=='list-item') {
				changecss('.feedback_debug','display','none');
			} else {
				changecss('.feedback_debug','display','list-item'); 
			}
			//else changecss('.feedback_debug','display','none'); 
			e.preventDefault();
		}
		if (e.charCode == 109) {
			var adminmap=document.getElementById('adminmap');
			if (adminmap) {
				if (adminmap.hasAttribute("value")) {
					self.location=adminmap.value;
				}
			}
			e.preventDefault();
		}
	}
}
function validateForms() {
	var what;
	var msg;
	for (i=0; i < definedvalidationfuncs.length; i++) {
		funcname = definedvalidationfuncs[i];
		if (!eval(funcname+'();')) {
			what = 1;
		}
	}
	if (what) {
		var num = validationerrormessages.length;
		msg = "Please fix the following problem";
		if (num > 1) msg = msg + 's';
		msg = msg + " with your form:\n* ";
		msg = msg + validationerrormessages.join("\n* ");
		alert(msg);
		validationerrormessages = new Array;
		return false;
	}
	return true;
}
var activeColourPickerDiv;
var placerActiveColourPickerDiv;

function colourPicker(fname, where) {
	activeColourPickerDiv = document.createElement("div");
	activeColourPickerDiv.style.position = 'relative';
	//activeColourPickerDiv.style.top = '200px';
	//activeColourPickerDiv.style.left = '200px';
	activeColourPickerDiv.style.width = '250px';
	activeColourPickerDiv.style.height = '120px';
	activeColourPickerDiv.style.backgroundColor = '#ffffff';
	activeColourPickerDiv.style.zIndex = 100;
	activeColourPickerDiv.style.overflow = 'auto';
	
	var ihex;
	var p = 0;
	for (i=0; i < webcolours.length; i++) {
		p++;
		if (p % 16 == 1)activeColourPickerDiv.innerHTML += '<br />';
		ihex = webcolours[i];
		activeColourPickerDiv.innerHTML += '<span onclick="document.forms.form.'+fname+'.value=&quot;'+ihex.substring(1)+'&quot;; document.getElementById(&quot;'+fname+'colourshow&quot;).style.backgroundColor=&quot;'+ihex+'&quot;; killColourPicker();" style="display: table-cell; width: 10px; padding: 1px 1px 1px 1px; background-color: '+ihex+'; height: 10px;">&nbsp;</span> ';
	}
	
	//document.getElementsByTagName('body')[0].appendChild(activeColourPickerDiv);
	//document.getElementsByTagName('body')[0].insertBefore(activeColourPickerDiv, document.getElementById(fname+'colourshow'));
	placerActiveColourPickerDiv = document.getElementById(fname+'placer');
	placerActiveColourPickerDiv.appendChild(activeColourPickerDiv);
}

function killColourPicker() {
	placerActiveColourPickerDiv.removeChild(activeColourPickerDiv);
}

function decToHex(dec)
{
	var hexStr = "0123456789ABCDEF";
	var low = dec % 16;
	var high = (dec - low)/16;
	hex = "" + hexStr.charAt(high) + hexStr.charAt(low);
	return hex;
}
function insertAtCursor(myField, myValue) {
//IE support
if (document.selection) {
myField.focus();
sel = document.selection.createRange();
sel.text = myValue;
}
//MOZILLA/NETSCAPE support
else if (myField.selectionStart || myField.selectionStart == '0') {
var startPos = myField.selectionStart;
var endPos = myField.selectionEnd;
myField.value = myField.value.substring(0, startPos)
+ myValue
+ myField.value.substring(endPos, myField.value.length);
} else {
myField.value += myValue;
}
}
function addOption(selectId,txt,val)
{
    var objOption = new Option(txt,val);
    document.getElementById(selectId).options.add(objOption);
}
function clearOptions(selectId) {
	document.getElementById(selectId).options.length=0;
}
function imgGalleryNext(id) {
	return imgGalleryPage(id, +1);
}
function imgGalleryPrevious(id) {
	return imgGalleryPage(id,-1);
}
function imgGalleryPage(id, num) {
	var el=document.getElementById(id);
	var uids=eval('uids_'+id);
	var current=eval('current_'+id);
	var captions=eval('captions_'+id);
	var i=uids.length + eval('current_'+id) + num;
	i = i % uids.length;
	eval('current_'+id+' = i');
	if (captions[uids[i]]) {
		document.getElementById("gallerycaption_"+id).innerHTML=captions[uids[i]];
	}
	xajax_replace_image(uids[i],id);
}

