document.write('<script type="text/javascript" src="/static/yui/yahoo-dom-event.js"></script>');
document.write('<script type="text/javascript" src="/static/yui/utilities.js"></script>');
document.write('<script type="text/javascript" src="/static/yui/dragdrop-min.js"></script>');
document.write('<script type="text/javascript" src="/static/yui/animation-min.js"></script>');
document.write('<script type="text/javascript" src="/static/yui/slider-min.js"></script>');
document.write('<script type="text/javascript" src="/static/yui/container_core-min.js"></script>');
document.write('<script type="text/javascript" src="/static/yui/container-min.js"></script>');
document.write('<script type="text/javascript" src="/static/yui/yahoo-min.js"></script>');
document.write('<script type="text/javascript" src="/static/yui/event-min.js"></script>');
document.write('<script type="text/javascript" src="/static/yui/connection-min.js"></script>');
document.write('<script type="text/javascript" src="/static/yui/menu-min.js"></script>');
document.write('<script type="text/javascript" src="/static/yui/datasource-min.js"></script>');
document.write('<script type="text/javascript" src="/static/yui/autocomplete-min.js"></script>');
document.write('<link type="text/css" rel="stylesheet" href="/static/yui/container.css">');
document.write('<link type="text/css" rel="stylesheet" href="/static/yui/menu.css">');
document.write('<link type="text/css" rel="stylesheet" href="/static/yui/autocomplete.css">');

