<!--

// detect os and store in a variable
// This script sets OSName variable as follows:
// "Windows"    for all versions of Windows
// "MacOS"      for all versions of Macintosh OS
// "Linux"      for all versions of Linux
// "UNIX"       for all other UNIX flavors
// "Unknown OS" indicates failure to detect the OS

var OSName="Unknown OS";

if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows";
if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS";
if (navigator.appVersion.indexOf("X11")!=-1) OSName="UNIX";
if (navigator.appVersion.indexOf("Linux")!=-1) OSName="Linux";

/*function setFldDisabled(fld,enableFlag)
{
	//alert (fld+' '+enableFlag)
	eval("document.forms[0]."+fld+".disabled = "+enableFlag)
}*/


function compArr2Fld(val2Comp, array, compValIdx)
{
	var alen = eval(array + ".length");
	var retVal = 0;

	for (var i=0; i<alen; i++){
		if (eval(array + "[i]["+compValIdx+"]") == val2Comp){
			retVal = i;
			break;
		}
	}
	return retVal;
}


function validateForm(form_name, formFields)
{
	fldStr = new String(formFields);
	fldArr = fldStr.split("!");
	//alert(fldArr.length);
	//alert(form_name);
	for(i=0; i<fldArr.length; i++)
	{
		fld_name = new String(fldArr[i]);
		fldVal = document.forms[form_name].elements[fld_name].value;
		fld_type = document.forms[form_name].elements[fld_name].type;
		if(isEmpty(form_name, fld_name))
		{
			cleanFldName = replVal(fld_name,"str_","");
			cleanFldName = replVal(cleanFldName,"_"," ");
			alert ('Please enter a '+cleanFldName.toUpperCase());
			focusFld(form_name, fld_name);
			return false;
		}
		if ((fld_type == 'checkbox'))
		{
			if (!validateCheckBox(form_name, fld_name))
			{
				cleanFldName = replVal(fld_name,"bln","");
				cleanFldName = replVal(cleanFldName,"_"," ");
				alert ('Please agree to the '+cleanFldName.toUpperCase());
				focusFld(form_name, fld_name);
				return false;
			}
		}
		if (fld_type == 'select-one') // validating a dropdown
		{
			if (document.forms[form_name].elements[fld_name].options[document.forms[form_name].elements[fld_name].selectedIndex].value == '??')
			{
				cleanFldName = replVal(fld_name,"int","");
				cleanFldName = replVal(cleanFldName,"id","");
				cleanFldName = replVal(cleanFldName,"_"," ");
				alert ('Please select a '+cleanFldName.toUpperCase());
				focusFld(form_name, fld_name);
				return false;
			}
		}
		if (fld_name.indexOf("email") != -1)
		{
			if (!validateEmail(form_name, fld_name) )
			{
				cleanFldName = replVal(fld_name,"str_","");
				cleanFldName = replVal(cleanFldName,"_"," ");
				alert ('Please enter a valid '+cleanFldName.toUpperCase());
				focusFld(form_name, fld_name);
				return false;
			}
		}
	}
	return true;

}

function get_field_value(form_name, fld_name)
{
 	value = document.forms[form_name].elements[fld_name].value;
 	return value;
}


function set_field_value(form_name, fld_name, var_value)
{
	//alert(form_name+' '+fld_name);
	document.forms[form_name].elements[fld_name].value = var_value;
}


function ucase(form_name, fld_name)
{

	var x=document.forms[form_name].elements[fld_name].value;
	document.forms[form_name].elements[fld_name].value=x.toUpperCase();
}

function set_checkbox_value(form_name, fld_name, var_value)
{
	document.forms[form_name].elements[fld_name].checked = var_value;
}


function empty_field_value(form_name, fld_name)
{
	document.forms[form_name].elements[fld_name].value = '';
}


// returns the text from a specific dropdown/select field
function get_dropdown_text(form_name, fld_name)
{
	value = document.forms[form_name].elements[fld_name].options[document.forms[form_name].elements[fld_name].selectedIndex].text;
	return value;
}

function get_dropdown_value(form_name, fld_name)
{
	value = document.forms[form_name].elements[fld_name].options[document.forms[form_name].elements[fld_name].selectedIndex].value;
	//alert(value);
	return value;
}


function validateCheckBox(form_name, fld_name)
{
	//alert(document.forms[form_name].elements[fld_name].checked);
	return document.forms[form_name].elements[fld_name].checked;
}


// forces form submit on enter
function enterSubmit(int_keycode, str_submit_event)
{
	if (int_keycode == 13)
	{

		//alert('keycode');
		eval(str_submit_event);
		return false;
	}
}


// Check for null and for empty
function isEmpty(form_name, fld_name)
{
	value = document.forms[form_name].elements[fld_name].value;
    if (value == "" || value == null || typeof(value) == "undefined") {return true;} else {return false;}
}


function focusFld(form_name,fld_name)
{
	//alert(form_name);
	document.forms[form_name].elements[fld_name].focus();
}


function validateNumber(form_name, element_name, allow_blank)
{
	return (!allow_blank) ? false : testRegExp(form_name, element_name, '^-?[0-9]*\\.?[0-9]*$');
}


