if (top.location != location) {
    top.location.href = document.location.href;
}

var EmailManager = {
	sendChurchUpdateEmail : function(obj,name,slug) { var m='mailto:',d='zetify',a='@',u='updates',c='.com',s='?subject=Church Listing Correction | ' + escape(name),b='&body=Please update '+escape(slug)+" with the following information:\n"; obj.href=m+u+a+d+c+s+b; }
};

var CalendarManager = {
	
	calObjs : []
	, calendar : null
	, curr : null

	, add : function(panelId, elId, buttonId, inputId, flags)
	{

		//flags.close = true;
		var obj  = { cal : null, panel : null, id : 'cal' + CalendarManager.calObjs.length, 'panelId' : panelId, 'elId' : elId, 'buttonId' : buttonId, 'inputId' : inputId, 'flags' : flags };
		CalendarManager.calObjs.push(obj);
	}
	, init : function()
	{

		for( var i = 0; i < CalendarManager.calObjs.length; i++ )
		{
			var obj = CalendarManager.calObjs[ i ];

			if( ! obj.flags.title ) 
			{
				obj.flags.title = 'Select a Date';
			}
			if( ! obj.flags.selected ) 
			{
				obj.flags.selected = new Date();
			}
			if( ! obj.flags.mindate ) 
			{
				obj.flags.mindate = new Date();
			}

			if( obj.flags.calbutton )
			{
				document.getElementById( obj.flags.calbutton ).innerHTML = 
					'<div style="position:relative; width: 104px;">'
					+ '<input type="text" name="'+obj.inputId+'" id="'+obj.inputId+'" value="'+obj.flags.date+'" style="float:left; width:100px;" />'
					+ '<div style="position:relative; left:108px;top:-19px;display:block;height:17px;width:22px;">'
					+ '	<a href="javascript:void(0);" id="'+obj.buttonId+'" style="display:block;height:17px;width:17px;"><img src="/ui/20100111/imgs/sections/events/calendar.png" width="17" height="17" alt="calendar select" title="select a date" /></a>'
					+ '</div>'
					+ '</div>';

			}

			if( obj.flags.date )
			{
				obj.flags.selected = obj.flags.date;
			}

			var el = YAHOO.util.Dom.get( obj.elId );
			YAHOO.util.Dom.setStyle( el, 'display', 'none' );
			YAHOO.util.Dom.setStyle( el, 'position', 'absolute' );
			YAHOO.util.Dom.setStyle( el, 'z-index', '2990' );
			if( obj.flags.pages == 1 )
			{
				YAHOO.util.Dom.setStyle( el, 'width', '170px' );
			}
			else if( obj.flags.pages == 2 )
			{
				YAHOO.util.Dom.setStyle( el, 'width', '170px' ); // 430px
			}
			else
			{
				YAHOO.util.Dom.setStyle( el, 'width', '170px' );
			}
			
			//if( ! CalendarManager.calendar )
			//{
				cal = new YAHOO.widget.Calendar( obj.id , obj.elId, obj.flags ); // CalendarGroup
				cal.selectEvent.subscribe(CalendarManager.handleSelect, cal, true);
				cal.render();
				//CalendarManager.calendar = cal;
			//}

			YAHOO.util.Event.addListener(obj.buttonId, "click", cal.show, cal, true); 

			YAHOO.util.Dom.setStyle(obj.panelId, 'position', 'absolute');
			YAHOO.util.Dom.setStyle(obj.panelId, 'z-index', '3000');

			if( obj.flags.contextel )
			{
				pos = YAHOO.util.Dom.getXY(obj.flags.contextel);
			}
			else
			{
				pos = YAHOO.util.Dom.getXY(obj.inputId);
			}

			if( obj.flags.heightOffset )
			{
				pos[1] += obj.flags.heightOffset;
			}
			else
			{
				pos[1] += 20;
			}

			if( obj.flags.x )
			{
				pos[0] = obj.flags.x;
			}

			if( obj.flags.y )
			{
				pos[1] = obj.flags.y;
			}

			YAHOO.util.Dom.setXY(obj.panelId, pos);
			obj.cal = cal; //CalendarManager.calendar;
		}
	}
	, showCalendar : function(e,obj)
	{
		var el = YAHOO.util.Event.getTarget(e);
		CalendarManager.calendar.show();
	}

	, handleSelect : function(type,args,obj) 
	{
		var   calObj = CalendarManager.getCalObjByElId( obj.id )
			, dates  = args[0]
			, date   = dates[0]
			, year   = date[0]
			, month  = date[1]
			, day    = date[2]
			, el     = document.getElementById(calObj.inputId)
			, el2    = null
			, cal2   = null;

		el.value   = month + "/" + day + "/" + year;
		obj.hide();
				
		calObj.cal.cfg.setProperty('pagedate',month + "/" + year,false); 
		calObj.cal.cfg.setProperty('selected',month + "/" + day + "/" + year,false); 


		if( calObj.flags.copyToField )
		{
			el2       = document.getElementById(calObj.flags.copyToField);
			if( el2.value == '' || el2.value == calObj.flags.ignoreCopyToValue )
			{
				cal = CalendarManager.getCalObjByInputId(calObj.flags.copyToField);
				if( cal )
				{
					cal.cal.cfg.setProperty('pagedate',month + "/" + year,false); 
					cal.cal.cfg.setProperty('selected',month + "/" + day + "/" + year,false); 
					cal.cal.render();
				}
				el2.value   = el.value;
			}
		}
	}
	, getCalObjByElId : function( id )
	{
		var obj = null, i;
		for( i = 0; i < CalendarManager.calObjs.length; i++ )
		{
			if( CalendarManager.calObjs[i].id == id )
			{
				obj = CalendarManager.calObjs[i];
				break;
			}
		}
		return obj;
	}
	, getCalObjByInputId : function( id )
	{
		var obj = null, i;
		for( i = 0; i < CalendarManager.calObjs.length; i++)
		{
			if( CalendarManager.calObjs[i].inputId == id )
			{
				obj = CalendarManager.calObjs[i];
				break;
			}
		}
		return obj;
	}

};

