// Javascript Support Systems


var onLoadInits = new Array(); // array of functions

//alert("pathos.js loaded");

function hdJSinitialize() {
	//alert('hdJSinitialize');
	for (i = 0; i < onLoadInits.length; i++) {
		onLoadInits[i]();
	}
}

function hdJSregister(func) {
	//alert('hdJSregister' + func);
	onLoadInits.push(func);
}


//alert("middle  of pathis.js");

function pathosGetCookie(name) {
	cookiestr = document.cookie;
	var nameIndex = cookiestr.indexOf(name);
	if (nameIndex != -1) { // found the named cookie
		var startOffset = nameIndex+name.length+1;
		var endOffset = cookiestr.indexOf(";",startOffset);
		if (endOffset == -1) endOffset = cookiestr.length;
		return cookiestr.substring(startOffset,endOffset);
	}
	return "";
}

function makeLink() {
	var link = "";
	var link = "";
	var args = makeLink.arguments;
	if (SEF_URLS == 0) {
		link = MAINPATH_RELATIVE + "index.php?";
		for (var i = 0; i < args.length; i+=2) {
			var v = args[i+1];
			if (v != null && v != "") {
				link += escape(args[i]) + "=" + escape(args[i+1]) + "&";
			}
		}
		link = link.substr(0,link.length - 1);
	} else {
		link = MAINPATH_RELATIVE + "index.php/";
		for (var i = 0; i < args.length; i+=2) {
			var v = args[i+1];
			if (v != null && v != "") {
				link += escape(args[i]) + "/" + escape(args[i+1]) + "/";
			}
		}
		link = link.substr(0,link.length - 1);
	}
	return link;
}

function openSelector(mod,dest,vmod,vview) {
	var url = PATH_RELATIVE+"source_selector.php?showmodules="+mod+"&dest="+escape(dest)+"&vmod="+vmod+"&vview="+vview+"&mainbase="+MAINBASE;
	//alert("OpenSelector: " + url);
	window.open(url,'sourcePicker','title=no,toolbar=no,width=640,height=480,scrollbars=yes');
}

function sourceSelected(hidden,showPreview,src,desc) {
	var hidden = document.getElementById(hidden);
	hidden.value = src;
	//if (showPreview){
	//	showPreviewCall();
	//}
}

// Patch the String object, to make string parsing a little easier in Pathos
String.prototype.isValid = function (alpha,numeric,others) {
	for (var i = 0; i < this.length; i++) {
		if (alpha && this.isAlpha(i)) continue;
		if (numeric && this.isNumeric(i)) continue;
		var isGood = false;
		for (var j = 0; j < others.length; j++) {
			if (others[j] == this.charAt(i)) {
				isGood = true;
				continue;
			}
		}
		if (!isGood) return false;
	}
	return true;
}

String.prototype.isNumeric = function(index) {
	var charcode = this.charCodeAt(index);
	return (
		(charcode >= 48 && charcode < 48+10)
	);
}

String.prototype.isAlpha = function(index) {	
	var charcode = this.charCodeAt(index);
	return (
		(charcode >= 65 && charcode < 65+26) ||
		(charcode >= 97 && charcode < 97+26)
	);
}