function replVal(value,str2Repl,replStr)
{
	str2Repl = new String (str2Repl);
	//alert(str2Repl +' '+replStr);
	rExp = new RegExp(str2Repl, "gi");
	replStr = new String(replStr);
	return value.replace(rExp, replStr);
}


// find a string values occurance within another string value
function checkVal(haystack,needle)
{
	strHaystack =  new String (haystack);
	strNeedle =  new String (needle);
	//alert(strHaystack+' '+strNeedle);
	return strHaystack.indexOf(strNeedle);
}


function testRegExp(form_name, element_name, re)
{
	alert(document.forms[form_name].elements[element_name].value);
	//return new RegExp(re).test(document.forms[form_name].elements[element_name].value);
}


function setCheckboxesRange(the_form, do_check, basename, min, max)
{
    for (var i = min; i < max; i++)
	{
        if (typeof(document.forms[the_form].elements[basename + i]) != 'undefined')
		{
            document.forms[the_form].elements[basename + i].checked = do_check;
        }
        if (typeof(document.forms[the_form].elements[basename + i + 'r']) != 'undefined')
		{
            document.forms[the_form].elements[basename + i + 'r'].checked = do_check;
        }
    }
    return true;
}



// returns the text from a specific dropdown/select field
function dDownText2Fld(selFld,targFld)
{
	var dDownTxt = eval(selFld+".options["+selFld+".selectedIndex].text");
	//alert (dDownTxt);
	eval(targFld).value=dDownTxt;
}


function updateFormFieldValue(value,targFld)
{
	eval(targFld).value = value;
	//alert("value="+eval(targFld).value);
}


function setAllFieldsDisabled(enableFlag)
{
    for (var i = 0; i<document.forms[0].elements.length; i++) {
        //if ((document.forms[0].elements[i].name.disabled == true)) {
           	setFldDisabled(document.forms[0].elements[i].name, enableFlag);
       // }
    }
}


function setFldDisabled(targFld,enableFlag)
{
	//alert (fld+' '+enableFlag)
	eval(targFld+".disabled = "+enableFlag)
}


function setFldReadOnly(targFld,enableFlag)
{
	eval(targFld+".readonly = "+enableFlag)
}


function refreshPage()
{
	this.window.self.reload( false );
}


function getFlashMovieObject(movieName)
//alert(navigator.appName);
{
	if ((navigator.userAgent).indexOf("Opera")!=-1) { // sniff for opera
		//alert("OPERA")
 		return document.getElementById(movieName);
	}

	if (window.document[movieName])
	{
		//alert (window.document[movieName]);
		return window.document[movieName];
	}
	if (navigator.appName.indexOf("Microsoft Internet")==-1)
	{
	if (document.embeds && document.embeds[movieName])
	  return document.embeds[movieName];
	}
	else if (navigator.appName.indexOf("Microsoft Internet")!=-1)
	{
		return document.getElementById(movieName);
	}
}


function flashPassVar(val)
{
	if (OSName != "MacOS")
	{ // call flash dynamically if not mac
	 	var flashMovie=getFlashMovieObject("dynFlash");
	   	flashMovie.SetVariable("dynVar", val);
	}
	else
	{ // targets the flash correctly for macs - bit sketchy but it works
		var urlStr = new String(document.URL);
		if (urlStr.indexOf("?dynVar") > -1) {urlStr = urlStr.substr(0,urlStr.indexOf("?dynVar"))}
		//alert (urlStr);
		document.location.href = urlStr + "?dynVar="+val;
	}
}


function limitFieldSize(form_name, element_name, maxLength)
{
	fldVal = document.forms[form_name].elements[element_name].value;
	if (fldVal.length > maxLength)
	{
		document.forms[form_name].elements[element_name].value = fldVal.substr(0, maxLength);
	}
}


function validateSize(form_name, element_name)
{
	alert( testRegExp(form_name, element_name, '^[0-9]+(px|%)?$'));
}


function validateEmail(form_name, element_name)
{
	return testRegExp(form_name, element_name, '^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+@[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$');
}



function testRegExp(form_name, element_name, re)
{
	return new RegExp(re).test(document.forms[form_name].elements[element_name].value);
}


function tabSwitch(o) {
	//alert(o);
	set_field_value('admin-editor', 'str_tab', o.id); 					// sets a hidden field containing id of current tab - when user updates they stay on the same tab
	o.blur();
	if( checkVal(o.className,"current") !=-1 ) return false;

	var list = document.getElementById("tabs").getElementsByTagName("a");
	for (var i = 0; i < list.length; i++) {
		if(checkVal(list[i].className,"current") !=-1 ){
			setClassName(list[i].id,"current","subtract");
		}
		if (list[i].id == o.id) setClassName(list[i].id,"current","append");
	}

	list = document.getElementById("tabset").childNodes;
	for (var i = 0; i < list.length; i++) {
		if (list[i].tagName == "DIV") list[i].style.display = "none";
	}
	var newTabId = replVal(o.id,"menu","");
	var top = document.getElementById(newTabId);
	top.style.display = "block";
	return false;
}


