// global javascripts; popup window settings; see button for window sizers
var rteditdiv = 'rtedit';
var popupparams = 'resizable=yes,toolbar=no,scrollbars=yes,status=no,';
var	screenwidth = 1024; //if (screen.availWidth) screenwidth = screen.availWidth;  //triggers bug in mozilla
var	screenheight = 768; //if (screen.availHeight) screenheight = screen.availHeight; 
var editmodemsgs = new Array();
if (!rtimagepath) var rtimagepath = '/_rtimages';
var minusicon = '<img src="'+rtimagepath+'/icons/minus.gif" alt="collapse" border="0" height="9" width="9">'
var plusicon = '<img src="'+rtimagepath+'/icons/plus.gif" alt="expand" border="0" height="9" width="9">'
// edit mode evaluations
if (isEditMode()) setTimeout('showIcons(); toggleLinks(true);',600);
else setTimeout('hideIcons(); toggleLinks(false);',600);
// global functions
function isEditMode()
{
	if (typeof rtuserid == "undefined") rtuserid = 0;
	if ((getCookie("editmode") == "on" || !editModeOptionEnabled) && rtuserid > 0) return true;
	else return false;
}
function toggleEditModeCookie()
{
	if(getCookie("editmode") == "on")
	{
		setCookie("editmode", "off", null, getcontextpath==""?"/":getcontextpath);
		hideIcons();
		toggleLinks(false);
	}
	else
	{
		setCookie("editmode", "on", null, getcontextpath==""?"/":getcontextpath);
		showIcons();
		toggleLinks(true);
	}
}
function showIcons()
{
	if (isEditMode())
	{
		for (i = 0; i < document.images.length; i++)
		{
			if(document.images[i].name.indexOf("editmodeediticon") > -1) document.images[i].src = rtimagepath+"/icons/editicon.gif";
			else if(document.images[i].name.indexOf("editmodedelicon") > -1) document.images[i].src = rtimagepath+"/icons/deleteicon.gif";
			else if(document.images[i].name.indexOf("editmodepermicon") > -1) document.images[i].src = rtimagepath+"/icons/permicon.gif";
			else if(document.images[i].name.indexOf("editmodeaddicon") > -1) document.images[i].src = rtimagepath+"/icons/addicon.gif";
			else if(document.images[i].name.indexOf("editmodepropicon") > -1) document.images[i].src = rtimagepath+"/icons/editregion.gif";
			else if(document.images[i].name.indexOf("editmodelockicon") > -1) document.images[i].src = rtimagepath+"/icons/lockicon.gif";
			if (editmodemsgs[i]) document.images[i].alt = editmodemsgs[i];
		}
	}
}
function hideIcons()
{
	for (i = 0; i < document.images.length; i++)
	{
		if(document.images[i].name.indexOf("editmode") > -1)
		{
			document.images[i].src = rtimagepath+"/icons/shim.gif";
			editmodemsgs[i] = document.images[i].alt;
			document.images[i].alt = '';
		}
	}
}
function setCookie(name, value, expires, path, domain, secure)
{
  document.cookie = name+"="+escape(value)+ ((expires == null) ? "" : "; expires="+((expires==-1)?"-1":expires.toGMTString()))+ ((path == null) ? "" : "; path="+path)+((domain == null) ? "" : "; domain="+domain)+ ((secure == null) ? "" : "; secure");
}
function getCookie(name)
{
  var cname = name+"=";               
  var dc = document.cookie;             
  if (dc.length > 0) 
  {              
    begin = dc.indexOf(cname);       
    if (begin != -1) 
	{           
      	begin += cname.length;       
      	end = dc.indexOf(";", begin);
      	if (end == -1) end = dc.length;
      	return unescape(dc.substring(begin, end));
    } 
  }
  return null;
}
function delCookie (name,path,domain) 
{
  	if (getCookie(name)) 
  	{ 
  		document.cookie = name+"="+((path == null) ? "" : "; path="+path)+((domain == null) ? "" : "; domain="+domain)+"; expires=Thu, 01-Jan-70 00:00:01 GMT";
	}
}
function editModeEditIcon(id, layout, targetframe, targetregion, controller, method, module, view, path, region, params)
{
	if (isEditMode()) editModeEdit(id, layout, targetframe, targetregion, controller, method, module, view, path, region, params);
}
function editModePermIcon(id, tableid, layout, targetframe, targetregion)
{
	if (isEditMode()) editModeMeta(id, tableid, layout, targetframe, targetregion,'metadatamgr','detail','metadata','permissions');
}
function editModeDeleteIcon(id, layout, targetframe, targetregion, controller, method, module, view, path, region, params)
{
	if (isEditMode()) editModeDelete(id, layout, targetframe, targetregion, controller, method, module, view, path, region, params);
}
function editModeEdit(id, layout, targetframe, targetregion, controller, method, module, view, path, region, params)
{
	if(!id) id = '0';
	if(!layout) layout = 'd';
	if(!targetframe) targetframe = 'popupWindow';
	if(!targetregion) targetregion = 'main';
	if(!controller) controller = 'contentmgr';
	if(!method) method = 'form';
	if(!module) module = 'content';
	if(!view) view = 'form';
	if(!path) path = '/null';
	if(!region) region = 'main';
	if(!params) params = '';
	if(path == '/null') editmodelink = editmodenullpagelink;
	basemodule = replaceChar(module,'.','_');
	eval("if(typeof("+basemodule+"_"+view+"_sizeparams)!='undefined') sizeparams="+basemodule+"_"+view+"_sizeparams");
	winparams = popupparams+sizeparams;
	if (sizeparams.indexOf("resizable")>-1)
		winparams = sizeparams;
	link = editmodelink+'&layout='+layout+'&'+region+'.ctrl='+controller+'.'+method+'&'+region+'.view='+module+'.'+view+'&' +region+'.region='+targetregion+'&'+params+'&'+region+'.id='+id+'&';
	if (targetframe.indexOf("popup") == -1)
		window.open(link,targetframe);
	else
		window.open(link,targetframe,winparams);
}
function editModeDelete(id, layout, targetframe, targetregion, controller, method, module, view, path, region, params)
{
	delparams = 'width=250,height=150';
	if(!id) id = '0';
	if(!layout) layout = 'd';
	if(!targetframe) targetframe = 'popupWindow';
	if(!targetregion) targetregion = 'main';
	if(!controller) controller = 'contentmgr';
	if(!method) method = 'delete';
	if(!module) module = 'static';
	if(!view) view = 'refresh';
	if(!path) path = '/null';
	if(!region) region = 'main';
	if(!params) params = '';
	link = editmodelink+'&layout='+layout+'&call='+controller+'.'+method+'&'+region+'.view='+module+'.'+view+'&id='+id+'&'+params;
	if (confirm('Are you sure you wish to '+method+' this item?'))
	{
		if (targetframe.indexOf("popup") == -1) window.open(link,targetframe);
		else window.open(link,targetframe,popupparams+delparams);
	}
}
function editModeMeta(itemid, tableid, layout, targetframe, targetregion, controller, method, module, view, path, region, params)
{
	if(!itemid) itemid = '0';
	if(!tableid) tableid = '0';
	if(!layout) layout = 'd';
	if(!targetframe) targetframe = 'popupWindow';
	if(!targetregion) targetregion = 'main';
	if(!controller) controller = 'metadatamgr';
	if(!method) method = 'list';
	if(!module) module = 'metadata';
	if(!view) view = 'permissions';
	if(!path) path = '/null'; // not used - deprecated
	if(!region) region = 'main';
	if(!params) params = '';
	eval("if(typeof("+module+"_"+view+"_sizeparams)!='undefined') sizeparams = "+module+"_"+view+"_sizeparams");
	link = editmodenullpagelink+'&layout='+layout+'&'+region+'.ctrl='+controller+'.'+method+'&'+region+'.view='+module+'.'+view+'&' +region+'.region='+targetregion+'&'+region+'.item_id='+itemid+'&'+region+'.table_id='+tableid+'&'+params;
	if (targetframe.indexOf("popup") == -1) window.open(link,targetframe);
	else window.open(link,targetframe,popupparams+sizeparams);
}