var LookupAutoCompleteManager = new function()
{
	this.acArray;
	this.add = function(module,searchFields,displayField,labelFieldId,dataFieldId,containerId,data,conf)
	{
		if( LookupAutoCompleteManager.acArray == null )
		{
			LookupAutoCompleteManager.acArray = [];
		}
		var ac = new AutoComplete();
		var url = '/lookup.php';
		if( conf && conf.url_prepend )
		{	
			url = conf.url_prepend + url;
		}
		else if( conf && conf.url )
		{
			url = conf.url;
		}
		ac.setup(url,"output=json&results=100&module="+module+"&fields="+searchFields+"&displayField="+displayField, ["ResultSet.Result","label"], module,labelFieldId,dataFieldId,containerId,data,conf);
		LookupAutoCompleteManager.acArray.push( ac );
	};

	this.destroy = function( index )
	{
		LookupAutoCompleteManager.acArray[ index ].destroy();
		delete LookupAutoCompleteManager.acArray[ index ];
	};		
};

function AutoComplete()
{
	this.oACDS;
	this.oAutoComp;

	this.setup = function(url,queryAppend,resultConfig,module,labelFieldId,dataFieldId,containerId,data,conf)
	{
		this.conf = conf;
		if( typeof data != "undefined" && data != null && data.length > 0)
		{
			this.oACDS = new YAHOO.util.LocalDataSource(data);
			this.oACDS.responseSchema = {fields : ['label', 'id']};
			this.oACDS.queryMatchContains = true; 

			this.oAutoComp = new YAHOO.widget.AutoComplete(labelFieldId,containerId, this.oACDS);
			this.oAutoComp.resultTypeList = false;
			this.oAutoComp.itemSelectEvent.subscribe(this.acSelectEventJS);
			this.oAutoComp.formatResult = function(oResultItem, sQuery) 
			{
				var sMarkup = oResultItem.label; // + " (" + oResultItem[1] + ")";
				return (sMarkup);
			};
		}
		else
		{
			this.oACDS = new YAHOO.widget.DS_XHR(url, resultConfig);
			this.oACDS.queryMatchContains = true;
			this.oACDS.scriptQueryAppend = queryAppend; 
			this.oACDS.responseType = YAHOO.util.XHRDataSource.TYPE_JSON;
			this.oACDS.responseSchema = {
				  resultsList: "ResultSet.Result",
				  fields: ["label","id", "url"]
			};
			if( conf && conf.response_schema_fields )
			{
				this.oACDS.responseSchema.fields = conf.response_schema_fields;
			}
			this.oAutoComp = new YAHOO.widget.AutoComplete(labelFieldId,containerId, this.oACDS);
			this.oAutoComp.queryDelay = .3;
			if( conf && conf.query_delay )
			{
				this.oAutoComp.queryDelay = conf.query_delay;
			}
			if( conf && conf.custom_select_event )
			{
				this.oAutoComp.customSelect = conf.custom_select_event;
			}
		
			if( conf && conf.custom_url )
			{
				this.oAutoComp.generateRequest = conf.custom_url;
			}

			if( conf && conf.data_return_event )
			{
				this.oAutoComp.unmatchedItemSelectEvent.subscribe(conf.data_return_event);
				this.oAutoComp.dataErrorEvent.subscribe(conf.data_return_event); 
				this.oAutoComp.dataReturnEvent.subscribe(conf.data_return_event); 
			}


			if( conf && conf.header )
			{
				this.oAutoComp.setHeader(conf.header); 
			}


			if( conf && conf.max_results )
			{
				this.oAutoComp.maxResultsDisplayed = conf.max_results; 
			}

			this.oAutoComp.itemSelectEvent.subscribe(this.acSelectEvent);
			if( conf && conf.format_result )
			{
				this.oAutoComp.formatResult = conf.format_result;
			}
			else
			{
				this.oAutoComp.formatResult = function(oResultItem, sQuery) 
				{
					return oResultItem[1].label;
				};
			}
		}

		this.oAutoComp.prehighlightClassName = "yui-ac-prehighlight";
		this.oAutoComp.useShadow = false
		this.oAutoComp.typeAhead = false;
		this.oAutoComp.allowBrowserAutocomplete = false; 
		this.oAutoComp.useIFrame = true;
		this.oAutoComp.forceSelection = false;
		this.oAutoComp.dataFieldId = dataFieldId;
		this.oAutoComp.doBeforeExpandContainer = function(oTextbox, oContainer, sQuery, aResults) 
		{
			var pos = YAHOO.util.Dom.getXY(oTextbox);
			pos[1] += YAHOO.util.Dom.get(oTextbox).offsetHeight + 2;
			YAHOO.util.Dom.setXY(oContainer,pos);
			return true;
		};

	    this.oAutoComp.textboxBlurEvent.subscribe(this.blurEvent); 
	};

	this.dataReturnProxy = function(oSelf , sQuery , aResults)
	{
		this.conf.data_return_event( oSelf , sQuery , aResults );
	}

	this.destroy = function()
	{
		this.oAutoComp.destroy();
		this.oACDS = null;
	}

	this.acSelectEvent = function (sType, args ) 
	{
		var el = document.getElementById(args[0].dataFieldId);
		el.value = args[2][1].id;

		if( this.customSelect )
		{
			this.customSelect( args[2][1].id );
		}
	};

	this.acSelectEventJS = function (sType, aArgs) 
	{
		var oMyAcInstance = aArgs[0]; // AutoComplete instance
		var elListItem    = aArgs[1]; // <li> element
		var aData         = aArgs[2]; // array of the data

		var el = document.getElementById(aArgs[0].dataFieldId);
		el.value = aData.id;
	};

	this.blurEvent = function(oSelf) 
	{ 
		var el = document.getElementById( this._oTextbox.id );
		el.defaultValue = this._oTextbox.value;
	}; 
};