String.prototype.trim = function() {
	str = this;
	while (1) {
		if (str.substring(str.length - 1, str.length) != " ") break;
		str = str.substr(0,str.length - 1);
	}
	while (1 && str.length > 0) {
		if (str.substring(0,1) != " ") break;
		str = str.substr(1,str.length - 1);
	}
	return str;
}
/*
function previewLevel(level,levelLabel,suffix,msg) {
	g_levelDesc=document.getElementById("levelDesc" + suffix);
	g_levelSelect=document.getElementById("levelSelect" + suffix);
	g_levelDesc.innerHTML=msg;
	g_levelDesc.style.cssText=''
	g_levelSelect.value=level;		
}
function previewLevelEnd(level,suffix) {
	g_levelDesc=document.getElementById("levelDesc" + suffix);
	g_levelSelect=document.getElementById("levelSelect" + suffix);
	g_levelDesc.innerHTML='';
	g_levelDesc.style.cssText='display: none;'
	g_levelSelect.value=level;
	//alert('mouseout');	
}	
function previewQLevel(level,levelLabel,suffix,msg) {
	g_levelDesc=document.getElementById("levelDesc" + suffix);
	g_levelDesc.innerHTML=msg;
	g_levelDesc.style.cssText=''	
}
function previewQLevelEnd(level,suffix) {
	//alert('previewQLevelEnd');	
	g_levelDesc=document.getElementById("levelDesc" + suffix);
	g_levelDesc.innerHTML='';
	g_levelDesc.style.cssText='display: none;'
}
*/

/* =========================== Class functions ================================ */
function hasClassName(el, name) {
  var i, list;

  // Return true if the given element currently has the given class
  // name.
  list = el.className.split(" ");
  for (i = 0; i < list.length; i++)
    if (list[i] == name)
      return true;

  return false;
}
function removeClassName(el, name) {
  var i, curList, newList;

  if (el.className == null)
    return;

  // Remove the given class name from the element's className property.
  newList = new Array();
  curList = el.className.split(" ");
  for (i = 0; i < curList.length; i++)
    if (curList[i] != name)
      newList.push(curList[i]);
  el.className = newList.join(" ");
}
function addClassName(el, name) {
	if (! hasClassName(el, name)) {
		el.className += " " + name;
	}
}
function addClassNameToId(parentid, name) {
	var el;
	el = document.getElementById(parentid);
	if (el == null) {
		alert('Could not find element with id ' + parentid + ' to which to add class ' + name );
		return;
	}
	addClassName(el,name);
}




function showHelp(parentelem,elementid) {
	// The help block might be in the document twice (such as in add block),
	// so do the lookup based on name and expand them all
	
	/*
	g_levelDesc=document.getElementById(elementid);
	if (g_levelDesc.style.cssText=='') {
		g_levelDesc.style.cssText='display: none;'
		parentelem.innerHTML='<img class="mngmnt_icon" src="/hotdoodle_engine/iconset/doodle_whatisthis.gif" border="0" title="Help..." alt="Help..." height="16" width="24" galleryimg="no"/>';
	} else {
		g_levelDesc.style.cssText='';
		parentelem.innerHTML='<img class="mngmnt_icon" src="/hotdoodle_engine/iconset/doodle_whatisthisnot.gif" border="0" title="Close Help" alt="Close Help" height="16" width="24" galleryimg="no"/>';
	}
	*/
	hList = document.getElementsByName(elementid);
  	for (i = 0; i < hList.length; i++) {
  		g_levelDesc=hList[i];
  		if (g_levelDesc.style.cssText=='') {
			g_levelDesc.style.cssText='display: none;'
			parentelem.innerHTML='<img class="mngmnt_icon" src="/hotdoodle_engine/iconset/doodle_whatisthis.gif" border="0" title="Help..." alt="Help..." height="16" width="24" galleryimg="no"/>';
		} else {
			g_levelDesc.style.cssText='';
			parentelem.innerHTML='<img class="mngmnt_icon" src="/hotdoodle_engine/iconset/doodle_whatisthisnot.gif" border="0" title="Close Help" alt="Close Help" height="16" width="24" galleryimg="no"/>';
		}
  	}
  		
	
	return false;	
}