var highestZIndex = 10;
var ajaxSuccess = function(o){
	handleAJAXResult(o);
}   
var ajaxFailure = function(o){   
	alert('Sorry, the background function call failed.');
}   
function ajaxExecuteMainService(methodName, arg1, val1, arg2, val2, arg3, val3, arg4, val4, arg5, val5, arg6, val6, arg7, val7, arg8, val8, arg9, val9, arg10, val10) {
	return ajaxExecuteGet('/mainService_' + methodName + '.action', arg1, val1, arg2, val2, arg3, val3, arg4, val4, arg5, val5, arg6, val6, arg7, val7, arg8, val8, arg9, val9, arg10, val10);
}
function ajaxExecuteMainServiceNoCallback(methodName, arg1, val1, arg2, val2, arg3, val3, arg4, val4, arg5, val5, arg6, val6, arg7, val7, arg8, val8, arg9, val9, arg10, val10) {
	return ajaxExecuteGetNoCallback('/mainService_' + methodName + '.action', arg1, val1, arg2, val2, arg3, val3, arg4, val4, arg5, val5, arg6, val6, arg7, val7, arg8, val8, arg9, val9, arg10, val10);
}
function ajaxExecuteGet(url, arg1, val1, arg2, val2, arg3, val3, arg4, val4, arg5, val5, arg6, val6, arg7, val7, arg8, val8, arg9, val9, arg10, val10) {
	var params = getParamString(arg1, val1, arg2, val2, arg3, val3, arg4, val4, arg5, val5, arg6, val6, arg7, val7, arg8, val8, arg9, val9, arg10, val10);
	if (params != '') url += '?' + params;

	var ajaxCallback =
	{
		cache:false,
		success:ajaxSuccess,
		failure:ajaxFailure
	};

	YAHOO.util.Connect.asyncRequest('GET', url, ajaxCallback);
	return ajaxCallback;
}
function ajaxExecuteGetNoCallback(url, arg1, val1, arg2, val2, arg3, val3, arg4, val4, arg5, val5, arg6, val6, arg7, val7, arg8, val8, arg9, val9, arg10, val10) {
	var params = getParamString(arg1, val1, arg2, val2, arg3, val3, arg4, val4, arg5, val5, arg6, val6, arg7, val7, arg8, val8, arg9, val9, arg10, val10);
	if (params != '') url += '?' + params;

	var ajaxCallback =
	{
		cache:false,
		failure: ajaxFailure
	};

	YAHOO.util.Connect.asyncRequest('GET', url, ajaxCallback);
	return ajaxCallback;
}
function ajaxExecutePost(url, arg1, val1, arg2, val2, arg3, val3, arg4, val4, arg5, val5, arg6, val6, arg7, val7, arg8, val8, arg9, val9, arg10, val10) {
	var postData = getParamString(arg1, val1, arg2, val2, arg3, val3, arg4, val4, arg5, val5, arg6, val6, arg7, val7, arg8, val8, arg9, val9, arg10, val10);
	var ajaxCallback =
	{
		cache:false,
		success:ajaxSuccess,
		failure: ajaxFailure
	};

	YAHOO.util.Connect.asyncRequest('POST', url, ajaxCallback, postData);
	return ajaxCallback;
}
function ajaxExecutePostWithForm(url, form, withFile) {
	var ajaxCallback =
	{
		cache:false,
		success:ajaxSuccess,
		failure: ajaxFailure
	};

	updateTextAreasFromCKeditors();
	YAHOO.util.Connect.setForm(form, withFile);
	YAHOO.util.Connect.asyncRequest('POST', url, ajaxCallback);
	return ajaxCallback;
}
function ajaxExecutePostWithFormByID(url, formID, withFile) {
	return ajaxExecutePostWithForm(url, document.getElementById(formID), withFile);
}
function ajaxGetReturnValue(o, methodName) {
    return ajaxGetResultValue(o, methodName, 'Return');
}
function ajaxGetExtraData(o, methodName) {
    return ajaxGetResultValue(o, methodName, 'ExtraData');
}
function ajaxGetResultValue(o, methodName, dataElement) {
    if (o.responseText == undefined) return undefined;
	var root = o.responseXML.documentElement;
	if (root == undefined) return undefined;
	var elems = root.getElementsByTagName(methodName + dataElement);
	if (elems == undefined) return undefined;
	var first = elems[0];
	if (first == undefined || first.firstChild == undefined) return undefined;
	return first.firstChild.nodeValue;
}
function getParamString(arg1, val1, arg2, val2, arg3, val3, arg4, val4, arg5, val5, arg6, val6, arg7, val7, arg8, val8, arg9, val9, arg10, val10) {
	var str = '';
	if (val1 != undefined) str += arg1 + '=' + escape(val1); else return str;
	if (val2 != undefined) str += '&' + arg2 + '=' + escape(val2); else return str;
	if (val3 != undefined) str += '&' + arg3 + '=' + escape(val3); else return str;
	if (val4 != undefined) str += '&' + arg4 + '=' + escape(val4); else return str;
	if (val5 != undefined) str += '&' + arg5 + '=' + escape(val5); else return str;
	if (val6 != undefined) str += '&' + arg6 + '=' + escape(val6); else return str;
	if (val7 != undefined) str += '&' + arg7 + '=' + escape(val7); else return str;
	if (val8 != undefined) str += '&' + arg8 + '=' + escape(val8); else return str;
	if (val9 != undefined) str += '&' + arg9 + '=' + escape(val9); else return str;
	if (val10 != undefined) str += '&' + arg10 + '=' + escape(val10);
	return str;
}
function isMSIE() {
	var s = navigator.userAgent.toLowerCase();
	return s.indexOf('msie') >= 0;
}
function isMSIE8() {
	var s = navigator.userAgent.toLowerCase();
	return s.indexOf('msie 8') >= 0;
}
function isOpera() {
	var s = navigator.userAgent.toLowerCase();
	return s.indexOf('opera') >= 0;
}
function toggleHTMLEditor(name, tlb) {
	var txtArea = document.getElementById(name) ;
	if (txtArea.style.display != '') {
		switchToText(name);
	} else {
		switchToHTML(name, tlb);
	}
}
function switchToHTML(name, tlb) {
	initHTMLeditor(name, tlb);
	ajaxExecuteMainServiceNoCallback('setHTMLeditingOn');
}
function initHTMLeditor(name, tlb) {
	if (!tlb) tlb = 'CW';
	CKEDITOR.BasePath = '/static/ckeditor/';
	CKEDITOR.replace(name, {toolbar:tlb});
	spn = document.getElementById("spnToggle_" + name);
	if (spn != undefined) spn.innerHTML = "Switch to basic text editor";
}
function updateTextAreasFromCKeditors() {
	try {
		for (var name in CKEDITOR.instances) {
			if (document.getElementById(name)) {
				var oEditor = CKEDITOR.instances[name];
				oEditor.updateElement();
			}
		}
	} catch (e) {}
}
function switchToText(name) {
	updateTextAreasFromCKeditors();
	var editor = CKEDITOR.instances[name];
	if (editor == undefined) return;
	CKEDITOR.remove(editor);
	editor.destroy();
	
	var origTxtArea = document.getElementById(name);
	if (origTxtArea == undefined) return;
	origTxtArea.style.display = '';
	origTxtArea.style.visibility = '';

	spn = document.getElementById("spnToggle_" + name);
	if (spn != undefined) spn.innerHTML = "Switch to HTML editor";
	
	ajaxExecuteMainServiceNoCallback('setHTMLeditingOff');
}
function showNonModalPanel(name, w, header, body, clearOnClose, isFixedCenter, displayContext) {
	return showPanel(name, w, header, body, clearOnClose, false, isFixedCenter, displayContext);
}
function showModalPanel(name, w, header, body, clearOnClose, isFixedCenter, displayContext) {
	return showPanel(name, w, header, body, clearOnClose, true, isFixedCenter, displayContext);
}
function currentZIndex() {
	return highestZIndex;
}
function nextZIndex() {
	return ++highestZIndex;
}
function showPanel(name, w, header, body, clearOnClose, isModal, isFixedCenter, displayContext) {
	if (isFixedCenter == null) isFixedCenter = true;	// Default
	if (isMSIE8()) isModal = false;	// Prevent background from going black
	
	var pnl = new YAHOO.widget.Panel(name,
	            { width:w,
	              fixedcenter:isFixedCenter,
	              context:displayContext,
	              close:true,
	              draggable:true,
	              modal:isModal,
	              constraintoviewport:true,
	              zIndex:nextZIndex(),
	              visible:false
	            }    
	        );   
	
	pnl.setHeader(header);   
	pnl.setBody(body);
	pnl.render(document.body);
	pnl.show();
	pnl.body.yuiPanel = pnl;
	if (clearOnClose) pnl.hideEvent.subscribe(onPanelClose);
	return pnl;
}
function getPanelBodyDivFromElement(element) {
	while (element != null) {
		if (element.yuiPanel != undefined) {
			return element;
		}
		element = element.parentNode;
	}
	return null;
}
function getPanelFromElement(element) {
	var bodyDiv = getPanelBodyDivFromElement(element);
	if (bodyDiv) 
		return bodyDiv.yuiPanel;
	else
		return null;
}
function closePanel(element) {
	var panel = getPanelFromElement(element);
	if (panel) panel.hide();
}
function onPanelClose() {
	this.body.innerHTML = '';
}
function showWorkingMessage(msg, displayContext, withFade) {
	var body = '<img src="/images/working.gif" border="0" align="absmiddle"/> ' + msg;
	return showStylizedOverlay(body, displayContext, withFade);
}
function showOverlay(anchorID, fromCorner, toCorner, html) {
	if (!fromCorner) fromCorner = 'bl';
	if (!toCorner) toCorner = 'tr';
	var z = nextZIndex();
	var divID = "divForOverlay" + z;
	var newDiv = document.createElement('div');
	newDiv.id = divID;
	document.body.appendChild(newDiv);
	newDiv.style.padding = '0px';
	newDiv.innerHTML = html;
	var ovr = new YAHOO.widget.Overlay(divID, { 
		visible:true,
		zIndex:z,
		context:[anchorID,fromCorner,toCorner]}
		);
	ovr.div = newDiv;
	ovr.render(document.body);
	ovr.show();
	return ovr;
}
function showStylizedOverlay(body, displayContext, withFade) {
	var z = nextZIndex();
	var divID = "divForOverlay" + z;
	var newDiv = document.createElement('div');
	newDiv.id = divID;
	document.body.appendChild(newDiv);
	newDiv.className = 'greenFade tableOutsideBorder';
	newDiv.style.padding = '10px';
	newDiv.innerHTML = body;
	var ovr = new YAHOO.widget.Overlay(divID, { 
		visible:true,
		zIndex:z,
		context:displayContext}
		);
	if (withFade) ovr.cfg.setProperty('effect', [{effect:YAHOO.widget.ContainerEffect.FADE,duration:1.5}]);
	ovr.render(document.body);
	ovr.show();
	return ovr;
}
function closeOverlay(ovr) {
	if (!ovr) ovr = document.overlay;
	if (ovr) {
		ovr.render();
		ovr.hide();
		document.overlay = null;
	}
}
function showPopupMenu(anchorID, fromCorner, toCorner, width, html) {
	if (!fromCorner) fromCorner = 'bl';
	if (!toCorner) toCorner = 'tr';
	var z = nextZIndex();
	var divID = "divForPopupMenu" + z;
	var newDiv = document.createElement('div');
	newDiv.id = divID;
	document.body.appendChild(newDiv);
	newDiv.classname = 'yuimenu';
	newDiv.innerHTML = html;
	var mnu = new YAHOO.widget.Menu(divID, { 
		visible:true,
		zIndex:z,
		width:width,
		context:[anchorID,fromCorner,toCorner]}
		);
	mnu.div = newDiv;
	mnu.render(document.body);
	mnu.show();
	return mnu;
}
function destroyPopupMenu(mnu) {
	mnu.render();
	mnu.hide();
	document.body.removeChild(mnu.div);
}
function replaceSingleQuotes(str) {
	return str.replace(/\'/g, "\\'");
}
function singleQuoteString(str) {
	return "'" + replaceSingleQuotes(str) + "'";
}
function escapeHTML(str) {
    return str.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;');
}
function getValueFromSelect(select) {
	var idx = select.selectedIndex;
	if (idx < 0) return null;
	return select.options[idx].value;
}
function getTextField(fld) {
	var elem = document.getElementById(fld);
	if (!elem) return null;
	if (elem.tagName.toUpperCase() == 'INPUT' && elem.type.toUpperCase() == 'TEXT') return elem;
	if (elem.type.toUpperCase() == 'TEXT') return elem;
	if (elem.type.toUpperCase() == 'PASSWORD') return elem;
	return null;
}
function focusTextField(fld) {
	var elem = getTextField(fld);
	if (!elem) return false;
	elem.focus();
	return true;
}
function focusTextFieldIfEmpty(fld) {
	var elem = getTextField(fld);
	if (!elem) return false;
	if (elem.value != '') return false;
	elem.focus();
	return true;
}
function getForm(name) {
	var elem = document.getElementById(name);
	if (!elem) return null;
	if (elem.tagName.toUpperCase() == 'FORM') return elem;
	return null;
}
function submitFormAction(formName, action) {
	var form = getForm(formName);
	if (!form) return null;
	form.action = action;
	form.submit();
}
function getParentForm(element) {
	return getParentOfType(element, "FORM");
}
function getParentOfType(element, type) {
	type = type.toUpperCase();
	while (element != null) {
		if (element.tagName.toUpperCase() == type) return element;
		element = element.parentNode;
	}
	return null;
}
function showDivByID(id, show, useDisplay) {
	showDiv(document.getElementById(id), show, useDisplay);
}
function showDiv(div, show, useDisplay) {
	if (show) {
		if (useDisplay) {
			div.style.display = "";
		} else {
			div.style.visibility = "visible";
			div.style.height = "";
		}
	} else {
		if (useDisplay) {
			div.style.display = 'none';
		} else {
			div.style.visibility = "hidden";
			div.style.height = "0";
		}
	}
}
function isVisible(elem) {
	return (elem.style.visibility != "hidden");
}
function toggleVisibility(elem) {
	showDiv(elem, !isVisible(elem));
}
function getCheckboxes(from) {
	var inputs = from.getElementsByTagName('input');
	var i;
	var arr = new Array();
	for (i=0; i < inputs.length; i++) {
		if (inputs[i].type == 'checkbox') arr.push(inputs[i]);
	}
	return arr;
}
function getCheckedCheckboxes(from) {
	var arr = getCheckboxes(from);
	var newArr = new Array();
	var i;
	for (i=0; i < arr.length; i++) {
		if (arr[i].checked) newArr.push(arr[i]);
	}
	return newArr;
}
function setCheckboxesChecked(from, check) {
	var arr = getCheckboxes(from);
	var i;
	for (i=0; i < arr.length; i++) {
		arr[i].checked = check;
	}
}
function copyToClipboard(text) {
  if (window.clipboardData) {
    window.clipboardData.setData("Text",text);
  } else {
    var flashcopier = 'flashcopier';
    if(!document.getElementById(flashcopier)) {
      var divholder = document.createElement('div');
      divholder.id = flashcopier;
      document.body.appendChild(divholder);
    }
    document.getElementById(flashcopier).innerHTML = '';
    var divinfo = '<embed src="/static/js/clipboard.swf" FlashVars="clipboard='+escape(text)+'" width="0" height="0" type="application/x-shockwave-flash"></embed>';
    document.getElementById(flashcopier).innerHTML = divinfo;
  }
}
function handleCalendarSelection(p_sType, p_aArgs, obj) {
	if (p_aArgs) {
		var aDate = p_aArgs[0][0];
		var elem = obj.textElement;
		if (elem) elem.value = "" + aDate[1] + "/" + aDate[2] + "/" + aDate[0];
		obj.hide();
	}
}
function enableElement(elem, enable) {
	if (enable) {
		elem.disabled = "";
	} else {
		elem.disabled = "disabled";
	}
}
function trim (str) {
	if (str == null) return '';
	str = str.replace(/^\s+/, '');
	for (var i = str.length - 1; i >= 0; i--) {
		if (/\S/.test(str.charAt(i))) {
			str = str.substring(0, i + 1);
			break;
		}
	}
	return str;
}
function showPreview(id, type) {
	updateTextAreasFromCKeditors();
	var txt = document.getElementById(id).value;
	if (trim(txt) == '') {
		alert('There is no ' + type + ' to preview!');
		return;
	}
	var div = document.getElementById("divPreview_" + id);
	showDiv(div, true);
	div.innerHTML = "<br/>Generating preview...<br/><br/><img src=\"/images/loading2.gif\"/>";
	var cb = ajaxExecuteGet('/previewComment.action', 'id', id, 'comment', txt, 'type', type);
	ajaxPopulateElement(cb, div);
}
function ajaxPopulateElement(cb, elem, withScript, recenter) {
	cb.success = ajaxSuccessForElement;
	if (cb.argument) {
		cb.argument.element = elem;
	} else {
		cb.argument = {element:elem};
	}
	if (withScript) cb.argument.withScript = withScript;
	if (recenter) cb.argument.recenter = recenter;
}
function ajaxPopulateElementByID(cb, id, withScript, recenter) {
	ajaxPopulateElement(cb, document.getElementById(id), withScript, recenter);
}
function ajaxSuccessForElement(o) {
	var elem = o.argument.element;
	if (o.argument.withScript)
		setInnerHTMLwithScript(elem, o.responseText);
	else
		elem.innerHTML = o.responseText;
	if (o.argument.overlay) closeOverlay(o.argument.overlay);
	if (o.argument.recenter) {
		var pnl = getPanelFromElement(elem);
		if (pnl) pnl.center();
	} else {
		var pnl = getPanelFromElement(elem);
		if (pnl) {
			if (pnl.cfg.getProperty('context') != null) {
				pnl.align();
			}
		}
	}
}
function showGroupPopup(groupID, imgID) {
	if (!groupID || groupID == 0) return;
	var pnlInfo = showModalPanel(
		'groupInfo' + groupID,
		'300px',
		'Group Information',
		'<div id="divInfo">Loading group info...<br/><br/><img src="/images/loading2.gif"/></div>',
		false,
		false,
		[imgID,"bl","tr"]
		);
	var cb = ajaxExecuteGet('/groupInfo.action', 'id', groupID);
	ajaxPopulateElementByID(cb, "divInfo");
}
function showFlagPopup(id, type, anchorID, fromCorner, toCorner) {
	if (!fromCorner) fromCorner = 'bl';
	if (!toCorner) toCorner = 'tr';
	showModalPanel(
		'pnlFlag',
		'350px',
		'Flag Content',
		'<div id="divFlag">Loading...<br/><br/><img src="/images/loading2.gif"/></div>',
		false,
		false,
		[anchorID,fromCorner,toCorner]
		);
	var cb = ajaxExecuteGet('/flagContent.action', 'id', id, 'type', type);
	ajaxPopulateElementByID(cb, "divFlag");
}
function showUserPopup(userID, elementID, left) {
	if (userID == '') return;
	if (left == undefined) left = false;
	var pnlInfo = showModalPanel(
		'userInfo',
		'500px',
		'User Info',
		'<div id="divUserInfo">Loading user info...<br/><br/><img src="/images/loading2.gif"/></div>',
		false,
		false,
		[elementID,left?"br":"bl",left?"tl":"tr"]
		);
	var cb = ajaxExecuteGet('/profile_popup.action', 'id', userID);
	ajaxPopulateElementByID(cb, "divUserInfo");
}
function showFeedbackPopup(id, elementID, left) {
	if (id == '') return;
	if (left == undefined) left = false;
	var pnlInfo = showModalPanel(
		'feedback' + id,
		'500px',
		'Feedback',
		'<div id="divFeedback' + id + '">Loading feedback...<br/><br/><img src="/images/loading2.gif"/></div>',
		false,
		false,
		[elementID,left?"br":"bl",left?"tl":"tr"]
		);
	var cb = ajaxExecuteGet('/feedbackDetail_popup.action', 'id', id);
	ajaxPopulateElementByID(cb, "divFeedback" + id);
}
function showFeedbackRequestPopup(id, elementID, left) {
	if (id == '') return;
	if (left == undefined) left = false;
	var pnlInfo = showModalPanel(
		'feedbackRequest' + id,
		'500px',
		'Feedback Request',
		'<div id="divFeedbackRequest' + id + '">Loading request...<br/><br/><img src="/images/loading2.gif"/></div>',
		false,
		false,
		[elementID,left?"br":"bl",left?"tl":"tr"]
		);
	var cb = ajaxExecuteGet('/feedbackRequest_popup.action', 'id', id);
	ajaxPopulateElementByID(cb, "divFeedbackRequest" + id);
}
function toggleExpansion(name, stateElementID, callback, marginTop) {
	var elem = document.getElementById("img_" + name + "Expand");
	if (elem == undefined) return;
	var expanded = (elem.src.indexOf('contract') > 0);
	if (expanded)
		contractSection(name, stateElementID, callback);
	else
		expandSection(name, stateElementID, callback, true, marginTop);
}
function expandSection(name, stateElementID, callback, fade, marginTop) {
	var elem = document.getElementById("img_" + name + "Expand");
	if (!elem) return;
	
	elem.src = '/images/icon-contract.gif';
	elem = document.getElementById("div_" + name);
	var innerElem = document.getElementById("div_" + name + "_inner");

	if (marginTop && (innerElem != undefined)) {
		innerElem.style.marginTop = marginTop;
	}
	
	if (fade && (innerElem != undefined)) {
		innerElem.style.opacity = 0.0;
		innerElem.style.filter = 'alpha(opacity=0)';
	}
	
	showDiv(elem, true);
	
	if (fade && (innerElem != undefined)) {
	    var attributes = {opacity: { from: 0.0, to: 1.0}};
	    var anim = new YAHOO.util.Anim("div_" + name + "_inner", attributes, 1);   
	    anim.animate();
		anim.onComplete.subscribe(function(element) {
			innerElem.style.filter = '';
			innerElem.style.opacity = '';
			});
	}
	
	if (stateElementID) {
		elem = document.getElementById(stateElementID);
		if (elem) elem.value = "true";
	}
	if (callback) callback(name, true);
}
function contractSection(name, stateElementID, callback) {
	var elem = document.getElementById("img_" + name + "Expand");
	if (!elem) return;
	
	elem.src = '/images/icon-expand.gif';
	elem = document.getElementById("div_" + name);
	showDiv(elem, false);
	if (stateElementID) {
		elem = document.getElementById(stateElementID);
		if (elem) elem.value = "false";
	}

	var innerElem = document.getElementById("div_" + name + "_inner");
	if (innerElem) {
		innerElem.style.marginTop = 0;
	}

	if (callback) callback(name, false);
}
function followUser(userID, loggedIn, spnID) {
	if (!loggedIn) {
		if (!confirm('To follow people, you must first be logged in so we know where to send notifications.\n\nYou will now be redirected to the registration page.')) return;
		window.location = '/register.action';
	} else {
		var spn = document.getElementById(spnID);
		spn.innerHTML = '<img src="/images/working.gif" border="0"/>';
		var cb = ajaxExecuteMainService('addUserContact', 'id', userID);
		cb.success = onFollowSuccess;
		cb.argument = {element:spn};
	}
}
function onFollowSuccess(o) {
	var elem = o.argument.element;
	elem.innerHTML = '<font class="success">Done!</font>';
	alert("This person has been added to your contacts list with all notifications enabled.\nTo manage these settings, go to My Stuff, Contacts and Groups.");
}
function setInnerHTMLwithScript(div, html, lookForString) {
	div.innerHTML = html;
	
	var scripts = div.getElementsByTagName("script");
	var found = false;
	for(var i=0; i < scripts.length; i++) {
		var script = scripts[i];
		eval(script.text);
		if (lookForString != undefined) {
			 if (script.text.indexOf(lookForString) >= 0) found = true;
		} else {
			found = true;
		}
	}
	
	if (isMSIE() && !found) {
		var pos = html.indexOf("<script");
		html = html.substring(pos);
		pos = html.indexOf(">");
		html = html.substring(pos + 1);
		pos = html.indexOf("<\/script>");
		var script = html.substring(0, pos);
		var scriptElem = document.createElement('script');
		scriptElem.text = script;
		document.appendChild(scriptElem);
	}
}
function showZonesPanel() {
	var pnl = new YAHOO.widget.Panel("pnlZones",
            { close:true,
              draggable:true,
              x:100,
              y:50,
              modal:!isMSIE8(),
              zIndex:nextZIndex(),
              visible:false
            }
        );   

		pnl.setHeader("Coworkers.com Zones");
		pnl.setBody("<div style='width:600px;' id='divZones'><br/>Loading...<br/><br/><img src=\"/images/loading2.gif\"/><br/><br/></div>");
		pnl.render(document.body);
		pnl.show();
		pnl.body.yuiPanel = pnl;
		var cb = ajaxExecuteGet("/zones_popup.action");
		ajaxPopulateElementByID(cb, 'divZones', false, false);
		document.ovrZones = pnl;
}
function closeZonesPanel() {
	closeOverlay(document.ovrZones);
	document.ovrZones = null;
}
function gotoPage(url) {
	window.location = url;
}
function gotoZone(zone, url, chkID) {
	var chk = document.getElementById(chkID);
	if (chk.checked) {
		var cb = ajaxExecuteMainService('setStartCompany','company',zone);
		cb.success = onSetDefaultZoneSuccess;
		cb.argument = {url:url};
	} else {
		window.location = url;
	}
}
function onSetDefaultZoneSuccess(o) {
	window.location = o.argument.url;
}
function saveRequest(uuid) {
	var spn = document.getElementById("spnFlag" + uuid);
	var ovr = showWorkingMessage('Setting flag...', ["spnFlag" + uuid,"br","tr"]);
	var cb = ajaxExecuteMainService('saveReviewRequest','uuid',uuid);
	cb.success = onFlagRequestSuccess;
	cb.argument = {overlay:ovr, element:spn};
}
function unsaveRequest(uuid) {
	var spn = document.getElementById("spnFlag" + uuid);
	var ovr = showWorkingMessage('Removing flag...', ["spnFlag" + uuid,"br","tr"]);
	var cb = ajaxExecuteMainService('unsaveReviewRequest','uuid',uuid);
	cb.success = onFlagRequestSuccess;
	cb.argument = {overlay:ovr, element:spn};
}
function onFlagRequestSuccess(o) {
	var elem = o.argument.element;
	var html = elem.innerHTML;
	if (html.indexOf(":saveRequest") > 0) {
		html = html.replace(":saveRequest", ":unsaveRequest");
		html = html.replace("flag-off", "flag-on");
		elem.innerHTML = html;
	} else {
		html = html.replace(":unsaveRequest", ":saveRequest");
		html = html.replace("flag-on", "flag-off");
		elem.innerHTML = html;
	}
	closeOverlay(o.argument.overlay);
}
function saveFeedback(uuid) {
	var spn = document.getElementById("spnFlag" + uuid);
	var ovr = showWorkingMessage('Setting flag...', ["spnFlag" + uuid,"br","tr"]);
	var cb = ajaxExecuteMainService('saveFeedback','uuid',uuid);
	cb.success = onFlagFeedbackSuccess;
	cb.argument = {overlay:ovr, element:spn};
}
function unsaveFeedback(uuid) {
	var spn = document.getElementById("spnFlag" + uuid);
	var ovr = showWorkingMessage('Removing flag...', ["spnFlag" + uuid,"br","tr"]);
	var cb = ajaxExecuteMainService('unsaveFeedback','uuid',uuid);
	cb.success = onFlagFeedbackSuccess;
	cb.argument = {overlay:ovr, element:spn};
}
function onFlagFeedbackSuccess(o) {
	var elem = o.argument.element;
	var html = elem.innerHTML;
	if (html.indexOf(":saveFeedback") > 0) {
		html = html.replace(":saveFeedback", ":unsaveFeedback");
		html = html.replace("flag-off", "flag-on");
		elem.innerHTML = html;
	} else {
		html = html.replace(":unsaveFeedback", ":saveFeedback");
		html = html.replace("flag-on", "flag-off");
		elem.innerHTML = html;
	}
	closeOverlay(o.argument.overlay);
}
function initDropDown(id, scrollHeight, rightAlign) {
	var div = document.getElementById(id);
	div.menu = new YAHOO.widget.Menu(id + "Menu", {
		maxheight: (scrollHeight > 0) ? scrollHeight : null, 
		showdelay: 0,
		hidedelay: 750,
		context: rightAlign ? [id, "tr", "br"] : [id, "tl", "bl"] 
	});
	
	div.menu.render(document.body);
	document.getElementById(id + "Menu").style.height = '';
}
function dropDownMouseDown(id) {
	var mnu = document.getElementById(id + "Menu");
	if (mnu.style.visibility == 'visible') mnu.closed = true;
}
function toggleDropDown(id) {
	var mnu = document.getElementById(id + "Menu");
	if (mnu.closed) {
		mnu.closed = false;
		return;
	}
	var div = document.getElementById(id);
	div.menu.align();
	div.menu.show();
	mnu.style.height = '';
	focusFirstMenuItem(mnu);
}
function dropDownSelect(id, val, spn) {
	document.getElementById('hdn' + id).value = val;
	document.getElementById('spnSel' + id).innerHTML = document.getElementById(spn).innerHTML;
}
function initMenuBar(name, height, selectedIdx) {
	var oMenuBar = new YAHOO.widget.MenuBar(name, {
		autosubmenudisplay: true,
		showdelay: 0,
		hidedelay: 750,
		lazyload: false,
		maxheight: height > 0 ? height : null,
		minscrollheight: height > 0 ? height : null});

	if (selectedIdx >= 0)
		oMenuBar.getItem(selectedIdx).cfg.setProperty("classname", "menuSelected");
	
	var i;
	for (i = 0; i < oMenuBar.getItems().length; i++) {
			var submenu = oMenuBar.getItem(i).cfg.getProperty("submenu");
			if (submenu) { submenu.subscribe("show", function(){focusFirstMenuItem(this.element);}); }
	}
	oMenuBar.render();
}
function focusFirstMenuItem(mnu) {
	var elems = mnu.getElementsByTagName('a');
	if (elems != null && elems.length > 0) {
		elems[0].focus();
	}
}
function initAutoComplete(id, url, minLen, maxResults, multi, maxCache, formatFunction, itemSelectedFunction) {
    // Use an XHRDataSource
    var oDS = new YAHOO.util.XHRDataSource(url);
    oDS.responseType = YAHOO.util.XHRDataSource.TYPE_TEXT;
    oDS.responseSchema = {
        recordDelim: "\n",
        fieldDelim: "\t"
    };
    if (!maxCache) maxCache = 5;
    oDS.maxCacheEntries = maxCache;
	var oAC = new YAHOO.widget.AutoComplete(id + "Input", id + "InnerDiv", oDS);
	oAC.idRoot = id;
	oAC.minQueryLength = minLen;
	oAC.maxResultsDisplayed = maxResults;
	if (multi) oAC.delimChar = [",",";"];
	oAC.autoHighlight = true;
	
	oAC.dataRequestEvent.subscribe(function(oSelf , sQuery , oRequest) {
		document.getElementById(id + "Icon").style.visibility = 'visible';
	});

	oAC.dataReturnEvent.subscribe(function(oSelf , sQuery , oRequest) {
		document.getElementById(id + "Icon").style.visibility = 'hidden';
	});
	
	if (formatFunction) oAC.formatResult = formatFunction;

	if (itemSelectedFunction) oAC.itemSelectEvent.subscribe(itemSelectedFunction);
}
function formatCoworkersAutoCompleteItem(oResultData, sQuery, sResultMatch) {
	var img = "<img width='16' src=\""+ oResultData[2] + "\">";
	return "<div class=\"result\">" + img + "&nbsp;<span class=\"name\">" + oResultData[0] + "</span></div>";
}
function onCoworkersAutoCompleteItemSelected(sType, aArgs) {
	var oData = aArgs[2];
	var txt = document.getElementById(aArgs[0].idRoot + "Input");
	addSelectedCoworker(oData[0], oData[1], oData[2], aArgs[0].idRoot);
	txt.value = '';
	txt.focus();
}
function addSelectedCoworker(fullName, userName, url, id) {
	var hdn = document.getElementById(id + "Hidden");
	if ((hdn.value + ',').indexOf(userName + ',') >= 0) {
		alert('You have already selected ' + fullName + '!');
		return;
	}
	
	var elem = document.getElementById(id + "Selected");
	var spanID = id + "SelectedSpan-" + userName;
	elem.innerHTML += "<span id='" + spanID + "' style='padding-top:8px;padding-bottom:1px;padding-left:1px;padding-right:1px;margin-right:3px;' class='tableOutsideBorder'><img height='16' src='" + url + "'/> " + fullName + " <img border='0' style='padding-bottom:7px;' src='/images/close.gif' onclick='removeSelectedCoworker(this,\"" + id + "\")'/></span> ";
	setSelectedUserNames(id);
}
function removeSelectedCoworker(elem, id) {
	var spn = getParentOfType(elem, "span");
	if (!spn) return;
	spn.style.display = 'none';
	setSelectedUserNames(id);
}
function setSelectedUserNames(id) {
	var hdn = document.getElementById(id + "Hidden");
	if (!hdn) return;

	var sel = document.getElementById(id + "Selected");
	var spans = sel.getElementsByTagName('span');
	var str = "";
	var i;
	for (i=0; i < spans.length; i++) {
		if (spans[i].style.display == 'none') continue;
		if (str.length > 0) str += ',';
		
		var testStr = 'SelectedSpan-';
		var idx = spans[i].id.indexOf(testStr);
		if (idx >= 0) idx = idx + testStr.length;
		str += spans[i].id.substring(idx);
	}
	hdn.value = str;
	if (hdn.onchange) hdn.onchange();
}
function setHintText(elem, text) {
	if (!elem) return;
	if (!elem.hintText) {
		elem.hintText = text;
		elem.onfocus = function(){clearHintText(elem)};
		elem.onblur = function(){restoreHintText(elem)};
	}
	if (elem.value == '') {
		elem.value = text;
		elem.style.color = "#808080";
	}
}
function clearHintText(elem) {
	if (!elem) return;
	if (elem.style.color != '') {
		if (!elem.hintText) {
			elem.hintText = elem.value;
			elem.onfocus = function(){clearHintText(elem)};
			elem.onblur = function(){restoreHintText(elem)};
		}
		elem.style.color = '';
		elem.value = '';
	}
}
function restoreHintText(elem) {
	if (!elem) return;
	if (elem.hintText) setHintText(elem, elem.hintText);
}
function validateEmail(val){   
	var pattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
	return pattern.test(val);
}
function getHappySadIcons() {
	var preloadImgs = new Array();
	preloadImgs[0] = new Image();
	preloadImgs[0].src = "/images/cw-emoticon-32-cry.gif";
	preloadImgs[1] = new Image();
	preloadImgs[1].src = "/images/cw-emoticon-32-cool.gif";
	return preloadImgs;
}
function showHappyIcon(elemID, msg, useTable) {
	showIconAndMessage(elemID, 'cool', 'green', msg, useTable)
}
function showSadIcon(elemID, msg, useTable) {
	showIconAndMessage(elemID, 'cry', 'red', msg, useTable)
}
function showIconAndMessage(elemID, icon, color, msg, useTable) {
	var elem = document.getElementById(elemID);
	if (!elem) return;
	if (useTable)
		elem.innerHTML = "<table border='0' cellpadding='2' cellspacing='0'><tr><td><img border='0' src='/images/cw-emoticon-32-" + icon + ".gif'/></td><td><font color='" + color + "'><b>" + msg + "</b></font></td></tr></table>";
	else
		elem.innerHTML = "<img align='absmiddle' border='0' src='/images/cw-emoticon-32-" + icon + ".gif'/> <font color='" + color + "'><b>" + msg + "</b></font>";
}
function isHappyIconShowing(elemID) {
	var elem = document.getElementById(elemID);
	if (!elem) return false;
	return elem.innerHTML.indexOf('cool') > 0;
}
function testPassword(txt) {
	var password = txt.value;
	if (password == "") return "";
	
	if (password.length < 6)
		return "Must be at least 6 characters";
	
    var lcase = password.match(/[a-z]/g);
    lcase = lcase ? lcase.length : 0;
	if (lcase == 0)
		return "Must contain at least one lowercase character";
    
    var ucase = password.match(/[A-Z]/g);
    ucase = ucase ? ucase.length : 0;
	if (ucase == 0)
		return "Must contain at least one uppercase character";
    
    var digitsSpecial = password.match(/[\d\W]/g);
    digitsSpecial = digitsSpecial ? digitsSpecial.length : 0;
    
	if (digitsSpecial == 0)
		return "Must contain at least one non-alpha character";
	
	return "ok";
}