var Utils={createCookie:function(C,D,E){if(E){var B=new Date();B.setTime(B.getTime()+(E*24*60*60*1000));var A="; expires="+B.toGMTString()}else{var A=""}document.cookie=C+"="+D+A+"; path=/"},readCookie:function(B){var D=B+"=";var A=document.cookie.split(";");for(var C=0;C<A.length;C++){var E=A[C];while(E.charAt(0)==" "){E=E.substring(1,E.length)}if(E.indexOf(D)==0){return E.substring(D.length,E.length)}}return null},eraseCookie:function(A){Utils.createCookie(A,"",-1)},toggleDiv:function(C,B){var A=document.getElementById(C);if(A.style.display=="none"){if(B==null){B="block"}A.style.display=B}else{A.style.display="none"}},showDiv:function(C,B){var A=document.getElementById(C);if(B==null){B="block"}A.style.display=B},hideDiv:function(B){var A=document.getElementById(B);A.style.display="none"},toggleLabelAndPanel:function(C,A,E,D){var B=document.getElementById(C);if(B.firstChild.data==E){B.firstChild.data=D;A.show()}else{B.firstChild.data=E;A.hide()}},send:function(B,E,C){var L={success:Utils.handleSuccess,failure:Utils.handleFailure,argument:{config:C},timeout:3500};var D="module="+B;D+="&action="+E;var H="";var K="";var F="";var J="";for(var G=0;G<C.fields.length;G++){H+=","+C.fields[G];K+=","+C.values[G];if(C.operators){F+=","+C.operators[G]}if(C.conditions){J+=","+C.conditions[G]}}D+="&fields="+H;D+="&values="+K;if(F!=""){D+="&operators="+F}if(J!=""){D+="&conditions="+J}var A="/edit.php";
		if( C.url )
		{
			A = C.url + A;
		}
		var I=YAHOO.util.Connect.asyncRequest("POST",A,L,D)},handleSuccess:function(o){if(o.responseText!==undefined){var response;eval("response = "+o.responseText);if(o.argument.config.func){var f=o.argument.config.func;if(o.argument.config.args){f(response,o.argument.config.args)}else{f(response)}}}},handleFailure:function(A){}};var InlineEditorManager={editors:[],add:function(E,F,B,A,D,C){},send:function(B,D,H,F,E,C){var G=new InlineEditor(B,D,H,F,E,C);var J={success:InlineEditorManager.handleSuccess,failure:InlineEditorManager.handleFailure,argument:{fieldId:H,config:C},timeout:3500};var A="/edit.php"+G.getQueryParams();
		if( C.url )
		{
			A = C.url + A;
		}
		var I=YAHOO.util.Connect.asyncRequest("GET",A,J);InlineEditorManager.editors[H]=G},handleSuccess:function(o){if(o.responseText!==undefined){var response;eval("response = "+o.responseText);InlineEditorManager.editors[o.argument.fieldId].response(true,response)}},handleFailure:function(B){var A={html:"Cannot Connect",success:0};InlineEditorManager.editors[B.argument.fieldId].response(false,A)}};function InlineEditor(E,F,B,A,D,C){this.module=E;this.action=F;this.fieldId=B;this.fieldType=A;this.elId=D;this.config=C;this.label;this.getQueryParams=function(){var L="";var J=document.getElementById(this.fieldId);var K="";if(A=="text"||A=="textarea"||A=="password"){K=J.value;this.label=K}else{if(A=="select"){K=J.options[J.selectedIndex].value;this.label=J.options[J.selectedIndex].innerHTML}else{if(A=="checkbox"){K=J.checked;this.label=K}}}L+="?module="+this.module;L+="&action="+this.action;if(this.config.fields&&this.config.values){var G="";var H="";for(var I in this.config.fields){G+=","+this.config.fields[I];H+=","+this.config.values[I]}L+="&fields="+B+G;L+="&values="+K+H}else{L+="&fields="+B;L+="&values="+K}J=document.getElementById(this.elId);J.innerHTML="Loading...";return L};this.response=function(H,G){var J=document.getElementById(this.elId);if(H){var I=G.html;if(this.label!=""){I=this.label}J.innerHTML=I}else{J.innerHTML=G.html}}}