function checkClassName()
{
	var args = checkClassName.arguments;
	el = document.getElementById(args[0]);
	str_class = document.getElementById(args[1]);
	//alert (el.className);
}


function setClassName()
{
	var args = setClassName.arguments;
	el = document.getElementById(args[0]);
	//alert(args[0]);
	switch (args[2])
	{
	case 'append':
		el.className += args[1];
		break;
	case 'subtract':
		var oldclass = new String(el.className);
		var subclass = new String(args[1]);
		var newclass = oldclass.replace(subclass, "");
		el.className = newclass;
		break;
	default: // replace
		el.className = args[1];
		break;
	}
	//alert(el.className);
}


// upload validator required by any form that can upload content
// str_file_path must exist as the form field that conatins path to uploaded content
function upload_file()
{
	var args = upload_file.arguments;

	if(validateForm(args[0],args[1]))
	{
		bln_valid_ext = false;
		arr_valid_exts = args[2];
		str_test = new String(get_field_value(args[0], 'str_file_path'));
		dot_index = str_test.lastIndexOf(".");
		//alert(str_test.length-dot_index);
		str_ext = str_test.substring(dot_index, str_test.length);
		//alert(arr_valid_exts.length);
		for(i=0; i<arr_valid_exts.length; i++)
		{
			//alert(arr_valid_exts[i]);
			if (str_ext == arr_valid_exts[i])
			{
				document.forms['upload'].submit();
				return true;
			}
		}
		alert('Sorry - Invalid file type, only files of "'+arr_valid_exts.join()+'" are permitted for upload.');
	}
}


// function to hide an element on the page - and return the msg displayed var false
function hide_el(element_name)
{
	el = document.getElementById(element_name);
	el.style.display = "none";
	return false;
}


function set_active_stylesheet(title)
{
	//alert(title);
	var i, a, main;
	for(i=0; (a = document.getElementsByTagName("link")[i]); i++)
	{
		// is it a link to a stylesheet with a title attribute
		if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title"))
		{
			a.disabled = true;
			// does the title match the passed title
			if(a.getAttribute("title") == title) a.disabled = false;
		}
	}
}


function print_preview()
{
	// Switch the stylesheet
	set_active_stylesheet('Print Preview');

	// Create preview message
	//add_preview_message();
	add_print_header('Tree Of Life: Product DataSheet');

	// Print the page
	window.print();
}


function add_preview_message()
{
var main_content = document.getElementById('container');
var main_body = main_content.parentNode;

	if (document.getElementById)
	{
		var preview_message = document.createElement('div');
		//alert(preview_message);
		preview_message.id = 'preview-message';

		// Create Heading
		var preview_header = document.createElement('h3');
		var preview_header_text = document.createTextNode('This is a print preview of this page');
		preview_header.appendChild(preview_header_text);

		// Create paragraph
		var preview_para = document.createElement('p');
		var preview_para_text = document.createTextNode('This message will not be printed. ');

		var cancel_function_link = document.createElement('a');
			cancel_function_link.onclick = function(){ cancel_print_preview(); return false; };
			cancel_function_link.setAttribute('href', '#');
		var cancel_function_link_text = document.createTextNode('Return to the existing page.');
		cancel_function_link.appendChild(cancel_function_link_text);
		preview_para.appendChild(preview_para_text); //
		preview_para.appendChild(cancel_function_link);

		// Put it all toegether
		preview_message.appendChild(preview_header);
		preview_message.appendChild(preview_para);
		main_body.insertBefore(preview_message, main_content);
	}
}


function add_print_header(str_hdr)
{
	var banner = document.getElementById('banner');
	var gridgroup1 = banner.parentNode;
	if (document.getElementById)
	{
		var print_header = document.createElement('div');
		//alert(print_header);
		print_header.id = 'print_header';

		// Create Heading
		var print_h3 = document.createElement('h3');
		var print_h3_text = document.createTextNode(str_hdr);
		print_h3.appendChild(print_h3_text);

		// Put it all toegether
		print_header.appendChild(print_h3);
		gridgroup1.insertBefore(print_header, banner);
	}
}


function cancel_print_preview() {
	// Destroy the preview message
	var print_preview = document.getElementById('preview-message');
	var main_body = print_preview.parentNode;
	main_body.removeChild(print_preview);

	// Switch back stylesheet
	set_active_stylesheet('default');
}


/* ------------------------------------------------------------------------------------ COOKIE FUNCTIONS */
function delete_cookie(name)
{
	if (get_cookie(name)) { set_cookie(name,"",-1); }
}


function get_cookie(name)
{
	var value=null, search=name+"=";
	if (document.cookie.length > 0)
	{
	 	var offset = document.cookie.indexOf(search);
	  	if (offset != -1)
		{
		    offset += search.length;
		    var end = document.cookie.indexOf(";", offset);
		    if (end == -1) end = document.cookie.length;
		    value = unescape(document.cookie.substring(offset, end));
	  	}
	}
	return value;
}


function set_cookie(name,value,days)
{
	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
	//alert (get_cookie(name));
}


//-->