function showFormHelp(parentelem,elementid) {
	g_levelDesc=document.getElementById(elementid);
	if (g_levelDesc.style.cssText=='') {
		g_levelDesc.style.cssText='display: none;'
		parentelem.innerHTML='<img class="mngmnt_icon" src="/hotdoodle_engine/iconset/doodle_whatisthis.gif" border="0" title="Help..." alt="Help..." height="16" width="24" galleryimg="no"/>';  //  Explain this form...
	} else {
		g_levelDesc.style.cssText='';
		parentelem.innerHTML='<img class="mngmnt_icon" src="/hotdoodle_engine/iconset/doodle_whatisthisnot.gif" border="0" title="Close Help" alt="Close Help" height="16" width="24" galleryimg="no"/>'; //  Close Explanation
	}
	return false;	
}

function showHelpGeneral(parentelem,elementid,hinttoopen,hinttoclose) {
	g_levelDesc=document.getElementById(elementid);
	if (g_levelDesc.style.cssText=='') {
		g_levelDesc.style.cssText='display: none;'
		parentelem.innerHTML='<img class="mngmnt_icon" src="/hotdoodle_engine/iconset/doodle_whatisthis.gif" border="0" title="Help..." alt="Help..." height="16" width="24" galleryimg="no"/> '+hinttoopen;
	} else {
		g_levelDesc.style.cssText='';
		parentelem.innerHTML='<img class="mngmnt_icon" src="/hotdoodle_engine/iconset/doodle_whatisthisnot.gif" border="0" title="Close Help" alt="Close Help" height="16" width="24" galleryimg="no"/> '+hinttoclose;
	}
	return false;	
}

function showHideGeneral(parentelem,elementid,hinttoopen,hinttoclose) {
	//alert("shgeneral start");
	g_levelDesc=document.getElementById(elementid);
	//alert("shgeneral got id compltee");
	if (g_levelDesc.style.cssText=='') {
		g_levelDesc.style.cssText='display: none;'
		if(hinttoopen != '') parentelem.innerHTML=hinttoopen;
	} else {
		g_levelDesc.style.cssText='';
		if(hinttoclose != '') parentelem.innerHTML=hinttoclose;
	}
	//alert("shgeneral compltee");
	return false;	
}

function showGeneral(parentelem,elementid,hinttoopen,hinttoclose) {
	g_levelDesc=document.getElementById(elementid);
	g_levelDesc.style.cssText='';
	parentelem.innerHTML=hinttoclose;
	return false;	
}
function hideGeneral(parentelem,elementid,hinttoopen,hinttoclose) {
	g_levelDesc=document.getElementById(elementid);
	g_levelDesc.style.cssText='display: none;'
	parentelem.innerHTML=hinttoopen;
	return false;	
}

/*
function showHelpEnd(elementid) {
	//alert('previewQLevelEnd');	
	g_levelDesc=document.getElementById(elementid);
	g_levelDesc.style.cssText='display: none;'
	return false;
}
*/



// Flashes containers, used by doodlelink where $dbox is set
function showCont(elementid) {
	g_levelDesc=document.getElementById(elementid);
	if (typeof(g_levelDesc) != 'undefined' && g_levelDesc != null) {
		g_levelDesc.className='container_selectbox';
	} //else {
		//alert('No box for ' + elementid);
	//}
	return false;	
}
function showContEnd(elementid) {
	g_levelDesc=document.getElementById(elementid);
	if (typeof(g_levelDesc) != 'undefined' && g_levelDesc != null) {
		g_levelDesc.className='';
	}
	return false;
}

var save_needed=false;

function warnToSave() {
	if (!save_needed) {
		save_needed=true;
		alert('Warning: You will need to click "Save Answers" below \nbefore you hit any other links.');
	}
	return true;
}

/*
document.getElementsByClassName = function(clsName){
    var retVal = new Array();
    var elements = document.getElementsByTagName("*");
    for(var i = 0;i < elements.length;i++){
        if(elements[i].className.indexOf(" ") >= 0){
            var classes = elements[i].className.split(" ");
            for(var j = 0;j < classes.length;j++){
                if(classes[j] == clsName)
                    retVal.push(elements[i]);
            }
        }
        else if(elements[i].className == clsName)
            retVal.push(elements[i]);
    }
    return retVal;
}
*/
//var tdelta=0;	
var cachedClassData=0;
var didcachedClassData=0;
var cacheclasses= new Array(
	'block_control','view_control','style_control','access_control','share_control','selected_control','save_control',
	'editb_control','edita_control', 
	'adv_row','login_verifications','details'
	//'Edit_control','Blocks_control','Pages_control','Appearance_control','Administration_control','Svrs_control'
	);
	