/*
var FriendPicker={listId:"",toFieldId:"",acFieldId:"",acContainerId:"",hiddenId:"",toIds:[],toNames:[],toDivs:[],data:[],oACD:"",oAutoComp:"",itemSelectHandler:function(F,E){var A=E[0];var D=E[1];var B=E[2];var C=document.getElementById(FriendPicker.acFieldId);C.value="";C.focus();FriendPicker.addTo(B[0],B[1])},containsToId:function(C){var B=true;for(var A=0;A<FriendPicker.toIds.length;A++){if(FriendPicker.toIds[A]==C){B=false;break}}return B},init:function(G,E,J,D,C,B,H,F){FriendPicker.listId=G;FriendPicker.toFieldId=E;FriendPicker.acFieldId=J;FriendPicker.acContainerId=D;FriendPicker.hiddenId=C;FriendPicker.toIds=B;FriendPicker.toNames=H;FriendPicker.data=F;FriendPicker.oACD=new YAHOO.widget.DS_JSArray(FriendPicker.data);FriendPicker.oACD.queryMatchContains=true;FriendPicker.oAutoComp=new YAHOO.widget.AutoComplete(FriendPicker.acFieldId,FriendPicker.acContainerId,FriendPicker.oACD);FriendPicker.oAutoComp.prehighlightClassName="yui-ac-prehighlight";FriendPicker.oAutoComp.typeAhead=false;FriendPicker.oAutoComp.useShadow=false;FriendPicker.oAutoComp.useIFrame=true;FriendPicker.oAutoComp.allowBrowserAutocomplete=false;FriendPicker.oAutoComp.useIFrame=true;FriendPicker.oAutoComp.forceSelection=true;FriendPicker.oAutoComp.formatResult=function(K,M){var L=K[0];return(L)};FriendPicker.oAutoComp.itemSelectEvent.subscribe(FriendPicker.itemSelectHandler);var A=FriendPicker.toIds;FriendPicker.toIds=[];for(var I=0;I<A.length;I++){if(FriendPicker.toNames[I]!=""){FriendPicker.addTo(FriendPicker.toNames[I],A[I])}}},addTo:function(C,F){if(FriendPicker.containsToId(F)){FriendPicker.toIds.push(F);var B=document.getElementById(FriendPicker.toFieldId);var A=document.createElement("li");A.id="to"+F+""+Math.floor(Math.random()*1001);A.className="toc";var E=C.indexOf(" - ");if(E>0){C=C.substring(0,E)}A.innerHTML='<div id="'+A.id+'div" class="to">'+C+"<b><a href=\"javascript: FriendPicker.removeTo('"+FriendPicker.toFieldId+"', '"+A.id+"', "+F+');">x</a></b><input type="hidden" name="'+FriendPicker.hiddenId+'[]" value="'+F+'" /></div>';B.appendChild(A);var D=document.getElementById(A.id+"div");FriendPicker.toDivs[F]=D;YAHOO.util.Event.on(D,"mouseover",FriendPicker.toMouseOver,this,true);YAHOO.util.Event.on(D,"mouseout",FriendPicker.toMouseOut,this,true)}else{var D=FriendPicker.toDivs[F];YAHOO.util.Dom.addClass(D,"highlightTo");setTimeout("FriendPicker.removeHighlightForId('"+F+"');",500)}},removeHighlightForId:function(B){var A=FriendPicker.toDivs[B];YAHOO.util.Dom.removeClass(A,"highlightTo")},toMouseOver:function(C){var B=YAHOO.util.Event.getTarget(C);var A=0;while(B.tagName!="DIV"&&A++<5){B=B.parentNode}if(!YAHOO.util.Dom.hasClass(B,"selectedTo")){YAHOO.util.Dom.addClass(B,"selectedTo")}},toMouseOut:function(C){var B=YAHOO.util.Event.getTarget(C);var A=0;while(B.tagName!="DIV"&&A++<3){B=B.parentNode}YAHOO.util.Dom.removeClass(B,"selectedTo")},removeTo:function(E,D,A){var B=document.getElementById(E);var C=document.getElementById(D);B.removeChild(C);FriendPicker.removeToId(A)},removeToId:function(A){for(var B=0;B<FriendPicker.toIds.length;B++){if(FriendPicker.toIds[B]==A){FriendPicker.toIds.splice(B,1);break}}if(FriendPicker.toIds.length==0){}}};
*/