function rollOnEdit(region,id)
{
	if (isEditMode())
	{
		eval("imageobj = document.images.editmodeediticon_"+region+"_"+id);
		showIcons();
		switchEditImg(imageobj, editiconalt, id, '/icons/editicon_on.gif');
	}
}
function rollOutEdit(region,id)
{
	window.status = '';
	return true;
}
function rollOnProp(region,id)
{
	if (isEditMode())
	{
		eval("imageobj = document.images.editmodepropicon_"+region+"_"+id);
		showIcons();
		switchEditImg(imageobj, propiconalt, id, '/icons/editregion_on.gif');
	}
}
function rollOutProp(region,id)
{
	window.status = '';
	return true;
}
function rollOnAdd(region,id)
{
	if (isEditMode())
	{
		eval("imageobj = document.images.editmodeaddicon_"+region+"_"+id);
		showIcons();
		switchEditImg(imageobj, addiconalt, id, '/icons/addicon_on.gif');
	}
}
function rollOutAdd(region,id)
{
	window.status = '';
	return true;
}
function rollOnDel(region,id)
{
	if (isEditMode())
	{
		eval("imageobj = document.images.editmodedelicon_"+region+"_"+id);
		showIcons();
		switchEditImg(imageobj, deliconalt, id, '/icons/deleteicon_on.gif');
	}
}
function rollOutDel(region,id)
{
	window.status = '';
	return true;
}
function rollOnPerm(region,id)
{
	if (isEditMode())
	{
		eval("imageobj = document.images.editmodepermicon_"+region+"_"+id);
		showIcons();
		switchEditImg(imageobj, deliconalt, id, '/icons/permicon_on.gif');
	}
}
function rollOutPerm(region,id)
{
	window.status = '';
	return true;
}
function editModeVersions(itemid, tableid, ctrl, view, key)
{
	link = editmodenullpagelink+'&layout=versions&top.function=Version+Manager&global.item_id='+itemid+'&global.table_id='+tableid;
	if(ctrl) link = link+'&current.ctrl='+ctrl+'&selector.t_ctrl='+ctrl;
	if(view) link = link+'&current.view='+view+'&selector.t_view='+view;
	if(!key) key = 'id';
	link = link+'&current.'+key+'='+itemid+'&selector.t_key='+key;
	window.open(link,'popupVersions',getAllPopupWinSizeParams(600,800,'yes','no','yes'));
}
// switch images and alt tags
function switchEditImg(imageobj, msg, id, icon)
{
	if (imageobj)
	{
		imageobj.src = rtimagepath+icon;
		window.status = imageobj.alt;
	}		
}
// utility functions
function replaceChar(src,replacecharc,replacewithchar) 
{
	var buffer = "";
	for(i=0; i<src.length; i++)
	{
		currchar = src.charAt(i);
		if (currchar != replacecharc) buffer += currchar;
		else buffer += replacewithchar;
	}
	return buffer;
}
function insertInto(src,position,insertstring)
{
	// use loop to make it more compatible;
	var buffer = "";
	for(i=0; i<src.length; i++)
	{
		currchar = src.charAt(i);
		if (i == position) buffer += insertstring;
		buffer += currchar;
	}
	return buffer;
}
//function to trim leading and trailing white spaces
function trim(str)
{
    return str.replace(/^\s+/g, '').replace(/\s+$/g, ''); // use simpler loop for backwards compatibility
}
//function to delete an element of an array; returns new array
function deleteElement(currarray,num)
{
	if(num < currarray.length)
	{
		var newarray = new Array();
		for (i = 0; i < currarray.length; i++)
		{
			if(i != num)newarray[newarray.length] = currarray[i];
		}
		return newarray;
	}
	else return currarray;
}
// global "form changed" variable
var globalformchange = false;
// global "lose form changes" message, overwrite with localized
var globalformchangealert = 'You have changed values on this form.  Discard those changes?';
// check if form changed, based on globalformchange variable
function checkGlobalChanged() 
{ 
	return globalformchange; 
}
// set global changed variable
function setGlobalChanged(chgval)
{
	globalformchange = chgval;
}
// link function that checks for changed form
function doLink(href)
{
	if ((!checkGlobalChanged()) || (checkGlobalChanged() && confirm(globalformchangealert)))
	{
		window.location = href;
		return true;
	}	
	return false;
}
var currobject;
// select form input utility -- selects the first time, focus the second time
function setSelect(src)
{
	if(src == currobject) 
		src.focus();
	else 
		src.select();
	currobject = src;
}
// if form contains "changed" field, sets it to "1"; used to prevent data loss when clicking away or closing window
function setChanged(src)
{
	if (src.changed) 
		src.changed.value = '1';
	if (setGlobalChanged) 
		setGlobalChanged(true);
	src.style.border = '1px dotted red';
}
// see if form contains "changed" field, and it has been set to "1"
function checkChanged(src)
{
	if (src.changed)
	{
		if (src.changed.value == '1') return true;
		return false;
	}
	else return false;
}
function getPopupWinTopPos(h)
{
	return ((screenheight - h - 30) * .5);
}
function getPopupWinLeftPos(w)
{
	return ((screenwidth - w - 10) * .5);
}
function getPopupWinSizeParams(h,w)
{
	return 'width='+w+',height='+h+',left='+getPopupWinLeftPos(w)+',top='+getPopupWinTopPos(h);
}
function getAllPopupWinSizeParams(h,w,resizable,toolbar,scrollbars,status)
{
	if (!resizable) resizable = 'yes';
	if (!toolbar) toolbar = 'no';
	if (!scrollbars) scrollbars = 'yes';
	if (!status) status = 'no';
	var popupparams = 'resizable='+resizable+',toolbar='+toolbar+',scrollbars='+scrollbars+',status='+status+',';
	return popupparams+getPopupWinSizeParams(h,w);
}
// global popup window calls
function loadEditor(src, fheight, fwidth) 
{
	if(!(is_ie5up&&is_win) && !is_gecko13up)
	{
		alert(wysiwgerr);
		return
	}
	var editor = 'editor';
	if (!fheight)
		fheight = 453;
	if (!fwidth)
		fwidth = 640;
	if (is_gecko) editor = 'editor_g';
	var newhref = editmodenullpagelink+'layout=rt&main.view=static.'+editor+'&main.srcfield='+src.form.name+'.'+src.name+ '&top.function=WYSIWYG%20%20EDITOR&main.fheight='+fheight+'&main.fwidth='+fwidth;
	var targetframe = 'popupEditor';
	var editor = window.open(newhref,targetframe,getAllPopupWinSizeParams(fheight,fwidth,'no','no','no'));
}
function loadImporter(src)
{
	var newhref = editmodenullpagelink+'layout=rt&main.view=static.importtext&main.srcfield='+src.form.name+'.'+src.name+'&top.dorefresh=0';
	var targetframe = 'popupImporter';
	var editor = window.open(newhref,targetframe,getAllPopupWinSizeParams(400,400,'yes','no','no'));
}
function loadURLImporter(src,urlfield)
{
	var newhref = editmodenullpagelink+'layout=rt&main.view=static.importurl&main.srcfield='+src.form.name+'.'+src.name+'&main.srcurl='+escape(urlfield.value)+'&top.dorefresh=0';
	var targetframe = 'popupImporter';
	var editor = window.open(newhref,targetframe,getAllPopupWinSizeParams(400,400,'yes','no','no'));
}
function loadAttach(src,fileroot,fileroot_default,divid)
{
	if(!divid) divid = 'attachmentsList';
	var basehref = editmodenullpagelink+'layout=rt_spaced&main.ctrl=filemgr.list&main.view=fileroom.list&main.fileroot_id=0&main.srcfield='+src.form.name+'.'+src.name+'&main.attachments='+src.value+'&top.bgcolor=white&top.function=Attachment+Picker&top.align=left&top.tdwith=10&main.srcdiv='+escape(divid);
	if (fileroot == null || fileroot == '') { fileroot = getCookie("savedroot");}
	if (fileroot == null || fileroot == '') { fileroot = fileroot_default;}
	if (fileroot == null || fileroot == '') var newhref = basehref;	
	else var newhref = basehref+'&main.fileroot_name=' +fileroot;	
	var relpath = getCookie(fileroot+"_savedpath");
	if (relpath != null) newhref += '&main.relative_path='+relpath;
	var targetframe = 'popupAttach';
	var changeAttachments = true;
	var attach = window.open(newhref,targetframe,getAllPopupWinSizeParams(380,550,'yes','no','yes'));
}
function loadImages(src,returntype,currimage,fileroot) 
{
	var targetframe = 'popupImages';
	var newhref = editmodenullpagelink+'layout=rt_spaced&main.ctrl=filemgr.list&main.view=fileroom.list&main.order=directory+desc,file_name&main.srcfield='+src.form.name+'.'+src.name+'&main.imagepicker=yes&top.bgcolor=white&top.function=Image+Picker&top.align=left&top.tdwith=10';	 
	if (currimage != null) newhref += '&main.currimage='+escape(currimage);
	if (fileroot == null) fileroot = 'images';
	if (newhref.indexOf('fileroot') == -1) newhref += '&main.fileroot_name='+fileroot;
	var relpath = getCookie(fileroot+"_savedpath"); 
	if (relpath != null) newhref += '&main.relative_path='+relpath;
	if (returntype != null) newhref += '&main.returntype='+returntype;
	var images = window.open(newhref,targetframe,getAllPopupWinSizeParams(380,550,'yes','no','yes'));
}
function loadMedia(srcform,filefld,namefld,returntype,thumbnail,maxsize,resize,thumbsize)
{ 
	if (!srcform.uid || srcform.uid.value.length < 32) 
		return false;
	if (!thumbnail) thumbnail = 0;
	if (!resize) resize = 0;
	if (!maxsize) maxsize = 20000;
	if (!thumbsize) thumbsize = 200;
	var uid = srcform.uid.value;
	var targetframe = 'popupMedia';
	var newhref = editmodenullpagelink+'layout=rt&main.view=media.form&main.srcform='+srcform.name+'&main.srcfilefld='+filefld+'&main.srcnamefld='+namefld+'&main.item_uid='+uid+'&main.thumbnail='+thumbnail+'&main.resize='+resize+'&main.max_size='+maxsize+'&main.thumbsize='+thumbsize+'&top.function=Media+Loader&top.align=left&top.tdwith=10';	 
	var media = window.open(newhref,targetframe,getAllPopupWinSizeParams(200,450,'yes','no','yes'));
	return true;
}
function loadPubLink(pageid,region,module,cat,fixedmodule,fixedcat,tableid)
{
	// fixedmodule and fixedcat allow a specified module and category to be static in the linking wiz
	var newhref = editmodenullpagelink+'layout=rt&main.ctrl=publishmgr.publisher&main.view=contentpub.link&main.region='+region+'&main.pageid='+pageid+'&top.bgcolor=efefef&top.function=Publication+Manager';		
	if (module != null && module != 'null') 
	{
		newhref += '&main.modulefilter='+module;
		if (fixedmodule != false || fixedmodule == null) newhref += '&main.fixedmodule=true';
		if (cat != null) 
		{
			newhref += '&main.cat='+cat;
			if (fixedcat != false || fixedcat != null) newhref += '&main.fixedcat=true';
		}
	}
	if(tableid != null && tableid != '') newhref += '&main.table_id='+tableid;
	if (window.name.indexOf('popup') > -1) targetframe = '_self';
	else targetframe = 'popupWin';
	var images = window.open(newhref,targetframe,getAllPopupWinSizeParams(410,560));
}
function loadPubCtLink(pageid,region,cat,fixedcat,modulename)
{
	var newhref = editmodenullpagelink+'layout=rt&main.view=contactpub.link&main.region='+region +'&main.pageid='+pageid+'&top.bgcolor=efefef&top.function=Contact%20Linking%20Wizard';
	if (cat != null)
	{
		newhref += '&main.cat_id=' +cat;
		if (fixedcat) newhref += '&main.fixedcat=true';
	}
	if (modulename != null && modulename != 'null') newhref += '&main.module=' +modulename;
	if (window.name.indexOf('popup') > -1) targetframe = '_self';
	else targetframe = 'popupWin';
	window.open(newhref,targetframe,getAllPopupWinSizeParams(370,620));
}
function loadPageReorderWiz(parent_id)
{
	var newhref = editmodenullpagelink+'layout=rt&main.view=pages.reorder&main.parent_id=' +parent_id+ '&top.function=Page%20Sorter';  
	if (window.name.indexOf('popup') > -1) targetframe = '_self';
	else targetframe = 'popupWin';
	window.open(newhref,targetframe,getAllPopupWinSizeParams(370,430));
}
function loadCatEdit(parent_id,id,src)
{
	var newhref = editmodenullpagelink+'layout=rt&main.view=categories.form_editlist&main.tree_id=' +parent_id+ '&main.id='+id; 
	newhref += '&main.srcform='+escape(src.form.name)+'&main.srcfield='+escape(src.name); 
	if (window.name.indexOf('popup') > -1) targetframe = '_self';
	else targetframe = 'popupWin';
	window.open(newhref,targetframe,getAllPopupWinSizeParams(250,400));
}
function loadTableMaker(src)
{
	var newhref = editmodenullpagelink+'layout=rt&main.view=static.tablemaker&main.srcfield='+src.form.name+'.'+src.name+'&top.function=Table+Maker';	
	var targetframe = 'popupTableMaker';
	var editor = window.open(newhref,targetframe,getAllPopupWinSizeParams(250,400,'yes','no','no'));
} 
function loadUserPicker(src,label,currid)
{
	var newhref = editmodenullpagelink+'layout=ps&main.view=users.picker&main.srcform='+src.form.name+'&main.srcfield='+src.name+'&main.filter='+escape(src.value);
	if (label != null && currid != null)
	{
		newhref += '&main.currid='+currid+'&main.labelfield='+label.name;
	}
	var userpicker = window.open(newhref,'popupUserpicker',getAllPopupWinSizeParams(110,320));
}
function getPopupCalendarFor(src,now,timepicker)  
{
	var w_height = 145;
	var newhref = editmodenullpagelink+'layout=ps&main.view=mdcal.cal&main.src_field='+escape(src.form.name+'.'+src.name);
	var currval = '';
	eval('if(document.'+src.form.name+'.'+src.name+') currval = document.'+src.form.name+'.'+src.name+'.value;');
	if (currval.length > 0)
		now = currval;
	if(now != null) 
		newhref += '&main.now='+now;
	if(timepicker != null)
	{
		newhref += '&main.timepicker='+timepicker;
		if (timepicker == 'true' || timepicker == '1')
			w_height = 180;
	}
	window.open(newhref,'popupCal',getAllPopupWinSizeParams(w_height,180,'yes','no','no'));
}
function getPopupContactsFor(src,returntype,arraypos,findtext)
{
	var newhref = editmodenullpagelink+'layout=ps&main.view=contacts.quickfind';
	if (src != null)
	{
		newhref += '&main.src_field='+escape(src.form.name+'.'+src.name);
		if (arraypos != null && arraypos > 0) newhref += '['+arraypos+']';
	}
	if (returntype != null) newhref += '&main.returntype='+returntype;
	if (findtext != null) newhref += '&main.find='+escape(findtext);
	window.open(newhref,'popupContacts',getAllPopupWinSizeParams(500,250));
}
function getQueryString(except) { alert('deprecated, use stringUtils.') }
function putQS(qs, name, value) { alert('deprecated, use stringUtils.') }
function getQS(qs, name) { alert('deprecated, use stringUtils.') }
function exceptQS(qs, except) { alert('deprecated, use stringUtils.') }
function subStrArray(srcstr, valarray) { alert('Deprecated, use stringUtils') };
function getRsvps(id,tableid,title,canedit)
{
	if (canedit)
	{
		newhref = editmodenullpagelink +'layout=rt&top.dorefresh=0&main.ctrl=surveymgr.list&main.view=survey.rsvplist&main.survey_id='+id+'&main.instance_id='+tableid+'&main.title='+escape(title);
		newhref += '&main.order=date_created+asc';
		rsvpWindow = window.open(newhref,'popupRSVP',getAllPopupWinSizeParams(400,400));
	}
	else
	{
		alert('!');
	}
}
// Used with WYSIWYG editor.  Strips unnecessary HTML that the editor occasionally adds.
function stripChars(text)
{
	pos1 = text.value.toLowerCase().indexOf('<p>');
	if (pos1 == 0)
	{
		text.value = text.value.substr(3);	
		pos1 = text.value.toLowerCase().indexOf('<p>');
		pos2 = text.value.toLowerCase().indexOf('</p>');
		if ((pos1 > -1 && pos2 > -1 && pos2 < pos1) || (pos1 == -1 && pos2 > -1))
		{	
			text.value = text.value.substr(0,pos2)+text.value.substr(pos2+4);
		}		
	}
	if (text.value.length >= 4)
	{
		start = text.value.length - 4;
		snippet = text.value.toLowerCase().substr(start);
		if (snippet == '</p>') text.value = text.value.substring(0,start);
	}	
}
// Simple DIV toggle for hiding/showing interface elements
// Only works with DOM compliant browsers; use for advanced features only
function toggleDiv(id, div0,div1,div2,div3,div4,div5,div6,div7,div8,div9)
{
	return toggleDivs(id, new Array(div0,div1,div2,div3,div4,div5,div6,div7,div8,div9));
}
// get rid of arbitrary restriction in number of divs
function toggleDivs(id, div_arr)
{
	var show;
	if (!document.getElementById) 
		return;
    var target = document.getElementById(id);
	if (!target)
		return;

	var targetother = new Array();

	for (var i = 0; i < div_arr.length; i++) 
		if (document.getElementById(div_arr[i]))
			targetother.push(document.getElementById(div_arr[i]));

   	if (target.style.display == 'none')  
	{
		show = true;
		target.style.display = ''; 
		for (i = 0; i < targetother.length; i++) 
			targetother[i].style.display = ''; 
	}
	else  
	{
		show = false;
		target.style.display = 'none';
		for (i = 0; i < targetother.length; i++) 
			targetother[i].style.display = 'none'; 
	}
	// toggle control
	toggleControl(id);
    // set a cookie to remember this preference for the session duration
    setCookie(id, show);
}
function showDiv(id)
{
	if (!document.getElementById || !document.getElementById(id)) 
		return;
	var target = document.getElementById(id);
	target.style.display = ""; 
}
function showDivs(array)
{
	if (!array)
		return;
	if (typeof array == "string")
		array = array.split(',');
	for (var i = 0; i < array.length; i++)
		showDiv(array[i]);
}
function hideDiv(id)
{
	if (!document.getElementById || !document.getElementById(id)) 
		return;
	var target = document.getElementById(id);
	target.style.display = "none"; 
}
function hideDivs(array)
{
	if (!array)
		return;
	if (typeof array == "string")
		array = array.split(',');
	for (var i = 0; i < array.length; i++)
		hideDiv(array[i]);
}
// recall toggle preferences
// Only works with DOM compliant browsers; use for advanced features only
function toggleControl(id) 
{
	var cid = 'c'+id;
	if(document.getElementById(cid)==null) 
		return;
	var target = document.getElementById(id);
	if(document.getElementById(id)==null) 
		return;
	if (target.style.display != 'none') 
		updateDiv(minusicon,cid);
	else updateDiv(plusicon,cid);
}
function toggleTab(id, tabarray, className)
{
	if (className == null)
		className  = 'horizMenuCurr'
	for (var i = 0; i < tabarray.length; i++)
	{
		document.getElementById(tabarray[i]).style.display = 'none';
		document.getElementById('t'+tabarray[i]).className = '';
	    setCookie(tabarray[i], false);
	}
	document.getElementById(id).style.display = '';
	document.getElementById('t'+id).className = className;
    setCookie(id, true);
}
function toggleTabPref(tabarray, className)
{
	if (className == null)
		className  = 'horizMenuCurr'
	for (var i = 0; i < tabarray.length; i++)
	{
   		var toggleCookie = getCookie(tabarray[i]);
		if (toggleCookie != null && toggleCookie == 'true')
		{
			document.getElementById(tabarray[i]).style.display = '';
			document.getElementById('t'+tabarray[i]).className = className;
		}
	}
}
/* This function is to set folders to expand/contract based on a user's preference */
// Only works with DOM compliant browsers; use for advanced features only
// @param id div id
function togglePrefs(id, div_arr) 
{
    var toggleCookie = getCookie(id);
	if (!document.getElementById(id)) 
		return;
    if (toggleCookie != null) 
	{ 
        var divarea = document.getElementById(id);
		var divother = new Array();
		for (var i = 0; i < div_arr.length; i++)
		{
			if (document.getElementById(div_arr[i])) 
				divother[i] = document.getElementById(div_arr[i]);
		}
        var control = document.getElementById('c'+id);
        if (toggleCookie == 'true') 
		{ // show
            divarea.style.display = '';
			for (i = 0; i < divother.length; i++) 
				if (divother[i])
					divother[i].style.display = ''; 
			if (control)
				updateDiv(minusicon, 'c'+id);
        } 
		else 
		{ // hide
            divarea.style.display = 'none';
			for (i = 0; i < divother.length; i++) 
				if (divother[i])
					divother[i].style.display = 'none'; 
			if (control)
				updateDiv(plusicon, 'c'+id);
        }
    }
}
function togglePref(id,div0,div1,div2,div3,div4,div5,div6,div7,div8,div9) 
{
	return togglePrefs(id, new Array(div0,div1,div2,div3,div4,div5,div6,div7,div8,div9));
}
// toggle pref for multiple ids, no support for associated divs, ID only.
function togglePrefMulti(id_arr)
{
	if (typeof id_arr == "string")
		id_arr = id_arr.split(',');
	for (var i = 0; i < id_arr.length; i++)
		togglePref(id_arr[i]);
}
/* Generic Cross-browser function to draw content in div */
// Only works with DOM compliant browsers; use for advanced features only
// @param text text (HTML Fragment) to draw
// @param div div ID to draw into
function updateDiv(text,div)
{
	if(!document.getElementById)
		return;
	if(document.getElementById(div)==null) 
		return;
	//if IE
	if (document.all && document.getElementById(div))  
	{
		var range = document.getElementById(div);
		range.innerHTML = text;
	}
	//else if NS 6 (supports new DOM)
	else if (document.getElementById && document.getElementById(div))
	{
		var range = document.createRange();
		node = document.getElementById(div);
		range.setStartBefore(node);
		htmlFrag = range.createContextualFragment(text);
		while (node.hasChildNodes())
		node.removeChild(node.lastChild);
		node.appendChild(htmlFrag);
	}	
}
function getDiv(div)
{
	if(document.getElementById(div)==null) return;
	//if IE
	if (document.all) return eval(div).innerHTML;
	//else if NS 6 (supports new DOM)
	else if (document.getElementById)
	{
		var range = document.createRange();
   		range.selectNodeContents(document.getElementById(div));
   		return range.toString();
	}	
	return "";
}
function checkEnter(e)
{
	var characterCode;
	if(e && e.which)//character code is contained in NN4's which property
	{
		e = e;
	 	characterCode = e.which; 
	}
	else //character code is contained in IE's keyCode property
	{							
		e = event;				
		characterCode = e.keyCode;
	}
	if(characterCode == 13)
		return true;
	else
		return false;
}
function toggleLinks(toggleState)
{
	if (!document.getElementById) return;
	var divs = document.getElementsByTagName("div");
	var spans = document.getElementsByTagName("span");
	var trs = document.getElementsByTagName("tr");
	var tables = document.getElementsByTagName("table");
	toggleElements(divs, toggleState);
	toggleElements(spans, toggleState);
	toggleElements(trs, toggleState);
	toggleElements(tables, toggleState);
}
function toggleElements(objects, toggleState)
{
	//var objects = divs+spans;
	for (var i = 0; i < objects.length; i++)
	{
		if (objects[i].id == rteditdiv || objects[i].className.indexOf(rteditdiv) > -1)
		{
			if (toggleState)
            {
                objects[i].style.display = "";
            }
            else
            {
                objects[i].style.display = "none";
            }
            // alert(objects[i].style.display); //@debug
		}
	}
}
function centerWin()
{
	this.window.moveTo(getPopupWinLeftPos(window.document.body.clientWidth), getPopupWinTopPos(window.document.body.clientHeight));
}
function includeLib(libarray) 
{ 
	for (var i = 0; i < libarray.length; i++) 
	{ 
		var src = jspath+'/'+libarray[i]+'.js'; 
		remoteScript(src, libarray[i]) 
	} 
}
function remoteScript(src, name)
{
	var head = document.getElementsByTagName('head').item(0)
	var scriptTag = document.getElementById(name);
	if(scriptTag)
		head.removeChild(scriptTag);
	script = document.createElement('script');
	script.src = src;
	script.type = 'text/javascript';
	script.id = name;
	void(head.appendChild(script));
}
function eM(name,domain,ext,text,subject)
{
	var email = name+'@'+domain+'.'+ext;
	if (text == null || text.length == 0)
		text = email;
	if (subject != null)
		ext += '?subject=' + escape(subject);
	var result = '<a href="mailto:'+email+'">'+text+'</a>';
	return result;
}
function vAlert(text)
{
	var docstruct = '<html><body bgcolor="#efefef" onblur="window.focus()"><table width="100%" height="100%" border="0" cellpadding="10"><tr><td valign="baseline"><img src="'+rtimagepath+'/icons/alert.gif" alt="alert"></td><td valign="top">'+text+'</td></tr><tr><td colspan="2" align="center"><form><input type="button" value="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" onclick="window.close()"></form></td></tr></table></body></html>';
	var vAlertWin = window.open('','vAlertWindow',getAllPopupWinSizeParams(350,450));
	vAlertWin.document.clear();
	vAlertWin.focus();
	vAlertWin.document.write(docstruct);
	vAlertWin.document.close();	
}
function getDivObject(id)
{
	if (!document.getElementById) 
		return null;
	var target = document.getElementById(id);
	return target;
}
function arrayRemove(array, element)
{
	if (array.toString().indexOf(element)==-1) return;
	var result = new Array();
	for (var i = 0; i < array.length; i++)
		if (array[i] != element)
			result.push(array[i]);
	return array;		
}
// window size variables
var sizeparams = getPopupWinSizeParams(500,500);
var pub_form_sizeparams = getPopupWinSizeParams(500,600);
var cowjobs_form_sizeparams = getPopupWinSizeParams(490,450);
var pages_form_sizeparams = getPopupWinSizeParams(640,500);
var metadata_permissions_sizeparams = getPopupWinSizeParams(180,300);
var metadata_form_sizeparams = getAllPopupWinSizeParams(325,400,'yes','no','yes');
var press_form_sizeparams = getPopupWinSizeParams(500,500);
var articles_form_sizeparams = getPopupWinSizeParams(490,400);
var faq_form_sizeparams = getPopupWinSizeParams(450,400);
var metadata_permissions_sizeparams = getPopupWinSizeParams(350,400);
var apc_form_sizeparams = getPopupWinSizeParams(500,500);
var apc_form_velocity_sizeparams = getPopupWinSizeParams(640,640);