document.getElementsByClassName = function(clsName){ // used only by toggleadvanced, toggleOptionTab
	//var tstart=new Date().getTime();
	
	// confirm that the class is in our list
	var foundit=0;
	for(var classindex = 0;classindex < cacheclasses.length;classindex++){
		if(cacheclasses[classindex] == clsName)
			foundit=1;
	}
	
	if (!foundit) alert("Oops, we did not cache class " + clsName);
	
	var cd=document.cacheElementsByClassName();
	//tdelta=tdelta + (new Date().getTime() - tstart);
    return cd[clsName];
}


document.cacheElementClass = function(element,clsName){
	for(var classindex = 0;classindex < cacheclasses.length;classindex++){
		if(cacheclasses[classindex] == clsName)
			cachedClassData[cacheclasses[classindex]].push(element);
	}
	
}
	
	
document.cacheElementsByClassName = function(){
	//var tstart=new Date().getTime();
	if (didcachedClassData != 0) {
		return cachedClassData;
	}
	
	cachedClassData=new Array();
	
	for(var classindex = 0;classindex < cacheclasses.length;classindex++){
		cachedClassData[cacheclasses[classindex]] = new Array();
	}
	
	
    var elements = document.getElementsByTagName("*");
    for(var i = 0;i < elements.length;i++){
        if(elements[i].className.indexOf(" ") >= 0){ // multi class object
            var classes = elements[i].className.split(" ");
            for(var j = 0;j < classes.length;j++){
                document.cacheElementClass(elements[i],classes[j]);
            }
        }
        else {
	        document.cacheElementClass(elements[i],elements[i].className);
        }
    }
    
    
    
    //tdelta=tdelta + (new Date().getTime() - tstart);
    didcachedClassData=1;
    return cachedClassData;
    		
		
}

function toggleAdvancedWithLabel(parentelem,clsName,hinttoopen,hinttoclose) {
	if (parentelem.innerHTML==hinttoopen) {
		parentelem.innerHTML=hinttoclose;
		toggleAdvancedShow(clsName)
	} else {
		parentelem.innerHTML=hinttoopen
		toggleAdvancedHide(clsName)
	}
	
	//toggleAdvanced(clsName);
	return false;	
}

function toggleAdvancedButtonWithLabel(parentelem,clsName,hinttoopen,hinttoclose) {
	if (!hasClassName(parentelem,'opbutton_on')) {
		addClassName(parentelem,'opbutton_on');
		toggleAdvancedShow(clsName);
		//parentelem.value=hinttoclose;
	} else {
		removeClassName(parentelem,'opbutton_on');
		toggleAdvancedHide(clsName);
		//parentelem.value=hinttoopen
	}
	parentelem.blur();
	//toggleAdvanced(clsName);
	return false;	
}


function toggleOptionTab(parentelem,clsName,allclasses) {
	//alert("toggleOptionTab\nenabling "+clsName+"\ndisabling "+allclasses);
	list = allclasses.split(",");
	for (i = 0; i < list.length; i++)
	    if (list[i] != clsName) {
	    	// Disable the other buttons, if they are enabled
	    	pelem=document.getElementById('toggle_' + list[i])
	    	if (pelem != null) {
				if (hasClassName(pelem,'opbutton_on')) {
					removeClassName(pelem,'opbutton_on');
					toggleAdvancedHide(list[i]);
				}
	    	}
			parentelem.blur();
	    }
	    
	// Now, toggle me
	if (!hasClassName(parentelem,'opbutton_on')) {
		addClassName(parentelem,'opbutton_on');
		toggleAdvancedShow(clsName);
	} else {
		removeClassName(parentelem,'opbutton_on');
		toggleAdvancedHide(clsName);
	}
	parentelem.blur();
	return false;	
}