var FriendPicker = {
	listId    : '',
	toFieldId : '',
	acFieldId : '',
	acContainerId : '',
	hiddenId : '',
	toIds : [],
	toNames : [],
	toDivs : [],
	data : [],
	oACD : '',
	oAutoComp : '',


	itemSelectHandler : function(sType, aArgs) 
	{
		var oMyAcInstance = aArgs[0]; //  AutoComplete instance
		var elListItem    = aArgs[1]; // <li> element
		var aData         = aArgs[2]; //array of the data

		var el = document.getElementById(FriendPicker.acFieldId);
		el.value = '';
		el.focus();

		FriendPicker.addTo( aData[0], aData[1] );

	}


	,ajaxItemSelectHandler : function(sType, args) 
	{
		var el = document.getElementById(FriendPicker.acFieldId);
		el.value = '';
		el.focus();


		FriendPicker.addTo( args[2][1].label, args[2][1].id );

	}

	,containsToId : function(id)
	{
		var found = true;

		for(var itr = 0; itr < FriendPicker.toIds.length; itr++ )
		{
			if( FriendPicker.toIds[itr] == id )
			{
				found = false;
				break;
			}
		}
		return found;
	}

	,init : function(listId,toFieldId,acFieldId,acContainerId,hiddenId,toIds,toNames,data, args)
	{
		FriendPicker.listId        = listId;
		FriendPicker.toFieldId     = toFieldId;
		FriendPicker.acFieldId     = acFieldId;
		FriendPicker.acContainerId = acContainerId;
		FriendPicker.hiddenId      = hiddenId;
		FriendPicker.toIds         = toIds;
		FriendPicker.toNames       = toNames;
		FriendPicker.data       = data;
	
		if( data != null && data.length > 0)
		{
			FriendPicker.oACD = new YAHOO.widget.DS_JSArray(FriendPicker.data);
			FriendPicker.oACD.queryMatchContains = true; 
			FriendPicker.oAutoComp = new YAHOO.widget.AutoComplete(FriendPicker.acFieldId,FriendPicker.acContainerId, FriendPicker.oACD);
			FriendPicker.oAutoComp.itemSelectEvent.subscribe(FriendPicker.itemSelectHandler);
			FriendPicker.oAutoComp.formatResult = function(oResultItem, sQuery) 
			{
				var sMarkup = oResultItem[0]; // + " (" + oResultItem[1] + ")";
				return (sMarkup);
			};
		}
		else
		{
			var url          = "/lookup.php";
			var queryAppend  = "output=json&results=100&module="+args.module+"&fields="+args.searchFields+"&displayField="+args.displayField;
			var resultConfig = ["ResultSet.Result","label"]
			FriendPicker.oACD = new YAHOO.widget.DS_XHR(url, resultConfig);
			FriendPicker.oACD.scriptQueryAppend = queryAppend; 
			FriendPicker.oACD.queryMatchContains = true; 
			FriendPicker.oAutoComp = new YAHOO.widget.AutoComplete(FriendPicker.acFieldId,FriendPicker.acContainerId, FriendPicker.oACD);
			FriendPicker.oAutoComp.itemSelectEvent.subscribe(FriendPicker.ajaxItemSelectHandler);
			FriendPicker.oAutoComp.formatResult = function(oResultItem, sQuery) 
			{
				return oResultItem[1].label;
			};
		}


		FriendPicker.oAutoComp.prehighlightClassName = "yui-ac-prehighlight";
		FriendPicker.oAutoComp.typeAhead = false;
		FriendPicker.oAutoComp.useShadow = false;
		FriendPicker.oAutoComp.useIFrame = true;
		FriendPicker.oAutoComp.allowBrowserAutocomplete = false; 
		//FriendPicker.oAutoComp.delimChar = ","; 
		FriendPicker.oAutoComp.useIFrame = true;
		FriendPicker.oAutoComp.forceSelection = true;

		var ids = FriendPicker.toIds;
		FriendPicker.toIds = [];
		for( var itr = 0; itr < ids.length; itr++ )
		{
			if( FriendPicker.toNames[itr] != '' )
			{
				FriendPicker.addTo( FriendPicker.toNames[itr], ids[itr] );
			}
		}
	}

	,addTo : function(data,id)
	{
		if( FriendPicker.containsToId( id ) )
		{
			FriendPicker.toIds.push( id );

			var el = document.getElementById(FriendPicker.toFieldId);
			var li = document.createElement('li');
			li.id  = "to" + id +  "" + Math.floor( Math.random() * 1001 );
			li.className = "toc";
			var pos = data.indexOf( ' - ' );
			if( pos > 0 )
			{
				data = data.substring( 0, pos );
			}
			li.innerHTML = '<div id="'+li.id+'div" class="to">' + data  + '<b><a href="javascript: FriendPicker.removeTo(\''+FriendPicker.toFieldId+'\', \''+li.id+'\', '+id+');">x</a></b><input type="hidden" name="'+FriendPicker.hiddenId+'[]" value="'+id+'" /></div>';
			el.appendChild(li);

			var div = document.getElementById( li.id+'div' );
			FriendPicker.toDivs[ id ] = div;
			YAHOO.util.Event.on(div,'mouseover',FriendPicker.toMouseOver,this,true);
			YAHOO.util.Event.on(div,'mouseout',FriendPicker.toMouseOut,this,true);

			//Utils.showDiv( FriendPicker.listId, "inline" );
		}
		else
		{
			var div = FriendPicker.toDivs[ id ];
			YAHOO.util.Dom.addClass(div,'highlightTo');
			setTimeout( "FriendPicker.removeHighlightForId('"+id+"');",500);
		}
	}
	
	,removeHighlightForId : function(id)
	{
		var div = FriendPicker.toDivs[ id ];
		YAHOO.util.Dom.removeClass(div,'highlightTo');
	}

	,toMouseOver : function(e)
	{
		var target=YAHOO.util.Event.getTarget(e);
		var i=0;
		while(target.tagName!='DIV'&&i++<5) target=target.parentNode;
		
		if(!YAHOO.util.Dom.hasClass(target,'selectedTo'))
		{
			//YAHOO.util.Dom.removeClass(this.couponElements,'selected');
			YAHOO.util.Dom.addClass(target,'selectedTo');
		}
	}
	,toMouseOut : function(e)
	{
		var target=YAHOO.util.Event.getTarget(e);
		var i=0;
		while(target.tagName!='DIV'&&i++<3)target=target.parentNode;
		
		YAHOO.util.Dom.removeClass(target,'selectedTo');
	}
	
	,removeTo : function(parentId, id, toId)
	{
	  var p = document.getElementById(parentId);
	  var c = document.getElementById(id);
	  p.removeChild(c);
	  FriendPicker.removeToId( toId );
	}
	,removeToId : function( toId )
	{
		for(var itr = 0; itr < FriendPicker.toIds.length; itr++ )
		{
			if( FriendPicker.toIds[itr] == toId )
			{
				FriendPicker.toIds.splice( itr, 1 );
				break;
			}
		}

		if( FriendPicker.toIds.length == 0 )
		{
			//Utils.hideDiv( FriendPicker.listId );
		}
	}
};


function MultiUserSelect()
{
	this.varName     =  '';
	this.toFieldId  =  '';
	this.acFieldId  =  '';
	this.acContainerId  =  '';
	this.hiddenId  =  '';
	this.toIds  =  [];
	this.toNames  =  [];
	this.toDivs  =  [];
	this.data  =  [];
	this.oACD  =  '';
	this.oAutoComp  =  '';


	this.itemSelectHandler  =  function(sType, aArgs) 
	{
		var oMyAcInstance = aArgs[0]; //  AutoComplete instance
		var elListItem    = aArgs[1]; // <li> element
		var aData         = aArgs[2]; //array of the data

		var el = document.getElementById(this.caller.acFieldId);
		el.value = '';
		el.focus();

		this.caller.addTo( aData[0], aData[1] );

	}


	this.ajaxItemSelectHandler  =  function(sType, args) 
	{
		var el = document.getElementById(this.caller.acFieldId);
		el.value = '';
		el.focus();


		this.caller.addTo( args[2][1].label, args[2][1].id );

	}

	this.containsToId  =  function(id)
	{
		var found = true;

		for(var itr = 0; itr < this.toIds.length; itr++ )
		{
			if( this.toIds[itr] == id )
			{
				found = false;
				break;
			}
		}
		return found;
	}

	this.init  =  function(varName, uniqueId, elId, elId2, hiddenId,toIds,toNames, data, args)
	{
		this.varName       = varName;
		this.acId          = uniqueId + 'ac_multi_select';
		this.containerId   = uniqueId + 'container_multi_select';
		this.listId        = uniqueId + 'tolist_multi_select';
		this.toFieldId     = uniqueId + 'to_multi_select';
		this.acFieldId     = uniqueId + 'input_multi_select';
		this.acContainerId = uniqueId + 'container2_multi_select';
		this.hiddenId      = hiddenId;
		this.toIds         = toIds;
		this.toNames       = toNames;
		this.data          = data;
		this.url           = '';

		this.acCSS = 'width:18em; padding-bottom:2em;z-index:9000;';
		this.inputCSS = 'width: 210px;_position:absolute;';
		this.containerCSS = 'width: 500px; clear:both;';
		this.listCSS = 'list-style-type:none; display:inline;';

		if( args )
		{
			if( args.acCSS )
			{
				this.acCSS += args.acCSS;
			}
			if( args.inputCSS )
			{
				this.inputCSS += args.inputCSS;
			}
			if( args.containerCSS )
			{
				this.containerCSS += args.containerCSS;
			}
			if( args.listCSS )
			{
				this.listCSS += args.listCSS;
			}
			if( args.url )
			{
				this.url = args.url;
			}
		}

		document.getElementById( elId ).innerHTML  = '<div id="'+this.acId+'" style="'+this.acCSS+'"> <input type="text" id="'+this.acFieldId+'" style="'+this.inputCSS+'" /> <div id="'+this.acContainerId+'"></div> </div>';
		document.getElementById( elId2 ).innerHTML = '<div id="'+this.containerId+'" style="'+this.containerCSS+'"> <ul id="'+this.toFieldId+'" style="'+this.listCSS+'"> </ul> </div>';
	
		if( data != null && data.length > 0)
		{
			this.oACD = new YAHOO.widget.DS_JSArray(this.data);
			this.oACD.queryMatchContains = true; 
			this.oAutoComp = new YAHOO.widget.AutoComplete(this.acFieldId,this.acContainerId, this.oACD);
			this.oAutoComp.itemSelectEvent.subscribe(this.itemSelectHandler);
			this.oAutoComp.formatResult = function(oResultItem, sQuery) 
			{
				var sMarkup = oResultItem[0]; // + " (" + oResultItem[1] + ")";
				return (sMarkup);
			};
		}
		else
		{
			var url          = this.url + "/lookup.php";
			var queryAppend  = "output=json&results=100&module="+args.module+"&fields="+args.searchFields+"&displayField="+args.displayField;
			var resultConfig = ["ResultSet.Result","label"]
			this.oACD = new YAHOO.widget.DS_XHR(url, resultConfig);
			this.oACD.scriptQueryAppend = queryAppend; 
			this.oACD.queryMatchContains = true; 
			this.oAutoComp = new YAHOO.widget.AutoComplete(this.acFieldId,this.acContainerId, this.oACD);
			this.oAutoComp.itemSelectEvent.subscribe(this.ajaxItemSelectHandler);
			this.oAutoComp.formatResult = function(oResultItem, sQuery) 
			{
				return oResultItem[1].label;
			};
		}


		this.oAutoComp.prehighlightClassName = "yui-ac-prehighlight";
		this.oAutoComp.typeAhead = false;
		this.oAutoComp.useShadow = false;
		this.oAutoComp.useIFrame = true;
		this.oAutoComp.allowBrowserAutocomplete = false; 
		//this.oAutoComp.delimChar = ","; 
		this.oAutoComp.useIFrame = true;
		this.oAutoComp.forceSelection = true;
		this.oAutoComp.caller = this;

		var ids = this.toIds;
		this.toIds = [];
		for( var itr = 0; itr < ids.length; itr++ )
		{
			if( this.toNames[itr] != '' )
			{
				this.addTo( this.toNames[itr], ids[itr] );
			}
		}
	}

	this.addTo  =  function(data,id)
	{
		if( this.containsToId( id ) )
		{
			this.toIds.push( id );

			var el = document.getElementById(this.toFieldId);
			var li = document.createElement('li');
			li.id  = this.toFieldId + id +  "" + Math.floor( Math.random() * 1001 );
			li.className = "multiselectc";
			var pos = data.indexOf( ' - ' );
			if( pos > 0 )
			{
				data = data.substring( 0, pos );
			}
			li.innerHTML = '<div id="'+li.id+'div" class="multiselect">' + data  + '<b><a href="javascript: '+this.varName+'.removeTo(\''+this.toFieldId+'\', \''+li.id+'\', '+id+');">x</a></b><input type="hidden" class="multiselecthidden" name="'+this.hiddenId+'[]" value="'+id+'" /></div>';
			el.appendChild(li);

			var div = document.getElementById( li.id+'div' );
			this.toDivs[ id ] = div;
			YAHOO.util.Event.on(div,'mouseover',this.toMouseOver,this,true);
			YAHOO.util.Event.on(div,'mouseout',this.toMouseOut,this,true);

			//Utils.showDiv( this.listId, "inline" );
		}
		else
		{
			var div = this.toDivs[ id ];
			YAHOO.util.Dom.addClass(div,'multiselecthighlightTo');
			setTimeout( this.varName + ".removeHighlightForId('"+id+"');",500);
		}
	}
	
	this.removeHighlightForId  =  function(id)
	{
		var div = this.toDivs[ id ];
		YAHOO.util.Dom.removeClass(div,'multiselecthighlightTo');
	}

	this.toMouseOver  =  function(e)
	{
		var target=YAHOO.util.Event.getTarget(e);
		var i=0;
		while(target.tagName!='DIV'&&i++<5) target=target.parentNode;
		
		if(!YAHOO.util.Dom.hasClass(target,'multiselectselectedTo'))
		{
			//YAHOO.util.Dom.removeClass(this.couponElements,'selected');
			YAHOO.util.Dom.addClass(target,'multiselectselectedTo');
		}
	}
	this.toMouseOut  =  function(e)
	{
		var target=YAHOO.util.Event.getTarget(e);
		var i=0;
		while(target.tagName!='DIV'&&i++<3)target=target.parentNode;
		
		YAHOO.util.Dom.removeClass(target,'multiselectselectedTo');
	}
	
	this.removeTo  =  function(parentId, id, toId)
	{
	  var p = document.getElementById(parentId);
	  var c = document.getElementById(id);
	  p.removeChild(c);
	  this.removeToId( toId );
	}
	this.removeToId  =  function( toId )
	{
		for(var itr = 0; itr < this.toIds.length; itr++ )
		{
			if( this.toIds[itr] == toId )
			{
				this.toIds.splice( itr, 1 );
				break;
			}
		}

		if( this.toIds.length == 0 )
		{
			//Utils.hideDiv( this.listId );
		}
	}
};