function toggleOptionTabHide(parentelem,clsName,allclasses) {
	//allclasses='view_control,style_control,access_control,share_control';
	list = allclasses.split(",");
	for (i = 0; i < list.length; i++)
	    if (list[i] != clsName) {
	    	// Disable the other buttons, if they are enabled
	    	pelem=document.getElementById('toggle_' + list[i])
			if (pelem != null) {
				if (hasClassName(pelem,'opbutton_on')) {
					removeClassName(pelem,'opbutton_on');
					toggleAdvancedHide(list[i]);
				}
			}
			parentelem.blur();
	    }
	    
	// Now, hide me
	removeClassName(parentelem,'opbutton_on');
	toggleAdvancedHide(clsName);

	parentelem.blur();
	return false;	
}


function toggleOptionTabShow(parentelem,clsName,allclasses) {
	//allclasses='view_control,style_control,access_control,share_control';
	list = allclasses.split(",");
	for (i = 0; i < list.length; i++)
	    if (list[i] != clsName) {
	    	// Disable the other buttons, if they are enabled
	    	pelem=document.getElementById('toggle_' + list[i])
			if (pelem != null) {
				if (hasClassName(pelem,'opbutton_on')) {
					removeClassName(pelem,'opbutton_on');
					toggleAdvancedHide(list[i]);
				}
			}
			parentelem.blur();
	    }
	    
	// Now, show me
	addClassName(parentelem,'opbutton_on');
	toggleAdvancedShow(clsName);
	

	parentelem.blur();
	return false;	
}


function toggleOptionIsOpen(parentelem) {
	//allclasses='view_control,style_control,access_control,share_control';
	return hasClassName(parentelem,'opbutton_on');
}


function toggleAdvanced(clsName) {
	//alert('toggleAdvanced ' + clsName);
	
	// getElementsByTagName
	// turn off all buttons in the preview
	var elems = document.getElementsByClassName(clsName);
	
	for (var i = 0; i < elems.length; i++) {
		//alert('toggleAdvanced x ');
			
		
		
		if (elems[i].style.cssText=='') {
			elems[i].style.cssText='display: none;'
		} else {
			elems[i].style.cssText='';
		}
		//return;
		
		/*
		alert('display is ' + elems[i].style.display);
		if (elems[i].style.display != 'none') {
			elems[i].style.display='none';
		} else {
			//elems[i].style.display='inheret';
			elems[i].style.cssText='';
		}
		*/
		
	}
	
	
	return false;	
}

function toggleAdvancedShow(clsName) {
	var elems = document.getElementsByClassName(clsName);
	//alert("Ensabeling "+clsName+"\n\n becoming Visible (adding 'display: none;')");
	for (var i = 0; i < elems.length; i++) {
			elems[i].style.cssText='';
	}
	return false;	
}

function toggleAdvancedHide(clsName) {
	var elems = document.getElementsByClassName(clsName);
	//alert("Disabeling "+clsName+"\n\nbecoming invisible (adding 'display: none;')");
	for (var i = 0; i < elems.length; i++) {
			elems[i].style.cssText='display: none;'
	}
	return false;	
}








/* Classname based ops are slow -- this may be why addblock is slow
   add an id based one
   */