function Highlighter()
{
	this.parent;
	this.className;
	this.highlightClass;
	this.args;
	this.curNode;

	this.addAll = function(parent, className, args)
	{
		for(var i = 0; i < parent.length; i++)
		{
			this.add( parent[i], className[i], args[i] );
		}
	};

	this.add = function(parent, className, args)
	{
		this.parent       = YAHOO.util.Dom.get( parent );
		this.className    = className.toLowerCase();
		this.args         = args;
		if( this.args != undefined && this.args.highlightClass != undefined  )
		{
			this.highlightClass = this.args.highlightClass;
		}
		else
		{
			this.highlightClass = 'resultHighlight';
		}
	};

	this.init = function()
	{
		for( var itr = 0; itr < this.parent.childNodes.length; itr++ )
		{
			var node = this.parent.childNodes[itr];
			if( node.nodeType == 1 )
			{
				if( node.className.toLowerCase().indexOf( this.className ) != -1 )
				{
					YAHOO.util.Event.on( node, "mouseover", this.mouseover, this, true );
					YAHOO.util.Event.on( node, "mouseout", this.mouseout, this, true );
					if( this.args != undefined && this.args.clickcallback != undefined  )
					{
						YAHOO.util.Event.on( node, "mousedown", this.mouseclick, this, true );
					}
				}
			}
		}		

	};

	this.mouseover = function(e,obj)
	{	
		//YAHOO.util.Event.stopEvent(e);
		var el = YAHOO.util.Event.getTarget(e);
		while(el.className.toLowerCase().indexOf( this.className ) == -1 )
		{
			el=el.parentNode;
		}
	
		if( this.args != undefined && this.args.overcallback != undefined )
		{
			this.args.overcallback(el);
			if( this.args.highlight != undefined && this.args.highlight != false )
			{
				this.addHighlight(el);
			}
		}
		else
		{
			this.addHighlight(el);
		}
	};


	this.mouseout = function(e,obj)
	{	
		//YAHOO.util.Event.stopEvent(e);
		var el = YAHOO.util.Event.getTarget(e);
		while(el.className.toLowerCase().indexOf( this.className ) == -1 )
		{
			el=el.parentNode;
		}
		
		if(this.args != undefined &&  this.args.outcallback != undefined )
		{
			this.args.outcallback(el);
			if( this.args.highlight != undefined && this.args.highlight != false )
			{
				this.removeHighlight(el);
			}
		}
		else
		{
			this.removeHighlight(el);
		}
	};

	this.mouseclick = function(e,obj)
	{	
		var el = YAHOO.util.Event.getTarget(e);
		if( el.nodeName != 'A' &&  el.nodeName != 'INPUT' &&  el.nodeName != 'SELECT' &&  el.nodeName != 'TEXTAREA'  &&  el.nodeName != 'CHECKBOX' &&  el.nodeName != 'RADIO'  )
		{
			while(el.className.toLowerCase().indexOf( this.className ) == -1 )
			{
				el=el.parentNode;
			}
			
			if(this.args != undefined &&  this.args.clickcallback != undefined )
			{
				this.args.clickcallback(el, this.args);
			}
		}
	};


	this.addHighlight = function(node)
	{
		YAHOO.util.Dom.addClass(node, this.highlightClass);
	};

	this.removeHighlight = function(node)
	{
		YAHOO.util.Dom.removeClass(node, this.highlightClass);
	};
}



function SearchBoxField()
{
	this.defaultText = '';
	this.offColor = '#828282';
	this.onColor  = '#000';

	this.init = function(id,defaultText,offColor,onColor,blurEventFunc)
	{
		if( offColor !== undefined )
		{
			this.offColor = offColor;
		}
		if( onColor !== undefined )
		{
			this.onColor = onColor;
		}
		this.defaultText = defaultText;
		var el = YAHOO.util.Dom.get(id);
		YAHOO.util.Event.addListener(el, "focus", this.focus, this, true);
		YAHOO.util.Event.addListener(el, "blur", this.blur, this, true);
		if( el.value == '' )
		{
			YAHOO.util.Dom.setStyle( el, 'color', this.offColor);
			el.value = this.defaultText;
		}
		if( blurEventFunc ){ this.blurEventFunc = blurEventFunc; }
	}

	this.focus = function(e, obj)
	{
		YAHOO.util.Event.preventDefault(e);
		var el = YAHOO.util.Event.getTarget( e );
		if( el.value == obj.defaultText )
		{
			YAHOO.util.Dom.setStyle( el, 'color',  obj.onColor);
			el.value = '';
		}
	}

	this.blur = function(e, obj)
	{
		YAHOO.util.Event.preventDefault(e);
		var el = YAHOO.util.Event.getTarget( e );
		if( el.value == '' )
		{
			if( this.blurEventFunc ){ this.blurEventFunc(el, obj); }
			YAHOO.util.Dom.setStyle( el, 'color', obj.offColor );
			el.value = obj.defaultText;
		}

	}
}

function JSForm()
{
	this.myform;
	function init(id)
	{
		this.myform = YAHOO.util.Dom.get( id );
		YAHOO.util.Event.addListener(this.myform, "submit", this.submit, this.myform, true);
	}

	function submit( e, form )
	{
		
	}
		
}

function NavPanel()
{
	this.offClass = '';
	this.init = function(hoverId, panelId, navOnClass, offClass)
	{
		this.hoverId  = hoverId;
		this.panelId  = panelId;
		this.offClass = offClass;
		this.navOnClass = navOnClass;
		this.panel    = new YAHOO.widget.Panel( panelId, { draggable : false, visible:false, constraintoviewport:true, underlay:"none", close:false,  zIndex: 99999, constraintoviewport : true, context: [ this.panelId , 'bl', 'bl', ['beforeShow'] ] } );	
		this.panel.render();
		if (YAHOO.env.ua.ie && YAHOO.env.ua.ie <= 7)
			this.panel.cfg.setProperty('x', this.panel.cfg.getProperty('x') - 65 );

		YAHOO.util.Event.addListener(hoverId, 'mouseover', this.show, this, true);
		YAHOO.util.Event.addListener(document, 'mousemove', this.hide, this, true);
		YAHOO.util.Event.addListener(document, 'click', this.hide, this, true);
	};

	this.show = function(e)
	{
		var el         = YAHOO.util.Event.getTarget(e)
	       , panel     = document.getElementById(this.panelId)
	       , link      = document.getElementById(this.hoverId)
		   , i         = 0;

		if( YAHOO.util.Dom.isAncestor(panel, el) || el == panel )
		{
			return;
		}

		while( el != link && i < 5 )
		{
			el=el.parentNode;
			i++;
		}

		if( el == link )
		{
			YAHOO.util.Event.stopEvent(e);
			YAHOO.util.Dom.addClass( this.hoverId, this.navOnClass );
			YAHOO.util.Dom.addClass( this.hoverId, this.hoverId+'on' );
			YAHOO.util.Dom.removeClass( this.hoverId, this.hoverId+'off' );
			YAHOO.util.Dom.removeClass( this.panelId, this.offClass );	
			this.panel.show();
		}
	};

	
	this.hide = function(e)
	{
		var el         = YAHOO.util.Event.getTarget(e)
	       , panel     = document.getElementById(this.panelId)
	       , link      = document.getElementById(this.hoverId);

		if( ! YAHOO.util.Dom.isAncestor(link, el) && el != link )
		{
			YAHOO.util.Dom.removeClass( this.hoverId, this.navOnClass );
			YAHOO.util.Dom.removeClass( this.hoverId, this.hoverId+'on' );
			YAHOO.util.Dom.addClass( this.hoverId, this.hoverId+'off' );
			YAHOO.util.Dom.addClass( this.panelId, this.offClass );
			this.panel.hide();
		}
	};
}


var ModuleManager={hidden:[],toggle:function(F,B){var E=document.getElementById(F);var D="mbdoff";for(var C=0;C<E.childNodes.length;C++){if(E.childNodes[C].className!=null){if(E.childNodes[C].className.indexOf("hd")!=-1){if(E.childNodes[C].className.indexOf("mhdoff")==-1){YAHOO.util.Dom.addClass(E.childNodes[C],"mhdoff")}else{YAHOO.util.Dom.removeClass(E.childNodes[C],"mhdoff")}}else{if(E.childNodes[C].className.indexOf("bd")!=-1){if(E.childNodes[C].className.indexOf("mbdoff")==-1){YAHOO.util.Dom.addClass(E.childNodes[C],"mbdoff")}else{YAHOO.util.Dom.removeClass(E.childNodes[C],"mbdoff");D=""}break}}}}B.fields.push("display");B.values.push(D);var A={fields:B.fields,values:B.values};Utils.send("ModuleLayout","save",A)},init:function(A){}};