function toggleTabShow(tabElement,className,shownId,allIds) {
	list = allIds.split(",");
	
	//alert('toggle ' + tabElement.id);
	for (i = 0; i < list.length; i++)
	    if (list[i] != shownId) {
	    	//alert('considering ' + 'tab_' + list[i]);
	    	// Disable the other buttons, if they are enabled
	    	pelem=document.getElementById('tab_' + list[i])
			if (pelem != null) {
				if (hasClassName(pelem,className)) {
					//alert('removing ' + 'tab_' + list[i]);
					removeClassName(pelem,className);
					toggleAdvancedHideById(list[i]);
				}
				else {
					//alert('Skipping ' + 'tab_' + list[i]);
				}
			} else {
				//alert('No such tab element ' + 'tab_' + list[i]);
			}
			tabElement.blur();
	    }
	    
	// special case
	toggleAdvancedHideById('Help_tbar');
	    
	// Now, show me
	addClassName(tabElement,className);
	toggleAdvancedShowById(shownId);
	

	tabElement.blur();
	return false;	
}

function toggleAdvancedShowById(elemId) {
	var elem = document.getElementById(elemId);
	if (elem != null) {
			elem.style.cssText='';
	} else alert('Cound not find element '+elemId);
	return false;	
}

function toggleAdvancedHideById(elemId) {
	var elem = document.getElementById(elemId);
	if (elem != null) {
		elem.style.cssText='display: none;'
	} else alert('Cound not find element '+elemId);
	return false;	
}





/* =================================================================== */
document.getElementsByIDSuffix = function(parentid,suffix){
    var retVal = new Array();
    
    g_levelDesc=document.getElementById(parentid);
	if (typeof(g_levelDesc) != 'undefined' && g_levelDesc != null) {
	
		//var elements = document.getElementsByTagName("*");
	    var elements = g_levelDesc.getElementsByTagName("*");
	    for(var i = 0;i < elements.length;i++){
	    	//if(elements[i].id.indexOf(suffix,1) >= 0){
	        //var suf=elements[i].id.substr(1);
	        if(suffix == elements[i].id.substr(1)){
	            var classes = elements[i].className.split(" ");
	                    retVal.push(elements[i]);
	        }
	    }
	}
    return retVal;
}

function toggleIds(parentid,suffix) { // Used to flash from doodlelink
	//alert('toggleIds ' + suffix);
	
	// getElementsByTagName
	// turn off all buttons in the preview
	var elems = document.getElementsByIDSuffix(parentid,suffix);
	//alert('post doc scan toggleIds ' + suffix);
	
	for (var i = 0; i < elems.length; i++) {
		//alert('Found toggleIds id='+elems[i].id);
			
		if (elems[i].style.cssText=='') {
			elems[i].style.cssText='background-color: #8FBF8F;'
		} else {
			elems[i].style.cssText='';
		}
	}
	
	
	return false;	
}

function flashId(id) { // Used to flash from doodlelink
	var elem = document.getElementById(id);
	//alert('post doc scan toggleIds ' + suffix);
	if (typeof(elem) != 'undefined' && elem != null) {
		if (elem.style.cssText=='') {
			elem.style.cssText='background-color: #8FBF8F; border: 2px solid black;'
		} else {
			elem.style.cssText='';
		}
	}
	return false;	
}


function setContents(elementid,contents) {
	elem=document.getElementById(elementid);
	if (typeof(elem) != 'undefined' && elem != null) {
		elem.innerHTML=contents;
	}
	return true;	
}

function stopHere(msg){
	//alert(msg);
	m = msg + '';
	m = msg + '';
}



function checkUploadField(fname){
	//alert('checkUploadField ' + fname);
	suffix=fname.substr((fname.length -4));
	suffix=suffix.toLowerCase();
	//alert(suffix);
	if (suffix == '.bmp') {
		return alert("BMP is a truly terrible format for the web.\n"
		+ "Images that use it are often 50 times larger than are images in the more modern JPG, GIF, or PNG formats. Worse, they can take 50 times longer to upload and most web connections are slower when uploading than for downloading.\n"
		+ "\nExample Speeds:\n"
		+ "  Regular Modem: 15 minutes for .bmp .vs. 23 seconds for .jpg\n"
		+ "  DSL: 7 minutes for .bmp .vs. 10 seconds for .jpg\n"
		+ "  Cable Modem: 3 minutes for .bmp .vs. 5 seconds for .jpg\n"
		+ "\nSo you can take up to 15 minutes PER PICTURE using the awful BMP format.\n"
		+ "We will accept .bmp images, but do not blaim us if it takes forever. Also, the .bmp images can be so big that that the web might even refuse to send them\n"
		+ "\nIf you can, you are much better off if convert the image format on your side using your camera software and then upload a .jpg, .gif, or .png picture.\n"
		//+ "\nDo you still want to send a .bmp format picture?"
		);
	}
	return true;
}

function apply_no_downloads() {
	if(document.images) {
	    for(i=0;i<document.images.length;i++) {
	      document.images[i].onmousedown = no_download;
	      document.images[i].onmouseup = no_download;
	    }
  	}
}

function no_download(e) {
  var msg = "This site does not share its images.";

  if (navigator.appName == 'Netscape' && e.which == 3) {
   alert(msg);
   return false;
  }

  if (navigator.appName == 'Microsoft Internet Explorer' && event.button==2) {
   alert(msg);
   return false;
  }
  return true;
}

function setFormFocus() {
	//alert("setFormFocus");
	var el;
	el = document.getElementById('formFocus');
	if (el == null) {
		return;
	}
	el.focus();
	//scroll(0,0);
	//alert("setFormFocus set the focus");
	
}


function preloadImage(src) {
	var img;
	img=new Image; 
	img.src=src;
}

function URLDecode(psEncodeString)
{
	// IE does not unescape everything
	//alert("Urldecode: " + psEncodeString);
	// Create a regular expression to search all +s in the string
	// var lsRegExp = /\+/g;
	var lsRegExp = /&apos;/g;
	// Return the decoded string
	res= unescape(String(psEncodeString).replace(lsRegExp, "'"));
	//res= unescape(psEncodeString);
	
	return res;
}









function str_rot13( str ) {
    // Perform the rot13 transform on a string  
    // 
    // version: 810.1317
    // discuss at: http://phpjs.org/functions/str_rot13
    // +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +   improved by: Ates Goral (http://magnetiq.com)
    // +   bugfixed by: Onno Marsman
    // *     example 1: str_rot13('Kevin van Zonneveld');
    // *     returns 1: 'Xriva ina Mbaariryq'
    // *     example 2: str_rot13('Xriva ina Mbaariryq');
    // *     returns 2: 'Kevin van Zonneveld'
    return (str+'').replace(/[A-Za-z]/g, function (c) {
        return String.fromCharCode((((c = c.charCodeAt(0)) & 223) - 52) % 26 + (c & 32) + 65);
    });
}

function captchahelp(str) {
	window.alert('You need to enter \n\n                   ' 
		+ str_rot13(str)		)
	return false ;
}


// =======================================================================
// Time delayed on mouseover tab clicks

var hdTabTimeoutID=0;
var hdTabTimeoutlastTab='';
var hdTabIds;

function stopTabTimer() {
	if (hdTabTimeoutID) {
		clearTimeout(hdTabTimeoutID);
	}
	hdTabTimeoutID=0;
}
function setTabTimer() {
	if (hdTabTimeoutID) {
		clearTimeout(hdTabTimeoutID);
	}
	hdTabTimeoutID = window.setTimeout('toggleTabShowLast()', 500);
}
function toggleTabShowLast() {
	//alert('Last tab=' + hdTabTimeoutlastTab);
	
	shownId=hdTabTimeoutlastTab+'_tbar';
	elementId='tab_'+shownId;
	elem=document.getElementById(elementId);
	return toggleTabShow(elem,'tbartab_on',shownId,hdTabIds);
}
	
function clickEdit() {
	alert('You are Previewing, almost all buttons are disabled\n\nYou need to "Click to Edit"\n\nto enable the buttons');
	return false;
}
	