PageSourceSearch

http://sharkia.gov.eg/_layouts/1033/core.js?rev=mHKsOQ0iU3Q5jdm9OZNDdg%3D%3D

js sharkia.gov.eg collected 2026-09-25 09:27:24 UTC 265,384 bytes, 9,177 lines download raw bytes

1var IsMenuShown=false;
2var itemTableDeferred=null;
3var itemTable=null;
4var imageCell=null;
5var onKeyPress=false;
6var downArrowText=null;
7var currentCtx=null;
8var currentEditMenu=null;
9var currentItemID=null;
10var currentItemAppName=null;
11var currentItemProgId=null;
12var currentItemIcon=null;
13var currentItemOpenControl=null;
14var currentItemFileUrl=null;
15var currentItemFSObjType=null;
16var currentItemCheckedOutUserId=null;
17var currentItemCheckoutExpires=null;
18var currentItemModerationStatus=null;
19var currentItemUIString=null;
20var currentItemCheckedoutToLocal=null;
21var bIsCheckout=0;
22var currentItemCanModify=null;
23var currentItemPermMaskH=null;
24var currentItemPermMaskL=null;
25var currentItemIsEventsExcp=null;
26var currentItemIsEventsDeletedExcp=null;
27var UTF8_1ST_OF_2=0xc0   ;
28var UTF8_1ST_OF_3=0xe0   ;
29var UTF8_1ST_OF_4=0xf0   ;
30var UTF8_TRAIL=0x80   ;
31var HIGH_SURROGATE_BITS=0xD800 ;
32var LOW_SURROGATE_BITS=0xDC00 ;
33var SURROGATE_6_BIT=0xFC00 ;
34var SURROGATE_ID_BITS=0xF800 ;
35var SURROGATE_OFFSET=0x10000;
36function escapeProperlyCoreCore(str, bAsUrl, bForFilterQuery, bForCallback)
37{
38	var strOut="";
39	var strByte="";
40	var ix=0;
41	var strEscaped=" \"%<>\'&";
42	if (typeof(str)=="undefined")
43		return "";
44	for (ix=0; ix < str.length; ix++)
45	{
46		var charCode=str.charCodeAt(ix);
47		var curChar=str.charAt(ix);
48		if(bAsUrl && (curChar=='#' || curChar=='?') )
49		{
50			strOut+=str.substr(ix);
51			break;
52		}
53		if (bForFilterQuery && curChar=='&')
54		{
55			strOut+=curChar;
56			continue;
57		}
58		if (charCode <=0x7f)
59		{
60			if (bForCallback)
61			{
62				strOut+=curChar;
63			}
64			else
65			{
66				if ( (charCode >=97 && charCode <=122) ||
67					 (charCode >
67=65 && charCode <=90) ||
68					 (charCode >=48 && charCode <=57) ||
69					 (bAsUrl && (charCode >=32 && charCode <=95) && strEscaped.indexOf(curChar) < 0))
70				{
71					strOut+=curChar;
72				}
73				else if (charCode <=0x0f)
74				{
75					strOut+="%0"+charCode.toString(16).toUpperCase();
76				}
77				else if (charCode <=0x7f)
78				{
79					strOut+="%"+charCode.toString(16).toUpperCase();
80				}
81			}
82		}
83		else if (charCode <=0x07ff)
84		{
85			strByte=UTF8_1ST_OF_2 | (charCode >> 6);
86			strOut+="%"+strByte.toString(16).toUpperCase() ;
87			strByte=UTF8_TRAIL | (charCode & 0x003f);
88			strOut+="%"+strByte.toString(16).toUpperCase();
89		}
90		else if ((charCode & SURROGATE_6_BIT) !=HIGH_SURROGATE_BITS)
91		{
92			strByte=UTF8_1ST_OF_3 | (charCode >> 12);
93			strOut+="%"+strByte.toString(16).toUpperCase();
94			strByte=UTF8_TRAIL | ((charCode & 0x0fc0) >> 6);
95			strOut+="%"+strByte.toString(16).toUpperCase();
96			strByte=UTF8_TRAIL | (charCode & 0x003f);
97			strOut+="%"+strByte.toString(16).toUpperCase();
98		}
99		else if (ix < str.length - 1)
100		{
101			var charCode=(charCode & 0x03FF) << 10;
102			ix++;
103			var nextCharCode=str.charCodeAt(ix);
104			charCode |=nextCharCode & 0x03FF;
105			charCode+=SURROGATE_OFFSET;
106			strByte=UTF8_1ST_OF_4 | (charCode >> 18);
107			strOut+="%"+strByte.toString(16).toUpperCase();
108			strByte=UTF8_TRAIL | ((charCode & 0x3f000) >> 12);
109			strOut+="%"+strByte.toString(16).toUpperCase();
110			strByte=UTF8_TRAIL | ((charCode & 0x0fc0) >> 6);
111			strOut+="%"+strByte.toString(16).toUpperCase();
112			strByte=UTF8_TRAIL | (charCode & 0x003f);
113			strOut+="%"+strByte.toString(16).toUpperCase();
114		}
115	}
116	return strOut;
117}
118function escapeProperly(str)
119{
120	return escapeProperlyCoreCore(str, false, false, false);
121}
122function escapeProperlyCore(str, bAsUrl)
123{
124	return escapeProperlyCoreCore(str, bAsUrl, false, false);
125}
126function escapeUrlForCallback(str)
127{
128	var iPound=str.indexOf("#");
129	var iQues=str.indexOf("?");
130	if ((iPound > 0) && ((iQues==-1) || (iPound < iQues)))
131	{
132		var strNew=str.substr(0, iPound);
133		if (iQues > 0)
134		{
135			strNew+=str.substr(iQues);
136		}
137		str=strNew;
138	}
139	return escapeProperlyCoreCore(str, true, false, true);
140}
141function PageUrlValidation(url)
142{
143	if (url.substr(0, 4) !="http" && url.substr(0,1) !="/")
144	{
145		var L_InvalidPageUrl_Text="Invalid page URL: ";
146		alert(L_InvalidPageUrl_Text);
147		return "";
148	}
149	else
150		return url;
151}
152var g_ExpGroupWPState=new LRUCache();
153function makeAbsUrl(strUrl)
154{
155	if (strUrl.length > 0 && "/"==strUrl.substr(0, 1))
156	{
157		strUrl=window.location.protocol+"//"+window.location.host+strUrl;
158	}
159	return strUrl;
160}
161function FilterNoteField(view, fieldName, fieldValue, keyCode)
162{
163	if (keyCode !=13) return;
164	event.returnValue=false;
165	var strDocUrl=window.location.href;
166	pagedPart=/&Paged=TRUE&p_[^&]*&PageFirstRow=[^&]*/gi;
167	strDocUrl=strDocUrl.replace(pagedPart, "");
168	viewGuid=GetUrlKeyValue("View", true);
169	if (viewGuid=="")
170	{
171		strDocUrl=StURLSetVar2(strDocUrl, "View", view);
172		viewGuid=view;
173	}
174	if (view.toUpperCase() !=viewGuid.toUpperCase())
175	{
176		var encodedView=escapeProperly(view);
177		if (encodedView.toUpperCase() !=viewGuid.toUpperCase())
178		{
179			var pattern=/\?[^?]*/i;
180			var idxQuery=strDocUrl.indexOf("?");
181			if (idxQuery !=-1)
182			   strDocUrl=strDocUrl.replace(pattern,"?View="+view);
183			else
184			   strDocUrl=strDocUrl+"?View="+view;
185		}
186	}
187	var arrayField=strDocUrl.match("FilterField([0-9]+)="+fieldName);
188	if (!arrayField)
189	{
190		var idxQuery=strDocUrl.indexOf("?");
191		if (idxQuery !=-1)
192			strDocUrl=strDocUrl+"&";
193		else
194			strDocUrl=strDocUrl+"?";
195		i=0;
196		do
197		{
198			i++;
199			FilterArray=strDocUrl.match("FilterField"+							i+"=[^&]*"+"&FilterValue"+							i+"=[^&]*");
200		} while (FilterArray);
201		strDocUrl=strDocUrl+"FilterField"+i+							"="+fieldName+"&FilterValue"+							i+"="+escapeProperly(fieldValue);
202		strDocUrl=strDocUrl.replace("Filter=1&", "");
203	}
204	else
205	{
206		filterNo=parseInt(arrayField[1]);
207		var arrayValue=strDocUrl.match("&FilterValue"+							filterNo+"=[^&]*");
208		strTemp="&"+arrayField[0]+arrayValue[0];
209		strNewFilter="&FilterField"+arrayField[1]+							"="+fieldName+"&FilterValue"+							arrayField[1]+"="+escapeProperly(fieldValue);
210		strDocUrl=strDocUrl.replace(strTemp, strNewFilter);
211		strDocUrl=strDocUrl.replace("Filter=1&", "");
212	}
213	window.location.href=STSPageUrlValidation(strDocUrl);
214}
215function SelectField(view, selectID)
216{
217	var strDocUrl=window.location.href;
218	var strHash=window.location.hash;
219	var fViewReplaced=false;
220	var pattern=/\#.*/i;
221	strDocUrl=strDocUrl.replace(pattern, "");
222	viewGuid=GetUrlKeyValue("View", true);
223	pageView=GetUrlKeyValue("PageView", true);
224	if (view.toUpperCase() !=viewGuid.toUpperCase())
225	{
226		var encodedView=escapeProperly(view);
227		if (encodedView.toUpperCase() !=viewGuid.toUpperCase())
228		{
229			var pattern=/\?[^?]*/i;
230			var idxQuery=strDocUrl.indexOf("?");
231			if (idxQuery !=-1)
232				strDocUrl=strDocUrl.replace(pattern,"?View="+view);
233			else
234				strDocUrl=strDocUrl+"?View="+view;
235			fViewReplaced=true;
236		}
237	}
238	if (!fViewReplaced && (GetUrlKeyValue("SelectedID") !=""))
239	{
240		var selectIDOld=/&SelectedID=[^&]*/gi;
241		strDocUrl=strDocUrl.replace(selectIDOld, "");
242		selectIDOld=/\?SelectedID=[^&]*&?/;
243		strDocUrl=strDocUrl.replace(selectIDOld, "?");
244	}
245	strDocUrl=strDocUrl+"&SelectedID=";
246	strDocUrl=strDocUrl+selectID;
247	if (fViewReplaced && (pageView !=""))
248	{
249		strDocUrl=strDocUrl+"&PageView="+pageView;
250	}
251	if (strHash !="")
252	{
253	strDocUrl=strDocUrl+strHash;
254	}
255	SubmitFormPost(strDocUrl);
256}
257function FilterField(view, fieldName, fieldValue, selOption)
258{
259	return FilterFieldV3(view, fieldName, fieldValue, selOption, false);
260}
261function FilterFieldV3(view, fieldName, fieldValue, selOption, bReturnUrl)
262{
263	var strDocUrl=CanonicalizeUrlEncodingCase(window.location.href);
264	var arrayField=strDocUrl.match("[&\?]Paged=TRUE[^&]*");
265	if (arrayField)
266	{
267		var pagedPart=/&p_[^&]*/gi;
268		strDocUrl=strDocUrl.replace(pagedPart, "");
269		pagedPart=/&PageFirstRow=[^&]*/gi;
270		strDocUrl=strDocUrl.replace(pagedPart, "");
271		pagedPart=/&PageLastRow=[^&]*/gi;
272		strDocUrl=strDocUrl.replace(pagedPart, "");
273		pagedPart=/&PagedPrev=TRUE[^&]*/i;
274		strDocUrl=strDocUrl.replace(pagedPart, "");
275		arrayField=strDocUrl.match("[\?]Paged=TRUE[^&]*");
276		if (arrayField)
277		{
278			var idxQuery=strDocUrl.substr(arrayField["index"]).indexOf("&");
279			if (idxQuery !=-1)
280			{
281				strDocUrl=strDocUrl.substr(0, arrayField["index"]+1)+					strDocUrl.substr(idxQuery+arrayField["index"]+1);
282			}
283			else
284			{
285				strDocUrl=strDocUrl.substr(0, arrayField["index"]);
286			}
287		}
288		else
289		{
290			pagedPart=/&Paged=TRUE[^&]*/i;
291			strDocUrl=strDocUrl.replace(pagedPart, "");
292		}
293	}
294	viewGuid=GetUrlKeyValue("View", true);
295	if (viewGuid=="")
296	{
297		strDocUrl=StURLSetVar2(strDocUrl, "View", view);
298		viewGuid=view;
299	}
300	if (view.toUpperCase() !=viewGuid.toUpperCase())
301	{
302		var encodedView=escapeProperly(view);
303		if (encodedView.toUpperCase() !=viewGuid.toUpperCase())
304		{
305			var pattern=/\?[^?]*/i;
306			var idxQuery=strDocUrl.indexOf("?");
307			if (idxQuery !=-1)
308			   strDocUrl=strDocUrl.replace(pattern,"?View="+view);
309			else
310			   strDocUrl=strDocUrl+"?View="+view;
311		}
312	}
313	arrayField=strDocUrl.match("FilterField([0-9]+)="+fieldName+"&");
314	if (!arrayField)
315	{
316		if (0==selOption)
317		{
318			strDocUrl=strDocUrl.replace("Filter=1&", "");
319			strDocUrl=strDocUrl.replace("?Filter=1", "");
320		}
321		else
322		{
323			var idxQuery=strDocUrl.indexOf("?");
324			if (idxQuery !=-1)
325				strDocUrl=strDocUrl+"&";
326			else
327				strDocUrl=strDocUrl+"?";
328			i=0;
329			do
330			{
331				i++;
332				FilterArray=strDocUrl.match("FilterField"+i+"=[^&]*"+												  "&FilterValue"+i+"=[^&]*");
333			} while (FilterArray);
334			strDocUrl=strDocUrl+"FilterField"+i+"="+fieldName+									"&FilterValue"+i+"="+escapeProperly(fieldValue);
335			strDocUrl=strDocUrl.replace("Filter=1&", "");
336		}
337	}
338	else
339	{
340		filterNo=parseInt(arrayField[1]);
341		var arrayValue=strDocUrl.match("FilterValue"+filterNo+"=[^&]*");
342		var strTemp="&"+arrayField[0]+arrayValue[0];
343		if (0==selOption)
344		{
345			if (strDocUrl.indexOf(strTemp)==-1)
346			{
347				strTemp=arrayField[0]+arrayValue[0]+"&";
348			}
349			strDocUrl=strDocUrl.replace(strTemp, "");
350			j=filterNo+1;
351			FilterArray=strDocUrl.match("FilterField"+							j+"=[^&]*"+"&FilterValue"+							j+"=[^&]*");
352			for ( i=filterNo ; FilterArray; i++)
353			{
354				strNew="FilterField"+i;
355				strOld="FilterField"+j;
356				strDocUrl=strDocUrl.replace(strOld, strNew);
357				strNew="FilterValue"+i;
358				strOld="FilterValue"+j;
359				strDocUrl=strDocUrl.replace(strOld, strNew);
360				j++;
361				FilterArray=strDocUrl.match("FilterField"+								j+"=[^&]*"+"&FilterValue"+								j+"=[^&]*");
362			}
363			strDocUrl=strDocUrl.replace("Filter=1&", "");
364			strDocUrl=strDocUrl.replace("?Filter=1", "");
365		}
366		else
367		{
368			var strFirstChar;
369			if (strDocUrl.indexOf(strTemp)==-1)
370			{
371				strTemp="?"+arrayField[0]+arrayValue[0]
372				strFirstChar="?";
373			}
374			else
375			{
376				strFirstChar="&";
377			}
378			var strNewFilter=strFirstChar+"FilterField"+arrayField[1]+							"="+fieldName+"&FilterValue"+							arrayField[1]+"="+escapeProperly(fieldValue);
379			strDocUrl=strDocUrl.replace(strTemp, strNewFilter);
380			strDocUrl=strDocUrl.replace("Filter=1&", "");
381		}
382	}
383	arrayField=strDocUrl.match("FilterField([0-9]+)=");
384	if (!arrayField)
385		strDocUrl=strDocUrl+"&FilterClear=1";
386	else
387		strDocUrl=strDocUrl.replace("&FilterClear=1", "");
388	if (bReturnUrl)
389		return strDocUrl;
390	else
391		SubmitFormPost(strDocUrl);
392}
393function CanonicalizeUrlEncodingCase(str)
394{
395	var strOut="";
396	var ix;
397	for (ix=0; ix < str.length; ix++)
398	{
399		var curChar=str.charAt(ix);
400		if (curChar=='%' && (ix+2) < str.length)
401		{
402			strOut+=curChar;
403			ix++;
404			strOut+=str.charAt(ix).toString().toUpperCase();
405			ix++;
406			strOut+=str.charAt(ix).toString().toUpperCase();
407		}
408		else
409		{
410			strOut+=curChar;
411		}
412	}
413	return strOut;
414}
415function SetControlValue(controlId, value)
416{
417	var control=document.getElementById(controlId);
418	if (control !=null)
419		 control.value=value;
420}
421var bValidSearchTerm=false;
422function SetSearchView()
423{
424	if (typeof(bValidSearchTerm) !="undefined")
425		bValidSearchTerm=true;
426}
427function SubmitFormPost(url, bForceSubmit)
428{
429	if (typeof(MSOWebPartPageFormName) !="undefined")
430	{
431		var form=document.forms[MSOWebPartPageFormName];
432		if (null !=form)
433		{
434			if ((bForceSubmit !=undefined && bForceSubmit==true)
435				|| !form.onsubmit || (form.onsubmit() !=false))
436			{
437				form.action=STSPageUrlValidation(url);
438				form.method="POST";
439				if (isPortalTemplatePage(url))
440					form.target="_top";
441				if (!bValidSearchTerm)
442					ClearSearchTerm("");
443				form.submit();
444			}
445		}
446	}
447}
448var g_varSkipRefreshOnFocus=0;
449function RefreshOnFocus()
450{
451	if (typeof(g_varSkipRefreshOnFocus)=="undefined" ||
452		!g_varSkipRefreshOnFocus)
453	{
454		var url=window.location.href;
455		var iPosition=url.indexOf("#")
456		if (iPosition==-1)
457			window.location.href=url;
458		else
459			window.location.href=url.substring(0, iPosition);
460	}
461}
462function DisableRefreshOnFocus()
463{
464	g_varSkipRefreshOnFocus=1;
465}
466function SetWindowRefreshOnFocus()
467{
468	window.onbeforeunload=DisableRefreshOnFocus;
469	window.onfocus=RefreshOnFocus;
470}
471function RemoveParametersFromUrl(url)
472{
473	var paramsBeginPos=url.indexOf('?');
474	if (paramsBeginPos==-1)
475		return url;
476	else
477		return url.substr(0, paramsBeginPos);
478}
479function GoToPageRelative(url)
480{
481	if (url.substr(0, 4) !="http" && url.substr(0,1) !="/")
482	{
483		var currentPage=RemoveParametersFromUrl(window.location.href);
484		var pos=currentPage.lastIndexOf("/");
485		if (pos > 0)
486			url=currentPage.substring(0, pos+1)+url;
487	}
488	GoToPage(url);
489}
490function EnterFolder(url)
491{
492	var currentPage=RemoveParametersFromUrl(window.location.href);
493	var newPage=RemoveParametersFromUrl(url);
494	if (newPage.toLowerCase() !=currentPage.toLowerCase())
495		STSNavigate(url);
496	else
497		SubmitFormPost(url);
498}
499function GoToDiscussion(url)
500{
501	var ch=url.indexOf("?") >=0 ? "&" : "?";
502	var srcUrl=GetSource();
503	if (srcUrl !=null && srcUrl !="")
504		url+=ch+"TopicsView="+srcUrl;
505	STSNavigate(url);
506}
507function STSNavigateWithCheckoutAlert(Url, bCheckout, bIsCheckedOutToLocal, strDocument, strhttpRoot,
508			strCurrentUser, strCheckoutUser)
509{
510	if (typeof(strCurrentUser)=="undefined" || strCurrentUser==null || strCurrentUser=="")
511		strCurrentUser=currentItemCheckedOutUserId;
512	if ((typeof(strCheckoutUser)=="undefined" || strCheckoutUser==null || strCheckoutUser=="")
513		  && typeof(ctx) !="undefined")
514	{
515		strCheckoutUser=ctx.CurrentUserId;
516	}
517	if (bIsCheckedOutToLocal=="1")
518	{
519		alert(L_CannotEditPropertyForLocalCopy_Text);
520		return;
521	}
522	if (strCurrentUser !=null &&
523		strCurrentUser !="" &&
524		strCheckoutUser !=null &&
525		strCurrentUser !=strCheckoutUser)
526	{
527		alert(L_CannotEditPropertyCheckout_Text);
528		return;
529	}
530	if (bCheckout=="1" && browseris.ie)
531	{
532		if (confirm(L_ConfirmCheckout_Text))
533		{
534			if (strDocument.charAt(0)=="/" || strDocument.substr(0,3).toLowerCase()=="%2f")
535				strDocument=document.location.protocol+"//"+document.location.host+strDocument;
536			CheckoutviaXmlhttp(strhttpRoot,strDocument);
537		 }
538		else
539			return;
540	}
541	STSNavigate(Url);
542}
543function CheckoutviaXmlhttp(strhttpRoot, strDocument)
544{
545	var xh=new ActiveXObject("Microsoft.XMLHTTP");
546	if (xh==null)
547		return false;
548	xh.Open("POST", strhttpRoot+"/_vti_bin/lists.asmx", false);
549	xh.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
550	xh.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/sharepoint/soap/CheckOutFile");
551	var soapData='<?xml version="1.0" encoding="utf-8"?>'+		'<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" '+		'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'+		'<soap:Body>'+		'<CheckOutFile xmlns="http://schemas.microsoft.com/sharepoint/soap/"><pageUrl>'+		strDocument+'</pageUrl></CheckOutFile></soap:Body></soap:Envelope>'
552	xh.Send(soapData);
553	if (xh.status==200 &&  xh.ResponseText.indexOf("true") !=0)
554	{
555		return true;
556	}
557	else
558		return false;
559}
560var g_ExtensionNotSupportCheckoutToLocal=new Array("ascx","asp", "aspx", "htm", "html","master","odc", "exe", "bat","com", "cmd", "onetoc2");
561var g_ExtensionDefaultForRead=new Array("jpg", "jpeg","bmp", "png", "gif","onetoc2", "one", "odc");
562function FSupportCheckoutToLocal(strExtension)
563{
564	var fRet=true;
565	if (strExtension==null || strExtension=="")
566		return false;
567	strExtension=strExtension.toLowerCase();
568	var ix=0;
569	for (ix=0; ix < g_ExtensionNotSupportCheckoutToLocal.length; ix++)
570	{
571		if (strExtension==g_ExtensionNotSupportCheckoutToLocal[ix])
572			return false;
573	}
574	return true;
575}
576function FDefaultOpenForReadOnly(strExtension)
577{
578	var fRet=false;
579	if (strExtension==null || strExtension=="")
580		return true;
581	strExtension=strExtension.toLowerCase();
582	var ix=0;
583	for (ix=0; ix < g_ExtensionDefaultForRead.length; ix++)
584	{
585		if (strExtension==g_ExtensionDefaultForRead[ix])
586			return true;
587	}
588	return false;
589}
590function CheckoutDocument(strhttpRoot, strDocument, strOpenControl)
591{
592	var stsOpen=null;
593	var fRet=true;
594	var fClientCheckout=false;
595	if (strDocument.charAt(0)=="/" || strDocument.substr(0,3).toLowerCase()=="%2f")
596		strDocument=document.location.protocol+"//"+document.location.host+strDocument;
597	var strextension=SzExtension(unescapeProperly(strDocument));
598	if (FSupportCheckoutToLocal(strextension) &&
599		strOpenControl=="SharePoint.OpenDocuments.3")
600	{
601		stsOpen=StsOpenEnsureEx(strOpenControl);
602	}
603	if (stsOpen !=null)
604	{
605		try
606		{
607			fRet=stsOpen.CheckoutDocumentPrompt(unescapeProperly(strDocument), false, "");
608			SetWindowRefreshOnFocus();
609			fClientCheckout=true;
610			return;
611		}
612		catch (e)
613		{
614		}
615	}
616	 if (!fClientCheckout)
617		NavigateToCheckinAspx(strhttpRoot, "FileName="+escapeProperly(unescapeProperly(strDocument))+"&Checkout=true");
618}
619function NewItem(url)
620{
621	GoToPage(url);
622}
623function EditItem(url)
624{
625	GoToPage(url);
626}
627function GoToHistoryLink(elm, strVersion)
628{
629	if (elm.href==null)
630		return;
631	var targetUrl=elm.href;
632	var ch=elm.href.indexOf("?") >=0 ? "&" : "?";
633	var srcUrl=ch+"VersionNo="+strVersion;
634	var srcSourceUrl=GetSource();
635	if (srcSourceUrl !=null && srcSourceUrl !="")
636		srcSourceUrl="&"+"Source="+srcSourceUrl;
637	var targetUrl=elm.href+srcUrl+srcSourceUrl;
638	if (isPortalTemplatePage(targetUrl))
639		window.top.location=STSPageUrlValidation(targetUrl);
640	else
641		window.location=STSPageUrlValidation(targetUrl);
642}
643function GoToLink(elm)
644{
645	if (elm.href==null)
646		return;
647	var ch=elm.href.indexOf("?") >=0 ? "&" : "?";
648	var srcUrl=GetSource();
649	if (srcUrl !=null && srcUrl !="")
650		srcUrl=ch+"Source="+srcUrl;
651	var targetUrl=elm.href+srcUrl;
652	if (isPortalTemplatePage(targetUrl))
653		window.top.location=STSPageUrlValidation(targetUrl);
654	else
655		window.location=STSPageUrlValidation(targetUrl);
656}
657function GoBack(defViewUrl)
658{
659	window.location.href=unescapeProperly(GetSource(defViewUrl));
660}
661function ReplyItem(url, threading, guid, subject)
662{
663	if(threading.length>=504)
664	{
665		var L_ReplyLimitMsg_Text="Cannot reply to this thread. The reply limit has been reached.";
666		alert(L_ReplyLimitMsg_Text);
667	} else
668	{
669		url+="?Threading="+threading;
670		url+="&Guid="+guid;
671		url+="&Subject="+subject;
672		GoToPage(url);
673	}
674}
675function GoBacktoCurrentIssue(url, issueid)
676{
677	url+='?ID='+issueid;
678	GoToPage(url);
679}
680function CatchCreateError(strIgnore1, strIgnore2, strIgnore3)
681{
682	return true;
683}
684function ExportToDatabase(strSiteUrl, strListID, strViewID, fUseExistingDB)
685{
686	var L_NoWSSClient_Text="To export a list, you must have a Windows SharePoint Services-compatible application and Microsoft Internet Explorer 6.0 or greater.";
687	var L_ExportDBFail_Text="Export to database failed. To export a list, you must have a Windows SharePoint Services-compatible application.";
688	if (browseris.ie5up && browseris.win32)
689	{
690		try
691		{
692			var ExpDatabase;
693			ExpDatabase=new ActiveXObject("SharePoint.ExportDatabase");
694			if (!ExpDatabase)
695			{
696				alert(L_NoWSSClient_Text);
697				return;
698			}
699			ExpDatabase.SiteUrl=makeAbsUrl(strSiteUrl);
700			ExpDatabase.ListID=strListID;
701			ExpDatabase.ViewID=strViewID;
702			ExpDatabase.DoExport(fUseExistingDB);
703			ExpDatabase=null;
704		}
705		catch(e)
706		{
707			alert(L_ExportDBFail_Text);
708			return;
709		}
710	}
711	else
712	{
713		alert(L_NoWSSClient_Text);
714	}
715}
716function ExportList(using)
717{
718	var L_ExportListSpreadsheet_Text="To export a list, you must have a Windows SharePoint Services-compatible application.";
719	if ((fSSImporter && SSImporterObj.IqyImportEnabled()) ||
720		confirm(L_ExportListSpreadsheet_Text))
721	{
722		window.location.href=STSPageUrlValidation(makeAbsUrl(using));
723	}
724}
725function ExportDiagram(weburl,listguid, listid, listname, viewname, viewguid)
726{
727	try
728	{
729		objDiagramLaunch=new ActiveXObject("DiagramLaunch.DiagramLauncher");
730		var bstrTemplate="";
731		var bstrURI=weburl;
732		var bstrViewGUID=viewguid;
733		var bstrListGUID=listguid;
734		var iListID=listid;
735		objDiagramLaunch.CreateDiagram(bstrTemplate, bstrURI, bstrViewGUID, bstrListGUID, listname, viewname, iListID);
736	}
737	catch(e)
738	{
739		var L_DiagramLaunchFail_Text="Unable to create diagram.";
740		alert (L_DiagramLaunchFail_Text);
741	}
742	delete objDiagramLaunch;
743}
744var ListCtrlObj;
745var fListControl=false;
746var fListErrorShown=false;
747var L_EditInGrid_Text="The list cannot be displayed in Datasheet view for one or more of the following reasons: \n\n- A datasheet component compatible with Windows SharePoint Services is not installed.\n- Your Web browser does not support ActiveX controls. \n- Support for ActiveX controls is disabled.";
748function CatchListCreateError(strIgnore1, strIgnore2, strIgnore3)
749{
750	alert(L_EditInGrid_Text);
751	fListErrorShown=true;
752	return false;
753}
754function EnsureListControl()
755{
756	if (!fListControl)
757	{
758		fListErrorShown=false;
759		if (browseris.ie5up && browseris.win32)
760		{
761			var functionBody=				"try"
762+"{"
763+"    ListCtrlObj=new ActiveXObject(\"ListNet.ListNet\");"
764+"    if (ListCtrlObj)"
765+"        fListControl=true;"
766+"} catch (e)"
767+"{"
768+"    fListControl=false;"
769+"};";
770			var EnsureListControlInner=new Function(functionBody);
771			EnsureListControlInner();
772		}
773		else
774		{
775			window.onerror=CatchListCreateError;
776			ListCtrlObj=new ActiveXObject("ListNet.ListNet");
777			if (ListCtrlObj)
778				fListControl=true;
779		}
780	}
781	ListCtrlObj=null;
782	return fListControl;
783}
784var L_NoQuestion_Text="The survey contains no questions.";
785var L_NoVoteAllowed_Text="You are not allowed to respond again to this survey.";
786function IsVoteOK(notAllowed)
787{
788	if (1==notAllowed)
789		alert(L_NoQuestion_Text);
790	else if (2==notAllowed)
791		alert(L_NoVoteAllowed_Text);
792	else
793		return true;
794}
795function hasHighChar(str)
796{
797	var ix=0;
798	for (ix=0; ix < str.length; ix++)
799	{
800		if (str.charCodeAt(ix)>127)
801		return true;
802	}
803	return false;
804}
805function RemovePagingArgs(strUrl)
806{
807	var rePagedFlag=/&*Paged=TRUE/gi;
808	strUrl=strUrl.replace(rePagedFlag, "");
809	var rePagedPrevFlag=/&*PagedPrev=TRUE/gi;
810	strUrl=strUrl.replace(rePagedPrevFlag, "");
811	var rePagedArgs=/&p_[^&]*/gi;
812	strUrl=strUrl.replace(rePagedArgs, "");
813	var rePagedRow=/&PageFirstRow=[^&]*/gi;
814	strUrl=strUrl.replace(rePagedRow, "");
815	var rePagedLastRow=/&PageLastRow=[^&]*/gi;
816	strUrl=strUrl.replace(rePagedLastRow, "");
817	var reFilter1=/\?Filter=1&*/gi;
818	strUrl=strUrl.replace(reFilter1, "?");
819	var reFilter2=/&Filter=1/gi;
820	strUrl=strUrl.replace(reFilter2, "");
821	var reOrphanedQMark=/\?$/;
822	strUrl=strUrl.replace(reOrphanedQMark, "");
823	return strUrl;
824}
825function ClearSearchTerm(guidView)
826{
827	if (typeof(MSOWebPartPageFormName) !="undefined")
828	{
829		var form=document.forms[MSOWebPartPageFormName];
830		if (null !=form)
831		{
832			if (guidView !=null)
833			{
834				var frmElem=form["SearchString"+guidView];
835				if (frmElem !=null)
836					frmElem.value="";
837			}
838		}
839	}
840	bValidSearchTerm=true;
841}
842function SubmitSearchRedirect(strUrl)
843{
844	var frm=document.forms["frmSiteSearch"];
845	if (frm==null)
846	{
847		if (typeof(MSOWebPartPageFormName) !="undefined")
848			frm=document.forms[MSOWebPartPageFormName];
849	}
850	if (frm !=null)
851	{
852		var searchText=frm.elements["SearchString"].value;
853		strUrl=strUrl+"?k="+escapeProperly(searchText);
854		var searchScope=frm.elements["SearchScope"];
855		if (searchScope !=null)
856		{
857			var searchScopeUrl=searchScope.value;
858			if (searchScopeUrl)
859			{
860				strUrl=strUrl+"&u="+escapeProperly(searchScopeUrl);
861			}
862		}
863		frm.action=strUrl;
864		frm.submit();
865	}
866}
867function ShowGridUrlInHTML(strUrl)
868{
869	if (strUrl.indexOf("?") > 0)
870		strUrl=strUrl+"&";
871	else
872		strUrl=strUrl+"?";
873	strUrl=strUrl+"ShowInGrid=HTML";
874	return strUrl;
875}
876function SubmitSearch()
877{
878	SubmitSearchForView("");
879}
880function SubmitSearchForView(ViewGuid)
881{
882	var frm=document.forms[0];
883	var srchCtlName="SearchString"+ViewGuid;
884	var searchText=frm.elements[srchCtlName].value;
885	if (""==searchText)
886	{
887		var L_Enter_Text="Please enter one or more search words.";
888		alert(L_Enter_Text);
889		frm.elements[srchCtlName].focus();
890	}
891	else
892	{
893		var strDocUrl;
894		strDocUrl=RemovePagingArgs(frm.action);
895		if (typeof(bGridViewPresent) !="undefined" && bGridViewPresent)
896			strDocUrl=ShowGridUrlInHTML(strDocUrl);
897		frm.action=strDocUrl;
898		frm.submit();
899	}
900}
901function IsKeyDownSubmit(event)
902{
903	if (event !=null)
904	{
905		var charCode;
906		var bKeyModifiers;
907		if (browseris.ie)
908		{
909			charCode=event.keyCode;
910			bKeyModifiers=event.altKey || event.ctrlKey;
911		}
912		else
913		{
914			charCode=event.which;
915			bKeyModifiers=event.modifers &
916						   (event.ALT_MASK | event.CONTROL_MASK);
917		}
918		if ((charCode==13) && !bKeyModifiers)
919			return true;
920	}
921	return false;
922}
923function SearchViewKeyDown(guidView)
924{
925	if (IsKeyDownSubmit(event))
926		SubmitSearchForView(guidView);
927}
928function SearchKeyDown(event, strUrl)
929{
930	if (IsKeyDownSubmit(event))
931	{
932		SubmitSearchRedirect(strUrl);
933		return false;
934	}
935	return true;
936}
937function AlertAndSetFocus(msg, fieldName)
938{
939	fieldName.focus();
940	fieldName.select();
941	window.alert(msg);
942}
943function AlertAndSetFocusForDropdown(msg, fieldName)
944{
945	fieldName.focus();
946	window.alert(msg);
947}
948function setElementValue(elemName, elemValue)
949{
950	var elem=document.getElementsByName(elemName).item(0);
951	if (elem==null)
952		return false;
953	elem.value=elemValue;
954	return true;
955}
956function GetMultipleSelectedText(frmElem) {
957	if (frmElem) {
958		var strret;
959		strret="";
960		for(var i=0; i < frmElem.options.length; i++)
961			{
962			if (frmElem.options[i].selected)
963				strret+=","+frmElem.options[i].text;
964			}
965		if (strret.length > 0)
966			strret=strret.substring(1);
967		return strret;
968	}
969	else
970		return "";
971}
972function GetCBSelectedValues(frm) {
973	if (frm==null)
974		return;
975	var value=new Object();
976	value.strList="";
977	value.fAllChecked=true;
978	for (var i=0;i<frm.elements.length;i++)
979		{
980		var e=frm.elements[i];
981		if (e.type=="checkbox" && !e.disabled )
982			{
983			if (e.checked)
984				{
985				if (value.strList !="")
986					value.strList+=",";
987				value.strList+=e.value;
988				}
989			else
990				value.fAllChecked=false;
991			}
992		}
993	return value;
994}
995var fNewDoc=false;
996var fNewDoc2=false;
997var fNewDoc3=false;
998var L_EditDocumentProgIDError_Text="'Edit Document' requires a Windows SharePoint Services-compatible application and Microsoft Internet Explorer 6.0 or greater.";
999var L_EditDocumentRuntimeError_Text="The document could not be opened for editing.  A Windows SharePoint Services compatible application could not be found to edit the document.";
1000function editDocumentWithProgID(strDocument, varProgID)
1001{
1002	if (fNewDoc)
1003	{
1004		if (strDocument.charAt(0)=="/" || strDocument.substr(0,3).toLowerCase()=="%2f")
1005			strDocument=document.location.protocol+"//"+document.location.host+strDocument;
1006		if ((!fNewDoc2) && (!fNewDoc3))
1007		{
1008			if(!EditDocumentButton.EditDocument(strDocument, varProgID))
1009				alert(L_EditDocumentRuntimeError_Text);
1010		}
1011		else
1012		{
1013			if(!EditDocumentButton.EditDocument2(window, strDocument, varProgID))
1014				alert(L_EditDocumentRuntimeError_Text);
1015		}
1016	}
1017	else
1018	{
1019		alert(L_EditDocumentProgIDError_Text);
1020	}
1021}
1022function editDocumentWithProgID2(strDocument, varProgID, varEditor, bCheckout,strhttpRoot, strCheckouttolocal)
1023{
1024	var errorCode=editDocumentWithProgIDNoUI(strDocument, varProgID, varEditor, bCheckout,strhttpRoot, strCheckouttolocal);
1025	if (errorCode==1)
1026	{
1027		alert(L_EditDocumentRuntimeError_Text);
1028		window.onfocus=RefreshOnNextFocus;
1029	}
1030	else if (errorCode==2)
1031		alert(L_EditDocumentProgIDError_Text);
1032}
1033function editDocumentWithProgIDNoUI(strDocument, varProgID, varEditor, bCheckout,strhttpRoot, strCheckouttolocal)
1034{
1035	var objEditor;
1036	var fRet;
1037	var fUseLocalCopy=false;
1038	varEditor=varEditor.replace(/(?:\.\d+)$/, '');
1039	if (strDocument.charAt(0)=="/" || strDocument.substr(0,3).toLowerCase()=="%2f")
1040		strDocument=document.location.protocol+"//"+document.location.host+strDocument;
1041	var strextension=SzExtension(unescapeProperly(strDocument));
1042	if (FSupportCheckoutToLocal(strextension))
1043	{
1044		try
1045		{
1046			objEditor=new ActiveXObject(varEditor+".3");
1047			if (objEditor !=null )
1048			{
1049				if (bCheckout=="1")
1050				{
1051					if (!objEditor.CheckoutDocumentPrompt(strDocument, true, varProgID))
1052					return 1;
1053				}
1054				else
1055				{
1056					if (strCheckouttolocal=="1")
1057					fUseLocalCopy=true;
1058					if (!objEditor.EditDocument3(window, strDocument, fUseLocalCopy, varProgID))
1059					return 1;
1060				}
1061				var  fRefreshOnNextFocus=false;
1062				fRefreshOnNextFocus=objEditor.PromptedOnLastOpen();
1063				if (fRefreshOnNextFocus)
1064				{
1065					window.onfocus=RefreshOnNextFocus;
1066				}
1067				else
1068				{
1069					SetWindowRefreshOnFocus();
1070				}
1071				return;
1072			}
1073		}
1074		catch(e)
1075		{
1076		}
1077	}
1078	if (bCheckout=="1")
1079	{
1080		if (confirm(L_ConfirmCheckout_Text))
1081			NavigateToCheckinAspx(strhttpRoot,"FileName="+escapeProperly(unescapeProperly(strDocument))+"&Checkout=true");
1082		else
1083			return;
1084	}
1085	try
1086	{
1087		objEditor=new ActiveXObject(varEditor+".2");
1088		if (!objEditor.EditDocument2(window, strDocument, varProgID))
1089			return 1;
1090		if(varEditor=="SharePoint.OpenXMLDocuments")
1091		{
1092			SetWindowRefreshOnFocus();
1093		}
1094		else
1095		{
1096			window.onfocus=RefreshOnNextFocus;
1097		}
1098		return;
1099	}
1100	catch (e)
1101	{
1102	}
1103	try
1104	{
1105		objEditor=new ActiveXObject(varEditor+".1");
1106		window.onfocus=null;
1107		if (SzExtension(strDocument)=="ppt" && varProgID=="")
1108			varProgID="PowerPoint.Slide";
1109		if (!objEditor.EditDocument(strDocument, varProgID))
1110			return 1;
1111		SetWindowRefreshOnFocus();
1112		return;
1113	}
1114	catch (e)
1115	{
1116		return 2;
1117	}
1118}
1119function RefreshOnNextFocus()
1120{
1121	SetWindowRefreshOnFocus();
1122}
1123function createNewDocumentWithProgID2(strTemplate, strSaveLocation, strProgID, strProgID2, bXMLForm)
1124{
1125	if (!createNewDocumentWithProgIDCore(strTemplate, strSaveLocation, strProgID, bXMLForm, false))
1126	{
1127		createNewDocumentWithProgIDCore(strTemplate, strSaveLocation, strProgID2, bXMLForm, true);
1128	}
1129}
1130function createNewDocumentWithProgID(strTemplate, strSaveLocation, strProgID, bXMLForm)
1131{
1132	createNewDocumentWithProgIDCore(strTemplate, strSaveLocation, strProgID, bXMLForm, true);
1133}
1134function createNewDocumentWithProgIDCore(strTemplate, strSaveLocation, strProgID, bXMLForm, bWarning)
1135{
1136	var objEditor;
1137	var L_NewDocumentRuntimeError_Text;
1138	var L_NewDocumentError_Text;
1139	var fRefreshOnNextFocus=false;
1140	if (bXMLForm)
1141	{
1142		var L_NewDocumentRuntimeError_Text=L_NewFormLibTb1_Text;
1143		var L_NewDocumentError_Text=L_NewFormLibTb2_Text;
1144	}
1145	else
1146	{
1147		var L_NewDocumentRuntimeError_Text=L_NewDocLibTb1_Text;
1148		var L_NewDocumentError_Text=L_NewDocLibTb2_Text;
1149	}
1150	try
1151	{
1152		objEditor=new ActiveXObject(strProgID+".2");
1153		if (!objEditor.CreateNewDocument2(window, strTemplate, strSaveLocation))
1154			alert(L_NewDocumentRuntimeError_Text);
1155		fRefreshOnNextFocus=objEditor.PromptedOnLastOpen();
1156		if (fRefreshOnNextFocus)
1157		{
1158			window.onfocus=RefreshOnNextFocus;
1159		}
1160		else
1161		{
1162			SetWindowRefreshOnFocus();
1163		}
1164		return true;
1165	}
1166	catch (e)
1167	{
1168	}
1169	try
1170	{
1171		objEditor=new ActiveXObject(strProgID+".1");
1172		window.onfocus=null;
1173		if (!objEditor.CreateNewDocument(strTemplate, strSaveLocation))
1174			alert(L_NewDocumentRuntimeError_Text);
1175		SetWindowRefreshOnFocus();
1176		return true;
1177	}
1178	catch (e)
1179	{
1180		if (bWarning)
1181			alert(L_NewDocumentError_Text);
1182	}
1183}
1184function createNewDocumentWithRedirect(strTemplate, strSaveLocation, strProgID, bXMLForm, strRedirectUrl, defaultItemOpen)
1185{
1186	if (IsClientAppInstalled(strProgID) && defaultItemOpen !=1)
1187	{
1188		var strIndependentProgId=strProgID.replace(/(?:\.\d+)$/, '');
1189		createNewDocumentWithProgID(strTemplate, strSaveLocation, strIndependentProgId, bXMLForm);
1190	}
1191	else
1192	{
1193		STSNavigate(strRedirectUrl+			"&SaveLocation="+makeAbsUrl(escapeProperly(strSaveLocation))+			"&Source="+GetSource()+			"&DefaultItemOpen="+
1193defaultItemOpen);
1194	}
1195}
1196if (typeof(ExpandBody)=="undefined")
1197{
1198	function ExpandBody(guid, anchor)
1199	{
1200		var frm=document.forms[MSOWebPartPageFormName];
1201		frm.CAML_Expand.value=frm.CAML_Expand.value.concat(guid);
1202		frm.action=frm.action.concat("#"+anchor);
1203		frm.submit();
1204		return false;
1205	}
1206}
1207if (typeof(CollapseBody)=="undefined")
1208{
1209	function CollapseBody(guid, anchor)
1210	{
1211		var frm=document.forms[MSOWebPartPageFormName];
1212		var reg=new RegExp("\{", "g");
1213		guid=guid.replace(reg, "\\\{");
1214		reg=new RegExp("\}", "g");
1215		guid=guid.replace(reg, "\\\}");
1216		reg=new RegExp(guid, "g");
1217		frm.CAML_Expand.value=frm.CAML_Expand.value.replace(reg, "");
1218		frm.CAML_ShowOriginalEmailBody.value=			frm.CAML_ShowOriginalEmailBody.value.replace(reg, "");
1219		frm.action=frm.action.concat("#"+anchor);
1220		frm.submit();
1221		return false;
1222	}
1223}
1224if (typeof(ShowQuotedText)=="undefined")
1225{
1226	function ShowQuotedText(guid, anchor)
1227	{
1228		var frm=document.forms[MSOWebPartPageFormName];
1229		frm.CAML_ShowOriginalEmailBody.value=			frm.CAML_ShowOriginalEmailBody.value.concat(guid);
1230		if (frm.action.indexOf("#") > 0)
1231		{
1232			frm.action=frm.action.substr(0, frm.action.indexOf("#"));
1233		}
1234		frm.action=frm.action.concat("#"+anchor);
1235		frm.submit();
1236		return false;
1237	}
1238}
1239if (typeof(HideQuotedText)=="undefined")
1240{
1241	function HideQuotedText(guid, anchor)
1242	{
1243		var frm=document.forms[MSOWebPartPageFormName];
1244		var reg=new RegExp("\{", "g");
1245		guid=guid.replace(reg, "\\\{");
1246		reg=new RegExp("\}", "g");
1247		guid=guid.replace(reg, "\\\}");
1248		reg=new RegExp(guid, "g");
1249		frm.CAML_ShowOriginalEmailBody.value=			frm.CAML_ShowOriginalEmailBody.value.replace(reg, "");
1250		if (frm.action.indexOf("#") > 0)
1251		{
1252			frm.action=frm.action.substr(0, frm.action.indexOf("#"));
1253		}
1254		frm.action=frm.action.concat("#"+anchor);
1255		frm.submit();
1256		return false;
1257	}
1258}
1259function LRUCache()
1260{
1261	this.state=new Array();
1262	this.ageStack=new Array();
1263	this.count=0;
1264}
1265function LRUCache_Add(cache, itemName)
1266{
1267	if (!cache)
1268	{
1269		return;
1270	}
1271	oldAge=cache.state[itemName];
1272	if (oldAge !=null)
1273	{
1274		cache.ageStack[oldAge]=null;
1275	}
1276	else
1277	{
1278		cache.count++;
1279	}
1280	age=cache.ageStack.length;
1281	cache.state[itemName]=age;
1282	cache.ageStack.push(itemName);
1283}
1284function LRUCache_Remove(cache, itemName)
1285{
1286	if (!cache)
1287		return;
1288	age=cache.state[itemName];
1289	if (age !=null)
1290	{
1291		cache.ageStack[age]=null;
1292		cache.state[itemName]=null;
1293		cache.count--;
1294	}
1295	else
1296	{
1297	}
1298}
1299function AddGroupToCookie(groupName)
1300{
1301	var webPartID=ExpGroupFetchWebPartID(groupName);
1302	if (webPartID==null)
1303		return;
1304	LRUCache_Add(g_ExpGroupWPState, webPartID);
1305	if (g_ExpGroupTable[webPartID]==null)
1306	{
1307		g_ExpGroupTable[webPartID]=new LRUCache();
1308	}
1309	var groupString=ExpGroupFetchGroupString(groupName);
1310	if (groupString==null)
1311		return;
1312	LRUCache_Add(g_ExpGroupTable[webPartID], groupString);
1313	ExpGroupRenderCookie();
1314}
1315function RemoveGroupFromCookie(groupName)
1316{
1317	var webPartID=ExpGroupFetchWebPartID(groupName);
1318	if (webPartID==null)
1319		return;
1320	if (g_ExpGroupTable[webPartID]==null)
1321		return;
1322	LRUCache_Add(g_ExpGroupWPState, webPartID);
1323	var groupString=ExpGroupFetchGroupString(groupName);
1324	if (groupString==null)
1325		return;
1326	var aGroupString;
1327	for (aGroupString in g_ExpGroupTable[webPartID].state)
1328	{
1329		if (g_ExpGroupTable[webPartID].state[aGroupString] !=null &&
1330			aGroupString.substring(0,groupString.length)==groupString)
1331		{
1332			LRUCache_Remove(g_ExpGroupTable[webPartID], aGroupString);
1333		}
1334	}
1335	ExpGroupRenderCookie();
1336}
1337function ExpGroupRenderCookie()
1338{
1339	if (!g_ExpGroupWPState)
1340		return;
1341	var newWPString=ExpGroupWPListName+"=";
1342	var numWPRendered=0;
1343	var ix;
1344	for (ix=g_ExpGroupWPState.ageStack.length - 1; ix >=0; ix--)
1345	{
1346		if (g_ExpGroupWPState.ageStack[ix] !=null)
1347		{
1348			var webPartID=g_ExpGroupWPState.ageStack[ix];
1349			if (numWPRendered==ExpGroupMaxWP)
1350			{
1351				DeleteCookie(ExpGroupCookiePrefix+webPartID);
1352				break;
1353			}
1354			else if (g_ExpGroupTable[webPartID]==null)
1355			{
1356				numWPRendered++;
1357				if (numWPRendered > 1)
1358					newWPString+=escape(ExpGroupCookieDelimiter);
1359				newWPString+=escape(webPartID);
1360			}
1361			else if (g_ExpGroupTable[webPartID].count==0)
1362			{
1363				DeleteCookie(ExpGroupCookiePrefix+webPartID);
1364			}
1365			else if (numWPRendered < ExpGroupMaxWP)
1366			{
1367				numWPRendered++;
1368				ExpGroupRenderCookieForWebPart(webPartID);
1369				if (numWPRendered > 1)
1370					newWPString+=escape(ExpGroupCookieDelimiter);
1371				newWPString+=escape(webPartID);
1372			}
1373		}
1374	}
1375	if (numWPRendered==0)
1376	{
1377		DeleteCookie(ExpGroupWPListName);
1378	}
1379	else
1380	{
1381		document.cookie=newWPString;
1382	}
1383}
1384function ExpGroupRenderCookieForWebPart(webPartID)
1385{
1386	if (!g_ExpGroupTable[webPartID].ageStack)
1387		return;
1388	var newCookieString=ExpGroupCookiePrefix+webPartID+"=";
1389	var bFirst=true;
1390	var ix;
1391	for (ix=g_ExpGroupTable[webPartID].ageStack.length - 1; ix >=0; ix--)
1392	{
1393		if (g_ExpGroupTable[webPartID].ageStack[ix] !=null)
1394		{
1395			var groupString=g_ExpGroupTable[webPartID].ageStack[ix];
1396			var newPortion="";
1397			if (!bFirst)
1398				newPortion+=escape(ExpGroupCookieDelimiter);
1399			newPortion+=escape(groupString);
1400			if (newCookieString.length+newPortion.length <=ExpGroupMaxCookieLength)
1401			{
1402				newCookieString+=newPortion;
1403				bFirst=false;
1404			}
1405		}
1406	}
1407	document.cookie=newCookieString+";";
1408}
1409function ExpGroupOnPageLoad()
1410{
1411	flag=document.getElementById("GroupByColFlag");
1412	if (flag !=null)
1413	{
1414		g_ExpGroupNeedsState=true;
1415		ExpGroupParseCookie();
1416	}
1417}
1418function ExpGroupParseCookie()
1419{
1420	var webPartListString=GetCookie(ExpGroupWPListName);
1421	if (webPartListString==null)
1422		return;
1423	g_ExpGroupParseStage=true;
1424	var webPartList=webPartListString.split(ExpGroupCookieDelimiter);
1425	var ix;
1426	for (ix=webPartList.length - 1; ix >=0; ix--)
1427	{
1428		var webPartID=webPartList[ix];
1429		LRUCache_Add(g_ExpGroupWPState, webPartID);
1430		if (g_ExpGroupTable[webPartID]==null)
1431		{
1432			if (document.getElementById("GroupByCol"+webPartID) !=null)
1433				ExpGroupParseCookieForWebPart(webPartID);
1434		}
1435	}
1436	g_ExpGroupParseStage=false;
1437	if (g_ExpGroupQueue.length > 0)
1438	{
1439		ExpGroupFetchData(g_ExpGroupQueue.shift());
1440	}
1441}
1442function ExpGroupParseCookieForWebPart(webPartID)
1443{
1444	var groupListString=GetCookie(ExpGroupCookiePrefix+webPartID);
1445	if (groupListString==null)
1446		return;
1447	var groupList=groupListString.split(ExpGroupCookieDelimiter);
1448	var ix;
1449	g_ExpGroupTable[webPartID]=new LRUCache();
1450	for (ix=groupList.length - 1; ix >=0; ix--)
1451	{
1452		var groupString=groupList[ix];
1453		LRUCache_Add(g_ExpGroupTable[webPartID], groupString);
1454	}
1455	var loadedGroups=new Array();
1456	var viewTable=document.getElementById("GroupByCol"+webPartID).parentNode;
1457	tbodyTags=viewTable.getElementsByTagName("TBODY");
1458	for (ix=0; ix < tbodyTags.length; ix++)
1459	{
1460		var groupString=tbodyTags[ix].getAttribute("groupString");
1461		if (groupString !=null)
1462		{
1463			var tbodyId=tbodyTags[ix].id;
1464			if (tbodyId==null)
1465				continue;
1466			var groupName=tbodyId.substring(4, tbodyId.length);
1467			if (g_ExpGroupTable[webPartID].state[groupString] !=null &&
1468				loadedGroups[groupName]==null)
1469			{
1470				ExpCollGroup(groupName, "img_"+groupName);
1471				loadedGroups[groupName]=true;
1472				tbody=document.getElementById("tbod"+groupName+"_");
1473				if (tbody !=null)
1474				{
1475					isLoaded=tbody.getAttribute("isLoaded");
1476					if (isLoaded=="false")
1477						g_ExpGroupQueue.push(groupName);
1478				}
1479			}
1480		}
1481	}
1482	var aGroupName;
1483	for (aGroupName in loadedGroups)
1484	{
1485		var index=aGroupName.indexOf("_");
1486		if (index !=aGroupName.length - 1 && index !=-1)
1487		{
1488			var parentName=aGroupName.substring(0, index+1);
1489			if (loadedGroups[parentName]==null)
1490			{
1491				var parentString=ExpGroupFetchGroupString(parentName);
1492				if (parentString !=null)
1493				{
1494					LRUCache_Add(g_ExpGroupWPState, parentString);
1495					ExpCollGroup(parentName, "img_"+parentName);
1496					loadedGroups[parentString]=true;
1497				}
1498				else
1499				{
1500				}
1501			}
1502		}
1503	}
1504}
1505function ExpGroupBy(formObj)
1506{
1507	if ((browseris.w3c) && (!browseris.ie)) {
1508		document.all=document.getElementsByTagName("*");
1509	}
1510	docElts=document.all;
1511	numElts=docElts.length;
1512	images=formObj.getElementsByTagName("IMG");
1513	img=images[0];
1514	srcPath=img.src;
1515	index=srcPath.lastIndexOf("/");
1516	imgName=srcPath.slice(index+1);
1517	var displayStr="auto";
1518	if (imgName=='plus.gif')
1519	{
1520		displayStr="";
1521		img.src='/_layouts/images/minus.gif';
1522	}
1523	else
1524	{
1525		displayStr="none";
1526		img.src='/_layouts/images/plus.gif';
1527	}
1528	oldName=img.name;
1529	img.name=img.alt;
1530	img.alt=oldName;
1531	spanNode=img;
1532	while(spanNode !=null)
1533	{
1534		spanNode=spanNode.parentNode;
1535		if (spanNode !=null &&
1536			spanNode.id !=null &&
1537			spanNode.id.length > 5 &&
1538			spanNode.id.substr(0, 5)=="group")
1539			break;
1540	}
1541	parentNode=spanNode;
1542	while(parentNode !=null)
1543	{
1544		parentNode=parentNode.parentNode;
1545		if (parentNode !=null &&
1546			parentNode.tagName=="TABLE")
1547			break;
1548	}
1549	lastNode=null;
1550	if (parentNode !=null)
1551	{
1552		lastNode=parentNode.lastChild;
1553		if (lastNode !=null && lastNode.tagName=="TBODY")
1554			lastNode=lastNode.lastChild;
1555		if (lastNode !=null && lastNode.tagName=="TR" && lastNode.lastChild !=null)
1556			lastNode=lastNode.lastChild;
1557	}
1558	for(var i=0;i<numElts;i++)
1559	{
1560		var childObj=docElts.item(i);
1561		if (childObj==spanNode)
1562			break;
1563	}
1564	ID=spanNode.id.slice(5);
1565	displayStyle=displayStr;
1566	for(var j=i+1; j<numElts; j++)
1567	{
1568		var childObj=docElts.item(j);
1569		if (childObj.id.length > 5 &&
1570			childObj.id.substr(0, 5)=="group")
1571		{
1572			curID=childObj.id.slice(5);
1573			if (curID <=ID)
1574				return;
1575		}
1576		parentNode=childObj;
1577		while(parentNode !=null)
1578		{
1579			parentNode=parentNode.parentNode;
1580			if (parentNode==spanNode)
1581				break;
1582		}
1583		if (parentNode==spanNode)
1584			continue;
1585		if (childObj.id !=null && childObj.id.substring(0, 5)=="group")
1586			displayStr=displayStyle;
1587		if (childObj.id !=null && childObj.id.substring(0, 8)=="footer"+ID)
1588			displayStr=displayStyle;
1589		if (displayStyle !="none" &&
1590			childObj !=img &&
1591			childObj.tagName=="IMG" &&
1592			childObj.src !=null)
1593		{
1594			if (childObj.src.slice(childObj.src.length - 25)=='/_layouts/images/plus.gif')
1595			{
1596				displayStr="none";
1597			}
1598			else if (childObj.src.slice(childObj.src.length - 26)=='/_layouts/images/minus.gif')
1599			{
1600				displayStr="";
1601			}
1602		}
1603		if (childObj.tagName==spanNode.tagName &&
1604			childObj.id !="footer")
1605		{
1606			childObj.style.display=displayStr;
1607		}
1608		if ((childObj.tagName=="TABLE" && lastNode==null) || childObj==lastNode)
1609			break;
1610	}
1611}
1612function SzExtension(szHref)
1613{
1614	var sz=new String(szHref);
1615	var re=/^.*\.([^\.]*)$/;
1616	return sz.replace(re, "$1").toLowerCase();
1617}
1618function SzServer(szHref)
1619{
1620	var sz=new String(szHref);
1621	var re=/^([^:]*):\/\/([^\/]*).*$/;
1622	return sz.replace(re, "$1://$2");
1623}
1624var v_stsOpenDoc=null;
1625var v_strStsOpenDoc=null;
1626function StsOpenEnsureEx(szProgId)
1627{
1628	if (v_stsOpenDoc==null || v_strStsOpenDoc !=szProgId)
1629	{
1630//@cc_on
1631//@if (@_jscript_version >=5)
1632//@            try
1633//@            {
1634//@                v_stsOpenDoc=new ActiveXObject(szProgId);
1635//@                v_strStsOpenDoc=szProgId;
1636//@            } catch(e)
1637//@            {
1638//@                v_stsOpenDoc=null;
1639//@                v_strStsOpenDoc=null;
1640//@            };
1641//@else
1642//@end
1643	}
1644	return v_stsOpenDoc;
1645}
1646function DispDocItem(ele,strProgId)
1647{
1648	return DispDocItemEx(ele,'FALSE','FALSE','FALSE',strProgId);
1649}
1650var L_OpenDocumentLocalError_Text="This document was being edited offline, but there is no application configured to open the document from SharePoint.  The document can only be opened for reading.";
1651function DispDocItemEx(ele, fTransformServiceOn, fShouldTransformExtension, fTransformHandleUrl, strProgId)
1652{
1653	itemTable=FindSTSMenuTable(ele, "CTXName");
1654	if (!browseris.ie || !browseris.win32)
1655	{
1656		if (browseris.ie)
1657			event.cancelBubble=false;
1658		return true;
1659	}
1660	var stsOpen;
1661	var szHref;
1662	var szExt;
1663	var fRet=true;
1664	var szFileType=itemTable !=null ? GetAttributeFromItemTable(itemTable, "Ext", "FileType") : "";
1665	var szAppId="";
1666	var tblFileDlg=document.getElementById("FileDialogViewTable");
1667	if (tblFileDlg !=null)
1668	{
1669		if (browseris.ie)
1670		{
1671			event.cancelBubble=false;
1672			event.returnValue=false;
1673		}
1674		return true;
1675	}
1676	szHref=itemTable !=null ? GetAttributeFromItemTable(itemTable, "Url", "ServerUrl") : "";
1677	if (szHref==null || szHref=="")
1678		szHref=ele.href;
1679	else
1680		szHref=SzServer(ele.href)+szHref;
1681	szExt=SzExtension(szHref);
1682	if ((currentItemProgId==null) && (itemTable!=null))
1683		currentItemProgId=itemTable.getAttribute("HTMLType");
1684	if (currentItemProgId !=null)
1685		szAppId=currentItemProgId;
1686	if (FDefaultOpenForReadOnly(szExt))
1687	{
1688	   if (strProgId.indexOf("SharePoint.OpenDocuments") >=0)
1689			strProgId="SharePoint.OpenDocuments.3";
1690	}
1691	else if (!FSupportCheckoutToLocal(szExt))
1692	{
1693		strProgId="";
1694	}
1695	if ((currentItemCheckedOutUserId==null) && (itemTable!=null))
1696		currentItemCheckedOutUserId=itemTable.COUId;
1697	if ((currentItemCheckedoutToLocal==null) && (itemTable!=null))
1698		currentItemCheckedoutToLocal=GetAttributeFromItemTable(itemTable, "COut", "IsCheckedoutToLocal ");
1699	if( ((currentItemCheckedOutUserId !=null) &&
1700		(currentItemCheckedOutUserId !="") &&
1701		(currentItemCheckedOutUserId==ctx.CurrentUserId ) &&
1702		(strProgId==""  || ((strProgId.indexOf("SharePoint.OpenDocuments")) >=0)) &&
1703		FSupportCheckoutToLocal(szExt))||
1704		(strProgId=="SharePoint.OpenDocuments"))
1705	{
1706		strProgId="SharePoint.OpenDocuments.3";
1707	}
1708	var stsopenVersion=2;
1709	if(strProgId !='' && HasRights(0x10, 0x0))
1710	{
1711		if ((strProgId.indexOf(".3")) >=0)
1712			stsopenVersion=3;
1713		stsOpen=StsOpenEnsureEx(strProgId);
1714		if (stsOpen==null && stsopenVersion==3)
1715		{
1716			strProgId=strProgId.replace(".3",".2");
1717			stsOpen=StsOpenEnsureEx(strProgId);
1718			stsopenVersion=2;
1719		}
1720	}
1721	if (stsOpen !=null)
1722	{
1723		if (stsopenVersion==2 ||
1724			((itemTable==null) && (currentItemCheckedOutUserId==null))||
1725			(ctx.isVersions==1 && (itemTable==null || itemTable.isMostCur=="0")))
1726		{
1727			try
1728			{
1729				if ((currentItemCheckedOutUserId !=null) &&
1730					(currentItemCheckedOutUserId !="") &&
1731					(currentItemCheckedOutUserId==ctx.CurrentUserId ||
1732					ctx.CurrentUserId==null ))
1733				{
1734					if (currentItemCheckedoutToLocal=='1')
1735					{
1736						 alert(L_OpenDocumentLocalError_Text);
1737						 fRet=false;
1738					}
1739					else
1740						fRet=stsOpen.EditDocument2(window, szHref, szAppId);
1741				}
1742				else
1743				{
1744					fRet=stsOpen.ViewDocument2(window, szHref, szAppId);
1745				}
1746			}
1747			catch(e)
1748			{
1749				fRet=false;
1750			}
1751			if (fRet)
1752				window.onfocus=RefreshOnNextFocus;
1753		}
1754		else
1755		{
1756			var iOpenFlag=0;
1757			if (currentItemCheckedOutUserId !="")
1758			{
1759				if ((currentItemCheckedOutUserId !=ctx.CurrentUserId) && ( ctx.CurrentUserId !=null))
1760					iOpenFlag=1;
1761				else if (currentItemCheckedoutToLocal==null ||
1762					currentItemCheckedoutToLocal !='1')
1763					iOpenFlag=2;
1764				else
1765					iOpenFlag=4;
1766			}
1767			else if (!HasRights(0x0, 0x4) || FDefaultOpenForReadOnly(szExt))
1768				iOpenFlag=1;
1769			else if (ctx.isForceCheckout==true)
1770				iOpenFlag=3;
1771			try
1772			{
1773				fRet=stsOpen.ViewDocument3(window, szHref,iOpenFlag, szAppId);
1774			}
1775			catch(e)
1776			{
1777				fRet=false;
1778			}
1779			if (fRet)
1780			{
1781				var fRefreshOnNextFocus=stsOpen.PromptedOnLastOpen();
1782				if (fRefreshOnNextFocus)
1783					window.onfocus=RefreshOnNextFocus;
1784				else
1785					SetWindowRefreshOnFocus();
1786			}
1787		}
1788	}
1789	else if (currentItemCheckedoutToLocal=='1')
1790	{
1791		 alert(L_OpenDocumentLocalError_Text);
1792	}
1793	if (stsOpen==null || !fRet)
1794	{
1795		if (fTransformServiceOn=='TRUE' &&
1796			fShouldTransformExtension=='TRUE' &&
1797			fTransformHandleUrl=='TRUE')
1798		{
1799			if (itemTable==null)
1800				return fRet;
1801			if (browseris.ie)
1802			{
1803				event.cancelBubble=true;
1804				event.returnValue=false;
1805			}
1806			var getHttpRoot=new Function("return "+itemTable.getAttribute("CTXName")+".HttpRoot;");
1807			GoToPage(getHttpRoot()+"/_layouts"+				"/htmltrverify.aspx?doc="+escapeProperly(szHref));
1808		}
1809		return;
1810	}
1811	stsOpen=null;
1812	if (browseris.ie)
1813	{
1814		event.cancelBubble=true;
1815		event.returnValue=false;
1816	}
1817	return fRet;
1818}
1819function DispDocItemEx2(ele, objEvent, fTransformServiceOn, fShouldTransformExtension,
1820	fTransformHandleUrl, strHtmlTrProgId, iDefaultItemOpen, strProgId, strServerFileRedirect)
1821{
1822	var fRedirect=false;
1823	var fIsServerFile=strServerFileRedirect !=null && strServerFileRedirect !="";
1824	var fIsClientAppInstalled=IsClientAppInstalled(strProgId) && HasRights(0x10, 0x0);
1825	if (fIsServerFile)
1826	{
1827		if (iDefaultItemOpen==1 || !fIsClientAppInstalled)
1828		{
1829			STSNavigate(strServerFileRedirect+"&Source="+GetSource()+"&DefaultItemOpen="+iDefaultItemOpen);
1830			objEvent.cancelBubble=true;
1831			objEvent.returnValue=false;
1832			return false;
1833		}
1834		else if (fIsClientAppInstalled)
1835		{
1836			if (strProgId=="" || strProgId.indexOf("SharePoint.OpenDocuments") >=0)
1837			{
1838				return DispDocItemEx(ele, fTransformServiceOn, fShouldTransformExtension, fTransformHandleUrl, strHtmlTrProgId);
1839			}
1840			else
1841			{
1842				if (!ViewDoc(ele.href, strProgId))
1843				{
1844					var errorCode=editDocumentWithProgIDNoUI(ele.href, currentItemProgId, strProgId, false, ctx.HttpRoot, "0");
1845					if ((errorCode==1) || (errorCode==2))
1846					{
1847						STSNavigate(strServerFileRedirect+"&Source="+GetSource());
1848					}
1849				}
1850				objEvent.cancelBubble=true;
1851				objEvent.returnValue=false;
1852				return false;
1853			}
1854		}
1855	}
1856	return DispDocItemEx(ele, fTransformServiceOn, fShouldTransformExtension, fTransformHandleUrl, strProgId);
1857}
1858function DispDocItemExWithOutContext(ele, objEvent, fTransformServiceOn, fShouldTransformExtension,
1859	fTransformHandleUrl, strHtmlTrProgId, iDefaultItemOpen, strProgId, strHtmlType, strServerFileRedirect,
1860	strCheckoutUser, strCurrentUser, strRequireCheckout, strCheckedoutTolocal, strPermmask)
1861{
1862	DispEx(ele, objEvent, fTransformServiceOn, fShouldTransformExtension,
1863			fTransformHandleUrl, strHtmlTrProgId, iDefaultItemOpen, strProgId, strHtmlType, strServerFileRedirect,
1864			strCheckoutUser, strCurrentUser, strRequireCheckout, strCheckedoutTolocal, strPermmask);
1865}
1866function DispEx(ele, objEvent, fTransformServiceOn, fShouldTransformExtension,
1867	fTransformHandleUrl, strHtmlTrProgId, iDefaultItemOpen, strProgId, strHtmlType, strServerFileRedirect,
1868	strCheckoutUser, strCurrentUser, strRequireCheckout, strCheckedoutTolocal, strPermmask)
1869{
1870	var tblFileDlg=document.getElementById("FileDialogViewTable");
1871	if (tblFileDlg !=null)
1872	{
1873		objEvent.cancelBubble=false;
1874		objEvent.returnValue=false;
1875		return true;
1876	}
1877	if (typeof(ctx)=="undefined" || ctx==null)
1878		ctx=new ContextInfo();
1879	ctx.CurrentUserId=strCurrentUser;
1880	if (strRequireCheckout=='1')
1881		ctx.isForceCheckout=true;
1882	else
1883		ctx.isForceCheckout=false;
1884	currentItemCheckedOutUserId=strCheckoutUser;
1885	currentItemCheckedoutToLocal=strCheckedoutTolocal;
1886	currentItemProgId=strHtmlType;
1887	if (strPermmask !=null && strPermmask !='')
1888		SetCurrentPermMaskFromString(strPermmask, null)
1889	objEvent.cancelBubble=true;
1890	if (strServerFileRedirect !=null && strServerFileRedirect !='')
1891		strServerFileRedirect=strServerFileRedirect.substring(1);
1892	return  DispDocItemEx2(ele, objEvent, fTransformServiceOn, fShouldTransformExtension,
1893		fTransformHandleUrl, strHtmlTrProgId, iDefaultItemOpen, strProgId, strServerFileRedirect);
1894}
1895function IsClientAppInstalled(strProgId)
1896{
1897	var stsOpen=null;
1898	if(strProgId !='')
1899	{
1900		stsOpen=StsOpenEnsureEx(strProgId);
1901	}
1902	return stsOpen !=null;
1903}
1904function ViewDoc(url,strProgId)
1905{
1906	var stsOpen=StsOpenEnsureEx(strProgId);
1907	var fRet=false;
1908	if (stsOpen !=null)
1909	{
1910		try
1911		{
1912			fRet=stsOpen.ViewDocument2(window, url);
1913		}
1914		catch(e)
1915		{
1916			fRet=false;
1917		}
1918	}
1919	return fRet;
1920}
1921function PortalPinToMyPage(eForm, portalUrl, instanceID)
1922{
1923	eForm.action=portalUrl+'_vti_bin/portalapi.aspx?Cmd=PinToMyPage';
1924	eForm.ReturnUrl.value=window.location.href;
1925	eForm.ListViewUrl.value=MakeMtgInstanceUrl(eForm.ListViewUrl.value, instanceID);
1926	eForm.submit();
1927}
1928function PortalPinToMyPage(eForm, portalUrl, instanceId, listTitle, listDescription, listViewUrl, baseType, serverTemplate)
1929{
1930	eForm.action=portalUrl+'_vti_bin/portalapi.aspx?Cmd=PinToMyPage';
1931	SetFieldValue(eForm,"ReturnUrl",window.location.href);
1932	SetFieldValue(eForm,"ListViewUrl",MakeMtgInstanceUrl(listViewUrl, instanceId));
1933	SetFieldValue(eForm,"ListTitle",listTitle);
1934	SetFieldValue(eForm,"ListDescription",listDescription);
1935	SetFieldValue(eForm,"BaseType",baseType);
1936	SetFieldValue(eForm,"ServerTemplate",serverTemplate);
1937	eForm.submit();
1938}
1939function SetFieldValue(eForm, fieldName, value)
1940{
1941	var field=eForm[fieldName];
1942	if (field==null)
1943	{
1944	field=document.createElement("INPUT");
1945	field.setAttribute("type","hidden");
1946		field.setAttribute("name",fieldName);
1947		eForm.appendChild(field);
1948	}
1949	field.value=value;
1950}
1951function StURLSetVar2(stURL, stVar, stValue)
1952{
1953	var stNewSet=stVar+"="+stValue;
1954	var ichHash=stURL.indexOf("#");
1955	var hashParam;
1956	if (ichHash !=-1)
1957	{
1958		hashParam=stURL.substring(ichHash, stURL.length);
1959		stURL=stURL.substring(0, ichHash);
1960	}
1961	var ichQ=stURL.indexOf("?");
1962	if (ichQ !=-1)
1963	{
1964		var ich=stURL.indexOf("?"+stVar+"=", ichQ);
1965		if (ich==-1)
1966		{
1967			ich=stURL.indexOf("&"+stVar+"=", ichQ);
1968			if (ich !=-1)
1969				stNewSet="&"+stNewSet;
1970		}
1971		else
1972		{
1973			stNewSet="?"+stNewSet;
1974		}
1975		if (ich !=-1)
1976		{
1977			var re=new RegExp("[&?]"+stVar+"=[^&]*", "");
1978			stURL=stURL.replace(re, stNewSet);
1979		}
1980		else
1981		{
1982			stURL=stURL+"&"+stNewSet;
1983		}
1984	}
1985	else
1986	{
1987		stURL=stURL+"?"+stNewSet;
1988	}
1989	if (hashParam !=null && hashParam.length > 0)
1990		stURL=stURL+hashParam;
1991	return stURL;
1992}
1993function RemoveQueryParameterFromUrl(stURL, stParameterName)
1994{
1995	var re=new RegExp("[&?]"+stParameterName+"=[^&]*", "");
1996	stURL=stURL.replace(re, "");
1997	if (stURL.indexOf("?")==-1)
1998	{
1999		var ich=stURL.indexOf("&");
2000		if (ich !=-1)
2001			stURL=stURL.substring(0, ich)+"?"+stURL.substring(ich+1);
2002	}
2003	return stURL;
2004}
2005function MoveToViewDate(strdate, view_type)
2006{
2007	var wUrl=window.location.href;
2008	if (strdate !=null)
2009		wUrl=StURLSetVar2(wUrl,"CalendarDate",escapeProperly(strdate));
2010	if (view_type !=null)
2011		wUrl=StURLSetVar2(wUrl,"CalendarPeriod",view_type);
2012	SubmitFormPost(wUrl, true);
2013}
2014function MoveToDate(strdate)
2015{
2016	MoveToViewDate(strdate, null);
2017}
2018function MoveToToday()
2019{
2020	MoveToViewDate("", null);
2021}
2022function MoveView(viewtype)
2023{
2024	MoveToViewDate(null , viewtype);
2025}
2026function ClickDay(date)
2027{
2028	MoveToViewDate(date, null);
2029}
2030function GetMonthView(str)
2031{
2032	var wUrl=window.location.href;
2033	var ExpWeek=document.getElementById("ExpandedWeeksId");
2034	if(ExpWeek!=null)
2035		ExpWeek.value=str;
2036	else
2037		return ;
2038	SubmitFormPost(wUrl, true);
2039}
2040function NewItemDT(url,day, time)
2041{
2042	if (url==null)
2043		return ;
2044	if (time !=null)
2045	  url=StURLSetVar2(url,"CalendarTime",time);
2046	if (day !=null)
2047	  url=StURLSetVar2(url,"CalendarDate",day);
2048	NewItem(url, false);
2049}
2050function ClickTime(url, time)
2051{
2052  NewItemDT(url, null, time);
2053}
2054function NewItemDay(url, day)
2055{
2056  NewItemDT(url, day, null);
2057}
2058function HasValidUrlPrefix(url)
2059{
2060	var urlLower=url.toLowerCase();
2061	if (-1==urlLower.search("^http://") &&
2062		-1==urlLower.search("^https://"))
2063		return false;
2064	return true;
2065}
2066function ScrollToAnchorInInnerScrollPane(formName, hiddenFieldName, textInHref)
2067{
2068	if (!browseris.ie4up) return;
2069	try
2070	{
2071		var form=document.getElementById(formName);
2072		var anchor=document.getElementById(form[hiddenFieldName].value);
2073		if (typeof(anchor)=="undefined" || anchor==null)
2074			throw "";
2075	}
2076	catch(e)
2077	{
2078		var tempAnchor=null;
2079		for (var i=0; i < document.anchors.length; i++)
2080		{
2081			tempAnchor=document.anchors[i];
2082			var href=tempAnchor.href;
2083			if (href.search(textInHref) !=-1)
2084			{
2085				anchor=tempAnchor;
2086				break;
2087			}
2088		}
2089	}
2090	if (typeof(anchor) !="undefined" && anchor !=null)
2091	{
2092		var scrollTopOld=document.body.scrollTop;
2093		var scrollLeftOld=document.body.scrollLeft;
2094		anchor.scrollIntoView(false);
2095		document.body.scrollTop=scrollTopOld;
2096		document.body.scrollLeft=scrollLeftOld;
2097	}
2098}
2099function FilterChoice(opt, ctrl, strVal, filterVal)
2100{
2101	var i;
2102	var cOpt=0;
2103	var bSelected=false;
2104	var strHtml="";
2105	var strId=opt.id;
2106	var strName=opt.name;
2107	var strMatch="";
2108	var strMatchVal="";
2109	var strOpts=ctrl.choices;
2110	var rgopt=strOpts.split("|");
2111	var x=AbsLeft(ctrl);
2112	var y=AbsTop(ctrl)+ctrl.offsetHeight;
2113	var strHidden=ctrl.optHid;
2114	var iMac=rgopt.length - 1;
2115	var iMatch=-1;
2116	var unlimitedLength=false;
2117	var strSelectedLower="";
2118	if (opt !=null && opt.selectedIndex >=0)
2119	{
2120		bSelected=true;
2121		strSelectedLower=opt.options[opt.selectedIndex].innerText;
2122	}
2123	for (i=0; i < rgopt.length; i=i+2)
2124	{
2125		var strOpt=rgopt[i];
2126		while (i < iMac - 1 && rgopt[i+1].length==0)
2127		{
2128			strOpt=strOpt+"|";
2129			i++;
2130			if (i < iMac - 1)
2131			{
2132				strOpt=strOpt+rgopt[i+1];
2133			}
2134			i++;
2135		}
2136		var strValue=rgopt[i+1];
2137		var strLowerOpt=strOpt.toLocaleLowerCase();
2138		var strLowerVal=strVal.toLocaleLowerCase();
2139		if (filterVal.length !=0)
2140			bSelected=true;
2141		if (strLowerOpt.indexOf(strLowerVal)==0)
2142		{
2143			var strLowerFilterVal=filterVal.toLocaleLowerCase();
2144			if ((strLowerFilterVal.length !=0) && (strLowerOpt.indexOf(strLowerFilterVal)==0) && (strMatch.length==0))
2145				bSelected=false;
2146			if (strLowerOpt.length > 20)
2147			{
2148				unlimitedLength=true;
2149			}
2150			if (!bSelected || strLowerOpt==strSelectedLower)
2151			{
2152				strHtml+="<option selected value=\""+strValue+"\">"+STSHtmlEncode(strOpt)+"</option>";
2153				bSelected=true;
2154				strMatch=strOpt;
2155				strMatchVal=strValue;
2156				iMatch=i;
2157			}			
2158			else
2159			{
2160				strHtml+="<option value=\""+strValue+"\">"+STSHtmlEncode(strOpt)+"</option>";
2161			}
2162			cOpt++;
2163		}
2164	}
2165	var strHandler=" ondblclick=\"HandleOptDblClick()\" onkeydown=\"HandleOptKeyDown()\"";
2166	var strOptHtml="";
2167	if (unlimitedLength)
2168	{
2169		strOptHtml="<select tabIndex=\"-1\" ctrl=\""+ctrl.id+"\" name=\""+strName+"\" id=\""+strId+"\""+strHandler;
2170	}
2171	else
2172	{
2173		strOptHtml="<select class=\"ms-lookuptypeindropdown\" tabIndex=\"-1\" ctrl=\""+ctrl.id+"\" name=\""+strName+"\" id=\""+strId+"\""+strHandler;
2174	}
2175	if (cOpt==0)
2176	{
2177		strOptHtml+=" style=\"display:none;position:absolute;z-index:2;left:"+x+			"px;top:"+y+			"px\" onfocusout=\"OptLoseFocus(this)\"></select>";
2178	}
2179	else
2180	{
2181		strOptHtml+=" style=\"position:absolute;z-index:2;left:"+x+			"px;top:"+y+			"px\""+			" size=\""+(cOpt <=8 ? cOpt : 8)+"\""+			(cOpt==1 ? "multiple=\"true\"" : "")+			" onfocusout=\"OptLoseFocus(this)\">"+			strHtml+			"</select>";
2182	}
2183	opt.outerHTML=strOptHtml;
2184	var hid=document.getElementById(strHidden);
2185	if (iMatch !=0 || rgopt[1] !="0" )
2186		hid.value=strMatchVal;
2187	else
2188		hid.value="0";
2189	if (iMatch !=0 || rgopt[1] !="0" )
2190		return strMatch;
2191	else return "";
2192}
2193function OptLoseFocus(opt)
2194{
2195	var ctrl=document.getElementById(opt.ctrl);
2196	if (opt.selectedIndex >=0)
2197		SetCtrlFromOpt(ctrl, opt);
2198	opt.style.display="none";
2199}
2200function SetCtrlMatch(ctrl, opt)
2201{
2202	var hid=document.getElementById(ctrl.optHid);
2203	hid.value=opt.options[opt.selectedIndex].value;
2204	if (hid.value !=0)		
2205		ctrl.match=opt.options[opt.selectedIndex].innerText;
2206	else
2207		ctrl.match="";
2208}
2209function AbsLeft(obj)
2210{
2211	var x=obj.offsetLeft;
2212	var parent=obj.offsetParent;
2213	while (parent.tagName !="BODY")
2214	{
2215		x+=parent.offsetLeft;
2216		parent=parent.offsetParent;
2217	}
2218	x+=parent.offsetLeft;
2219	return x;
2220}
2221function AbsTop(obj)
2222{
2223	var y=obj.offsetTop;
2224	var parent=obj.offsetParent;
2225	while (parent.tagName !="BODY")
2226	{
2227		y+=parent.offsetTop;
2228		parent=parent.offsetParent;
2229	}
2230	y+=parent.offsetTop;
2231	return y;
2232}
2233function SetCtrlFromOpt(ctrl, opt)
2234{
2235	var hid=document.getElementById(ctrl.optHid);
2236	hid.value=opt.options[opt.selectedIndex].value;
2237	if (opt.options[opt.selectedIndex].value==0)
2238	{
2239		ctrl.value="";
2240		ctrl.match="";
2241	}
2242	else
2243	{
2244		ctrl.value=opt.options[opt.selectedIndex].innerText;
2245		ctrl.match=ctrl.value;		
2246	}	
2247}
2248function HandleOptDblClick()
2249{
2250	var opt=event.srcElement;
2251	var ctrl=document.getElementById(opt.ctrl);
2252	SetCtrlFromOpt(ctrl, opt);
2253	SetCtrlMatch(ctrl, opt);
2254	opt.style.display="none";
2255}
2256function HandleOptKeyDown()
2257{
2258	var opt=event.srcElement;
2259	var ctrl=document.getElementById(opt.ctrl);
2260	var key=event.keyCode;
2261	switch (key)
2262	{
2263	case 13:
2264	case 9:
2265		SetCtrlFromOpt(ctrl, opt)
2266		event.returnValue=false;
2267		opt.style.display="none";
2268		return;
2269	default:
2270		break;
2271	}
2272	return;
2273}
2274function EnsureSelectElement(ctrl, strId)
2275{
2276	var select=document.getElementById(strId);
2277	if (select==null)
2278	{
2279		select=document.createElement("SELECT");
2280		ctrl.parentNode.appendChild(select);
2281		select.outerHTML="<select id=\""+strId+"\" ctrl=\""+ctrl.id+"\" class=\"ms-lookuptypeindropdown\" name=\""+strId+"\" style=\"display:none\" onfocusout=\"OptLoseFocus(this)\"></select>";
2282		FilterChoice(select, ctrl, ctrl.value, "");
2283	}
2284	return document.getElementById(strId);;
2285}
2286function HandleKey()
2287{
2288	var key=event.keyCode;
2289	var ctrl=event.srcElement;
2290	var str=ctrl.value;
2291	var opt=EnsureSelectElement(ctrl, ctrl.opt);
2292	var bNeedMatch=false;
2293	var strLower;
2294	var strMatchLower;
2295	switch (key)
2296	{
2297	case 8:
2298		if (str.length > 0)
2299		{
2300			str=str.substr(0, str.length - 1);
2301		}
2302		bNeedMatch=true;
2303		break;
2304	case 16:
2305	case 17:
2306	case 18:
2307		return;
2308	case 9:
2309	case 16:
2310	case 17:
2311	case 18:
2312		return;
2313	case 13:
2314		strLower=ctrl.value.toLocaleLowerCase();
2315		strMatchLower=ctrl.match.toLocaleLowerCase();
2316		if (strMatchLower.indexOf(strLower) !=0)
2317			ctrl.match=FilterChoice(opt, ctrl, ctrl.value, "");
2318		if (opt.style.display !="none")
2319		{
2320			ctrl.value=ctrl.match;
2321			opt.style.display="none";
2322			event.returnValue=false;
2323		}
2324		return;
2325	case 27:
2326		opt.style.display="none";
2327		event.returnValue=false;
2328		return;
2329	case 38:
2330		if (opt.style.display !="none")
2331		{
2332			if (opt.selectedIndex > 0)
2333				opt.selectedIndex=opt.selectedIndex - 1;
2334			else
2335				opt.selectedIndex=opt.options.length - 1;
2336			SetCtrlMatch(ctrl, opt);
2337			event.returnValue=false;
2338		}
2339		return;		
2340	case 40:
2341		if (opt.style.display !="none" && opt.selectedIndex < opt.options.length - 1)
2342		{
2343			opt.selectedIndex=opt.selectedIndex+1;
2344			SetCtrlMatch(ctrl, opt);
2345			event.returnValue=false;
2346			return;
2347		}
2348		bNeedMatch=true;
2349		break;
2350	case 46:
2351		break;
2352	default:
2353		break;
2354	}
2355	if (bNeedMatch);
2356		ctrl.match=FilterChoice(opt, ctrl, str, "");
2357}
2358function ShowDropdown(textboxId)
2359{
2360	var ctrl=document.getElementById(textboxId);
2361	var str=ctrl.value;
2362	var opt=EnsureSelectElement(ctrl, ctrl.opt);
2363	ctrl.match=FilterChoice(opt, ctrl, "", ctrl.value);
2364	ctrl.focus();
2365}
2366function HandleChar()
2367{
2368	var ctrl=event.srcElement;
2369	var str=ctrl.value;
2370	var opt=document.getElementById(ctrl.opt);
2371	var key=event.keyCode;
2372	if (key==13)
2373		return;
2374	str=str+String.fromCharCode(key).toLocaleLowerCase();
2375	ctrl.match=FilterChoice(opt, ctrl, str, "");
2376}
2377function HandleLoseFocus()
2378{
2379	var ctrl=event.srcElement;
2380	var opt=document.getElementById(ctrl.opt);
2381	if (opt !=null && opt.style.display !="none" && document.activeElement !=opt)
2382		OptLoseFocus(opt);
2383}
2384function HandleChange()
2385{
2386	var ctrl=event.srcElement;
2387	var str=ctrl.value;
2388	var opt=document.getElementById(ctrl.opt);
2389	ctrl.match=FilterChoice(opt, ctrl, str, "");
2390}
2391function IsSafeHref(
2392	href)
2393{
2394	return (href.match(new RegExp("^http://", "i")) ||
2395			href.match(new RegExp("^https://", "i")) ||
2396			href.match(new RegExp("^ftp://", "i")) ||
2397			href.match(new RegExp("^file://", "i")) ||
2398			href.match(new RegExp("^mailto:", "i")) ||
2399			href.match(new RegExp("^news:", "i")) ||
2400			href.match(new RegExp("^/", "i")) ||
2401			href.match(new RegExp("^\\\\\\\\", "i")));
2402}
2403var L_RelativeUrlError_Text="Addresses that start from the current page might not display correctly. You must enter the complete URL or an address that starts from the current server.";
2404var L_UnknownProtocolUrlError_Text="Hyperlinks must begin with http://, https://, mailto:, news:, ftp://, file://, or \\\\. Check the address and try again.";
2405var L_UrlTooLongError_Text="The URL for the location must be no longer than 256 characters without the query parameters. The query parameters start at the question mark (?)."
2406function IsSafeHrefAlert(
2407	href,
2408	fAllowRelativeLinks)
2409{
2410	if (href.match("^[^?]{257}"))
2411	{
2412		alert(L_UrlTooLongError_Text);
2413		return false;
2414	}
2415	else if (IsSafeHref(href))
2416	{
2417		return true;
2418	}
2419	else
2420	{
2421		if (href.match("^[a-zA-Z]*:"))
2422		{
2423			alert(L_UnknownProtocolUrlError_Text);
2424			return false;
2425		}
2426		else if (true==fAllowRelativeLinks)
2427		{
2428			return true;
2429		}
2430		else
2431		{
2432			alert(L_RelativeUrlError_Text);
2433			return false;
2434		}
2435	}
2436}
2437function PositionMiniConsole() {
2438	var mc=document.getElementById("miniconsole");
2439	if (browseris.ie55up && browseris.win32)
2440		if (document.getElementById("siteactiontd")){
2441			mc.style.top="1";
2442		}
2443		else {
2444			mc.style.top="8";
2445		}
2446	else {
2447		mc.style.top="0";
2448	}
2449}
2450var deleteInstance=0;
2451function DeleteItemConfirmation()
2452{
2453	var message="";
2454	if (typeof(ItemIsCopy) !="undefined")
2455		if (ItemIsCopy)
2456			message=L_NotifyThisIsCopy_Text;
2457	if (recycleBinEnabled==1 &&
2458	deleteInstance !=1 )
2459		message+=L_STSRecycleConfirm_Text;
2460	else
2461		message+=L_STSDelConfirm_Text;
2462	return confirm(message);
2463}
2464function DeleteInstanceConfirmation()
2465{
2466	deleteInstance=1;
2467	return DeleteItemConfirmation()
2468}
2469function CancelMultiPageConfirmation(redirectUrl)
2470{
2471	var L_DeletePartialResponse1_text="A partial survey response has been saved.  Click OK to delete the partial survey response. If you want to continue this survey later click Cancel.  Your partial response can be found in the All Responses survey view.\n\nDo you want to send this partial response to the site Recycle Bin?";
2472	var L_DeletePartialResponse2_text="A partial survey response has been saved.  Click OK to delete the partial survey response. If you want to continue this survey later click Cancel.  Your partial response can be found in the All Responses survey view.\n\nDo you want to delete the partial response?";
2473	var message="";
2474	if (recycleBinEnabled==1)
2475		message=L_DeletePartialResponse1_text;
2476	else
2477		message=L_DeletePartialResponse2_text;
2478	if (confirm(message)==true)
2479		return true;
2480	else
2481		STSNavigate(redirectUrl);
2482	return false;
2483}
2484function RestoreItemVersionConfirmation()
2485{
2486	var L_Version_Restore_Confirm_Text="You are about to replace the current version with the selected version.";
2487	var message=L_Version_Restore_Confirm_Text;
2488	return confirm(message);
2489}
2490function DeleteItemVersionConfirmation(bRecycleBinEnabled)
2491{
2492	var L_Version_Delete_Confirm_Text="Are you sure you want to delete this version?";
2493	var L_Version_Recycle_Confirm_Text="Are you sure you want to send this version to the site Recycle Bin?";
2494	if (bRecycleBinEnabled)
2495		return confirm(L_Version_Recycle_Confirm_Text);
2496	else
2497		return confirm(L_Version_Delete_Confirm_Text);
2498}
2499function DeleteUserInfoItemConfirmation()
2500{
2501	var L_User_Delete_Confirm_Text="You are about to delete this user.";
2502	var message=L_User_Delete_Confirm_Text;
2503	return confirm(message);
2504}
2505function UnlinkCopyConfirmation(strItemUrl)
2506{
2507	return confirm(L_ConfirmUnlinkCopy_Text);
2508}
2509function Discuss(strUrl)
2510{
2511	var L_IE5upRequired_Text="'Discuss' requires a Windows SharePoint Services-compatible application and Microsoft Internet Explorer 6.0 or greater.";
2512	if (browseris.ie5up && browseris.win32)
2513		window.parent.location.href=strUrl;
2514	else
2515		alert(L_IE5upRequired_Text);
2516}
2517function ProcessDefaultNavigateHierarchy(nodeDiv, dataSourceId, dataPath, url, listInContext, type, form, qsCore, submitPath)
2518{
2519	if (typeof(_spCustomNavigateHierarchy)=="function")
2520	{
2521		_spCustomNavigateHierarchy(nodeDiv,dataSourceId,dataPath,url,listInContext,type);
2522	}
2523	else
2524	{
2525		if (listInContext==false)
2526		{
2527			top.location=url;
2528		}
2529		else
2530		{
2531			var par=document.createElement('INPUT');
2532			par.type='hidden';
2533			par.name='_spTreeNodeClicked';
2534			par.value=dataPath;
2535			form.appendChild(par);
2536			var qs="?RootFolder="+escapeProperly(url)+qsCore;
2537			SubmitFormPost(submitPath+qs);
2538			return false;
2539		}
2540	}
2541}
2542function ParseMultiColumnValue(fieldValue, delimiter)
2543{
2544	var subColumnValues=new Array();
2545	if (delimiter==null)
2546		delimiter=';#';
2547	var lead=delimiter.charCodeAt(0);
2548	var trail=delimiter.charCodeAt(1);
2549	if (fieldValue==null || fieldValue.length==0)
2550		return subColumnValues;
2551	var strLead=delimiter.charAt(0);
2552	var strLeadLead=strLead+strLead;
2553	var escape=new RegExp(strLeadLead, "g");
2554	var unescape=delimiter.charAt(0);
2555	var start=0;
2556	if (fieldValue.substr(0, 2)==delimiter)
2557		start=2;
2558	var end=start;
2559	var bContainEscapedCharacters=false;
2560	var totalLength=fieldValue.length;
2561	while (end < totalLength)
2562	{
2563		var index=fieldValue.indexOf(strLead, end);
2564		if (index >=0)
2565		{
2566			end=index;
2567			end++;
2568			if (fieldValue.charCodeAt(end)==trail)
2569			{
2570				if (end - 1 > start)
2571				{
2572					var strSubColumn=fieldValue.substr(start, end - start - 1);
2573					if (bContainEscapedCharacters)
2574						strSubColumn=strSubColumn.replace(escape, unescape);
2575					subColumnValues.push(strSubColumn);
2576					bContainEscapedCharacters=false;
2577				}
2578				else
2579				{
2580					subColumnValues.push('');
2581				}
2582				end++;
2583				start=end;
2584				continue;
2585			}
2586			else if (fieldValue.charCodeAt(end)==lead)
2587			{
2588				end++;
2589				bContainEscapedCharacters=true;
2590				continue;
2591			}
2592			else
2593			{
2594				throw "ArgumentException";
2595			}
2596		}
2597		else
2598		{
2599			end=totalLength;
2600		}
2601	}
2602	if (end > start)
2603	{
2604		var strSubColumn=fieldValue.substr(start, end - start);
2605		if (bContainEscapedCharacters)
2606			strSubColumn=strSubColumn.replace(escape, unescape);
2607		subColumnValues.push(strSubColumn);
2608	}
2609	return subColumnValues;
2610}
2611function ConvertMultiColumnValueToString(
2612	subColumnValues,
2613	delimiter,
2614	bAddLeadingTailingDelimiter)
2615{
2616	if (delimiter==null)
2617		delimiter=";#";
2618	if (bAddLeadingTailingDelimiter==null)
2619		bAddLeadingTailingDelimiter=true;
2620	var strLead=delimiter.charAt(0);
2621	var strLeadLead=strLead+strLead;
2622	var escape=new RegExp(delimiter.charAt(0), "g");
2623	var bHasValue=false;
2624	var sb='';
2625	for (var i=0; i < subColumnValues.length; i++)
2626	{
2627		var strSubColumn=subColumnValues[i];
2628		if (strSubColumn !=null && strSubColumn.length > 0)
2629			strSubColumn=strSubColumn.replace(escape, strLeadLead);
2630		if (strSubColumn !=null && strSubColumn.length > 0)
2631			bHasValue=true;
2632		if (bAddLeadingTailingDelimiter || i !=0)
2633			sb+=delimiter;
2634		sb+=strSubColumn;
2635	}
2636	if (bHasValue)
2637	{
2638		if (bAddLeadingTailingDelimiter)
2639		{
2640			sb+=delimiter;
2641		}
2642		return sb;
2643	}
2644	else
2645		return '';
2646}
2647var httpFolderTarget=null;
2648var httpFolderSource=null;
2649var httpFolderDiv=null;
2650function NavigateHttpFolderCore()
2651{
2652	if (httpFolderDiv==null)
2653	{
2654		httpFolderDiv=document.createElement('DIV');
2655		document.body.appendChild(httpFolderDiv);
2656		httpFolderDiv.onreadystatechange=NavigateHttpFolderCore;
2657		httpFolderDiv.addBehavior('#default#httpFolder');
2658	}
2659	if (httpFolderDiv.readyState=="complete")
2660	{
2661		httpFolderDiv.onreadystatechange=null;
2662		try
2663		{
2664			var targetFrame=document.frames.item(httpFolderTarget);
2665			if (targetFrame !=null)
2666			{
2667				targetFrame.document.body.innerText=					L_WebFoldersRequired_Text;
2668			}
2669		}
2670		catch (e) {}
2671		var isOk=false;
2672		try
2673		{
2674			var ret="";
2675			ret=httpFolderDiv.navigateFrame(httpFolderSource,
2676				httpFolderTarget);
2677			if (ret=="OK")
2678				isOk=true;
2679		}
2680		catch (e) { }
2681		if (!isOk &&
2682			0==httpFolderSource.search("http://[a-zA-Z0-9\-\.]+(:80)?/"))
2683		{
2684			var sUrl=httpFolderSource
2685				.replace(/http:\/\/([a-zA-Z0-9\-\.]+)(:80)?[\/]/, "//$1/")
2686				.replace(/[\/]/g, "\\");
2687			var targetFrame=document.frames.item(httpFolderTarget);
2688			if (targetFrame !=null)
2689			{
2690				try
2691				{
2692						targetFrame.onload=null;
2693						targetFrame.document.location.href=sUrl;
2694						isOk=true;
2695				}
2696				catch (e) { }
2697			}
2698		}
2699		if (!isOk)
2700		{
2701			alert(L_WebFoldersError_Text);
2702		}
2703	}
2704}
2705function NavigateHttpFolder(urlSrc, frameTarget)
2706{
2707	if ('/'==urlSrc.charAt(0))
2708	{
2709		urlSrc=document.location.protocol+"//"+document.location.host+			urlSrc;
2710	}
2711	httpFolderSource=urlSrc;
2712	httpFolderTarget=frameTarget;
2713	NavigateHttpFolderCore();
2714}
2715function NavigateHttpFolderIfSupported(urlSrc, frameTarget)
2716{
2717	if (SupportsNavigateHttpFolder())
2718	{
2719		NavigateHttpFolder(urlSrc, frameTarget);
2720	}
2721	else
2722	{
2723		alert(L_WebFoldersError_Text);
2724		window.history.back();
2725	}
2726}
2727function SupportsNavigateHttpFolder()
2728{
2729	return (browseris.ie5up && browseris.win32);
2730}
2731cGCMinimumWidth=400;
2732cGCMinimumHeight=200;
2733cGCMaxGCResizeCount=10;
2734var glGCObjectHeight=0;
2735var glGCObjectWidth=0;
2736glGCResizeCounter=0;
2737function TestGCObject( GCObject )
2738{
2739	if (((browseris.ie55up) && (typeof(GCObject)=="undefined")) || (GCObject==null) || (GCObject.object==null))
2740		return false;
2741	return true;
2742}
2743function GCComputeSizing(GCObject)
2744{
2745	if (TestGCObject(GCObject))
2746	{
2747		var fBIDI=(document.documentElement.currentStyle.direction=="rtl");
2748		var lGCWindowWidth=document.documentElement.scrollWidth;
2749		var lGCWindowHeight=document.documentElement.scrollHeight;
2750		var lGCObjectOffsetLeft=0;
2751		var lGCObjectOffsetTop=0;
2752		if (fBIDI)
2753			{
2754			lGCObjectOffsetLeft=-180;
2755			lGCObjectOffsetTop=120;
2756			}
2757		else
2758			{
2759			lGCObjectOffsetLeft=32;
2760			lGCObjectOffsetTop=-2;
2761			}
2762		var lGCObjectWalker=GCObject.parentElement;
2763		while (lGCObjectWalker !=document.body)
2764		{
2765			lGCObjectOffsetLeft+=lGCObjectWalker.offsetLeft;
2766			lGCObjectOffsetTop+=lGCObjectWalker.offsetTop;
2767			lGCObjectWalker=lGCObjectWalker.offsetParent;
2768			if (fBIDI)
2769				if (lGCObjectWalker.offsetLeft > 0)
2770					break;
2771		}
2772		lGCObjectOffsetLeft+=GCObject.parentElement.offsetLeft;
2773		lGCObjectOffsetTop+=GCObject.parentElement.offsetTop;
2774		glGCObjectHeight=lGCWindowHeight - lGCObjectOffsetTop;
2775		if (glGCObjectHeight > lGCWindowHeight)
2776			glGCObjectHeight=lGCWindowHeight
2777		if (glGCObjectHeight < cGCMinimumHeight)
2778			glGCObjectHeight=cGCMinimumHeight;
2779		if (fBIDI)
2780			{
2781			glGCObjectWidth=lGCWindowWidth+lGCObjectOffsetLeft;
2782			}
2783		else
2784			glGCObjectWidth=lGCWindowWidth - lGCObjectOffsetLeft;
2785		if (glGCObjectWidth > lGCWindowWidth)
2786				glGCObjectWidth=lGCWindowWidth;
2787		if (glGCObjectWidth < cGCMinimumWidth)
2788			glGCObjectWidth=cGCMinimumWidth;
2789	}
2790}
2791function GCResizeGridControl(GCObject)
2792{
2793	if (TestGCObject(GCObject))
2794	{
2795		var lGCOldObjectHeight=glGCObjectHeight;
2796		var lGCOldglGCObjectWidth=glGCObjectWidth;
2797		GCComputeSizing(GCObject);
2798		if (lGCOldObjectHeight !=glGCObjectHeight)
2799			GCObject.height=glGCObjectHeight;
2800		if (lGCOldglGCObjectWidth !=glGCObjectWidth)
2801			GCObject.width=glGCObjectWidth;
2802	}
2803}
2804var win_resize_counter=0;
2805var obj_resize_counter=0;
2806function GCWindowResize(GCObject)
2807{
2808	win_resize_counter++;
2809	if(win_resize_counter < 3)
2810	{
2811		if (TestGCObject(GCObject))
2812		{
2813			glGCResizeCounter=0;
2814			GCResizeGridControl(GCObject);
2815		}
2816	}
2817	else
2818		win_resize_counter=0;
2819}
2820function GCOnResizeGridControl(GCObject)
2821{
2822	obj_resize_counter++;
2823	if(obj_resize_counter < 2)
2824	{
2825		if (TestGCObject(GCObject))
2826		{
2827			if (glGCResizeCounter < cGCMaxGCResizeCount)
2828			{
2829				glGCResizeCounter++;
2830				GCResizeGridControl(GCObject);
2831			}
2832		}
2833	}
2834	else
2835	  obj_resize_counter=0;
2836}
2837function GCActivateAndFocus(GCObject)
2838{
2839	if (TestGCObject(GCObject))
2840	{
2841		GCObject.SetActive;
2842		GCObject.Focus;
2843 	}
2844}
2845function GCNavigateToNonGridPage()
2846{
2847	var strDocUrl=window.location.href;
2848	gridPart=strDocUrl.match("ShowInGrid=");
2849	if (gridPart)
2850	{
2851		gridSet=/ShowInGrid=\w*/;
2852		strDocUrl=strDocUrl.replace(gridSet, "");	
2853	}
2854   	var idxQuery=strDocUrl.indexOf("?");
2855	if (idxQuery !=-1)
2856		{
2857		var idxQry2=strDocUrl.indexOf("?", idxQuery+1);
2858		if (idxQry2 !=-1)
2859			strDocUrl=strDocUrl.slice(0, idxQry2);
2860		strDocUrl=strDocUrl+"&";
2861		}
2862	else
2863		strDocUrl=strDocUrl+"?";
2864	strDocUrl=strDocUrl+"ShowInGrid=False";
2865	document.location.replace(STSPageUrlValidation(strDocUrl));
2866}
2867function GCAddNewColumn(GCObject,path)
2868{
2869	if (TestGCObject(GCObject))
2870	{
2871	  var source=window.location.href;
2872	  var listName=GCObject.Name;
2873	  var colName=GCObject.SelectedColumnUniqueName;
2874	  var ltr=GCObject.RightToLeft;
2875	  var viewGUID=GCObject.ViewGUID;
2876	  var page="FldNew.aspx";
2877	  var listServerTemplate=GCObject.ServerTemplate;
2878	  if (listServerTemplate=="102" )
2879	  {
2880	    page="QstNew.aspx";
2881	  }
2882	  path=path+"/_layouts/"+page+"?List="+listName+"&View="+viewGUID+"&Source="+source+"&RelativeToField="+colName+"&LTR="+ltr;
2883	  window.location=path
2884	}
2885}
2886function GCEditDeleteColumn(GCObject,path)
2887{
2888	if (TestGCObject(GCObject))
2889	{
2890		  var source=window.location.href;
2891		  var colName=GCObject.SelectedColumnUniqueName;
2892		  var listName=GCObject.Name;
2893		  var page="FldEdit.aspx";
2894		  var listServerTemplate=GCObject.ServerTemplate;
2895		  if (listServerTemplate=="102" )
2896		  {
2897		    page="QstEdit.aspx";
2898		  }
2899		  path=path+"/_layouts/"+page+"?List="+listName+"&Field="+colName+"&Source="+source;
2900		  window.location=path
2901	}
2902}
2903function GCShowHideTaskPane(GCObject)
2904{
2905	if (TestGCObject(GCObject))
2906	{
2907		var state=GCObject.DisplayTaskPane;
2908		GCObject.DisplayTaskPane=!state;
2909	}
2910}
2911function GCShowHideTotalsRow(GCObject)
2912{
2913	if (TestGCObject(GCObject))
2914	{
2915		var state=GCObject.DisplaySheetTotals;
2916		GCObject.DisplaySheetTotals=!state;
2917	}
2918}
2919function GCGridNewRow(GCObject)
2920{
2921	if (TestGCObject(GCObject))
2922	{
2923		GCObject.SelectNewRow();
2924	}
2925}
2926function GCRefresh(GCObject)
2927{
2928	if (TestGCObject(GCObject))
2929	{
2930		GCObject.Refresh();
2931	}
2932}
2933function GCNewFolder(GCObject)
2934{
2935	if (TestGCObject(GCObject))
2936	{
2937		GCObject.NewFolder();
2938	}
2939}
2940var L_Edit_Text="Edit";
2941var L_ViewItem_Text="View Item";
2942var L_EditItem_Text="Edit Item";
2943var L_EditSeriesItem_Text="Edit Series";
2944var L_DeleteItem_Text="Delete Item";
2945var L_DeleteDocItem_Text="Delete";
2946var L_ViewProperties_Text="View Properties";
2947var L_EditProperties_Text="Edit Properties";
2948var L_ViewResponse_Text="View Response";
2949var L_EditResponse_Text="Edit Response";
2950var L_DeleteResponse_Text="Delete Response";
2951var L_Subscribe_Text="Alert Me";
2952var L_CustomizeNewButton_Text="Change New Button Order";
2953var L_Review_Text="Send for Review";
2954var L_EditIn_Text="Edit in ^1";
2955var L_EditInApplication_Text="Edit Document"
2956var L_Checkin_Text="Check In";
2957var L_Checkout_Text="Check Out";
2958var L_DiscardCheckou_Text="Discard Check Out";
2959var L_CreateDWS_Text="Create Document Workspace";
2960var L_PublishBack_Text="Publish to Source Location";
2961var L_Versions_Text="Version History";
2962var L_WorkOffline_Text="Connect to Client";
2963var L_Reply_Text="Reply";
2964var L_ExportContact_Text="Export Contact";
2965var L_ExportEvent_Text="Export Event";
2966var L_Reschedule_Text="Rescheduling Options";
2967var L_Move_Text="Move";
2968var L_Keep_Text="Keep";
2969var L_Delete_Text="Delete";
2970var L_Open_Text="Open";
2971var L_SiteSettings_Text="Change Site Settings";
2972var L_ManageUsers_Text="Manage Users";
2973var L_DeleteSite_Text="Delete Site";
2974var L_SiteStorage_Text="Manage Site Storage";
2975var L_MngPerms_Text="Manage Permissions";
2976var L_Settings_Text="Settings";
2977var L_Remove_Text="Remove from this list";
2978var L_ModerateItem_Text="Approve/reject";
2979var L_PublishItem_Text="Publish a Major Version";
2980var L_CancelPublish_Text="Cancel Approval";
2981var L_UnPublishItem_Text="Unpublish this version";
2982var L_DownloadOriginal_Text="Download Picture";
2983var L_EditVersion_Text="Edit";
2984var L_EditInOIS_Text="Edit Picture";
2985var L_Workflows_Text="Workflows";
2986var L_Send_Text="Send To";
2987var L_ExistingCopies_Text="Existing Copies";
2988var L_OtherLocation_Text="Other Location";
2989var L_GoToSourceItem_Text="Go to Source Item";
2990var L_NotifyThisIsCopy_Text="This item was copied from another location and may be receiving updates from there.  You should make sure that the source stops sending updates or this item may get recreated.\n\n";
2991var L_SendToEmail_Text="E-mail a Link";
2992var L_DownloadACopy_Text="Download a Copy";
2993var L_DocTran_Text="Convert Document";
2994var L_AddToMyLinks_Text="Add to My Links";
2995var L_AddToCategory_Text="Submit to Portal Area";
2996var L_VS_DownArrow_Text="Select a View";
2997var L_ModifyView="Modify this view";
2998var L_CreateView="Create a new view";
2999function resetExecutionState()
3000{
3001	IsMenuShown=false;
3002	itemTable=null;
3003	EndDeferItem();
3004	imageCell=null;
3005	onKeyPress=false;
3006	currentCtx=null;
3007	currentEditMenu=null;
3008	currentItemID=null;
3009	downArrowText=null;
3010	currentItemAppName=null;
3011	currentItemProgId=null;
3012	currentItemIcon=null;
3013	currentItemOpenControl=null;
3014	currentItemModerationStatus=null;
3015	currentItemUIString=null;
3016	currentItemCheckedoutToLocal=null;
3017	currentItemCanModify=null;
3018	currentItemFileUrl=null;
3019	currentItemFSObjType=null;
3020	currentItemCheckedOutUserId=null;
3021	currentItemCheckoutExpires=null;
3022	currentItemPermMaskH=null;
3023	currentItemPermMaskL=null;
3024	currentItemIsEventsExcp=null;
3025	currentItemIsEventsDeletedExcp=null;
3026}
3027function IsMenuEnabled()
3028{
3029	return (browseris.ie55up || browseris.nav6up || browseris.safari125up);
3030}
3031function GetSelectedElement(elem, tagName)
3032{
3033	while(elem !=null && elem.tagName !=tagName)
3034		elem=elem.parentNode;
3035	return elem;
3036}
3037function setupMenuContext(ctx)
3038{
3039	currentCtx=ctx;
3040}
3041function FindSTSMenuTable(elm, strSearch)
3042{
3043	var str=elm.getAttribute(strSearch);
3044	while (elm !=null && (str==null ||str==""))
3045	{
3046		elm=GetSelectedElement(elm.parentNode, "TABLE");
3047		if (elm !=null)
3048			str=elm.getAttribute(strSearch);
3049	}
3050	return elm;
3051}
3052function OnLinkDeferCall(elm)
3053{
3054	if (!IsMenuEnabled())
3055		return false;
3056	elm.onblur=OutItem;
3057	elm.onkeydown=PopMenu;
3058	var elmTmp=FindSTSMenuTable(elm, "CTXName");
3059	if (elmTmp==null)
3060		return false;
3061	OnItem(elmTmp);
3062	return false;
3063}
3064function StartDeferItem(elm)
3065{
3066	if (elm !=itemTable)
3067	{
3068		itemTableDeferred=elm;
3069		elm.onmouseout=EndDeferItem;
3070		elm.onclick=DeferredOnItem;
3071		elm.oncontextmenu=DeferredOnItem;
3072	}
3073}
3074function DeferredOnItem(e)
3075{
3076	var elm=itemTableDeferred;
3077	if (elm !=null)
3078	{
3079		MenuHtc_hide();
3080		OnItem(elm);
3081		CreateMenu(e);
3082		return false;
3083	}
3084}
3085function EndDeferItem()
3086{
3087	var elm=itemTableDeferred;
3088	if (elm !=null)
3089	{
3090		itemTableDeferred=null;
3091		elm.onmouseout=null;
3092		elm.onclick=null;
3093		elm.oncontextmenu=null;
3094	}
3095}
3096function GetFirstChildElement(e)
3097{
3098	for (var i=0; i < e.childNodes.length; i++)
3099	{
3100		if (e.childNodes[i].nodeType==1)
3101			return e.childNodes[i];
3102	}
3103	return null;
3104}
3105function GetLastChildElement(e)
3106{
3107	for (var i=e.childNodes.length-1; i >=0; i--)
3108	{
3109		if (e.childNodes[i].nodeType==1)
3110			return e.childNodes[i];
3111	}
3112	return null;
3113}
3114function OnItemDeferCall(elm)
3115{
3116	if (!IsMenuEnabled())
3117		return false;
3118	if (IsMenuOn())
3119	{
3120		StartDeferItem(elm);
3121		return false;
3122	}
3123	if (itemTable !=null)
3124		OutItem();
3125	itemTable=elm;
3126	currentItemID=GetAttributeFromItemTable(itemTable, "ItemId", "Id");
3127	var createCtx=new Function("setupMenuContext("+itemTable.getAttribute("CTXName")+");");
3128	createCtx();
3129	var ctx=currentCtx;
3130	if (browseris.nav6up)
3131		itemTable.className="ms-selectedtitlealternative";
3132	else
3133		itemTable.className="ms-selectedtitle";
3134	if (browseris.ie5up && !browseris.ie55up)
3135	{
3136		itemTable.onclick=EditMenuDefaultForOnclick;
3137		itemTable.oncontextmenu=EditMenuDefaultForOnclick;
3138	}
3139	else
3140	{
3141		itemTable.onclick=CreateMenu;
3142		itemTable.oncontextmenu=CreateMenu;
3143	}
3144	itemTable.onmouseout=OutItem;
3145	var titleRow;
3146	titleRow=GetFirstChildElement(GetFirstChildElement(itemTable));
3147	if (titleRow !=null)
3148	{
3149		imageCell=GetLastChildElement(titleRow);
3150	}
3151	if (ctx.listTemplate==200)
3152	{
3153		if (itemTable.getAttribute("menuType")=="Orphaned")
3154			downArrowText=L_Reschedule_Text;
3155	}
3156	else
3157		downArrowText=L_Edit_Text;
3158	var imageTag=GetFirstChildElement(imageCell);
3159	imageTag.src=ctx.imagesPath+"menudark.gif";
3160	imageTag.alt=downArrowText;
3161	imageTag.style.visibility="visible";
3162	imageCell.className="ms-menuimagecell";
3163	return false;
3164}
3165function OutItem()
3166{
3167	if (!IsMenuOn() && itemTable !=null)
3168	{
3169		itemTable.className="ms-unselectedtitle";
3170		itemTable.onclick=null;
3171		itemTable.oncontextmenu=null;
3172		itemTable.onmouseout=null;
3173		if (imageCell !=null)
3174		{
3175			GetFirstChildElement(imageCell).style.visibility="hidden";
3176			imageCell.className="";
3177		}
3178		resetExecutionState();
3179	}
3180}
3181function IsMenuOn()
3182{
3183	if (!IsMenuShown)
3184		return false;
3185	var fIsOpen=false;
3186	fIsOpen=MenuHtc_isOpen(currentEditMenu);
3187	if (!fIsOpen)
3188		IsMenuShown=false;
3189	return fIsOpen;
3190}
3191function PopMenu(e)
3192{
3193	if (!IsMenuEnabled())
3194		return true;
3195	if (e==null)
3196		e=window.event;
3197	var nKeyCode;
3198	if (browseris.nav6up)
3199		nKeyCode=e.which;
3200	else
3201		nKeyCode=e.keyCode;
3202	if (!IsMenuOn() && ((e.shiftKey && nKeyCode==13) || (e.altKey && nKeyCode==40)))
3203	{
3204		onKeyPress=true;
3205		CreateMenu(e);
3206		onKeyPress=false;
3207		return false;
3208	}
3209	else
3210		return true;
3211}
3212function CreateMenuEx(ctx, container, e)
3213{
3214	if (container==null)
3215		return;
3216	IsMenuShown=true;
3217	document.body.onclick="";
3218	var m;
3219	m=CMenu(currentItemID+"_menu");
3220	if (!m)
3221		return;
3222	else if (ctx.isVersions)
3223		AddVersionMenuItems(m, ctx);
3224	else if (ctx.listBaseType==1)
3225		AddDocLibMenuItems(m, ctx);
3226	else if (ctx.listTemplate==200)
3227		AddMeetingMenuItems(m, ctx);
3228	else
3229		AddListMenuItems(m, ctx);
3230	InsertFeatureMenuItems(m, ctx);
3231	currentEditMenu=m;
3232	container.onmouseout=null;
3233	OMenu(m, container, null, null, -1);
3234	itemTable=GetSelectedElement(container, "TABLE");
3235	m._onDestroy=OutItem;
3236	e.cancelBubble=true;
3237	return false;
3238}
3239function CreateMenu(e)
3240{
3241	if (!IsContextSet())
3242		return;
3243	var ctx=currentCtx;
3244	if (e==null)
3245		e=window.event;
3246	var srcElement=e.srcElement ? e.srcElement : e.target;
3247	if (itemTable==null || imageCell==null ||
3248		(onKeyPress==false &&
3249		 (srcElement.tagName=="A" ||
3250		  srcElement.parentNode.tagName=="A")))
3251		return;
3252	return CreateMenuEx(ctx, itemTable, e);
3253}
3254function AddSendSubMenu(m,ctx)
3255{
3256	strDisplayText=L_Send_Text;
3257	var currentItemUrl=GetAttributeFromItemTable(itemTable, "Url", "ServerUrl");
3258	var currentItemEscapedFileUrl;
3259	var currentItenUnescapedUrl;
3260	var strExtension;
3261	if (currentItemFileUrl !=null)
3262   {
3263	currentItenUnescapedUrl=unescapeProperly(currentItemFileUrl);
3264	currentItemEscapedFileUrl=escapeProperly(currentItenUnescapedUrl);
3265	strExtension=SzExtension(currentItenUnescapedUrl);
3266	if (strExtension !=null && strExtension !="")
3267   		strExtension=strExtension.toLowerCase();
3268	}
3269	var sm=CASubM(m,strDisplayText,"","",400);
3270	sm.id="ID_Send";
3271	var menuOption;
3272	var serverFileRedirect=itemTable.getAttribute("SRed");
3273	if (currentItemProgId !="SharePoint.WebPartPage.Document" &&
3274		(serverFileRedirect==null || serverFileRedirect=="" || HasRights(0x0, 0x20)) && strExtension !="aspx")
3275	{
3276		if (typeof(ctx.SendToLocationName) !="undefined" &&
3277			ctx.SendToLocationName !=null &&
3278			ctx.SendToLocationName !="" &&
3279			typeof(ctx.SendToLocationUrl) !="undefined" &&
3280			ctx.SendToLocationUrl !=null &&
3281			ctx.SendToLocationUrl !="")
3282		{
3283			strAction="STSNavigate('"+				ctx.HttpRoot+				"/_layouts/copy.aspx?"+				"SourceUrl="+				currentItemEscapedFileUrl+				"&Source="+				GetSource()+"&FldUrl="+				escapeProperly(ctx.SendToLocationUrl)+"')";
3284			menuOption=CAMOpt(sm,
3285								ctx.SendToLocationName,
3286								strAction,
3287								"");
3288		}
3289		if (typeof(itemTable.getAttribute("HCD")) !="undefined" && itemTable.getAttribute("HCD")=="1")
3290		{
3291			strDisplayText=L_ExistingCopies_Text;
3292			strAction="STSNavigate('"+ctx.HttpRoot+				"/_layouts/updatecopies.aspx?"+				"SourceUrl="+				currentItemEscapedFileUrl+				"&Source="+				GetSource()+"')";
3293			strImagePath=ctx.imagesPath+"existingLocations.gif";
3294			menuOption=CAMOpt(sm, strDisplayText, strAction, strImagePath);
3295			menuOption.id="ID_ExistingCopies";
3296		}
3297		strDisplayText=L_OtherLocation_Text;
3298		strAction="STSNavigate('"+			ctx.HttpRoot+			"/_layouts/copy.aspx?"+			"SourceUrl="+			currentItemEscapedFileUrl+			"&Source="+			GetSource()+"')";
3299		strImagePath=ctx.imagesPath+"sendOtherLoc.gif";
3300		menuOption=CAMOpt(sm, strDisplayText, strAction, strImagePath);
3301		menuOption.id="ID_OtherLocation";
3302		if (ctx.OfficialFileName !=null && ctx.OfficialFileName !="")
3303		{
3304			strDisplayText=ctx.OfficialFileName;
3305			strAction="STSNavigate('"+				ctx.HttpRoot+				"/_layouts/SendToOfficialFile.aspx?"+				"SourceUrl="+				currentItemEscapedFileUrl+				"&Source="+				GetSource()+"')";
3306			strImagePath="";
3307			CAMOpt(sm, strDisplayText, strAction, strImagePath);
3308		}
3309		CAMSep(sm);
3310	}
3311	if(HasRights(0x10, 0x0))
3312	{
3313		strDisplayText=L_SendToEmail_Text;
3314		var currentItemUrl=GetAttributeFromItemTable(itemTable, "Url", "ServerUrl");
3315		var httpRootWithSlash=ctx.HttpRoot.substr(0);
3316		if (httpRootWithSlash[httpRootWithSlash.length-1] !='/')
3317			httpRootWithSlash+='/';
3318		var slashLoc=-1;
3319		var fileUrl="";
3320		slashLoc=httpRootWithSlash.substring(8).indexOf('/')+8;
3321		fileUrl=httpRootWithSlash.substr(0, slashLoc)+			escapeProperlyCore(unescapeProperly(currentItemUrl), true);
3322		var serverFileRedir=itemTable.getAttribute("SRed");
3323		if ((serverFileRedir !=null) &&
3324			(serverFileRedir !="") &&
3325			(serverFileRedir !="1"))
3326		{
3327			if (serverFileRedir.substring(0,1) !="1")
3328			{
3329				fileUrl=serverFileRedir;
3330			}
3331			else
3332			{
3333				fileUrl=serverFileRedir.substring(1);
3334			}
3335		}
3336		strAction="javascript:navigateMailToLinkNew('"+fileUrl+"')";
3337		strImagePath=ctx.imagesPath+"gmailnew.gif";
3338		menuOption=CAMOpt(sm, strDisplayText, strAction, strImagePath);
3339		menuOption.id="ID_SendToEmail";
3340	}
3341	var serverFileRedirect=itemTable.getAttribute("SRed");
3342	if (currentItemFSObjType !=1 &&
3343		ctx.listBaseType==1 &&
3344		(serverFileRedirect==null || serverFileRedirect==""
3345		   || HasRights(0x0, 0x20)))
3346	{
3347		if (ctx.listTemplate !=109 &&
3348			ctx.listTemplate !=119)
3349			AddWorkspaceMenuItem(sm, ctx);
3350		strAction="STSNavigate('"+			ctx.HttpRoot+			"/_layouts/download.aspx?"+			"SourceUrl="+			currentItemEscapedFileUrl+			"&Source="+			GetSource()+"&FldUrl="+			escapeProperly(ctx.SendToLocationUrl)+"')";;
3351		menuOption=CAMOpt(sm, L_DownloadACopy_Text, strAction, "");
3352		menuOption.id="ID_DownloadACopy";
3353	}
3354}
3355function AddDocTransformSubMenu(m, ctx)
3356{
3357	if (typeof(rgDocTransformers)=="undefined" ||
3358		rgDocTransformers==null)
3359	{
3360		return;
3361	}
3362	var sm=null;
3363	var currentItemUrl=GetAttributeFromItemTable(itemTable, "Url", "ServerUrl");
3364	var currentItemEscapedFileUrl;
3365	if (currentItemFileUrl !=null)
3366		currentItemEscapedFileUrl=escapeProperly(
3367		unescapeProperly(currentItemFileUrl));
3368	var iDot=currentItemUrl.lastIndexOf(".");
3369	if (iDot > 0)
3370	{
3371		var strExtension=currentItemUrl.substring(iDot+1, currentItemUrl.length).toLowerCase();
3372		var iTransformer;
3373		var fAddedTransformer=false;
3374		for (iTransformer=0; iTransformer < rgDocTransformers.length; iTransformer++)
3375		{
3376			if (rgDocTransformers[iTransformer].ConvertFrom==strExtension)
3377			{
3378				var ctid=GetAttributeFromItemTable(itemTable, "CId", "ContentTypeId");
3379				var re=new RegExp("/\|"+ctid+"\|/");
3380				if (ctid && !re.test(rgDocTransformers[iTransformer].ExcludedContentTypes))
3381				{
3382					if (!fAddedTransformer)
3383					{
3384						sm=CASubM(m, L_DocTran_Text, ctx.imagesPath+"ConvertDocument.gif", L_DocTran_Text, 500);
3385						sm.Id="ID_ConvertDocument";
3386						fAddedTransformer=true;
3387					}
3388					strAction="STSNavigate('"+ctx.HttpRoot+											"/_layouts/"+escapeProperlyCore(rgDocTransformers[iTransformer].TransformUIPage, true)+"?"+											"FileName="+currentItemEscapedFileUrl+											"&TID="+rgDocTransformers[iTransformer].Id+											"&Source="+GetSource()+											"')";
3389					var tm;
3390					tm=CAMOpt(sm, rgDocTransformers[iTransformer].Name, strAction, "");
3391					tm.Id="ID_Transform"+rgDocTransformers[iTransformer].Id;
3392				}
3393			}
3394		}
3395	}
3396}
3397function AddMeetingMenuItems(m, ctx)
3398{
3399	if (itemTable.getAttribute("menuType")=="Orphaned")
3400	{
3401		var menuOption;
3402		var currentInstanceId=GetAttributeFromItemTable(itemTable, "ItemId", "Id");
3403		strDisplayText=L_Move_Text;
3404		strAction="GoToMtgMove('"+ctx.listUrlDir+"',"+currentInstanceId+",'"+itemTable.getAttribute("DateTime")+"','"+itemTable.getAttribute("DateTimeISO")+"')";
3405		strImagePath="";
3406		menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath);
3407		menuOption.id="ID_Move";
3408		strDisplayText=L_Keep_Text;
3409		strAction="MtgKeep('"+ctx.HttpPath+"','"+ctx.listName+"',"+currentInstanceId+")";
3410		strImagePath="";
3411		menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath);
3412		menuOption.id="ID_Keep";
3413		strDisplayText=L_Delete_Text;
3414		strAction="MtgDelete('"+ctx.HttpPath+"','"+ctx.listName+"',"+currentInstanceId+")";
3415		strImagePath=ctx.imagesPath+"delitem.gif";
3416		menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath);
3417		menuOption.id="ID_Delete";
3418	}
3419}
3420function AddListMenuItems(m, ctx)
3421{
3422	if (typeof(Custom_AddListMenuItems) !="undefined")
3423	{
3424		if (Custom_AddListMenuItems(m, ctx))
3425			return;
3426	}
3427	if (currentItemFileUrl==null)
3428		currentItemFileUrl=GetAttributeFromItemTable(itemTable, "Url", "ServerUrl");
3429	var currentItemEscapedFileUrl;
3430	if (currentItemFileUrl !=null)
3431		currentItemEscapedFileUrl=escapeProperly(unescapeProperly(currentItemFileUrl));
3432	if (currentItemIsEventsExcp==null)
3433	{
3434		currentItemIsEventsExcp=false;
3435		currentItemIsEventsDeletedExcp=false;
3436		currentItemEvtType=itemTable.getAttribute("EventType");
3437		if(currentItemEvtType !=null &&
3438			 (currentItemEvtType==2 || currentItemEvtType==3 || currentItemEvtType==4))
3439		{
3440			currentItemIsEventsExcp=true;
3441			if (currentItemEvtType==3)
3442	            currentItemIsEventsDeletedExcp=true;
3443		}
3444	}
3445	var menuOption;
3446	if (ctx.listBaseType==3 && ctx.listTemplate==108)
3447	{
3448		strDisplayText=L_Reply_Text;
3449		if(itemTable.getAttribute("Ordering").length>=504)
3450		{
3451			var L_ReplyLimitMsg_Text="Cannot reply to this thread. The reply limit has been reached.";
3452			strAction="alert('"+L_ReplyLimitMsg_Text+"')";
3453		}
3454		else
3455		{
3456			strAction="STSNavigate('"+ctx.newFormUrl
3457+"?Threading="+escapeProperly(itemTable.getAttribute("Ordering"))
3458+"&Guid="+escapeProperly(itemTable.getAttribute("ThreadID"))
3459+"&Subject="+escapeProperly(itemTable.getAttribute("Subject"))
3460+"&Source="+GetSource()+"')";
3461		}
3462		strImagePath=ctx.imagesPath+"reply.gif";
3463		menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 100);
3464		menuOption.id="ID_Reply";
3465	}
3466	AddSharedNamespaceMenuItems(m, ctx);
3467	if (currentItemID.indexOf(".0.") < 0 && HasRights(0x0, 0x8)
3468		  && !currentItemIsEventsExcp)
3469	{
3470		if (ctx.listBaseType==4)
3471			strDisplayText=L_DeleteResponse_Text;
3472		else
3473			strDisplayText=L_DeleteItem_Text;
3474		strAction="DeleteListItem()";
3475		strImagePath=ctx.imagesPath+"delitem.gif";
3476		menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 300);
3477		menuOption.id="ID_DeleteItem";
3478	}
3479	var contentTypeId=itemTable.getAttribute("CId");
3480	if (contentTypeId !=null && contentTypeId.indexOf("0x0106")==0
3481			&& HasRights(0x10, 0x0))
3482	{
3483		strDisplayText=L_ExportContact_Text;
3484		strAction="STSNavigate('"+ctx.HttpPath+"&Cmd=Display&CacheControl=1&List="+ctx.listName+"&ID="+currentItemID+"&Using="+escapeProperly(ctx.listUrlDir)+"/vcard.vcf"+"')";
3485		strImagePath=ctx.imagesPath+"exptitem.gif";
3486		menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 350);
3487		menuOption.id="ID_ExportContact";
3488	}
3489	CAMSep(m);
3490	if (ctx.verEnabled==1)
3491	{
3492		AddVersionsMenuItem(m, ctx, currentItemEscapedFileUrl);
3493	}
3494	AddWorkflowsMenuItem(m, ctx);
3495	CAMSep(m);
3496	if ((currentItemID.indexOf(".0.") < 0)
3497		  && HasRights(0x80, 0x0))
3498	{
3499		strDisplayText=L_Subscribe_Text;
3500		strAction="NavigateToSubNewAspx('"+ctx.HttpRoot+"', 'List="+ctx.listName+"&ID="+currentItemID+"')";
3501		strImagePath="";
3502		menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 1100);
3503		menuOption.id="ID_Subscribe";
3504	}
3505	if (ctx.isModerated==true &&
3506		  HasRights(0x0, 0x10) && HasRights(0x0, 0x4)
3507			&& HasRights(0x0, 0x21000) && ctx.listBaseType !=4)
3508	{
3509		strDisplayText=L_ModerateItem_Text;
3510		strAction="STSNavigate('"+ctx.HttpRoot+"/_layouts/approve.aspx?List="+ctx.listName
3511+"&ID="+currentItemID+"&Source="+GetSource()+"')";
3512		strImagePath=ctx.imagesPath+"apprj.gif";
3513		menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 1150);
3514		menuOption.id="ID_ModerateItem";
3515	}
3516	if (currentItemFSObjType==1 &&
3517		ctx.ContentTypesEnabled &&
3518		ctx.listTemplate !=108)
3519	{
3520		strDisplayText=L_CustomizeNewButton_Text;
3521		strAction="STSNavigate('"+ctx.HttpRoot+"/_layouts/ChangeContentTypeOrder.aspx?List="+ctx.listName+"&RootFolder="+currentItemEscapedFileUrl+"&Source="+GetSource()+"')";
3522		strImagePath="";
3523		menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 1170);
3524		menuOption.id="ID_CustomizeNewButton";
3525	}
3526}
3527function ReplaceUrlTokens(urlWithTokens, ctx)
3528{
3529	if (currentItemID !=null)
3530		urlWithTokens=urlWithTokens.replace("{ItemId}", currentItemID);
3531	if (currentItemFileUrl !=null)
3532		urlWithTokens=urlWithTokens.replace("{ItemUrl}", currentItemFileUrl);
3533	if (ctx.HttpRoot !=null)
3534		urlWithTokens=urlWithTokens.replace("{SiteUrl}", ctx.HttpRoot);
3535	if (ctx.listName !=null)
3536		urlWithTokens=urlWithTokens.replace("{ListId}", ctx.listName);
3537	return urlWithTokens;
3538}
3539function InsertFeatureMenuItems(m, ctx)
3540{
3541	CAMSep(m);
3542	var fileType=GetAttributeFromItemTable(itemTable, "Ext", "FileType");
3543	var progId=GetAttributeFromItemTable(itemTable, "Type", "HTMLType");
3544	var contentTypeId=GetAttributeFromItemTable(itemTable, "CId", "ContentTypeId");
3545	var listTemplateId=null;
3546	if (ctx !=null)
3547		listTemplateId=ctx.listTemplate;
3548	if (fileType) fileType=fileType.toLowerCase();
3549	if (progId) progId=progId.toLowerCase();
3550	if (contentTypeId) contentTypeId=contentTypeId.toLowerCase();
3551	var menuOption;
3552	var elemTable=document.getElementById("ECBItems");
3553	if (elemTable !=null)
3554	{
3555		var elemTBody=elemTable.childNodes[0];
3556		for (var iMenuItem=0; iMenuItem < elemTBody.childNodes.length; iMenuItem++)
3557		{
3558			var elemTR=elemTBody.childNodes[iMenuItem];
3559			var elemTDRightsH=parseInt(GetInnerText(elemTR.childNodes[3]));
3560			var elemTDRightsL=parseInt(GetInnerText(elemTR.childNodes[4]));
3561			var regType=GetInnerText(elemTR.childNodes[5]);
3562			var regId=GetInnerText(elemTR.childNodes[6]);
3563			var fInsertMenuItem=false;
3564			if (regId)
3565			{
3566				regId=regId.toLowerCase();
3567				if (regType=="FileType")
3568				{
3569					fInsertMenuItem=						(fileType==regId.toLowerCase());
3570				}
3571				else if (regType=="ProgId")
3572				{
3573					fInsertMenuItem=						(progId==regId.toLowerCase());
3574				}
3575				else if (regType=="ContentType")
3576				{
3577					fInsertMenuItem=						(contentTypeId &&
3578						 contentTypeId.indexOf(regId.toLowerCase())==0);
3579				}
3580				else if (regType=="List")
3581				{
3582					fInsertMenuItem=						(listTemplateId &&
3583						 listTemplateId==regId);
3584				}
3585			}
3586			if (fInsertMenuItem &&
3587				HasRights(elemTDRightsH, elemTDRightsL))
3588			{
3589				var elemTDTitle=elemTR.childNodes[0];
3590				var elemTDImageUrl=elemTR.childNodes[1];
3591				var elemTDAction=elemTR.childNodes[2];
3592				var iSequence=parseInt(GetInnerText(elemTR.childNodes[7]));
3593				var strDisplayText=GetInnerText(elemTDTitle);
3594				var tdAction=ReplaceUrlTokens(GetInnerText(elemTDAction), ctx);
3595				var strAction;
3596				if (tdAction.substr(0,11)=="javascript:")
3597					strAction=tdAction;
3598				else
3599					strAction="STSNavigate('"+STSScriptEncode(tdAction)+"')";
3600				var strImagePath=ReplaceUrlTokens(GetInnerText(elemTDImageUrl), ctx);
3601				menuOption=CIMOpt(m, strDisplayText, strAction, strImagePath, null, iSequence);
3602			}
3603		}
3604	}
3605}
3606function GetRootFolder(ctx)
3607{
3608	var RootFolder=GetUrlKeyValue("RootFolder", true);
3609	if (RootFolder=="" || bValidSearchTerm)
3610	{
3611		var FileDirRef;
3612		if (itemTable)
3613			FileDirRef=GetAttributeFromItemTable(itemTable, "DRef", "FileDirRef");
3614		if (FileDirRef !=null)
3615			RootFolder="/"+FileDirRef;
3616		else
3617			RootFolder=ctx.listUrlDir;
3618		RootFolder=escapeProperly(RootFolder);
3619	}
3620	return "&RootFolder="+RootFolder;
3621}
3622function HasRights(requiredH, requiredL)
3623{
3624	if(currentItemPermMaskH==null)
3625	{
3626		if (itemTable==null) return true;
3627		var pmStr=GetAttributeFromItemTable(itemTable, "Perm", "PermMask");
3628		if(pmStr==null) return true;
3629		var currentItemAuthor=itemTable.getAttribute("Author");
3630		SetCurrentPermMaskFromString(pmStr, currentItemAuthor);
3631	}
3632	if(!currentItemCanModify
3633		&& (EqualRights(requiredH, requiredL, 0x0, 0x4)
3634		|| EqualRights(requiredH, requiredL, 0x0, 0x8)
3635		|| EqualRights(requiredH, requiredL, 0x40000000, 0x0)))
3636	{
3637		return false;
3638	}
3639	return (((requiredL & currentItemPermMaskL)==requiredL)
3640	&& ((requiredH & currentItemPermMaskH)==requiredH));
3641}
3642function EqualRights(rightsH1, rightsL1, rightsH2, rightsL2)
3643{
3644	return ((rightsH1==rightsH2) && (rightsL2==rightsL2));
3645}
3646function SetCurrentPermMaskFromString(pmStr, currentItemAuthor)
3647{
3648	var pmLen=pmStr.length;
3649	if(pmLen <=10 )
3650	{
3651		currentItemPermMaskH=0;
3652		currentItemPermMaskL=parseInt(pmStr);
3653	}
3654	else
3655	{
3656		currentItemPermMaskH=parseInt(pmStr.substring(2, pmLen - 8), 16);
3657		currentItemPermMaskL=parseInt(pmStr.substring(pmLen - 8, pmLen), 16);
3658	}
3659	currentItemCanModify=true;
3660	  currentItemCanModify=(currentItemAuthor==null)
3661							  || HasRights(0x0, 0x800)
3662							  || (ctx.CurrentUserId==currentItemAuthor)
3663							  || (ctx.CurrentUserId==null)
3664							  || (ctx.WriteSecurity==1);
3665}
3666function AddSharedNamespaceMenuItems(m, ctx)
3667{
3668	var RootFolder=GetRootFolder(ctx);
3669	setupMenuContext(ctx);
3670	if (currentItemFileUrl==null)
3671		currentItemFileUrl=GetAttributeFromItemTable(itemTable, "Url", "ServerUrl");
3672	if (currentItemFSObjType==null)
3673		currentItemFSObjType=GetAttributeFromItemTable(itemTable, "OType", "FSObjType");
3674	if (currentItemModerationStatus==null)
3675		currentItemModerationStatus=GetAttributeFromItemTable(itemTable, "MS", "MStatus");
3676	if (currentItemCheckedOutUserId==null)
3677		currentItemCheckedOutUserId=itemTable.getAttribute("COUId");
3678	if (currentItemCheckedoutToLocal==null)
3679		currentItemCheckedoutToLocal=GetAttributeFromItemTable(itemTable, "COut", "IsCheckedoutToLocal ");
3680	if (currentItemCheckedoutToLocal !=1)
3681		currentItemCheckedoutToLocal=0;
3682	bIsCheckout=0;
3683	if (ctx.isForceCheckout==true &&  currentItemCheckedOutUserId=="" &&
3684		currentItemFSObjType !=1)
3685	{
3686		bIsCheckout=1;
3687	}
3688	var currentItemEscapedFileUrl;
3689	if (currentItemFileUrl !=null)
3690		currentItemEscapedFileUrl=escapeProperly(
3691		unescapeProperly(currentItemFileUrl));
3692	var menuOption;
3693	if (ctx.listBaseType==1)
3694		strDisplayText=L_ViewProperties_Text;
3695	else if (ctx.listBaseType==4)
3696		strDisplayText=L_ViewResponse_Text;
3697	else
3698		strDisplayText=L_ViewItem_Text;
3699	strAction="STSNavigate('"+ctx.displayFormUrl+"?ID="+currentItemID+				"&Source="+GetSource()+RootFolder+"')";
3700	strImagePath="";
3701	menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 200);
3702	if (ctx.listBaseType==1)
3703		menuOption.id="ID_ViewProperties";
3704	else
3705		menuOption.id="ID_ViewItem";
3706	if (HasRights(0x0, 0x4) &&
3707	      !currentItemIsEventsDeletedExcp)
3708	{
3709		if (ctx.listBaseType==1)
3710			strDisplayText=L_EditProperties_Text;
3711		else if (ctx.listBaseType==4)
3712			strDisplayText=L_EditResponse_Text;
3713		else
3714			strDisplayText=L_EditItem_Text;
3715	   if (ctx.listBaseType==1)
3716	   {
3717		   strAction="STSNavigateWithCheckoutAlert('"+ctx.editFormUrl+"?ID="+currentItemID+					   "&Source="+GetSource()+RootFolder+"',"+bIsCheckout+",'"
3718+currentItemCheckedoutToLocal+"','"+STSScriptEncode(currentItemFileUrl)+"','"+ctx.HttpRoot+"')";
3719	   }
3720	   else
3721	   {
3722		   strAction="STSNavigate('"+ctx.editFormUrl+"?ID="+currentItemID+"&Source="+GetSource()+"')";
3723	   }
3724		strImagePath=ctx.imagesPath+"edititem.gif";
3725		menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 220);
3726		if (ctx.listBaseType==1)
3727			menuOption.id="ID_EditProperties";
3728		else
3729			menuOption.id="ID_EditItem";
3730		if (ctx.listTemplate==106 &&
3731			currentItemID.indexOf(".0.") > 0)
3732		{
3733			var SeriesIdEnd=currentItemID.indexOf(".0.");
3734			var itemSeriesID=currentItemID.substr(0, SeriesIdEnd);
3735			strDisplayText=L_EditSeriesItem_Text;
3736			strAction="STSNavigate('"+ctx.editFormUrl+"?ID="+itemSeriesID+"&Source="+					   GetSource()+"')";
3737			strImagePath=ctx.imagesPath+"recurrence.gif";
3738			menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 230);
3739			menuOption.id="ID_EditSeriesItem";
3740		}
3741	}
3742	AddManagePermsMenuItem(m, ctx, ctx.listName, currentItemID);
3743}
3744function AddDocLibMenuItems(m, ctx)
3745{
3746	if (typeof(Custom_AddDocLibMenuItems) !="undefined")
3747	{
3748		if (Custom_AddDocLibMenuItems(m, ctx))
3749			return;
3750	}
3751	var RootFolder=GetRootFolder(ctx);
3752	var menuOption;
3753	AddSharedNamespaceMenuItems(m, ctx);
3754	var currentItemEscapedFileUrl;
3755	if (currentItemFileUrl !=null)
3756		currentItemEscapedFileUrl=escapeProperly(unescapeProperly(currentItemFileUrl));
3757	var serverFileRedirect=itemTable.getAttribute("SRed");
3758	if (HasRights(0x0, 0x4) && HasRights(0x10, 0x0)
3759		  && currentItemFSObjType !=1
3760		  && (serverFileRedirect==null || serverFileRedirect=="" || HasRights(0x0, 0x20))
3761		  )
3762	{
3763		if (ctx.isWebEditorPreview==0 && ctx.listBaseType==1)
3764		{
3765			if (ctx.listTemplate==109 && itemTable.getAttribute("IsImage")=="1")
3766			{
3767				strDisplayText=L_EditInOIS_Text;
3768				strAction="EditSingleImage('"+currentItemID+"')";
3769				strImagePath=ctx.imagesPath+"oisweb.gif";
3770				menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 240);
3771				menuOption.id="ID_EditInOIS";
3772			}
3773			else
3774			{
3775				setDocType();
3776				if (currentItemAppName !="" && currentItemOpenControl !="")
3777				{
3778		      strDisplayText="";	
3779		      if (currentItemAppName !=" ")
3780						strDisplayText=StBuildParam(L_EditIn_Text, currentItemAppName);
3781					else
3782			{			
3783			      var	objEditor=StsOpenEnsureEx(currentItemOpenControl+".3");
3784	        	      if (objEditor !=null )	
3785					strDisplayText=L_EditInApplication_Text;
3786						}
3787			if (strDisplayText !="")
3788			{
3789				strAction="editDocumentWithProgID2('"+currentItemFileUrl+"', '"+currentItemProgId+"', '"
3790+currentItemOpenControl+"', '"+bIsCheckout+"', '"+ctx.HttpRoot+"', '"+currentItemCheckedoutToLocal+"')";
3791	                    	strImagePath=ctx.imagesPath+currentItemIcon;
3792	                    	menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 240);
3793	                    	menuOption.id="ID_EditIn_"+currentItemAppName;
3794			}
3795				}
3796			}
3797		}
3798	}
3799	if (HasRights(0x0, 0x8))
3800	{
3801		strDisplayText=L_DeleteDocItem_Text;
3802		var isCopy="false";
3803		if (typeof(itemTable.getAttribute("CSrc")) !="undefined" &&
3804			itemTable.getAttribute("CSrc") !=null &&
3805			itemTable.getAttribute("CSrc") !="")
3806		{
3807			isCopy="true";
3808		}
3809		strAction="DeleteDocLibItem('"+				ctx.HttpPath+"&Cmd=Delete&List="+ctx.listName+				"&ID="+currentItemID+"&owsfileref="+				currentItemEscapedFileUrl+"&NextUsing="+GetSource()+"',"+				isCopy+")";
3810		strImagePath=ctx.imagesPath+"delitem.gif";
3811		menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 310);
3812		menuOption.id="ID_DeleteDocItem";
3813	}
3814	AddGotoSourceItemMenuItem(m, ctx, itemTable, currentItemFSObjType);
3815	if (currentItemFSObjType !=1)
3816	{
3817		AddSendSubMenu(m,ctx);
3818		AddDocTransformSubMenu(m,ctx);
3819	}
3820	if (currentItemFSObjType !=1 &&
3821	   ctx.listTemplate==109 &&
3822	   typeof(DownloadOriginalImage)=="function")
3823	{
3824		strAction="DownloadOriginalImage("+currentItemID+")";
3825		strImagePath=ctx.imagesPath+"download.gif";
3826		strDisplayText=L_DownloadOriginal_Text;
3827		menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 550);
3828		menuOption.id="ID_DownloadOriginal";
3829	}
3830	if (HasRights(0x0, 0x4))
3831	{
3832		if ((ctx.isModerated==true) && (((currentItemModerationStatus==2) ||
3833				!ctx.EnableMinorVersions) && currentItemCheckedOutUserId=="" ||currentItemFSObjType==1))
3834		{
3835			strDisplayText=L_ModerateItem_Text;
3836			strAction="STSNavigate('"+ctx.HttpRoot+"/_layouts/approve.aspx?List="+ctx.listName
3837+"&ID="+currentItemID+"&Source="+GetSource()+GetRootFolder(ctx)+"')";
3838			strImagePath=ctx.imagesPath+"apprj.gif";
3839			menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 1150);
3840			menuOption.id="ID_ModerateItem";
3841		}
3842		if (currentItemFSObjType !=1)
3843		{
3844			if (ctx.listBaseType==1)
3845			{
3846				CAMSep(m);
3847				AddCheckinCheckoutMenuItem(m, ctx, currentItemEscapedFileUrl);
3848			}
3849		}
3850	}
3851	if (ctx.verEnabled==1 || ctx.isModerated)
3852		AddVersionsMenuItem(m, ctx, currentItemEscapedFileUrl);
3853	if (currentItemFSObjType !=1)
3854	{
3855		AddWorkflowsMenuItem(m, ctx);
3856		CAMSep(m);
3857		if (ctx.PortalUrl !=null)
3858		{
3859			strDisplayText=L_AddToMyLinks_Text;
3860			strAction="Portal_Tasks('PinToMyPage')"; ;
3861			strImagePath="";
3862			menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 1000);
3863			menuOption.id="ID_AddToMyLinks";
3864			CAMSep(m);
3865		}
3866	}
3867	else if (ctx.listBaseType==1
3868		  && HasRights(0x10, 0x0))
3869	{
3870		AddWorkOfflineMenuItem(m, ctx, currentItemFileUrl);
3871	}
3872	if (HasRights(0x80, 0x0))
3873	{
3874		strDisplayText=L_Subscribe_Text;
3875		strAction="NavigateToSubNewAspx('"+ctx.HttpRoot+"', 'List="+ctx.listName+"&ID="+currentItemID+"')";
3876		strImagePath="";
3877		menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 1100);
3878		menuOption.id="ID_Subscribe";
3879	}
3880	if (currentItemFSObjType==1 &&
3881		ctx.ContentTypesEnabled &&
3882		ctx.listTemplate !=108)
3883	{
3884		strDisplayText=L_CustomizeNewButton_Text;
3885		strAction="STSNavigate('"+ctx.HttpRoot+"/_layouts/ChangeContentTypeOrder.aspx?List="+ctx.listName+"&RootFolder="+currentItemEscapedFileUrl+"&Source="+GetSource()+"')";
3886		strImagePath="";
3887		menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 1170);
3888		menuOption.id="ID_CustomizeNewButton";
3889	}
3890}
3891function AddManagePermsMenuItem(m, ctx, listId, url)
3892{
3893	if(!HasRights(0x40000000, 0x0) || currentItemIsEventsExcp)
3894		return;
3895	strDisplayText=L_MngPerms_Text;
3896	strAction="NavigateToManagePermsPage('"+ctx.HttpRoot+"', '"+listId+"','"+url+"')";
3897	strImagePath=ctx.imagesPath+"manageperm.gif";
3898	var menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 250);
3899	menuOption.id="ID_MngPerms";
3900}
3901function AddGotoSourceItemMenuItem(m, ctx, itemTable, objtype)
3902{
3903	if (objtype !=1 &&
3904		typeof(itemTable.getAttribute("CSrc")) !="undefined" &&
3905		itemTable.getAttribute("CSrc") !=null &&
3906		itemTable.getAttribute("CSrc") !="")
3907	{
3908		strDisplayText=L_GoToSourceItem_Text;
3909		strAction="NavigateToSourceItem('"+itemTable.getAttribute("CSrc")+"')";
3910		strImagePath=ctx.imagesPath+"goToOriginal.gif";
3911		var menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 340);
3912		menuOption.id="ID_GoToSourceItem";
3913	}
3914}
3915function AddCheckinCheckoutMenuItem(m, ctx, url)
3916{
3917	var menuOption;
3918	if(!HasRights(0x0, 0x4))
3919		return;
3920	if (currentItemCheckedOutUserId==null)
3921		currentItemCheckedOutUserId=itemTable.getAttribute("COUId");
3922	if (currentItemCheckedOutUserId !="")
3923	{
3924		if(currentItemCheckedOutUserId==ctx.CurrentUserId
3925	     || ctx.CurrentUserId==null
3926			|| HasRights(0x0, 0x100))
3927		{
3928			strDisplayText=L_Checkin_Text;
3929			strAction="NavigateToCheckinAspx('"+ctx.HttpRoot+"', 'List="+ctx.listName+"&FileName="+url+"')";
3930			strImagePath=ctx.imagesPath+"checkin.gif";
3931			menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 700);
3932			menuOption.id="ID_Checkin";
3933			strDisplayText=L_DiscardCheckou_Text;
3934			strAction="UnDoCheckOut('"+ctx.HttpRoot+"', '"+url+"')";
3935			strImagePath=ctx.imagesPath+"unchkout.gif";
3936			menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 710);
3937			menuOption.id="ID_DiscardCheckou";
3938		}
3939	}
3940	else
3941	{
3942		strDisplayText=L_Checkout_Text;
3943		if (currentItemOpenControl=="")
3944			setDocType();
3945		var opencontrol="";
3946		if (ctx.listTemplate !=109)
3947			opencontrol=currentItemOpenControl+".3";
3948		var serverFileRedirect=itemTable.getAttribute("SRed");
3949		if(serverFileRedirect==null || serverFileRedirect=="" || HasRights(0x0, 0x20))
3950		{
3951			strAction="CheckoutDocument('"+ctx.HttpRoot+"', '"+url+"', '"+opencontrol+"')";
3952			strImagePath=ctx.imagesPath+"checkout.gif";
3953			menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 700);
3954			menuOption.id="ID_Checkout";
3955		}
3956		if (currentItemModerationStatus==null)
3957			currentItemModerationStatus=GetAttributeFromItemTable(itemTable, "MS", "MStatus");
3958		if (ctx.EnableMinorVersions)
3959		{
3960			if (currentItemUIString==null)
3961				currentItemUIString=GetAttributeFromItemTable(itemTable, "UIS", "UIString");
3962			var minorversion=currentItemUIString%512;
3963			if ((((currentItemModerationStatus==1) ||
3964				(currentItemModerationStatus==3)) &&
3965				ctx.isModerated) ||
3966				(!ctx.isModerated  && minorversion !=0))
3967			{
3968				strDisplayText=L_PublishItem_Text;
3969				strAction="NavigateToCheckinAspx('"+ctx.HttpRoot+"', 'List="+ctx.listName+"&FileName="+url+"&Publish=true')";
3970				strImagePath=ctx.imagesPath+"pubmajor.gif";
3971				menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 720);
3972				menuOption.id="ID_PublishItem";
3973			}
3974			else
3975			{
3976				var strMenuOptionId;
3977				var  bCancelApproval=false;
3978				if ((!ctx.isModerated) || (currentItemModerationStatus==0))
3979				{
3980					strDisplayText=L_UnPublishItem_Text;
3981					strMenuOptionId="ID_UnPublishItem";
3982					strImagePath=ctx.imagesPath+"unpub.gif";
3983				}
3984				else
3985				{
3986					strDisplayText=L_CancelPublish_Text;
3987					strMenuOptionId="ID_CancelPublish";
3988					strImagePath=ctx.imagesPath+"unapprv.gif";
3989					bCancelApproval=true;
3990				}
3991				strAction="UnPublish('"+ctx.HttpRoot+"', 'FileName="+url+"&UnPublish=true',"+bCancelApproval+")";	
3992				menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 730);
3993				menuOption.id=strMenuOptionId;
3994			}
3995		}
3996	}
3997}
3998function AddWorkflowsMenuItem(m, ctx)
3999{
4000	if (ctx.WorkflowsAssociated && HasRights(0x0, 0x4))
4001	{
4002		var strCTID=GetAttributeFromItemTable(itemTable, "CId", "ContentTypeId");
4003		if (strCTID==null || strCTID.substr(0,8) !="0x010801")
4004		{
4005			var strImagePath=ctx.imagesPath+"workflows.gif";
4006			var itemID;
4007			var SeriesIdEnd=currentItemID.indexOf(".0.");
4008			if (SeriesIdEnd > 0)
4009				itemID=currentItemID.substr(0, SeriesIdEnd);
4010			else
4011				itemID=currentItemID;
4012			var strAction="STSNavigate('"+ctx.HttpRoot+"/_layouts/Workflow.aspx?ID="+itemID+"&List="+ctx.listName+"&Source="+GetSource()+"')";
4013			var menuOption=CAMOpt(m, L_Workflows_Text, strAction, strImagePath, null, 900);
4014			menuOption.id="ID_Workflows";
4015		}
4016	}
4017}
4018function AddWorkspaceMenuItem(m, ctx)
4019{
4020	var menuOption;
4021	var strSourceUrl=GetAttributeFromItemTable(itemTable, "SUrl", "SourceUrl");
4022	if ( strSourceUrl !=null && strSourceUrl !="" && strSourceUrl !="%20")
4023	{
4024		if (HasRights(0x0, 0x21000))
4025		{
4026			strAction="STSNavigate('"+ctx.HttpRoot+"/_layouts/publishback.aspx?list="+ctx.listName+"&item="+currentItemID+GetRootFolder(ctx)+"')";
4027			menuOption=CAMOpt(m, L_PublishBack_Text, strAction, "", null, 1140);
4028			menuOption.id="ID_PublishBack";
4029		}
4030	}
4031	else
4032	{
4033		if (HasRights(0x0, 0x800000) && HasRights(0x0, 0x21000) && HasRights(0x0, 0x4000000))
4034		{
4035			strAction="STSNavigate('"+ctx.HttpRoot+"/_layouts/createws.aspx?list="+ctx.listName+"&item="+currentItemID+GetRootFolder(ctx)+"')";
4036			menuOption=CAMOpt(m, L_CreateDWS_Text, strAction, "", null, 1140);
4037			menuOption.id="ID_CreateDWS";
4038		}
4039	}
4040}
4041function AddVersionsMenuItem(m, ctx, url)
4042{
4043	if (currentItemID !=null)
4044	{
4045	   var strCurrentItemID=currentItemID.toString();
4046	   if (strCurrentItemID.indexOf(".0.") >=0 )
4047	   return;
4048	}
4049	if (!HasRights(0x0, 0x40))
4050	  return;
4051	strDisplayText=L_Versions_Text;
4052	strAction="NavigateToVersionsAspx('"+ctx.HttpRoot+"', 'list="+ctx.listName+"&ID="+currentItemID+"&FileName="+url+"')";
4053	strImagePath=ctx.imagesPath+"versions.gif";
4054	var menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 800);
4055	menuOption.id="ID_Versions";
4056}
4057function AddWorkOfflineMenuItem(m, ctx, url)
4058{
4059	strDisplayText=GetStssyncAppNameForType("documents",L_WorkOffline_Text,strImagePath);
4060	if (strDisplayText)
4061	{
4062		strAction="javascript:ExportHailStorm('documents','"+ctx.HttpRoot+"','"+			ctx.listName+"','"+STSScriptEncode(ctx.SiteTitle)+			"','"+ctx.ListTitle+"','"+			STSScriptEncode(ctx.listUrlDir)+"','','"+STSScriptEncode(unescapeProperly(ctx.listUrlDir))+"'";
4063		strAction+=",'"+STSScriptEncode(unescapeProperly(url))+"','"+currentItemID+"')";
4064		strImagePath=GetStssyncIconPath(ctx.imagesPath+"tbsprsht.gif", ctx.imagesPath);
4065		menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath);
4066		menuOption.id="ID_WorkOffline";
4067	}
4068}
4069function AddVersionMenuItems(m, ctx)
4070{
4071	if (typeof(AddVersionMenuItemsCore)=="function")
4072	{
4073		AddVersionMenuItemsCore(m, ctx);
4074	}
4075}
4076function NavigateToSubNewAspx(strHttpRoot, strArgs)
4077{
4078	STSNavigate(strHttpRoot+"/_layouts/SubNew.aspx?"+strArgs+"&Source="+GetSource());
4079}
4080function NavigateToVersionsAspx(strHttpRoot, strArgs)
4081{
4082	STSNavigate(strHttpRoot+"/_layouts/Versions.aspx?"+strArgs+"&Source="+GetSource());
4083}
4084var L_UndoCheckoutWarning_Text="If you discard your check out, you will lose all changes made to the document.  Are you sure you want to discard your check out?";
4085var L_UnPublishWarning_Text=" Are you sure you want to unpublish this version of the document?";
4086var L_CancleApproval_TEXT=" Are you sure that you want to cancel the approval of this document?";
4087function UnDoCheckOut(strHttpRoot, strUrl)
4088{
4089	try
4090	{
4091		var stsOpen=null;
4092		var strextension=SzExtension(unescapeProperly(strUrl));
4093   	 if (FSupportCheckoutToLocal(strextension) )
4094	 	stsOpen=StsOpenEnsureEx("SharePoint.OpenDocuments.3");
4095		if (stsOpen !=null)
4096		{
4097			var strDocument=currentItemFileUrl;
4098			if (strDocument.charAt(0)=="/" || strDocument.substr(0,3).toLowerCase()=="%2f")
4099				 strDocument=document.location.protocol+"//"+document.location.host+strDocument;
4100			stsOpen.DiscardLocalCheckout(strDocument);
4101			SetWindowRefreshOnFocus();
4102			return;
4103		 }
4104	else
4105	{
4106		if (!confirm(L_UndoCheckoutWarning_Text))
4107			{
4108			return;
4109			}
4110	}
4111	}
4112	catch (e)
4113	{
4114	}
4115	NavigateToCheckinAspx(strHttpRoot, "FileName="+strUrl+"&DiscardCheckout=true");
4116}
4117function UnPublish(strHttpRoot, strArgs, bCancelApproval)
4118{
4119	var strAlert=L_UnPublishWarning_Text;
4120	if (bCancelApproval)
4121	strAlert=L_CancleApproval_TEXT;	
4122	if (!confirm(strAlert))
4123		return;
4124   NavigateToCheckinAspx(strHttpRoot, strArgs)
4125}
4126function NavigateToCheckinAspx(strHttpRoot, strArgs)
4127{
4128	SubmitFormPost(strHttpRoot+"/_layouts"+		"/Checkin.aspx?"+strArgs+"&Source="+GetSource());
4129}
4130function NavigateToManagePermsPage(strHttpRoot, strListId, strFileRef)
4131{
4132	var strObjType=",LISTITEM";
4133	STSNavigate(strHttpRoot+		"/_layouts/User.aspx?obj="+strListId+","+strFileRef+strObjType+		"&List="+strListId+		"&Source="+GetSource());
4134}
4135function NavigateToSourceItem(url)
4136{
4137	var match=url.match(/[^\/]*\/\/[^\/]*/g);
4138	var serverUrl=match[0];
4139	url=escapeProperly(url);
4140	STSNavigate(serverUrl+"/_layouts/copyutil.aspx?GoToDispForm=1&Use=url&ItemUrl="+url);
4141}
4142function setDocType()
4143{
4144	var strArray;
4145	strArray=GetAttributeFromItemTable(itemTable, "Icon", "DocIcon").split("|");
4146	currentItemIcon=strArray[0];
4147	currentItemAppName=strArray[1];
4148	currentItemOpenControl=strArray[2];
4149	currentItemProgId=GetAttributeFromItemTable(itemTable, "Type", "HTMLType");
4150}
4151function DeleteListItem()
4152{
4153	if (! IsContextSet())
4154		return;
4155	var ctx=currentCtx;
4156	var ciid=currentItemID;
4157	if (confirm(ctx.RecycleBinEnabled ? L_STSRecycleConfirm_Text : L_STSDelConfirm_Text))
4158	{
4159		SubmitFormPost(ctx.HttpPath+"&Cmd=Delete&List="+ctx.listName+					"&ID="+ciid+"&NextUsing="+GetSource());
4160	}
4161}
4162function DeleteDocLibItem(delUrl, isCopy)
4163{
4164	if (! IsContextSet())
4165		return;
4166	var strConfirm=(currentItemFSObjType==1)  ?
4167		(ctx.RecycleBinEnabled ? L_STSRecycleConfirm1_Text : L_STSDelConfirm1_Text) :
4168		(ctx.RecycleBinEnabled ? L_STSRecycleConfirm_Text : L_STSDelConfirm_Text);
4169	if (isCopy && currentItemFSObjType !=1)
4170		strConfirm=L_NotifyThisIsCopy_Text+strConfirm;
4171	if (confirm(strConfirm))
4172		SubmitFormPost(delUrl);
4173}
4174function EditMenuDefaultForOnclick()
4175{
4176	if (! IsContextSet())
4177		return;
4178	var ctx=currentCtx;
4179	if (ctx.isVersions)
4180	{
4181		STSNavigate(itemTable.getAttribute("verUrl"));
4182	}
4183	else if (ctx.listTemplate==200)
4184	{
4185		var currentInstanceID=currentItemID;
4186		MtgNavigate(currentInstanceID);
4187	}
4188	else
4189	{
4190		EditListItem();
4191	}
4192}
4193function EditListItem()
4194{
4195	if (event.srcElement.tagName=="A" ||
4196		event.srcElement.parentNode.tagName=="A")
4197		return;
4198	if (! IsContextSet())
4199		return;
4200	var ctx=currentCtx;
4201	var editFormUrl=ctx.editFormUrl+"?ID="+currentItemID+					   "&Source="+GetSource()
4202	if (ctx.listBaseType==1)
4203		editFormUrl=editFormUrl+GetRootFolder(ctx)
4204	STSNavigate(editFormUrl);
4205}
4206function DoNavigateToTemplateGallery(strSaveLocUrl, strTGUrl)
4207{
4208	document.cookie="MSOffice_AWS_DefSaveLoc="+strSaveLocUrl;
4209	STSNavigate(strTGUrl);
4210}
4211function Portal_Tasks(cmd)
4212{
4213	if (! IsContextSet())
4214		return;
4215	var ctx=currentCtx;
4216	var fileRef=unescapeProperly(currentItemFileUrl);
4217	var idx1=0, idx2=0;
4218	idx1=fileRef.lastIndexOf("/")
4219	idx2=fileRef.lastIndexOf(".")
4220	if (idx1 < 0 || idx2 < 0 || idx1 > idx2)
4221		return;
4222	var fileName=fileRef.substr(idx1+1, idx2-idx1-1);
4223	var serverUrl="";
4224	idx1=ctx.HttpRoot.indexOf("://");
4225	if (idx1 > 0)
4226	{
4227		idx2=ctx.HttpRoot.indexOf("/", idx1+3);
4228		if (idx2 > 0)
4229			serverUrl=ctx.HttpRoot.substring(0, idx2);
4230		else
4231			serverUrl=ctx.HttpRoot;
4232	}
4233	var currentItemFileFullUrl="";
4234	if (currentItemFileUrl.charAt(0)=="/"
4235		|| currentItemFileUrl.substr(0,3).toLowerCase()=="%2f")
4236	{
4237		currentItemFileFullUrl=serverUrl+currentItemFileUrl;
4238	}
4239	else
4240	{
4241		currentItemFileFullUrl=currentItemFileUrl;
4242	}
4243	var strParams="";
4244	if (false==setElementValue("ListViewURL", currentItemFileFullUrl))
4245	{
4246		strParams=strParams+"&ListViewURL="+escapeProperly(currentItemFileFullUrl);
4247	}
4248	if (false==setElementValue("ListTitle", fileName))
4249	{
4250		strParams=strParams+"&ListTitle="+escapeProperly(fileName);
4251	}
4252	if (false==setElementValue("ListDescription", ""))
4253	{
4254		strParams=strParams+"&ListDescription=";
4255	}
4256	if (false==setElementValue("ReturnUrl", window.location.href))
4257	{
4258		strParams=strParams+"&ReturnUrl="+escapeProperly(window.location.href);
4259	}
4260	if (ctx.PortalUrl.substr(0, 4) !="http")
4261	{
4262		ctx.PortalUrl=serverUrl+ctx.PortalUrl;
4263	}
4264	var url=ctx.PortalUrl+"_vti_bin/portalapi.aspx?cmd="+cmd;
4265	url=url+"&IconUrl="+ctx.imagesPath+currentItemIcon+strParams;
4266	SubmitFormPost(url);
4267}
4268function IsContextSet()
4269{
4270	if (currentCtx==null)
4271		return false;
4272	else if (currentCtx.isExplictLogin)
4273		return true;
4274	else if (currentCtx.HttpPath==null || currentItemID==null)
4275		return false;
4276	return true;
4277}
4278function ChangeContentType(id)
4279{
4280	var obj=document.getElementById(id);
4281	var strUrl=window.location.href;
4282	var idxQuery=strUrl.indexOf("?");
4283	if (strUrl.indexOf("?") <=0)
4284	{
4285		strUrl=strUrl+"?ContentTypeId="+obj.value;
4286	}
4287	else if (strUrl.indexOf("&ContentTypeId=") <=0)
4288	{
4289		strUrl=strUrl+"&ContentTypeId="+obj.value;
4290	}
4291	else
4292	{
4293		var pattern=/&ContentTypeId=[^&]*/i;
4294		strUrl=strUrl.replace(pattern,"&ContentTypeId="+obj.value);
4295	}
4296	STSNavigate(strUrl);
4297}
4298function TopHelpButtonClick(strParam)
4299{
4300	if(typeof(navBarHelpOverrideKey) !="undefined")
4301	   return HelpWindowKey(navBarHelpOverrideKey);
4302	if (strParam !=null)
4303		HelpWindowKey(strParam);
4304	else
4305		HelpWindowKey('NavBarHelpHome');
4306}
4307function HelpWindowHelper(strParam)
4308{
4309	var strHelpUrl;
4310	if (typeof(strParam)=="undefined")
4311		{strHelpUrl="/_layouts/help.aspx?Lcid="+L_Language_Text;}
4312	else
4313		{strHelpUrl="/_layouts/help.aspx?Lcid="+L_Language_Text+strParam;}
4314	var wndHelp=window.open(strHelpUrl, "STSHELP",
4315		"height=500,location=no,menubar=no,resizable=yes,scrollbars=yes,status=no,toolbar=no,width=475"
4316		);
4317	wndHelp.focus();
4318}
4319function HelpWindowKey(strKey)
4320{
4321	HelpWindowHelper("&Key="+strKey);
4322}
4323function HelpWindowUrl(strUrl)
4324{
4325	HelpWindowHelper("&Url="+strUrl);
4326}
4327function HelpWindow()
4328{
4329	HelpWindowKey("helphome");
4330}
4331function HelpBack()
4332{
4333	history.back();
4334}
4335function HelpForward()
4336{
4337	history.forward();
4338}
4339function HelpPrint()
4340{
4341	window.print();
4342}
4343function HelpSearch(strStringToSearchFor)
4344{
4345	var nMaxLengthSearchString=256;
4346	var strLocationHref="";
4347	if (typeof(glob_strLocaleNumId)=="undefined")
4348	{
4349		return true;
4350	}
4351	if (typeof(glob_strCollectionIds)=="undefined")
4352	{
4353		return true;
4354	}
4355	if (glob_strCollectionIds.length <=0)
4356	{
4357		return true;
4358	}
4359	if (typeof(strStringToSearchFor)=="undefined")
4360	{
4361		return true;
4362	}
4363	if (strStringToSearchFor.length <=0)
4364	{
4365		return true;
4366	}
4367	strStringToSearchFor=TrimWhiteSpaces(strStringToSearchFor);
4368	if (strStringToSearchFor.length==0)
4369	{
4370		return true;
4371	}
4372	strStringToSearchFor=strStringToSearchFor.substr(0,nMaxLengthSearchString);
4373	strStringToSearchFor=encodeURIComponent(strStringToSearchFor);
4374	strLocationHref="/_layouts/HelpSearch.aspx?lcid="
4375+escapeProperlyCore(glob_strLocaleNumId, true);
4376	for (var i=0; i < glob_strCollectionIds.length ;i++)
4377		{
4378		strLocationHref=strLocationHref
4379+"&cid"
4380+i
4381+"="
4382+escapeProperlyCore(glob_strCollectionIds[i], true);
4383		}
4384	strLocationHref=strLocationHref
4385+"&sq="
4386+strStringToSearchFor
4387		;
4388	window.location.href=strLocationHref;
4389}
4390var L_EmptySlideShow_Text="No pictures found in the library. Add pictures and try again.";
4391var L_NotOurView_Text="This operation cannot be completed within current view. Please select another view and try again.";
4392function IsImgLibJssLoaded()
4393{
4394	if (typeof(fImglibJssLoaded) !="undefined")
4395		return fImglibJssLoaded;
4396	return false;
4397}
4398function EditSelectedImages()
4399{
4400	if (!IsImgLibJssLoaded())
4401	{
4402		alert(L_NotOurView_Text);
4403		return;
4404	}
4405	_EditSelectedImages();
4406}
4407function DeleteImages()
4408{
4409	if (!IsImgLibJssLoaded())
4410	{
4411		alert(L_NotOurView_Text);
4412		return;
4413	}
4414	_DeleteImages();
4415}
4416function SendImages()
4417{
4418	if (!IsImgLibJssLoaded())
4419	{
4420		alert(L_NotOurView_Text);
4421		return;
4422	}
4423	_SendImages();
4424}
4425function DownloadImages()
4426{
4427	if (!IsImgLibJssLoaded())
4428	{
4429		alert(L_NotOurView_Text);
4430		return;
4431	}
4432	_DownloadImages();
4433}
4434function MtgToggleTimeZone()
4435{
4436	var timezoneElem=document.getElementById("TimeZoneSection");
4437	var timezoneLinkElem=document.getElementById("TimeZoneLink");
4438	var L_ShowTZ_Text="Show time zone";
4439	var L_HideTZ_Text="Hide time zone";
4440	if ( timezoneElem.style.display=="none" )
4441	{
4442		timezoneElem.style.display="";
4443		timezoneLinkElem.innerHTML="&lt;&lt;"
4444		timezoneLinkElem.title=L_HideTZ_Text;
4445		SetCookie("MtgTimeZone", "1", "");	
4446	}
4447	else
4448	{
4449		timezoneElem.style.display="none";
4450		timezoneLinkElem.innerHTML="&gt;&gt;"
4451		timezoneLinkElem.title=L_ShowTZ_Text;
4452		SetCookie("MtgTimeZone", "0", "");		
4453	}
4454}
4455function GetPageUrl(fHomePage)
4456{
4457	return unescapeProperly(fHomePage ? g_webUrl : g_pageUrl);
4458}
4459function MtgNavigate(instanceId)
4460{
4461	if (instanceId==g_instanceId)
4462		return;
4463	var fHomePage=!g_fPageGlobal;
4464	window.location.href=GetPageUrl(fHomePage)+'?InstanceID='+instanceId+'&'+g_thispagedata;
4465}
4466function GoToMtgMove(listUrlDir, instanceId, instanceDateTime, instanceDateTimeISO)
4467{
4468	window.location.href=listUrlDir+'/movetodt.aspx'
4469+'?FromInstanceID='+instanceId
4470+'&FromInstanceDate='+escapeProperly(instanceDateTime)
4471+'&FromInstanceDateISO='+escapeProperly(instanceDateTimeISO)
4472+'&Source='+escapeProperly(window.location.href);
4473}
4474function MtgKeep(httpPath, listId, instanceId)
4475{
4476	var L_MtgKeepConfirm_Text="The information for this meeting date does not match the information in your calendar and scheduling program. If you keep this meeting date, it will continue to appear in the Meeting Series list in the workspace.";
4477	if (confirm(L_MtgKeepConfirm_Text))
4478		SubmitFormPost( httpPath
4479+'&Cmd=MtgKeep&List='+escapeProperly(listId)
4480+'&EditInstanceID='+instanceId
4481+'&NextUsing='+escapeProperly(window.location.href) );
4482}
4483function MtgDelete(httpPath, listId, instanceId)
4484{
4485	var L_MtgDeleteConfirm_Text="This meeting date and the content associated with it will be deleted from the workspace.";
4486	if (confirm(L_MtgDeleteConfirm_Text))
4487	{
4488		var fHomePage=(instanceId==g_instanceId);
4489		SubmitFormPost( httpPath
4490+'&Cmd=MtgMove&List='+escapeProperly(listId)
4491+'&FromInstanceID='+instanceId+'&ToInstanceID=-3'
4492+'&NextUsing='+escapeProperly(fHomePage ? GetPageUrl(true) : window.location.href) );
4493	}
4494}
4495function SetCookie(name, value, path)
4496{
4497	document.cookie=name+"="+value+";path="+path;
4498}
4499function SetAsLastTabVisited()
4500{
4501	if (typeof(g_pageUrl) !="undefined" && typeof(g_webUrl) !="undefined")
4502		SetCookie("MtgLastTabVisited",
4503			escapeProperly(unescapeProperly(g_pageUrl)),
4504			escapeProperlyCore(unescapeProperly(g_webUrl),  true));
4505}
4506function MtgDeletePageConfirm()
4507{
4508	var L_DeleteGlobalConfirm_Text="This page will be deleted from all meetings associated with this workspace.  ";
4509	var L_DeleteConfirm_Text="Are you sure you want to delete this page?";
4510	var text;
4511	if (document.getElementById("MtgTlPart_PageType").value=='MtgTlPart_LocalPage')
4512		text=L_DeleteConfirm_Text;
4513	else
4514		text=L_DeleteGlobalConfirm_Text+L_DeleteConfirm_Text;
4515	return confirm(text);
4516}
4517function MtgRedirect()
4518{
4519	var strServerRelative=GetCookie("MtgLastTabVisited");
4520	if (strServerRelative==null)
4521	{
4522		if (typeof(g_webUrl) !="undefined")
4523			strServerRelative=g_webUrl;
4524		else
4525			strServerRelative="../../";
4526	}
4527	else
4528		strServerRelative=escapeProperlyCore(strServerRelative, true);
4529	window.location.href=strServerRelative;
4530}
4531function MakeMtgInstanceUrl(strUrl, instanceID)
4532{
4533	if (instanceID !="undefined" && instanceID !='')
4534	{
4535		var iQueryString=strUrl.indexOf('?');
4536		if (iQueryString==-1 || strUrl.indexOf('InstanceID=', iQueryString)==-1)
4537			strUrl=strUrl+(iQueryString==-1 ? '?' : '&')+'InstanceID='+instanceID;
4538	}
4539	return strUrl;
4540}
4541function commonShowModalDialog(url, features, callback, args)
4542{
4543	if (document.getElementById("__spPickerHasReturnValue") !=null)
4544		document.getElementById("__spPickerHasReturnValue").value="";
4545	if (document.getElementById("__spPickerReturnValueHolder") !=null)
4546		document.getElementById("__spPickerReturnValueHolder").value="";
4547	commonModalDialogReturnValue.clear();
4548	var rv;
4549	if (window.showModalDialog)
4550	{
4551		rv=window.showModalDialog(url, args, features);
4552		onDialogClose(callback, null, rv);
4553	}
4554	else
4555	{
4556		var defaultWidth=500, defaultHeight=550, defaultScrollbars="yes";
4557		if(!features) features="width="+defaultWidth+",height="+defaultHeight;
4558		else
4559		{
4560			function assocArray() { return new Array(); }
4561			function assocArray_add(array, key, value)
4562			{
4563				array.push(key);
4564				array[key]=value;
4565			}
4566			function assocArray_keys(array)
4567			{
4568				var keys=new Array();
4569				for(var i=0; i<array.length; i++) keys.push(array[i]);
4570				return keys;
4571			}
4572			var feats=assocArray(), fre, split;
4573			if(features.search(/^(\s*\w+\s*:\s*.+?\s*)(;\s*\s*\w+\s*:\s*.+?\s*)*(;\s*)?$/) !=-1)
4574			{
4575				fre=/^\s*(\w+)\s*:\s*(.+?)\s*$/;
4576				split=features.split(/\s*;\s*/);
4577			}
4578			else
4579			{
4580				fre=/^\s*(\w+)\s*=\s*(.+?)\s*$/;
4581				split=features.split(/\s*,\s*/);
4582			}
4583			for(var feat in split)
4584			{
4585				var kv=fre.exec(split[feat]);
4586				if(kv && kv.length==3) assocArray_add(feats, kv[1].toLowerCase(), kv[2]);
4587			}
4588			if(!feats["width"]) assocArray_add(feats, "width", feats["dialogwidth"] || defaultWidth);
4589			if(!feats["height"]) assocArray_add(feats, "height", feats["dialogheight"] || defaultHeight);
4590			if(!feats["scrollbars"]) assocArray_add(feats, "scrollbars", feats["scroll"] || defaultScrollbars);
4591			features='';
4592			var keys=assocArray_keys(feats);
4593			for(var i in keys)
4594			{
4595				if(features) features+=",";
4596				features+=keys[i]+"="+feats[keys[i]];
4597			}
4598		}
4599		var modalDialog=window.open(url, '_blank', features+',modal=yes,dialog=yes');
4600		modalDialog.dialogArguments=args;
4601		window.onfocus=function() {
4602			var bHasReturnValue
4603=((document.getElementById("__spPickerHasReturnValue") !=null) &&
4604					 (document.getElementById("__spPickerHasReturnValue").value=="1"))
4605				  || commonModalDialogReturnValue.isSet();
4606			if (modalDialog && !modalDialog.closed && !bHasReturnValue)
4607			{
4608				modalDialog.focus();
4609			}
4610			else
4611			{
4612				window.onfocus=null;
4613				onDialogClose(callback, modalDialog, null);
4614			}
4615		}
4616	}
4617}
4618function onDialogClose(callback, modalDialog, rv)
4619{
4620	if(callback)
4621	{
4622		if(typeof(rv) !="undefined"
4623		   && rv !=null)
4624		{
4625			callback(rv);
4626		}
4627		else if (typeof(modalDialog) !="undefined"
4628		   && modalDialog !=null
4629		   && typeof(modalDialog.returnValue) !="undefined")
4630		{
4631			rv=modalDialog.returnValue;
4632			callback(rv);
4633		}
4634		else if (typeof(commonModalDialogReturnValue) !="undefined"
4635				 && commonModalDialogReturnValue !=null
4636				 && commonModalDialogReturnValue.isSet())
4637		{
4638			rv=commonModalDialogReturnValue.get();
4639			callback(rv);
4640			commonModalDialogReturnValue.clear();
4641		}
4642		else if (document.getElementById("__spPickerHasReturnValue") !=null &&
4643			document.getElementById("__spPickerHasReturnValue").value=="1" &&
4644			document.getElementById("__spPickerReturnValueHolder") !=null)
4645		{
4646			rv=document.getElementById("__spPickerReturnValueHolder").value;
4647			callback(rv);
4648		}
4649	}
4650}
4651function setModalDialogReturnValue(wnd, returnValue)
4652{
4653	if (wnd.opener !=null &&
4654		typeof(returnValue)=='string' &&
4655		wnd.opener.document.getElementById('__spPickerHasReturnValue') !=null &&
4656		wnd.opener.document.getElementById('__spPickerReturnValueHolder') !=null)
4657	{
4658		wnd.opener.document.getElementById('__spPickerHasReturnValue').value='1';
4659		wnd.opener.document.getElementById('__spPickerReturnValueHolder').value=returnValue;
4660	}
4661	else
4662	{
4663	   setModalDialogObjectReturnValue(wnd, returnValue);
4664	}
4665}
4666function setModalDialogObjectReturnValue(wnd, returnValue)
4667{
4668	if (wnd.showModalDialog)
4669	{
4670		wnd.returnValue=returnValue;
4671	}
4672	if(wnd.opener !=null)
4673	{
4674		wnd.opener.commonModalDialogReturnValue.set(returnValue);
4675	}
4676}
4677commonModalDialogReturnValue={
4678	 hasRetval: false,
4679	 retVal: null,
4680	 set: function (obj) {
4681			if(typeof(obj) !="undefined")
4682			{
4683				this.retVal=obj;
4684				this.hasRetval=true;
4685			}
4686		},
4687	 isSet: function() { return this.hasRetval;},
4688	 get: function() { if(this.hasRetval) return this.retVal; },
4689	 clear: function() { this.hasRetval=false; this.retVal=null; }
4690}
4691var filterTable=null;
4692var bIsFilterMenuShown=false;
4693var bIsFilterDataLoaded=false;
4694var filterImageCell=null;
4695var currentFilterMenu=null;
4696var loadingFilterMenu=null;
4697var ctxFilter=null;
4698var bIsFilterKeyPress=false;
4699var filterStr=null;
4700var strFieldName="";
4701var bMenuLoadInProgress=false;
4702var strFilteredValue=null;
4703var L_NotSortable_Text="This column type cannot be sorted";
4704var L_NotFilterable_Text="This column type cannot be filtered";
4705var L_AOnTop_Text="A on Top";
4706var L_ZOnTop_Text="Z on Top";
4707var L_SmallestOnTop_Text="Smallest on Top";
4708var L_LargestOnTop_Text="Largest on Top";
4709var L_OldestOnTop_Text="Oldest on Top";
4710var L_NewestOnTop_Text="Newest on Top";
4711var L_AttachmentsOnTop_Text="Attachments on Top";
4712var L_BlanksOnTop_Text="Blanks on Top";
4713var L_Ascending_Text="Ascending";
4714var L_Descending_Text="Descending";
4715var L_DontFilterBy_Text="Clear Filter from ^1";
4716var L_Loading_Text="Loading....";
4717var L_FilterMode_Text="Show Filter Choices";
4718var L_OpenMenu_Text="Open Menu";
4719function resetFilterMenuState()
4720{
4721	if (bMenuLoadInProgress)
4722		return;
4723	bIsFilterMenuShown=false;
4724	bIsFilterDataLoaded=false;
4725	filterTable=null;
4726	filterImageCell=null;
4727	currentFilterMenu=null;
4728	loadingFilterMenu=null;
4729	ctxFilter=null;
4730	bIsFilterKeyPress=false;
4731}
4732function setupFilterMenuContext(ctx)
4733{
4734	ctxFilter=ctx;
4735}
4736function IsFilterMenuOn()
4737{
4738	if (!bIsFilterMenuShown)
4739		return false;
4740	var bIsOpen=false;
4741	bIsOpen=MenuHtc_isOpen(currentFilterMenu) || MenuHtc_isOpen(loadingFilterMenu);
4742	if (!bIsOpen)
4743		bIsFilterMenuShown=false;
4744	return bIsOpen;
4745}
4746function IsFilterMenuEnabled()
4747{
4748	return true;
4749}
4750function OnMouseOverFilterDeferCall(elm)
4751{
4752	if (!IsFilterMenuEnabled())
4753		return false;
4754	if (IsFilterMenuOn())
4755		return false;
4756	if (window.location.href.search("[?&]Filter=1") !=-1)
4757		return false;
4758	if (elm.FilterDisable=="TRUE")
4759		return false;
4760	if (filterTable !=null)
4761		OnMouseOutFilter();
4762	filterTable=elm;
4763	var createCtx=new Function("setupFilterMenuContext(ctx"+filterTable.getAttribute('CtxNum')+");");
4764	createCtx();
4765	filterTable.className="ms-selectedtitle";
4766	filterTable.onclick=CreateFilterMenu;
4767	filterTable.oncontextmenu=CreateFilterMenu;
4768	filterTable.onmouseout=OnMouseOutFilter;
4769	var titleRow=filterTable.childNodes[0].childNodes[0];
4770	filterImageCell=titleRow.childNodes[titleRow.childNodes.length - 1];
4771	var filterArrow=filterImageCell.childNodes[0];
4772	filterArrow.src=ctxFilter.imagesPath+"menudark.gif";
4773	filterArrow.alt=L_OpenMenu_Text;
4774	filterArrow.style.visibility="visible";
4775	if (IsElementRtl(filterTable))
4776	{
4777		filterImageCell.style.right=null;
4778		filterImageCell.style.left="1px";
4779	}
4780	else
4781	{
4782		filterImageCell.style.left=null;
4783		filterImageCell.style.right="1px";
4784	}
4785	filterImageCell.className="ms-menuimagecell";
4786	return true;
4787}
4788function OnMouseOutFilter()
4789{
4790	if (!IsFilterMenuOn() && filterTable !=null)
4791	{
4792		filterTable.className="ms-unselectedtitle";
4793		filterTable.onclick="";
4794		filterTable.oncontextmenu="";
4795		filterTable.onmouseout="";
4796		if (filterImageCell !=null)
4797		{
4798			filterImageCell.childNodes[0].style.visibility="hidden";
4799			filterImageCell.className="";
4800		}
4801		resetFilterMenuState();
4802	}
4803}
4804function OnFocusFilter(elm)
4805{
4806	if (window.location.href.search("[?&]Filter=1") !=-1)
4807		return false;
4808	if (!IsFilterMenuEnabled())
4809		return false;
4810	elm.onblur=OnMouseOutFilter;
4811	elm.onkeydown=PopFilterMenu;
4812	var elmTmp=FindSTSMenuTable(elm, "CTXNum");
4813	if (elmTmp==null)
4814		return false;
4815	OnMouseOverFilter(elmTmp);
4816	return false;
4817}
4818function PopFilterMenu(e)
4819{
4820	if (!IsFilterMenuEnabled())
4821		return true;
4822	if (e==null)
4823		e=window.event;
4824	var nKeyCode;
4825	if (browseris.nav6up)
4826		nKeyCode=e.which;
4827	else
4828		nKeyCode=e.keyCode;
4829	if (!IsFilterMenuOn() && ((e.shiftKey && nKeyCode==13) || (e.altKey && nKeyCode==40)))
4830	{
4831		CreateFilterMenu(e);
4832		return false;
4833	}
4834	else
4835		return true;
4836}
4837function CreateFilterMenu(e)
4838{
4839	if (filterTable==null || filterImageCell==null)
4840		return true;
4841	if (e==null)
4842		e=window.event;
4843	bIsFilterMenuShown=true;
4844	window.document.body.onclick="";
4845	currentFilterMenu=CMenu("filter_menu");
4846	loadingFilterMenu=CMenu("filter_menu_loading");
4847	currentFilterMenu.setAttribute("CompactMode", "true");
4848	addSortMenuItems(currentFilterMenu, loadingFilterMenu);
4849	if (filterStr==null)
4850		addFilterMenuItems(currentFilterMenu, loadingFilterMenu);
4851	else
4852		addAdHocFilterMenuItems(currentFilterMenu, loadingFilterMenu);
4853	e.cancelBubble=true;
4854	return false;
4855}
4856function GetUrlWithNoSortParameters(strSortFields)
4857{
4858	var url=window.location.href;
4859	var strT;
4860	var ichStart=0;
4861	var ichEqual;
4862	var ichAmp;
4863	do
4864	{
4865		ichEqual=strSortFields.indexOf("=", ichStart);
4866		if (ichEqual==-1)
4867			return url;
4868		strT=strSortFields.substring(ichStart, ichEqual);
4869		if (strT !="");
4870			url=RemoveQueryParameterFromUrl(url, strT);
4871		ichAmp=strSortFields.indexOf("&", ichEqual+1);
4872		if (ichAmp==-1)
4873			return url;
4874		ichStart=ichAmp+1;
4875	} while (strT !="");
4876	return url;
4877}
4878function addSortMenuItems(menu, menuLoading)
4879{
4880	if (filterTable.getAttribute('Sortable')=="FALSE" || filterTable.getAttribute('SortDisable')=="TRUE" ||
4881		filterTable.getAttribute('FieldType')=="MultiChoice")
4882	{
4883		CAMOptFilter(menu, menuLoading, L_NotSortable_Text, "", "", false, "fmi_ns");
4884		CAMSep(menu);
4885		CAMSep(menuLoading);
4886		return;
4887	}
4888	var strSortAsc="";
4889	var strSortDesc="";
4890	var strFieldType="";
4891	var strImageAZ="/_layouts/"+L_Language_Text+"/images/SORTAZLang.gif";
4892	var strImageZA="/_layouts/"+L_Language_Text+"/images/SORTZALang.gif";
4893	if (filterStr==null)
4894	{
4895		var str=filterTable.getAttribute('SortFields');
4896		var ichSort=str.indexOf("&SortDir");
4897		if (ichSort==-1)
4898		{
4899			CAMOptFilter(menu, menuLoading, L_NotSortable_Text, "", "", false, "fmi_ns");
4900			CAMSep(menu);
4901			CAMSep(menuLoading);
4902			return;
4903		}
4904		var ichSortMac=str.indexOf("&", ichSort+1);
4905		var url=GetUrlWithNoSortParameters(str);
4906		url=RemovePagingArgs(url);
4907		if (url.indexOf("?") < 0)
4908			url+="?";
4909		else
4910			url+="&";
4911		strSortAsc="SubmitFormPost('"+STSScriptEncode(url)+STSScriptEncode(str.substr(0, ichSort)+"&SortDir=Asc"+str.substr(ichSortMac))+"');";
4912		strSortDesc="SubmitFormPost('"+STSScriptEncode(url)+STSScriptEncode(str.substr(0, ichSort)+"&SortDir=Desc"+str.substr(ichSortMac))+"');";
4913		var strFieldType=filterTable.getAttribute('FieldType');
4914		strFieldName=filterTable.getAttribute('Name');
4915	}
4916	else
4917	{
4918		var separator=' ';
4919		var index=filterStr.lastIndexOf(separator);
4920		strFieldType=filterStr.substring(index+1);
4921		if (strFieldType.substring(0, 2)=="x:")
4922			strFieldType=strFieldType.substring(2);
4923		var curStr=filterStr.substring(0, index);
4924		index=curStr.lastIndexOf(separator);
4925		strFieldName=curStr.substring(index+1);
4926		if(strFieldName.substring(0, 1)=='@')
4927			strFieldName=strFieldName.substring(1);
4928		curStr=filterStr.substring(0, index);
4929		index=curStr.lastIndexOf(separator);
4930		if (index > 0)
4931		{
4932			strFieldName=curStr.substring(0, index);
4933		}
4934		var titleRow=filterTable.childNodes[0].childNodes[0];
4935		var filterATag=titleRow.childNodes[0].childNodes[0];
4936		var strSort=filterATag.href;
4937		strSort=strSort.replace(/%20/g, " ");
4938		if (strSort.indexOf("'ascending'") > 0)
4939		{
4940			strSortAsc=strSort;
4941			strSortDesc=strSort.replace("'ascending'", "'descending'");
4942		}
4943		else
4944		{
4945			strSortDesc=strSort;
4946			strSortAsc=strSort.replace("'descending'", "'ascending'");
4947		}
4948	}
4949	strFieldType=strFieldType.toLowerCase();
4950	if (strFieldType=="dateTime")
4951	{
4952		CAMOptFilter(menu, menuLoading, L_OldestOnTop_Text, strSortAsc, strImageAZ, true, "fmi_asc");
4953		CAMOptFilter(menu, menuLoading, L_NewestOnTop_Text, strSortDesc, strImageZA, true, "fmi_desc");
4954	}
4955	else if (strFieldType=="integer" || strFieldType=="number" || strFieldType=="currency")
4956	{
4957		CAMOptFilter(menu, menuLoading, L_SmallestOnTop_Text, strSortAsc, strImageAZ, true, "fmi_asc");
4958		CAMOptFilter(menu, menuLoading, L_LargestOnTop_Text, strSortDesc, strImageZA, true, "fmi_desc");
4959	}
4960	else if (strFieldType=="text" || strFieldType=="user" || strFieldType=="string")
4961	{
4962		CAMOptFilter(menu, menuLoading, L_AOnTop_Text, strSortAsc, strImageAZ, true, "fmi_asc");
4963		CAMOptFilter(menu, menuLoading, L_ZOnTop_Text, strSortDesc, strImageZA, true, "fmi_desc");
4964	}
4965	else if (strFieldType=="calculated")
4966	{
4967		var strResultType=filterTable.getAttribute('ResultType');
4968		if (strResultType=="Number" || strResultType=="Currency")
4969		{
4970			CAMOptFilter(menu, menuLoading, L_SmallestOnTop_Text, strSortAsc, strImageAZ, true, "fmi_asc");
4971			CAMOptFilter(menu, menuLoading, L_LargestOnTop_Text, strSortDesc, strImageZA, true, "fmi_desc");
4972		}
4973		else if (strResultType=="dateTime")
4974		{
4975			CAMOptFilter(menu, menuLoading, L_OldestOnTop_Text, strSortAsc, strImageAZ, true, "fmi_asc");
4976			CAMOptFilter(menu, menuLoading, L_NewestOnTop_Text, strSortDesc, strImageZA, true, "fmi_desc");
4977		}
4978		else if (strResultType=="boolean")
4979		{
4980			CAMOptFilter(menu, menuLoading, L_Ascending_Text, strSortAsc, strImageAZ, true, "fmi_asc");
4981			CAMOptFilter(menu, menuLoading, L_Descending_Text, strSortDesc, strImageZA, true, "fmi_desc");
4982		}
4983		else
4984		{
4985			CAMOptFilter(menu, menuLoading, L_AOnTop_Text, strSortAsc, strImageAZ, true, "fmi_asc");
4986			CAMOptFilter(menu, menuLoading, L_ZOnTop_Text, strSortDesc, strImageZA, true, "fmi_desc");
4987		}
4988	}
4989	else if (strFieldType=="attachments")
4990	{
4991		CAMOptFilter(menu, menuLoading, L_BlanksOnTop_Text, strSortAsc, strImageAZ, true, "fmi_asc");
4992		CAMOptFilter(menu, menuLoading, L_AttachmentsOnTop_Text, strSortDesc, strImageZA, true, "fmi_desc");
4993	}
4994	else if (strFieldType=="lookup")
4995	{
4996		var curFieldName=filterTable.getAttribute('Name');
4997		if (curFieldName=="Last_x0020_Modified" || curFieldName=="Created_x0020_Date")
4998		{
4999			CAMOptFilter(menu, menuLoading, L_OldestOnTop_Text, strSortAsc, strImageAZ, true, "fmi_asc");
5000			CAMOptFilter(menu, menuLoading, L_NewestOnTop_Text, strSortDesc, strImageZA, true, "fmi_desc");
5001		}
5002		else
5003		{
5004			CAMOptFilter(menu, menuLoading, L_Ascending_Text, strSortAsc, strImageAZ, true, "fmi_asc");
5005			CAMOptFilter(menu, menuLoading, L_Descending_Text, strSortDesc, strImageZA, true, "fmi_desc");
5006		}
5007	}
5008	else
5009	{
5010		CAMOptFilter(menu, menuLoading, L_Ascending_Text, strSortAsc, strImageAZ, true, "fmi_asc");
5011		CAMOptFilter(menu, menuLoading, L_Descending_Text, strSortDesc, strImageZA, true, "fmi_desc");
5012	}
5013	CAMSep(menu);
5014	CAMSep(menuLoading);
5015}
5016function CAMOptFilter(menu, menuLoading, wzText, wzAct, wzImage, bEnabled, strId)
5017{
5018	var mi;
5019	mi=CAMOpt(menu, wzText, wzAct, wzImage);
5020	mi.id=strId;
5021	if (!bEnabled)
5022		mi.setAttribute("enabled", "false");
5023	mi=CAMOpt(menuLoading, wzText, wzAct, wzImage);
5024	mi.id=strId+"_p";
5025	if (!bEnabled)
5026		mi.setAttribute("enabled", "false");
5027}
5028function ShowFilterLoadingMenu()
5029{
5030	if (!bIsFilterDataLoaded)
5031		OMenu(loadingFilterMenu, filterTable, null, null, -1);
5032}
5033function addFilterMenuItems(menu, menuLoading)
5034{
5035	var mi;
5036	if (filterTable.getAttribute('Filterable')=="FALSE"
5037		|| filterTable.getAttribute('FieldType ')=="Note"
5038		|| filterTable.getAttribute('FieldType ')=="URL")
5039	{
5040		mi=CAMOpt(menu, L_NotFilterable_Text, "");
5041		mi.setAttribute("enabled", "false");
5042		OMenu(menu, filterTable, null, null, -1);
5043		menu._onDestroy=OnMouseOutFilter;
5044		return;
5045	}
5046	var iframe=document.getElementById("FilterIframe"+filterTable.getAttribute('CtxNum'));
5047	if (iframe==null)
5048		return;
5049	var strDocUrl=iframe.getAttribute('FilterLink');
5050	var strFilterField=escapeProperly(filterTable.getAttribute('Name'));
5051	strFilteredValue=null;
5052	var strFilterQuery="";
5053	var i=0;
5054	var arrayField;
5055	do
5056	{
5057		i++;
5058		arrayField=strDocUrl.match("FilterField"+i+"=[^&]*"+			"&FilterValue"+i+"=[^&]*");
5059		if (arrayField !=null)
5060		{
5061			if (strFilteredValue==null)
5062				strFilteredValue=getFilterValueFromUrl(arrayField.toString(), strFilterField);
5063			strFilterQuery=strFilterQuery+"&"+arrayField;
5064		}
5065	} while (arrayField);
5066	var bFiltered=(strFilteredValue !=null);
5067	strDisplayText=StBuildParam(L_DontFilterBy_Text, filterTable.getAttribute('DisplayName'));
5068	var strFilterUrl="javascript:SubmitFormPost('"+		STSScriptEncode(FilterFieldV3(ctxFilter.view, strFilterField, "", 0, true))+"')";
5069	var strImageUrl;
5070	if (bFiltered)
5071		strImageUrl=ctxFilter.imagesPath+"FILTEROFF.gif";
5072	else
5073		strImageUrl=ctxFilter.imagesPath+"FILTEROFFDISABLED.gif";
5074	CAMOptFilter(menu, menuLoading, strDisplayText, strFilterUrl, strImageUrl, bFiltered, "fmi_clr");
5075	mi=CAMOpt(menuLoading, L_Loading_Text, "");
5076	mi.setAttribute("enabled", "false");
5077	setTimeout("ShowFilterLoadingMenu()", 500);
5078	menuLoading._onDestroy=OnMouseOutFilter;
5079	arrayField=strDocUrl.match("MembershipGroupId=[^&]*");
5080	if (arrayField !=null)
5081	{
5082		strFilterQuery=strFilterQuery+"&"+arrayField;
5083	}
5084	arrayField=strDocUrl.match("InstanceID=[^&]*");
5085	if (arrayField !=null)
5086	{
5087		strFilterQuery=strFilterQuery+"&"+arrayField;
5088	}
5089	var strRootFolder="";
5090	arrayField=strDocUrl.match("RootFolder=[^&]*");
5091	if (arrayField !=null)
5092		strRootFolder="&"+arrayField;
5093	if (browseris.safari)
5094	{
5095		iframe.src="/_layouts/blank.htm";
5096		iframe.style.offsetLeft="-550px";
5097		iframe.style.offsetTop="-550px";
5098		iframe.style.display="block";
5099	}
5100	iframe.src=ctxFilter.HttpRoot+"/_layouts/filter.aspx?ListId="+ctxFilter.listName+		strRootFolder+		"&FieldInternalName="+strFilterField+		"&ViewId="+ctxFilter.view+"&FilterOnly=1&Filter=1"+strFilterQuery;
5101	bMenuLoadInProgress=true;
5102}
5103function getFilterValueFromUrl(strUrl, strFilterField)
5104{
5105	var ichStart, ichEnd;
5106	var strFilterFieldUrl;
5107	ichStart=strUrl.indexOf("=");
5108	if (ichStart==-1)
5109		return;
5110	ichEnd=strUrl.indexOf("&");
5111	if (ichEnd==-1)
5112		return;
5113	if (ichEnd < ichStart)
5114		return;
5115	strUrl=CanonicalizeUrlEncodingCase(strUrl);
5116	strFilterFieldUrl=strUrl.substring(ichStart+1, ichEnd);
5117	if (strFilterFieldUrl==strFilterField)
5118	{
5119		var strUnescaped;
5120		ichStart=strUrl.indexOf("=", ichEnd+1);
5121		if (ichStart==-1)
5122			return;
5123		strUnescaped=strUrl.substr(ichStart+1);
5124		strUnescaped=unescapeProperly(strUnescaped);
5125		return strUnescaped;
5126	}
5127	return null;
5128}
5129function OnIframeLoad()
5130{
5131	bMenuLoadInProgress=false;
5132	if (filterTable !=null && filterTable.getAttribute('Name') !=null)
5133	{
5134		var iframe=window.frames["FilterIframe"+filterTable.getAttribute('CtxNum')];
5135		if (iframe !=null)
5136		{
5137			var strFieldName=filterTable.getAttribute('Name');
5138			var select=iframe.document.getElementById("diidFilter"+strFieldName);
5139			strFieldName=escapeProperly(strFieldName);
5140			if (select !=null)
5141			{
5142				var c=select.childNodes.length;
5143				if (c > 500)
5144				{
5145					addFilterOptionMenuItem();
5146				}
5147				else
5148				{
5149					var rgChoices=select.childNodes;
5150					for (var i=1; i < c; i++)
5151					{
5152						var strMenuText;
5153						if (rgChoices[i].innerText)
5154							strMenuText=rgChoices[i].innerText;
5155						else if (rgChoices[i].textContent)
5156							strMenuText=rgChoices[i].textContent;
5157						else
5158							strMenuText=rgChoices[i].innerHTML;
5159						var strFilterUrl="javascript:SubmitFormPost('"+							STSScriptEncode(FilterFieldV3(ctxFilter.view, strFieldName, rgChoices[i].value, i, true))+"')";
5160						var mi=CAMOpt(currentFilterMenu, strMenuText, strFilterUrl);
5161						if (strFilteredValue !=null && strFilteredValue==rgChoices[i].value)
5162							mi.setAttribute("checked", "true");
5163					}
5164				}
5165			}
5166			else
5167			{
5168			   addFilterOptionMenuItem();
5169			}
5170			bIsFilterDataLoaded=true;
5171			if (loadingFilterMenu !=null)
5172				loadingFilterMenu._onDestroy=null;
5173			if (currentFilterMenu !=null)
5174			{
5175				currentFilterMenu._onDestroy=OnMouseOutFilter;
5176				OMenu(currentFilterMenu, filterTable, null, null, -1);
5177			}
5178		}
5179	}
5180}
5181function addFilterOptionMenuItem()
5182{
5183	var strUrl=window.location.href;
5184	strUrl=StURLSetVar2(strUrl, "Filter", "1");
5185	strUrl=StURLSetVar2(strUrl, "View", ctxFilter.view);
5186	strUrl="javascript:SubmitFormPost('"+strUrl+"')";
5187	CAMOpt(currentFilterMenu, L_FilterMode_Text, strUrl);
5188}
5189function OnMouseOverAdHocFilterDeferCall(elm, fieldStr)
5190{
5191	filterStr=fieldStr;
5192	if (!browseris.ie55up || !browseris.win32)
5193		return false;
5194	if (IsFilterMenuOn())
5195		return false;
5196	if (filterTable !=null)
5197		OnMouseOutFilter();
5198	filterTable=elm;
5199	filterTable.className="ms-selectedtitle";
5200	filterTable.onclick=CreateFilterMenu;
5201	filterTable.oncontextmenu=CreateFilterMenu;
5202	filterTable.onmouseout=OnMouseOutFilter;
5203	var titleRow=filterTable.children[0].children[0];
5204	filterImageCell=titleRow.children[titleRow.children.length - 1];
5205	filterImageCell.children[0].src="/_layouts/images/menudark.gif";
5206	filterImageCell.children[0].style.visibility="visible";
5207	filterImageCell.style.visibility="visible";
5208	filterImageCell.className="ms-menuimagecell";
5209	return true;
5210}
5211function addAdHocFilterMenuItems(menu, menuLoading)
5212{
5213	var mi=CAMOpt(menuLoading, L_Loading_Text, "");
5214	mi.setAttribute("enabled", "false");
5215	OMenu(menuLoading, filterTable, null, null, -1);
5216	menuLoading._onDestroy=OnMouseOutFilter;
5217	DoCallBack("__filter={"+filterStr+"}");
5218}
5219function UpdateFilterCallback(filterHTML, foo)
5220{
5221	var select="</OPTION>";
5222	var i=-1;
5223	i=filterHTML.indexOf(select, i+1);
5224	var j=filterHTML.lastIndexOf('>', i);
5225	var strDisplayText=StBuildParam(L_DontFilterBy_Text, strFieldName);
5226	var strImageUrl;
5227	var strFilterUrl="";
5228	if (j < i - 1)
5229	{
5230		var index=filterHTML.lastIndexOf('\"', i);
5231		if (index > 0)
5232		{
5233			var index2=filterHTML.lastIndexOf('\"', index - 1);
5234			if (index2 > 0)
5235			{
5236				strFilterUrl=filterHTML.substring(index2+1, index);
5237			}
5238		}
5239	}
5240	if (j==i - 1)
5241		strImageUrl="/_layouts/images/FILTEROFFDISABLED.gif";
5242	else
5243		strImageUrl="/_layouts/images/FILTEROFF.gif";
5244	if (i > 0)
5245	{
5246	    var mi=CAMOpt(currentFilterMenu, strDisplayText, strFilterUrl, strImageUrl);
5247		mi.setAttribute("enabled", j==i - 1 ? "false" : "true");
5248		var index=i;
5249		var optionStart="<OPTION href=\"";
5250		i=filterHTML.indexOf(select, i+8);
5251		while ( i > 0)
5252		{
5253			j=filterHTML.indexOf(optionStart, index+8);
5254			j=filterHTML.indexOf('\"', j+20);
5255			if (j > 0 && j < i)
5256			{
5257				var strMenuText=filterHTML.substring(j+2, i);
5258				var strFilterUrl='';
5259				index=filterHTML.lastIndexOf('\"', j);
5260				if (index > 0)
5261				{
5262					var index2=filterHTML.lastIndexOf('\"', index - 1);
5263					if (index2 > 0)
5264					{
5265						strFilterUrl=filterHTML.substring(index2+1, index);
5266						strFilterUrl=strFilterUrl.replace(/&amp;/g, "&");
5267					}
5268				}
5269				if (strMenuText.length > 40)
5270					strMenuText=strMenuText.substring(0, 40)+"...";
5271				if (strMenuText.length > 0)
5272					CAMOpt(currentFilterMenu, strMenuText, strFilterUrl);
5273			}
5274			index=i;
5275			i=filterHTML.indexOf(select, i+8);
5276		}
5277	}
5278	else
5279	{
5280		var mi=CAMOpt(currentFilterMenu, L_NotFilterable_Text, "");
5281		mi.setAttribute("enabled", "false");
5282		OMenu(currentFilterMenu, filterTable, null, null, -1);
5283		return;
5284	}
5285	loadingFilterMenu._onDestroy=null;
5286	OMenu(currentFilterMenu, filterTable, null, null, -1);
5287	currentFilterMenu._onDestroy=OnMouseOutFilter;
5288}
5289function OnClickFilter(obj, e)
5290{
5291	var o=FindSTSMenuTable(obj, "CTXNum");
5292	if (o !=null && o.getAttribute("SortFields") !=null)
5293	{
5294		var strSortFields=o.getAttribute("SortFields");
5295		var url=GetUrlWithNoSortParameters(strSortFields);
5296		url=RemovePagingArgs(url);
5297		if (url.indexOf("?") < 0)
5298			url+="?";
5299		else
5300			url+="&";
5301		SubmitFormPost(url+strSortFields);
5302	}
5303	if (!bIsFileDialogView)
5304		e.cancelBubble=true;
5305	return false;
5306}
5307function ToggleSelectionAllUsers(viewCounter)
5308{
5309	var chkToggle=document.getElementById("spToggleUserSelectionCheckBox_"+viewCounter.toString());
5310	if (chkToggle !=null)
5311	{
5312		var name="spUserSelectionCheckBox_"+viewCounter.toString();
5313		var users=document.getElementsByName(name);
5314		chkToggle.checked=!chkToggle.checked;
5315		for (var i=0; i < users.length; i++)
5316		{
5317			var chkBox=users[i];
5318			chkBox.checked=chkToggle.checked;
5319		}
5320		var imageId="cbxUserSelectAll"+viewCounter.toString();
5321		var img=document.getElementById(imageId);
5322		if (img !=null)
5323		{
5324			if (chkToggle.checked)
5325				img.src='/_layouts/images/checkall.gif';
5326			else
5327				img.src='/_layouts/images/unchecka.gif';
5328		}
5329	}
5330}
5331function UserSelectionOnClick(chk, viewCounter)
5332{
5333	var imageId="cbxUserSelectAll"+viewCounter.toString();
5334	var img=document.getElementById(imageId);
5335	var chkToggle=document.getElementById("spToggleUserSelectionCheckBox_"+viewCounter.toString());
5336	if (!chk.checked)
5337	{
5338		if (chkToggle !=null)
5339		{
5340			chkToggle.checked=false;
5341		}
5342		if (img !=null)
5343		{
5344			img.src='/_layouts/images/unchecka.gif';
5345		}
5346	}
5347	else
5348	{
5349		var name="spUserSelectionCheckBox_"+viewCounter.toString();
5350		var users=document.getElementsByName(name);
5351		var bAllChecked=true;
5352		for (var i=0; i < users.length; i++)
5353		{
5354			var chkBox=users[i];
5355			if (!chkBox.checked)
5356			{
5357				bAllChecked=false;
5358				break;
5359			}
5360		}
5361		if (bAllChecked)
5362		{
5363			if (img)
5364				img.src='/_layouts/images/checkall.gif';
5365			if (chkToggle)
5366				chkToggle.checked=true;
5367		}
5368	}
5369}
5370var g_menuCounter=0;
5371var g_oSelRw=null;
5372var g_iEntityEditorLineHeight=16;
5373var g_EntityEditorHiddenEntityKeyId="HiddenEntityKey";
5374var g_EntityEditorHiddenEntityDisplayTextId="HiddenEntityDisplayText";
5375var g_EntityEditorShowEntityDisplayTextInTextBox="ShowEntityDisplayTextInTextBox";
5376var g_EntityEditorDownLevelId="downlevelTextBox";
5377var g_EntityEditorUpLevelId="upLevelDiv";
5378var g_EntityEditorHiddenId="hiddenSpanData";
5379var g_EntityEditorCheckNamesId="checkNames";
5380var g_EntityEditorOuterTableId="OuterTable";
5381var g_EntityEditorErrorLabelId="errorLabel";
5382var g_EntityEditorResultTableId="resultTable";
5383var g_EntityEditorResultTableAttrEditorId="EditorControlClientId";
5384function onKeyDownRw(div, parentid, maxHeight, allowTypeIn, e)
5385{
5386	if (!e) e=window.event;
5387	var iKC=e.keyCode;
5388	if((e.shiftKey && iKC==13) || (e.altKey && iKC==40))
5389	{
5390		onClickRw(true,false);
5391		canEvt(e);
5392		return;
5393	}
5394	if(allowTypeIn==false)
5395	{
5396		if (iKC!=8 && iKC!=46 && iKC!=37 && iKC!=39 && iKC!=9)
5397		{
5398			canEvt(e);
5399		}
5400		else
5401		{
5402			if (autoPostBackEnabled(div))
5403				schedulePostBack();
5404		}
5405		PickerAdjustHeight(parentid, maxHeight);
5406	}
5407	else
5408	{
5409		PickerAdjustHeight(parentid, maxHeight);
5410		if ((e.ctrlKey && iKC==75) || (!e.ctrlKey && !e.altKey && !e.shiftKey && (iKC==13)))
5411		{
5412			canEvt(e);
5413			var checkNamesId=getSubControlID(parentid, g_EntityEditorCheckNamesId);
5414			var button=document.getElementById(checkNamesId);
5415			if (button)
5416				button.click();
5417		}
5418	}
5419}
5420function onKeyUpRw(editorClientID)
5421{
5422	copyUplevelToHidden(editorClientID);
5423}
5424function onMouseDownRw()
5425{
5426	if (event.button==2)
5427		g_oSelRw=document.selection.createRange();
5428}
5429function onContextMenuSpnRw()
5430{
5431	var oSO=g_oSelRw;
5432	var oS=document.selection.createRange();
5433	if (oSO.text=='')
5434	{
5435		ret=onClickRw(false,false);
5436	}
5437	else
5438	{
5439		if(oSO.inRange(oS))
5440			oSO.select();
5441		else
5442			onClickRw(false,false);
5443	}
5444	return false;
5445}
5446function canEvt(e)
5447{
5448	if(e==null)
5449		e=event;
5450	e.returnValue=false;
5451	e.cancelBubble=true;
5452}
5453function copyUplevelToHidden(editorClientID)
5454{
5455	if (document.getElementById(editorClientID)==null)
5456		return;
5457	updateControlValue(editorClientID);
5458	var uplevel=document.getElementById(getSubControlID(editorClientID, g_EntityEditorUpLevelId));
5459	var hidden=document.getElementById(getSubControlID(editorClientID, g_EntityEditorHiddenId));
5460	var children=uplevel.childNodes;
5461	for (i=0; i < children.length; i++)
5462	{
5463		if (children[i].tagName !='SPAN' && children[i].nodeType !=3)
5464		{
5465			if (children[i].tagName=='A')
5466			{
5467				var oR=document.body.createTextRange();
5468				oR.moveToElementText(children[i]);
5469				oR.execCommand('Unlink');
5470			}
5471			else
5472			{
5473				var oTN=document.createTextNode(children[i].innerText);
5474				children[i].replaceNode(oTN);
5475			}
5476		}
5477	}
5478	if (EntityEditor_UseContentEditableControl)
5479	{
5480		hidden.value=uplevel.innerHTML;
5481	}
5482	else
5483	{
5484		var downlevel=document.getElementById(getSubControlID(editorClientID, g_EntityEditorDownLevelId));
5485		hidden.value=downlevel.value;
5486	}
5487}
5488function getUplevel(editorClientID)
5489{
5490	if (EntityEditor_UseContentEditableControl)
5491	{
5492		var uplevel=document.getElementById(getSubControlID(editorClientID, g_EntityEditorUpLevelId));
5493		var children=uplevel.childNodes;
5494		for (i=0; i < children.length; i++)
5495		{
5496			if (children[i].tagName !='SPAN' && children[i].nodeType !=3)
5497			{
5498				var oTN=document.createTextNode(children[i].innerText);
5499				children[i].replaceNode(oTN);
5500			}
5501		}
5502		return uplevel.innerHTML;
5503	}
5504	var downlevel=document.getElementById(getSubControlID(editorClientID, g_EntityEditorDownLevelId));
5505	return downlevel.value;
5506}
5507function EntityEditorHasData(editorClientID)
5508{
5509	if (EntityEditor_UseContentEditableControl)
5510	{
5511		var uplevel=document.getElementById(getSubControlID(editorClientID, g_EntityEditorUpLevelId));
5512		var children=uplevel.childNodes;
5513		if (children.length > 0)
5514			return true;
5515	}
5516	else
5517	{
5518		var downlevel=document.getElementById(getSubControlID(editorClientID, g_EntityEditorDownLevelId));
5519		if (downlevel.value !=null && downlevel.value.length > 0)
5520			return true;
5521	}
5522	return false;
5523}
5524function EEDecodeSpecialChars(str)
5525{
5526	var decodedStr=str.replace(/&quot;/g, "\"");
5527	decodedStr=decodedStr.replace(/&gt;/g, ">");
5528	decodedStr=decodedStr.replace(/&lt;/g, "<");
5529	decodedStr=decodedStr.replace(/&#39;/g, "'");
5530	decodedStr=decodedStr.replace(/&amp;/g, "&");
5531	return decodedStr;
5532}
5533function onClickRw(showMenu, divClicked)
5534{
5535	var oR=document.selection.createRange();
5536	var oPE=oR.parentElement();
5537	var oPPE=null;
5538	if(oPE.tagName=="SPAN" && oPE.id=="content")
5539	{
5540		oPPE=oPE.parentElement;
5541	}
5542	else if(oPE.tagName=="SPAN" && oPE.id.substring(0,4)=="span" && ! divClicked)
5543	{
5544		oPPE=oPE;
5545	}
5546	if(oPPE!=null)
5547	{
5548	    oR.moveToElementText(oPPE);
5549	    var c="character";
5550	    oR.moveStart(c, -1);
5551		oR.moveEnd(c,1);
5552		oR.select();
5553		g_oSelRw=oR;
5554		var oDivEntityData=oPPE.children('divEntityData');
5555		var isResolved=oDivEntityData.getAttribute('isresolved');
5556		if(isResolved=="False")
5557		{
5558		    var menuOwner=oPPE;
5559		    if(menuOwner.getBoundingClientRect().right > menuOwner.parentElement.getBoundingClientRect().right)
5560			    menuOwner=menuOwner.parentElement;
5561		    var clientID=oPPE.parentElement.id.replace('_upLevelDiv', '');
5562			var keyRawValue=oDivEntityData.getAttribute('key');
5563		    var menu=DeferCall('CMenu', 'Entity_Menu'+g_menuCounter);
5564				g_menuCounter++;
5565			var morematches=null;
5566			if (matches[clientID] !=null && matches[clientID][keyRawValue] !=null)
5567				morematches=matches[clientID][keyRawValue];
5568			var EE=document.getElementById(clientID);
5569			var moreItemsText=EE.getAttribute('MoreItemsText');
5570			var removeText=EE.getAttribute('RemoveText');
5571			var noMatchesText=EE.getAttribute('NoMatchesText');
5572			if(morematches==null || morematches.childNodes.length==0)
5573				CAMOpt(menu, noMatchesText);
5574			else
5575			{
5576				for (x=0; x < morematches.childNodes.length; x++)
5577				{
5578					var otherMatch=morematches.childNodes[x];
5579					CAMOpt(menu, otherMatch.getAttribute('DisplayText'), "EEReplace('"+STSScriptEncode(clientID)+"', '"+STSScriptEncode(keyRawValue)+"', "+x+");");
5580				}
5581			}
5582			CAMSep(menu);
5583			CAMOpt(menu, removeText, "EERemove();");
5584			CAMOpt(menu, moreItemsText, "EEShowMore('"+STSScriptEncode(clientID)+"', '"+STSScriptEncode(keyRawValue)+"');");
5585			OMenu(menu, menuOwner, null, null, -1);
5586		}
5587	}
5588}
5589function EEShowMore(id, key)
5590{
5591	DeferCall('__Dialog__'+id, key);
5592}
5593function EEReplace(clientID, key, id)
5594{
5595  var otherMatch=matches[clientID][key].childNodes[id];
5596  var spandata=ConvertEntityToSpan("",  otherMatch);
5597  g_oSelRw.pasteHTML(spandata)
5598  PickerAdjustHeight(clientID, g_maxheight[clientID]);
5599  var downlevel=document.getElementById(getSubControlID(clientID, "downlevelTextBox"));
5600  if(downlevel !=null && autoPostBackEnabled(downlevel)) schedulePostBack();
5601}
5602function EERemove()
5603{
5604	g_oSelRw.select();
5605	document.selection.clear();
5606}
5607var g_maxheight=new Array();
5608function EntityEditorSetWaitCursor(ctx)
5609{
5610	if (document.getElementById(ctx)==null)
5611		return;
5612	var outerTable=document.getElementById(getSubControlID(ctx, g_EntityEditorOuterTableId));
5613	if (outerTable !=null)
5614	{
5615		outerTable.style.cursor="wait";
5616	}
5617}
5618function EntityEditorClearWaitCursor(ctx)
5619{
5620	if (document.getElementById(ctx)==null)
5621		return;
5622	var outerTable=document.getElementById(getSubControlID(ctx, g_EntityEditorOuterTableId));
5623	if (outerTable !=null)
5624	{
5625		outerTable.style.cursor="";
5626	}
5627}
5628function EntityEditorHandleCheckNameResult(result, ctx)
5629{
5630	EntityEditorClearWaitCursor(ctx);
5631	EntityEditorCallback(result, ctx);
5632}
5633function EntityEditorHandleCheckNameError(exception, ctx)
5634{
5635	EntityEditorClearWaitCursor(ctx);
5636	var errorControl=document.getElementById(getSubControlID(ctx, g_EntityEditorErrorLabelId));
5637	if (errorControl)
5638	{
5639		errorControl.innerHTML=STSHtmlEncode(exception);
5640	}
5641}
5642function EntityEditorCallback(result,ctx,preventAutoPostBack)
5643{
5644	if (document.getElementById(ctx)==null)
5645		return;
5646	var editor=document.getElementById(ctx);
5647	var errorControl=document.getElementById(getSubControlID(ctx, 'errorLabel'));
5648	var xmlDoc;
5649	if(document.implementation && document.implementation.createDocument)
5650	{
5651		xmlDoc=(new DOMParser()).parseFromString(result, "text/xml");
5652	}
5653	else
5654	{
5655		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
5656		xmlDoc.async=false;
5657		xmlDoc.loadXML(result);
5658	}
5659	var entities=xmlDoc.documentElement;
5660	var separator=entities.getAttribute("Separator");
5661	if (separator==null)
5662	{
5663		separator=String.fromCharCode(0);
5664	}
5665	var append=entities.getAttribute("Append");
5666	var maxHeight=entities.getAttribute("MaxHeight");
5667	g_maxheight[ctx]=maxHeight;
5668	var spanData="";
5669	var downlevelData="";
5670	if(append=="False")
5671		errorControl.innerHTML=STSHtmlEncode(entities.getAttribute("Error"));
5672	for(x=0;x<entities.childNodes.length;x++)
5673	{
5674		var entity=entities.childNodes[x];
5675		spanData+=ConvertEntityToSpan(ctx,entity);
5676		if (x==0 &&
5677			editor.getAttribute(g_EntityEditorShowEntityDisplayTextInTextBox)=="1")
5678		{
5679			downlevelData+=entity.getAttribute("DisplayText");
5680			document.getElementById(getSubControlID(ctx, g_EntityEditorHiddenEntityKeyId)).value=entity.getAttribute("Key");
5681			document.getElementById(getSubControlID(ctx, g_EntityEditorHiddenEntityDisplayTextId)).value=entity.getAttribute("DisplayText");
5682		}
5683		else
5684		{
5685			downlevelData+=entity.getAttribute("Key");
5686		}
5687		if(spanData!="" && x+1!=entities.childNodes.length)
5688		{
5689			spanData+=separator+" ";
5690			downlevelData+=separator+" ";
5691		}
5692	}
5693  var uplevel=document.getElementById(getSubControlID(ctx, g_EntityEditorUpLevelId));
5694  var hiddenSpan=document.getElementById(getSubControlID(ctx, g_EntityEditorHiddenId));
5695  var downlevel=document.getElementById(getSubControlID(ctx, g_EntityEditorDownLevelId));
5696  var shouldPostBack=(preventAutoPostBack==null || !preventAutoPostBack) && autoPostBackEnabled(uplevel);
5697  var shouldNotifyChange=(uplevel.innerHTML!=spanData);
5698  if(append=="True" && uplevel.innerHTML!='')
5699  {
5700	uplevel.innerHTML+=separator+" "+spanData;
5701	hiddenSpan.value+=separator+" "+spanData;
5702	downlevel.value+=separator+" "+downlevelData;
5703  }
5704  else
5705  {
5706	shouldPostBack=shouldPostBack&&uplevel.innerHTML!=spanData&&spanData.indexOf('ms-entity-resolved')!=-1;
5707	downlevel.value=downlevelData;
5708	uplevel.innerHTML=spanData;
5709	hiddenSpan.value=spanData;
5710  }
5711  if ((shouldNotifyChange) && (!shouldPostBack) &&(downlevel.onvaluesetfrompicker))
5712  {
5713	if (typeof(downlevel.onvaluesetfrompicker)=='function')
5714	{
5715		downlevel.onvaluesetfrompicker();
5716	}
5717	else
5718	{
5719		eval(downlevel.onvaluesetfrompicker);
5720	}
5721  }
5722  updateControlValue(ctx);
5723  PickerAdjustHeight(ctx, maxHeight);
5724  if(shouldPostBack) schedulePostBack();
5725  var cbScript=editor.getAttribute("EEAfterCallbackClientScript");
5726  if (cbScript !=null && cbScript !="")
5727  {
5728	if (preventAutoPostBack==undefined || preventAutoPostBack==false)
5729	{
5730	  var timeoutScript=cbScript+"('"+STSScriptEncode(ctx)+"', '"+STSScriptEncode(result)+"')";
5731	  setTimeout(timeoutScript, 500);
5732	}
5733  }
5734}
5735function updateControlValue(editorClientID)
5736{
5737	if (document.getElementById(editorClientID)==null)
5738		return;
5739	var uplevel=document.getElementById(getSubControlID(editorClientID, g_EntityEditorUpLevelId));
5740	var editor=document.getElementById(editorClientID);
5741	editor.value=((uplevel.innerHTML !='') ? 'true' : '')
5742	CheckOk(editorClientID);
5743}
5744function CheckOk(editorClientID)
5745{
5746	var editor=document.getElementById(editorClientID);
5747	if (editor==null)
5748		return;
5749	var allowEmpty=false;
5750	if (editor.getAttribute('allowEmpty')=='1')
5751		allowEmpty=true;
5752	var uplevel=document.getElementById(getSubControlID(editorClientID, g_EntityEditorUpLevelId));
5753	if(uplevel.innerHTML!='')
5754	{
5755		if(self.enableOK!=null)
5756			enableOK();
5757	}
5758	else
5759	{
5760		if(self.disableOK!=null && !allowEmpty)
5761			disableOK();
5762	}
5763}
5764var matches=new Array();
5765function ConvertEntityToSpan(ctx, entity)
5766{
5767	if(matches[ctx]==null)
5768		matches[ctx]=new Array();
5769	var key=entity.getAttribute("Key");
5770	var displayText=entity.getAttribute("DisplayText");
5771	var isResolved=entity.getAttribute("IsResolved");
5772	var description=entity.getAttribute("Description");
5773	var style='ms-entity-unresolved';
5774	if(isResolved=='True')
5775		style='ms-entity-resolved';
5776	var spandata="<span id='span"+STSHtmlEncode(key)+"' tabindex='-1' contentEditable='false' class='"+style+"' ";
5777	spandata+="title='"+STSHtmlEncode(description)+"'>"
5778	spandata+="<div style='display:none;' id='divEntityData' ";
5779	spandata+="key='"+STSHtmlEncode(key)+"' displaytext='"+STSHtmlEncode(displayText)+"' isresolved='"+STSHtmlEncode(isRes
5779olved)+"' ";
5780	spandata+="description='"+STSHtmlEncode(description)+"'>";
5781	var multipleMatches=EntityEditor_SelectSingleNode(entity, "MultipleMatches");
5782	matches[ctx][key]=multipleMatches;
5783	var extraData=EntityEditor_SelectSingleNode(entity, "ExtraData");
5784	if(extraData)
5785	{
5786		var data;
5787		if(extraData.firstChild)
5788			data=extraData.firstChild.xml;
5789		if(!data) data=extraData.innerXml || extraData.innerHTML;
5790		if(!data) data='';
5791		spandata+="<div data='"+STSHtmlEncode(data)+"'></div>";
5792	}
5793	else
5794	{
5795		spandata+="<div data=''></div>";
5796	}
5797	spandata+="</div>";
5798	spandata+="<span id='content' tabindex='-1' contenteditable onMouseDown='onMouseDownRw();' onContextMenu='onContextMenuSpnRw();' >";
5799	if(displayText !='')
5800		spandata+=STSHtmlEncode(displayText);
5801	else
5802		spandata+=STSHtmlEncode(key);
5803	spandata+="</span></span>";
5804	return spandata;
5805}
5806function PickerAdjustHeight(editorClientID, maxHeight)
5807{
5808	var editor=document.getElementById(editorClientID);
5809	if (editor==null)
5810		return;
5811	var downlevel=document.getElementById(getSubControlID(editorClientID, g_EntityEditorDownLevelId));
5812	var uplevel=document.getElementById(getSubControlID(editorClientID, g_EntityEditorUpLevelId));
5813	var rows=downlevel.rows;
5814	PickerAdjustHeight2(downlevel, rows, maxHeight);
5815	PickerAdjustHeight2(uplevel, rows, maxHeight);
5816}
5817function PickerAdjustHeight2(editorControl, rows, maxHeight)
5818{
5819	var iMaxHeightSize=maxHeight;
5820	if (editorControl !=null)
5821	{
5822		var contentheight=editorControl.scrollHeight;
5823		var clientHeight=editorControl.clientHeight;
5824		var bodyHeight=editorControl.offsetHeight;
5825		if(contentheight==0)
5826		{
5827			contentheight=13;
5828			clientHeight=14;
5829			bodyHeight=18;
5830		}
5831		var MaxHeightPixelSize=iMaxHeightSize * g_iEntityEditorLineHeight;
5832		contentheight=((contentheight < rows*g_iEntityEditorLineHeight)? rows*g_iEntityEditorLineHeight: contentheight);
5833		if (clientHeight !=contentheight && (contentheight <=MaxHeightPixelSize || clientHeight < MaxHeightPixelSize))
5834		{
5835			editorControl.style.height=bodyHeight+((contentheight > MaxHeightPixelSize)? MaxHeightPixelSize : contentheight)   - clientHeight;
5836		}
5837		else
5838		{
5839			if(clientHeight>MaxHeightPixelSize)
5840				editorControl.style.height=MaxHeightPixelSize;
5841		}
5842	}
5843}
5844function docopy()
5845{
5846	var rng=document.selection.createRange();
5847	window.clipboardData.setData('Text', rng.text);
5848	window.event.returnValue=false;
5849	return false;
5850}
5851function dopaste()
5852{
5853	var rng=document.selection.createRange();
5854	window.event.returnValue=false;
5855	rng.text=window.clipboardData.getData('Text');
5856	return false;
5857}
5858function getSubControlID(parentid, subcontrolid)
5859{
5860	return parentid+"_"+subcontrolid;
5861}
5862var nav4=window.Event ? true : false;
5863var selected=new Array(0);
5864var lastSelected;
5865function PickerDialogSetClearState()
5866{
5867	selected=new Array(0);
5868	lastSelected=null;
5869	PickerDialogUpdateAddSelectionButton();
5870}
5871function singleselectevent(e)
5872{
5873	if (!e) e=window.event;
5874	var el=null;
5875	if(nav4)
5876		el=e.target.parentNode || e.currentTarget.parentNode;
5877	else
5878	{
5879		el=e.srcElement;
5880		if(el.tagName=="TD")
5881			el=el.parentElement;
5882	}
5883	while (el.tagName !="TR")
5884		el=el.parentNode;
5885	addSelection(el, true, true);
5886	lastSelected=el;
5887	addSelected_Click();
5888	PickerDialogUpdateAddSelectionButton();
5889	return false;
5890}
5891function multiselectevent(e)
5892{
5893	if (!e) e=window.event;
5894	var shift=false;
5895	var ctrl=false;
5896	ctrl=e['ctrlKey'];
5897	shift=e['shiftKey'];
5898	var el=null;
5899	if(nav4)
5900		el=e.target.parentNode || e.currentTarget.parentNode;
5901	else
5902	{
5903		el=e.srcElement;
5904		if(el.tagName=="TD")
5905			el=el.parentElement;
5906	}
5907	while (el.tagName !="TR")
5908		el=el.parentNode;
5909	if(shift==false)
5910	{
5911		if(ctrl==false)
5912		{
5913			setSelectedColor(false);
5914			selected=new Array(0);
5915		}
5916		lastSelected=el;
5917		var found=-1;
5918		for(i=0;i<selected.length;i++)
5919		{
5920			if(selected[i]==el)
5921			{
5922				found=i;
5923				i=selected.length;
5924			}
5925		}
5926		if(found==-1)
5927			selected=selected.concat(new Array(el));
5928		else
5929		{
5930			setSelectedRowColor(selected[found], false);
5931			selected.splice(found,1);
5932		}
5933	}
5934	else
5935	{
5936		setSelectedColor(false);
5937		selected=new Array(0);
5938		var table;
5939		if(nav4)
5940			table=el.parentNode;
5941		else
5942			table=el.parentElement;
5943		var elIndex;
5944		var lastIndex;
5945		var childElements=table.rows;
5946		if(lastSelected==null)
5947			lastSelected=childElements[1];
5948		for(i=1;i<childElements.length;i++)
5949		{
5950			if(childElements[i]==el)
5951				elIndex=i;
5952			if(childElements[i]==lastSelected)
5953				lastIndex=i;
5954			if(elIndex!=null || lastIndex!=null )
5955				selected=selected.concat(new Array(childElements[i]));
5956			if(elIndex!=null && lastIndex!=null)
5957				i=childElements.length;
5958		}
5959	}
5960	setSelectedColor(true);
5961	PickerDialogUpdateAddSelectionButton();
5962	return false;
5963}
5964function setSelectedRowColor(row, isSelected)
5965{
5966	for (var chd=0; chd < row.childNodes.length; chd++)
5967	{
5968		var className=row.childNodes[chd].className;
5969		if (isSelected)
5970		{
5971			className="ms-pb-selected";
5972		}
5973		else
5974		{
5975			className="ms-pb";
5976		}
5977		row.childNodes[chd].className=className;
5978	}
5979}
5980function setSelectedColor(isSelected)
5981{
5982	for (i=0; i < selected.length; i++)
5983	{
5984		setSelectedRowColor(selected[i], isSelected);
5985	}
5986}
5987function IsSearchResultRow(row)
5988{
5989	if (row==null ||
5990		row.className=="ms-pickersearchsummarytr" ||
5991		row.className=="ms-pickeremptyresulttexttr" ||
5992		row.className=="ms-pickerresultheadertr")
5993	{
5994		return false;
5995	}
5996	return true;
5997}
5998function tableKeyDown(table, multiselect, e)
5999{
6000	if (table.rows.length <=1)
6001		return;
6002	if (!e) e=window.event;
6003	if (e.ctrlKey && e.keyCode==65 && multiselect==true)
6004	{
6005		for (x=1; x < table.rows.length; x++)
6006		{
6007			if (IsSearchResultRow(table.rows[x]))
6008				addSelection(table.rows[x], false, false);
6009		}
6010		return false;
6011	}
6012	if (e.keyCode==13)
6013	{
6014		addSelected_Click();
6015		if (multiselect==false &&
6016			selected.length > 0 &&
6017			self.doClickOK !=null && typeof(self.doClickOK)=="function")
6018		{
6019			window.setTimeout('doClickOK();', 100);
6020		}
6021	}
6022	if (e.keyCode==40 || e.keyCode==38)
6023	{
6024		var row=table.rows[1];
6025		if (e.keyCode==40)
6026		{
6027			if (lastSelected !=null &&
6028				IsSearchResultRow(lastSelected.nextSibling))
6029			{
6030				row=lastSelected.nextSibling;
6031			}
6032		}
6033		if (e.keyCode==38)
6034		{
6035			if (lastSelected !=null &&
6036				IsSearchResultRow(lastSelected.previousSibling))
6037			{
6038				row=lastSelected.previousSibling;
6039			}
6040			if (row==table.rows[0])
6041				row=table.rows[1];
6042		}
6043		if (IsSearchResultRow(row))
6044		{
6045			if(multiselect==true && e.shiftKey)
6046				addSelection(row, false, true);
6047			else
6048				addSelection(row, true, true);
6049			if(row!=null)
6050				lastSelected=row;
6051			if(multiselect==false)
6052				addSelected_Click();
6053			return false;
6054		}
6055	}
6056	PickerDialogUpdateAddSelectionButton();
6057}
6058function addSelection(row, clear, reposition)
6059{
6060	if(row==null)
6061		return;
6062	if(clear==true)
6063	{
6064		setSelectedColor(false);
6065		selected=new Array(0);
6066	}
6067	selected=selected.concat(new Array(row));
6068	setSelectedColor(true);
6069	if(reposition && row.focus)
6070	row.focus();
6071	PickerDialogUpdateAddSelectionButton();
6072}
6073function autoPostBackEnabled(elt)
6074{
6075  var autoPostBack=(elt==null)?null:elt.attributes.getNamedItem("AutoPostBack");
6076  return (autoPostBack!=null && autoPostBack.value=='1');
6077}
6078function schedulePostBack()
6079{
6080	window.setTimeout("__doPostBack('','')",0);
6081}
6082function saveOldEntities(elementId)
6083{
6084	var elt=document.getElementById(elementId);
6085	if(elt!=null&&autoPostBackEnabled(elt)) elt.oldEntities=getEntityKeysFromElement(elementId);
6086}
6087function postbackIfEntitiesChanged(elementId)
6088{
6089	var elt=document.getElementById(elementId);
6090	if (elt==null)
6091	{
6092		return false;
6093	}
6094	var oldKeys=elt.oldEntities;
6095	elt.oldEntities=null;
6096	var newKeys=getEntityKeysFromElement(elementId);
6097	var shouldPostBack=false;
6098	if(autoPostBackEnabled(elt))
6099	{
6100		if((oldKeys==null && newKeys!=null) || (oldKeys!=null && newKeys==null) || (oldKeys.length !=newKeys.length))
6101		{
6102			shouldPostBack=true;
6103		}
6104		else
6105		{
6106			for(i=0;!shouldPostBack&&i<oldKeys.length;i++)
6107			{
6108				if(oldKeys[i] !=newKeys[i])
6109				{
6110					shouldPostBack=true;
6111				}
6112			}
6113		}
6114	}
6115	if(shouldPostBack) schedulePostBack();
6116}
6117function getEntityKeysFromElement(elementId)
6118{
6119	var elt=document.getElementById(elementId);
6120	var keys=new Array();
6121	var i=0;
6122	for(x=0;elt!=null&&x<elt.childNodes.length;x++)
6123	{
6124		var child=elt.childNodes[x];
6125		if(child.attributes!=null)
6126		{
6127			var c=child.attributes.getNamedItem('class');
6128			if(c!=null&&c.value=='ms-entity-resolved')
6129			{
6130				var oDivEntityData=child.children('divEntityData');
6131				if (oDivEntityData !=null && oDivEntityData.getAttribute('key') !=null)
6132				{
6133					keys[i]=oDivEntityData.getAttribute('key');
6134					i++;
6135				}
6136			}
6137		}
6138	}
6139	return keys.sort();
6140}
6141function EntityEditor_SelectSingleNode(xmlNode, tagName)
6142{
6143	if(document.implementation && document.implementation.createDocument)
6144	{
6145		var elems=xmlNode.getElementsByTagName(tagName);
6146		if(elems.length > 0)
6147			return elems[0];
6148		return null;
6149	}
6150	else
6151	{
6152		return xmlNode.selectSingleNode(tagName);
6153	}
6154}
6155function PickerDialogCallbackContext()
6156{
6157	this.queryTextBoxElementId=null;
6158	this.resultTableId=null;
6159	this.errorElementId=null;
6160	this.htmlMessageElementId=null;
6161	this.queryButtonElementId=null;
6162}
6163function PickerDialogSetFocusDelay(elemId, delayTime)
6164{
6165	setTimeout("if (document.getElementById('"+elemId+"') !=null) { try {document.getElementById('"+elemId+"').focus(); } catch(e) {} }", delayTime);
6166}
6167function PickerDialogHandleQueryResult(results, ctx)
6168{
6169	var result=ParseMultiColumnValue(results);
6170	var itemCount=parseInt(result[0]);
6171	var error=document.getElementById(ctx.errorElementId);
6172	error.innerHTML=STSHtmlEncode(result[1]);
6173	var htmlMessage=document.getElementById(ctx.htmlMessageElementId);
6174	htmlMessage.innerHTML=result[2];
6175	var queryButton=document.getElementById(ctx.queryButtonElementId);
6176	if (queryButton !=null)
6177		SetControlDisabledStatus(queryButton, false);
6178	var resultControl=document.getElementById(ctx.resultTableId);
6179	var parent;
6180	if(nav4)
6181		parent=resultControl.parentNode;
6182	else
6183		parent=resultControl.parentElement;
6184	parent.innerHTML=result[3];
6185	if (itemCount > 0)
6186	{
6187		PickerDialogSetFocusDelay(ctx.resultTableId+"_row0_Link", 200);
6188	}
6189	else
6190	{
6191		PickerDialogSetFocusDelay(ctx.queryTextBoxElementId, 200);
6192	}
6193}
6194function PickerDialogHandleQueryError(exception, ctx)
6195{
6196	var error=document.getElementById(ctx.errorElementId);
6197	error.innerHTML=STSHtmlEncode(exception);
6198	var htmlMessage=document.getElementById(ctx.htmlMessageElementId);
6199	htmlMessage.innerHTML="";
6200	var queryButton=document.getElementById(ctx.queryButtonElementId);
6201	if (queryButton !=null)
6202		SetControlDisabledStatus(queryButton, false);
6203	var resultControl=document.getElementById(ctx.resultTableId);
6204	var parent;
6205	if(nav4)
6206		parent=resultControl.parentNode;
6207	else
6208		parent=resultControl.parentElement;
6209	parent.innerHTML=					   "<table id='"+ctx.resultTableId+"' width='100%' height='100%'>  "+					   " <tr>                                                              "+					   "    <td>                                                           "+					   "    </td>                                                          "+					   " </tr>                                                             "+					   "</table>";
6210	var queryTextBox=document.getElementById(ctx.queryTextBoxElementId);
6211	try
6212	{
6213		queryTextBox.focus();
6214	}
6215	catch(e)
6216	{
6217	}
6218}
6219function PickerDialogShowWait(ctx)
6220{
6221	var obj=document.getElementById(ctx.errorElementId);
6222	if (obj !=null)
6223		obj.innerHTML="";
6224	obj=document.getElementById(ctx.htmlMessageElementId);
6225	if (obj !=null)
6226		obj.innerHTML="";
6227	obj=document.getElementById(ctx.queryButtonElementId);
6228	if (obj !=null)
6229		SetControlDisabledStatus(obj, true);
6230	var resultControl=document.getElementById(ctx.resultTableId);
6231	if (resultControl !=null)
6232	{
6233		var parent;
6234		if(nav4)
6235			parent=resultControl.parentNode;
6236		else
6237			parent=resultControl.parentElement;
6238		var L_GearToolTip_TEXT="Query in progress. Please wait...";
6239		var L_PleaseWait_TEXT="Please wait while your query is processed.";
6240		parent.innerHTML=					   "<table id='"+ctx.resultTableId+"' class='ms-pickerwait'>"+					   " <tr>                                                              "+					   "    <td width='100%' height='100%' align='center' valign='middle'> "+					   "         <table width='100%'>                                      "+					   "            <tr>                                                   "+					   "                <td align='center' valign='middle'>                "+					   "                    <img alt='"+L_GearToolTip_TEXT+"' src='/_layouts/images/gears_an.gif' >"+					   "                </td>                                              "+					   "            </tr>                                                  "+					   "            <tr>                                                   "+					   "                <td align='center'>&nbsp;</td>                     "+					   "            </tr>                                                  "+					   "            <tr class='ms-pickerwaittexttr'>                         "+					   "                <td align='center' class='ms-descriptiontext'>     "+					   "                    "+L_PleaseWait_TEXT+					   "                </td>                                              "+					   "            </tr>                                                  "+					   "        </table>                                                   "+					   "    </td>                                                          "+					   " </tr>                                                             "+					   "</table>";
6241	}
6242}
6243function PickerResultsMultiSelectOnDblClick(row)
6244{
6245	var resultTable=document.getElementById(g_EntityEditorResultTableId);
6246	var xml=row.getAttribute('entityXml');
6247	var ctx=resultTable.getAttribute(g_EntityEditorResultTableAttrEditorId);
6248	EntityEditorCallback(xml,ctx);
6249}
6250function PickerResultsSingleSelectOnClick(row)
6251{
6252	var resultTable=document.getElementById(g_EntityEditorResultTableId);
6253	var xml=row.getAttribute('entityXml');
6254	var ctx=resultTable.getAttribute(g_EntityEditorResultTableAttrEditorId);
6255	EntityEditorCallback(xml,ctx);
6256}
6257function PickerResultsSingleSelectOnDblClick(row)
6258{
6259	var resultTable=document.getElementById(g_EntityEditorResultTableId);
6260	var xml=row.getAttribute('entityXml');
6261	var ctx=resultTable.getAttribute(g_EntityEditorResultTableAttrEditorId);
6262	EntityEditorCallback(xml,ctx);
6263	if (self.doClickOK !=null && typeof(self.doClickOK)=="function")
6264		doClickOK();
6265}
6266function PickerResultsMultiSelectOnNameClick(link, evt)
6267{
6268	var row=link;
6269	while (row.tagName !="TR")
6270	{
6271		row=row.parentNode;
6272	}
6273	PickerResultsMultiSelectOnDblClick(row);
6274	return true;
6275}
6276function PickerResultsSingleSelectOnNameClick(link, evt)
6277{
6278	var row=link;
6279	while (row.tagName !="TR")
6280	{
6281		row=row.parentNode;
6282	}
6283	PickerResultsSingleSelectOnDblClick(row);
6284	return true;
6285}
6286function PickerResultsNameOnFocus(link)
6287{
6288	var row=link;
6289	while (row.tagName !="TR")
6290	{
6291		row=row.parentNode;
6292	}
6293	addSelection(row, true, false);
6294	lastSelected=row;
6295}
6296function PickerResultsNameOnKeyDown(link, evt)
6297{
6298	if (evt !=null && evt.keyCode==13)
6299	{
6300		return false;
6301	}
6302	return true;
6303}
6304function MSOWebPartPage_GetLocalizedStrings()
6305{
6306	var L_ResetPagePersonalizationDialog_TXT="You are about to reset all personalized Web Parts to their shared values and delete any private Web Parts. Click OK to complete this operation. Click Cancel to keep your personalized Web Part settings and private Web Parts.";
6307	var L_ResetPartPersonalizationDialog_TXT="Resetting this Web Part will cause you to lose any changes you made.  Are you sure you want to do this? To reset this Web Part, click OK. To keep your changes, click Cancel.";
6308	var L_RemoveConnection_TXT="Are you sure you want to remove the connection between the %0 Web Part and the %1 Web Part? To remove the connection, click OK. To keep the connection, click Cancel.";
6309	var L_ExportPersonalization_TXT="This Web Part Page has been personalized. As a result, one or more Web Part properties may contain confidential information. Make sure the properties contain information that is safe for others to read. After exporting this Web Part, view properties in the Web Part description file (.webpart or .dwp) by using a text editor, such as Microsoft Notepad.";
6310	var L_GetPropertiesFailure_ERR="Cannot retrieve properties at this time.";
6311	var L_SaveDirtyParts_TXT="Changes have been made to the contents of one or more Web Parts on this page. To save the changes, press OK.  To discard the changes, press Cancel.";
6312	var L_ToolPaneWidenToolTip_TXT="Widen";
6313	var L_ToolPaneShrinkToolTip_TXT="Narrow";
6314	var L_ToolPartExpandToolTip_TXT="Expand Toolpart: %0";
6315	var L_ToolPartCollapseToolTip_TXT="Collapse Toolpart: %0";
6316	var L_WebPartBackgroundColor_TXT="Web Part Background Color";
6317	var L_TransparentTooltip_TXT="Transparent Web Part Background Color";
6318	var L_InvalidURLPath_ERR="The URL is not valid for the %0 property. Check the URL spelling and path and try again.";
6319	var L_InvalidFolderPath_ERR="The path to the folder is not valid for the %0 property. Check the path name and try again.";
6320	var L_InvalidFilePath_ERR="The path to the file or folder is not valid. Check the path and try again.";
6321	var L_FileOrFolderUnsupported_ERR="The current browser does not support links to files or folders. To specify a link to a file or folder, you must use Microsoft Internet Explorer 5.0 or later";
6322	var L_Link_TXT="Link";
6323	var L_TransparentLiteral_TXT="Transparent";
6324	var L_ContentEditorSaveFailed_ERR="Cannot save your changes.";
6325	var L_AccessDenied_ERR="Access Denied saving Web Part properties: either the Web Part is embedded directly in the page, or you do not have sufficient permissions to save properties.";
6326	var L_NoInitArgs_ERR="Cannot create or modify the connection. One of the Web Parts does not have any data fields.";
6327	var s=new Object();
6328	s.ResetPagePersonalizationDialogText=L_ResetPagePersonalizationDialog_TXT;
6329	s.ResetPartPersonalizationDialogText=L_ResetPartPersonalizationDialog_TXT;
6330	s.RemoveConnection=L_RemoveConnection_TXT;
6331	s.ExportPersonalizationDialogText=L_ExportPersonalization_TXT;
6332	s.GetPropertiesFailure=L_GetPropertiesFailure_ERR;
6333	s.SaveDirtyPartsDialogText=L_SaveDirtyParts_TXT;
6334	s.ToolPaneWidenToolTip=L_ToolPaneWidenToolTip_TXT
6335	s.ToolPaneShrinkToolTip=L_ToolPaneShrinkToolTip_TXT;
6336	s.ToolPartExpandToolTip=L_ToolPartExpandToolTip_TXT;
6337	s.ToolPartCollapseToolTip=L_ToolPartCollapseToolTip_TXT;
6338	s.WebPartBackgroundColor=L_WebPartBackgroundColor_TXT;
6339	s.TransparentTooltip=L_TransparentTooltip_TXT;
6340	s.InvalidURLPath=L_InvalidURLPath_ERR;
6341	s.InvalidFolderPath=L_InvalidFolderPath_ERR;
6342	s.InvalidFilePath=L_InvalidFilePath_ERR;
6343	s.FileOrFolderUnsupported=L_FileOrFolderUnsupported_ERR;
6344	s.Link=L_Link_TXT;
6345	s.TransparentLiteral=L_TransparentLiteral_TXT;
6346	s.ContentEditorSaveFailed=L_ContentEditorSaveFailed_ERR;
6347	s.AccessDenied=L_AccessDenied_ERR;
6348	s.NoInitArgs=L_NoInitArgs_ERR;
6349	return s;
6350}
6351var MSOStrings=MSOWebPartPage_GetLocalizedStrings();
6352var L_AccessibleMenu_Text="Menu";
6353function FNEmpWz(wz)
6354{
6355	return (wz&&wz!="");
6356}
6357function AChld(p,c)
6358{
6359	if(p&&c)p.appendChild(c);
6360}
6361function AImg(mi,wzISrc,wzIAlt)
6362{
6363	if(!mi)return;
6364	if(FNEmpWz(wzISrc))mi.setAttribute("iconSrc",wzISrc);
6365	if(FNEmpWz(wzIAlt))
6366		mi.setAttribute("iconAltText",wzIAlt);
6367	else
6368		mi.setAttribute("iconAltText","");
6369}
6370function CMenu(wzID)
6371{
6372	var m=document.getElementById(wzID);
6373	if (m)
6374	{
6375		m._initialized=false;
6376		m._oContents=null;
6377		m.innerHTML="";
6378		return m;
6379	}
6380	m=document.createElement("MENU");
6381	if(!m)return null;
6382	if(wzID)m.id=wzID;
6383	m.className="ms-SrvMenuUI";
6384	AChld(document.body,m);
6385	return m;
6386}
6387function CMItm(wzType)
6388{
6389	var mi=document.createElement("SPAN");
6390	if(!mi)return null;
6391	mi.setAttribute("type",wzType);
6392	return mi;
6393}
6394function SetInnerText(oNode, wzText)
6395{
6396	if (document.createTextNode !=null)
6397	{
6398		var parsedText=document.createTextNode(wzText);
6399		oNode.innerHTML="";
6400		oNode.appendChild( parsedText );
6401	}
6402	else
6403	{
6404		oNode.innerText=wzText;
6405	}
6406}
6407function CMOpt(wzText,wzAct,wzISrc,wzIAlt,wzISeq,wzDesc)
6408{
6409	var mo=CMItm("option");
6410	if(!mo)return null;
6411	mo.setAttribute("text", wzText);
6412	mo.setAttribute("onMenuClick", wzAct);
6413	if (wzDesc)mo.setAttribute("description", wzDesc);
6414	AImg(mo,wzISrc,wzIAlt);
6415	if(FNEmpWz(wzISeq))mo.setAttribute("sequence",wzISeq);
6416	return mo;
6417}
6418function CAMOpt(p,wzText,wzAct,wzISrc,wzIAlt,wzISeq,wzDesc)
6419{
6420	var mo=CMOpt(wzText,wzAct,wzISrc,wzIAlt,wzISeq,wzDesc);
6421	if(!mo)return null;
6422	AChld(p,mo);
6423	return mo;
6424}
6425function CIMOpt(p,wzText,wzAct,wzISrc,wzIAlt,wzISeq)
6426{
6427	var mo=CMOpt(wzText,wzAct,wzISrc,wzIAlt,wzISeq);
6428	if(!mo)return null;
6429	for (var i=0;i<p.childNodes.length;i++)
6430	{
6431		var iSeq=p.childNodes[i].getAttribute("sequence");
6432		if (iSeq)
6433		{
6434			if (iSeq > wzISeq)
6435			{
6436				p.childNodes[i].parentNode.insertBefore(mo, p.childNodes[i]);
6437				return mo;
6438			}
6439		}
6440	}
6441	AChld(p,mo);
6442	return mo;
6443}
6444function CMSep()
6445{
6446	var sep=CMItm("separator");
6447	SetInnerText(sep, "");
6448	return sep;
6449}
6450function CAMSep(p)
6451{
6452	var ms=CMSep();
6453	if(!ms)return null;
6454	AChld(p,ms);
6455	return ms;
6456}
6457function CSubM(wzText,wzISrc,wzIAlt,wzISeq,wzDesc)
6458{
6459	var sm=CMItm("submenu");
6460	if(!sm)return null;
6461	sm.setAttribute("text", wzText);
6462	if (wzDesc)sm.setAttribute("description", wzDesc);
6463	AImg(sm,wzISrc,wzIAlt);
6464	if(FNEmpWz(wzISeq))sm.setAttribute("sequence",wzISeq);
6465	return sm;
6466}
6467function CASubM(p,wzText,wzISrc,wzIAlt,wzISeq,wzDesc)
6468{
6469	var sm=CSubM(wzText,wzISrc,wzIAlt,wzISeq,wzDesc);
6470	if(!sm)return null;
6471	AChld(p,sm);
6472	return sm;
6473}
6474function FRdy(o)
6475{
6476	if (!o) return false;
6477	if (o.readyState==null)
6478		return true;
6479	switch (o.readyState)
6480		{
6481		case "loaded": case "interactive": case "complete": return true;
6482		default: return false;
6483		}
6484}
6485function OMenu(m,r,fr,ft,yoff)
6486{
6487	if(typeof(m)=="string")m=document.getElementById(m);
6488	if(m)
6489		{
6490			OMenuInt(m,r,fr,ft,yoff);
6491		}
6492	return false;
6493}
6494function OMenuInt(m,r,fr,ft,yoff)
6495{
6496	if(m&&!MenuHtc_isOpen(m)) MenuHtc_show(m,r,fr,ft,yoff);
6497}
6498function OMenuEvnt()
6499{
6500	var m=event.srcElement;
6501	if(m&&FRdy(document)&&FRdy(m))
6502		{
6503		var r=m.getAttribute("relativeTo");
6504		var fr=m.getAttribute("forceRefresh");
6505		var ft=m.getAttribute("flipTop");
6506		var yoff=m.getAttribute("yOffsetTop");
6507		if(r!=null)m.removeAttribute("relativeTo");
6508		if(fr!=null)m.removeAttribute("forceRefresh");
6509		if(ft!=null)m.removeAttribute("flipTop");
6510		if(yoff!=null)m.removeAttribute("yOffsetTop");
6511		m.onreadystatechange=null;
6512		OMenuInt(m,r,fr,ft,yoff);
6513		}
6514}
6515var kfnDisableEvent=new Function("return false");
6516var g_menuHtc_lastMenu=null;
6517var g_uniqueNumber=0;
6518function IsAccessibilityFeatureEnabledProxy()
6519{
6520	if (typeof(IsAccessibilityFeatureEnabled) !="undefined")
6521		return IsAccessibilityFeatureEnabled();
6522	return false;
6523}
6524function MenuHtc_show(oMaster, oParent, fForceRefresh, fFlipTop, yOffset)
6525{
6526	if (!(browseris.ie55up || browseris.nav6up || browseris.safari125up))
6527		return false;
6528	MenuHtc_hide();
6529	MenuHtc_init(oMaster);
6530	oMaster._oParent=oParent;
6531	oMaster._fIsRtL=IsElementRtl(oMaster._oParent);
6532	if ((browseris.ie || browseris.nav) && IsAccessibilityFeatureEnabledProxy())
6533	{
6534		var menu=null;
6535		if(oParent.foa !=null)
6536		{
6537			menu=byid(oParent.foa);			
6538			if(menu==null)
6539			{
6540				menu=eval(oParent.foa);	
6541			}
6542		}
6543		if (menu !=null && menu.onblur !=null)
6544		{
6545			menu.onblur();
6546		}
6547		RenderAccessibleMenu(oMaster, fForceRefresh);
6548		g_menuHtc_lastMenu=oMaster;
6549	}
6550	else
6551	{
6552		SetBodyEventHandlers(null);
6553		AssureId(oParent);
6554		var result=ShowRoot(oMaster, oParent, fForceRefresh, fFlipTop, yOffset);
6555		g_menuHtc_lastMenu=oMaster;
6556		NavigateToMenu(oMaster);
6557		SetBodyEventHandlers(HandleDocumentBodyClick);
6558	}
6559	if (browseris.ie)
6560	{
6561		if (window.event !=null)
6562			window.event.cancelBubble=true;
6563	}
6564	return false;
6565}
6566function MenuHtc_hide()
6567{
6568	ClearTimeOutToHideMenu();
6569	var oMaster=g_menuHtc_lastMenu;
6570	if (oMaster !=null)
6571	{
6572		if (oMaster._accessibleMenu !=null)
6573		{
6574			CloseAccessibleMenu(oMaster);
6575		}
6576		else
6577		{
6578			HideMenu(oMaster);
6579		}
6580	}
6581	g_menuHtc_lastMenu=null;
6582}
6583function MenuHtc_isOpen(oMaster)
6584{
6585	if (!oMaster || !oMaster._initialized)
6586		return false;
6587	var result=IsOpen(oMaster);
6588	return result;
6589}
6590function MenuHtc_item(oMaster, nLevel, nIndex)
6591{
6592	MenuHtc_init(oMaster);
6593	var result=GetItem(oMaster, nLevel, nIndex);
6594	return result;
6595}
6596function TrapMenuClick(e)
6597{
6598	if (e !=null)
6599		e.cancelBubble=true;
6600	return false;
6601}
6602function SetBodyEventHandlers(h)
6603{
6604	document.body.onclick=h;
6605}
6606function HandleDocumentBodyClick(e)
6607{
6608	if (g_menuHtc_lastMenu !=null)
6609	{
6610		var oMaster=g_menuHtc_lastMenu;
6611		if (oMaster !=null)
6612		{
6613			HideMenu(oMaster);
6614		}
6615	}
6616	return false;
6617}
6618function GetEventPopup(e)
6619{
6620	var obj=GetEventSrcElement(e);
6621	while (obj !=null)
6622	{
6623		if (obj.master !=null)
6624			return obj;
6625		obj=obj.parentNode;
6626	}
6627	return null;
6628}
6629function GetUniqueNumber()
6630{
6631	g_uniqueNumber++;
6632	return g_uniqueNumber;
6633}
6634function MenuHtc_init(oMaster)
6635{
6636	if (oMaster._initialized)
6637		return;
6638	oMaster._initialized=true;
6639	oMaster._wzPrefixID="mp"+GetUniqueNumber();
6640	if (oMaster.id==null)
6641		oMaster.id=oMaster._wzPrefixID+"_id";
6642	oMaster._nLevel=0;
6643	oMaster._arrPopup=new Array();
6644	oMaster._arrSelected=new Array();
6645	if (typeof(oMaster._onDestroy)=="undefined")
6646		oMaster._onDestroy=null;
6647	oMaster._fLargeIconMode=false;
6648	oMaster._fCompactItemsWithoutIcons=false;
6649}
6650function PrepContents(oMaster)
6651{
6652	oMaster._fLargeIconMode=(oMaster.getAttribute("largeIconMode")=="true");
6653	oMaster._fCompactItemsWithoutIcons=(oMaster.getAttribute("CompactMode")=="true");
6654	if (!browseris.safari)
6655	{
6656		oMaster._oContents=document.createElement("span");
6657		oMaster._oContents.style.display="none";
6658		oMaster._oContents.innerHTML=oMaster.innerHTML;
6659	}
6660	else
6661	{
6662		oMaster._oContents=oMaster.cloneNode(true);
6663		oMaster._oContents.style.display="none";
6664	}
6665	if (oMaster._fLargeIconMode)
6666	{
6667		if (oMaster._fIsRtL)
6668			oMaster._wzMenuStyle="ms-MenuUILargeRtL";
6669		else
6670			oMaster._wzMenuStyle="ms-MenuUILarge";
6671	}
6672	else
6673	{
6674		if (oMaster._fIsRtL)
6675			oMaster._wzMenuStyle="ms-MenuUIRtL";
6676		else
6677			oMaster._wzMenuStyle="ms-MenuUI";
6678	}
6679	oMaster._wzChkMrkPath="/_layouts/images/ChkMrk.gif";
6680	oMaster._wzMArrPath="/_layouts/images/MArr.gif";
6681	oMaster._wzMArrPathRtL="/_layouts/images/MArrRtL.gif";
6682}
6683function FixUpMenuStructure(oMaster)
6684{
6685	var menuNodes=oMaster._oRoot.childNodes;
6686	var lastGroupId=null;
6687	var lastMenuSeparatorRow=null;
6688	for (var nIndex=0; nIndex < menuNodes.length; nIndex++)
6689	{
6690		var menuRow=menuNodes[nIndex];
6691		if (menuRow.nodeType !=1)
6692			continue;
6693		var deleteRow=false;
6694		var displayNone=menuRow.style !=null && menuRow.style.display=='none';
6695		var jsHidden=FIsIHidden(menuRow);
6696		if (displayNone || jsHidden)
6697		{
6698			deleteRow=true;
6699		}
6700		else if (FIsIType(menuRow, "separator"))
6701		{
6702			if (lastMenuSeparatorRow !=null || nIndex==0)
6703				deleteRow=true;
6704			else
6705				lastMenuSeparatorRow=menuRow;
6706		}
6707		else
6708		{
6709			var cGroupId=menuRow.getAttribute("menuGroupId");
6710			if (cGroupId !=lastGroupId &&
6711				lastMenuSeparatorRow==null &&
6712				nIndex !=0)
6713			{
6714				var lastMenuSeparatorRow=document.createElement("ie:menuitem");
6715				lastMenuSeparatorRow.setAttribute("type","separator");
6716				oMaster._oRoot.insertBefore(lastMenuSeparatorRow,menuRow);
6717			}
6718			else if (FIsIType(menuRow, "submenu") && lastMenuSeparatorRow !=null)
6719			{
6720				menuRow.parentNode.removeChild(lastMenuSeparatorRow);
6721				lastMenuSeparatorRow=null;
6722			}
6723			else
6724			{
6725				lastMenuSeparatorRow=null;
6726			}
6727			lastGroupId=cGroupId;
6728		}
6729		if (deleteRow)
6730		{
6731			menuRow.parentNode.removeChild(menuRow);
6732			nIndex--;
6733		}
6734	}
6735	if(lastMenuSeparatorRow !=null)
6736		lastMenuSeparatorRow.parentNode.removeChild(lastMenuSeparatorRow);
6737}
6738function IsElementRtl(oCurrent)
6739{
6740	while (oCurrent !=null && oCurrent.tagName !=null)
6741	{
6742		var dir=oCurrent.getAttribute("dir");
6743		if ((dir==null || dir=="") && oCurrent.style !=null)
6744		{
6745			dir=oCurrent.style.direction;
6746		}
6747		if (dir=="rtl")
6748			return true;
6749		else if (dir=="ltr")
6750			return false;
6751		oCurrent=oCurrent.parentNode;
6752	}
6753	return false;
6754}
6755function AdjustScrollPosition(element, relativeToElement, result)
6756{
6757	var oCurrent=element;
6758	while (oCurrent !=null &&
6759		oCurrent !=relativeToElement &&
6760		oCurrent !=element.offsetParent &&
6761		oCurrent.tagName !=null &&
6762		oCurrent.tagName.toLowerCase() !="body" &&
6763		oCurrent.tagName.toLowerCase() !="html")
6764	{
6765		if (oCurrent.scrollWidth > oCurrent.clientWidth &&
6766			oCurrent.offsetWidth >=oCurrent.clientWidth &&
6767			oCurrent.clientWidth !=0)
6768		{
6769			if (!IsElementRtl(oCurrent))
6770			{
6771				if (oCurrent.scrollLeft > 0)
6772					result.x -=oCurrent.scrollLeft;
6773			}
6774			else
6775			{
6776				result.x+=(oCurrent.scrollWidth - oCurrent.offsetWidth - oCurrent.scrollLeft);
6777			}
6778		}
6779		if (oCurrent.scrollTop > 0)
6780			result.y -=oCurrent.scrollTop;
6781		oCurrent=oCurrent.parentNode;
6782	}
6783}
6784function MenuHtc_GetElementPosition(element, relativeToElement)
6785{
6786	var result=new Object();
6787	result.x=0;
6788	result.y=0;
6789	result.width=0;
6790	result.height=0;
6791	if (element.offsetParent) {
6792		var parent=element;
6793		while (parent !=null &&
6794			parent !=relativeToElement)
6795		{
6796			result.x+=parent.offsetLeft;
6797			result.y+=parent.offsetTop;
6798			AdjustScrollPosition(parent, relativeToElement, result);
6799			var parentTagName=parent.tagName.toLowerCase();
6800			if (parentTagName !="table" &&
6801				parentTagName !="body" &&
6802				parentTagName !="html" &&
6803				parentTagName !="div" &&
6804				parent.clientTop &&
6805				parent.clientLeft) {
6806				result.x+=parent.clientLeft;
6807				result.y+=parent.clientTop;
6808			}
6809			if (browseris.ie && parentTagName=="td")
6810			{
6811				if (parent.runtimeStyle.borderTopStyle !="none" ||
6812				    parent.currentStyle.borderTopStyle !="none")
6813				{
6814					var shift;
6815					if (parent.runtimeStyle.borderTopWidth !="")
6816					{
6817						shift=parseInt(parent.runtimeStyle.borderTopWidth);
6818					}
6819					else
6820					{
6821						shift=parseInt(parent.currentStyle.borderTopWidth);
6822					}
6823					if (!isNaN(shift))
6824					{
6825						result.y+=shift;
6826					}
6827				}
6828				if (parent.runtimeStyle.borderLeftStyle !="none" ||
6829				    parent.currentStyle.borderLeftStyle !="none")
6830				{
6831					var shift;
6832					if (parent.runtimeStyle.borderLeftWidth !="")
6833					{
6834						shift=parseInt(parent.runtimeStyle.borderLeftWidth);
6835					}
6836					else
6837					{
6838						shift=parseInt(parent.currentStyle.borderLeftWidth);
6839					}
6840					if (!isNaN(shift))
6841					{
6842						result.x+=shift;
6843					}
6844				}
6845			}
6846			parent=parent.offsetParent;
6847		}
6848	}
6849	else if (element.left && element.top) {
6850		result.x=element.left;
6851		result.y=element.top;
6852	}
6853	else {
6854		if (element.x) {
6855			result.x=element.x;
6856		}
6857		if (element.y) {
6858			result.y=element.y;
6859		}
6860	}
6861	if (element.offsetWidth && element.offsetHeight) {
6862		result.width=element.offsetWidth;
6863		result.height=element.offsetHeight;
6864	}
6865	else if (element.style && element.style.pixelWidth && element.style.pixelHeight) {
6866		result.width=element.style.pixelWidth;
6867		result.height=element.style.pixelHeight;
6868	}
6869	return result;
6870}
6871function MenuHtcInternal_Show(oMaster, oParent, y, fFlipTop)
6872{
6873	var oPopup=oMaster._arrPopup[oMaster._nLevel];	
6874	var nIndex;							
6875	var fTopLevel;							
6876	var oInnerDiv;
6877	if (!oMaster._oContents) PrepContents(oMaster);
6878	if (!oMaster._oContents || IsOpen(oMaster)) return;
6879	if (!oPopup && !oMaster._oRoot)
6880		{
6881		oMaster._nLevel=0;
6882		oMaster._oRoot=oMaster._oContents;
6883		}
6884	fTopLevel=oMaster._nLevel==0;
6885	fFlipTop=fFlipTop && fTopLevel;
6886	if (!oPopup)
6887	{
6888		oMaster._arrPopup[oMaster._nLevel]=document.createElement("DIV");
6889		oPopup=oMaster._arrPopup[oMaster._nLevel];
6890		oPopup.isMenu=true;
6891		oPopup.master=oMaster;
6892		oPopup.level=oMaster._nLevel;
6893		oInnerDiv=document.createElement("DIV");
6894		var oTable=document.createElement("table");
6895		var oTBody=document.createElement("tbody");
6896		oInnerDiv.isInner=true;
6897		oPopup.style.position="absolute";
6898		oInnerDiv.style.overflow="visible";
6899		oTable.appendChild(oTBody);
6900		oInnerDiv.appendChild(oTable);
6901		oPopup.appendChild(oInnerDiv);
6902		if (oMaster._fIsRtL)
6903			oPopup.setAttribute("dir", "rtl");
6904		else
6905			oPopup.setAttribute("dir", "ltr");
6906		document.body.appendChild(oPopup);
6907		FixUpMenuStructure(oMaster);
6908		var id=0;
6909		var childNodeLength=oMaster._oRoot.childNodes.length;
6910		for (nIndex=0; nIndex < childNodeLength; nIndex++)
6911		{
6912			var oNode=oMaster._oRoot.childNodes[nIndex];
6913			if (oNode.nodeType !=1)
6914				continue;
6915			if (!FIsIType(oNode, "label"))
6916			{
6917				var oItem=CreateMenuItem(oMaster, oNode, MakeID(oMaster, oMaster._nLevel, id));
6918				if (oItem) oTBody.appendChild(oItem);
6919				id++;
6920			}
6921		}
6922		oPopup.className="ms-MenuUIPopupBody";
6923		oTable.className=oMaster._wzMenuStyle;
6924		oTable.cellSpacing=0;
6925		oTable.cellPadding=0;
6926		oPopup.oncontextmenu=kfnDisableEvent;
6927		oPopup.ondragstart=kfnDisableEvent;
6928		oPopup.onselectstart=kfnDisableEvent;
6929		if (oParent._onmouseover==null)
6930			oParent._onmouseover=oParent.onmouseover;
6931		if (oParent._onmouseout==null)
6932			oParent._onmouseout=oParent.onmouseout;
6933		if (oParent._onmousedown==null)
6934			oParent._onmousedown=oParent.onmousedown;
6935		if (oParent._onclick==null)
6936			oParent._onclick=oParent.onclick;
6937		if (browseris.nav)
6938		{
6939			oPopup.onkeypress=function(e) {return false; };
6940			oPopup.onkeyup=function(e) {return false; };
6941			oPopup.onkeydown=function(e) {PopupKeyDown(e); return false; };
6942			oPopup.onmousedown=function(e) {TrapMenuClick(e); return false; };
6943			oPopup.onmouseover=function(e) {PopupMouseOver(e); return false; };
6944			oPopup.onmouseout=function(e) {PopupMouseLeave(e); return false; };
6945			oPopup.onclick=function(e) {PopupMouseClick(e); TrapMenuClick(e); return false; };
6946			oParent.onmouseover=function (e) {PopupMouseOverParent(e); return false; };
6947			oParent.onmouseout=function(e) {PopupMouseLeaveParent(e); return false; };
6948			oParent.onmousedown=function(e) {TrapMenuClick(e); return false; };
6949			oParent.onclick=function(e) {TrapMenuClick(e); return false; };
6950			oParent.oncontextmenu=function(e) {TrapMenuClick(e); return false; };
6951		}
6952		else
6953		{
6954			oPopup.onkeydown=new Function("PopupKeyDown(event); return false;");
6955			oPopup.onmousedown=new Function("TrapMenuClick(event); return false;");
6956			oPopup.onmouseover=new Function("PopupMouseOver(event); return false;");
6957			oPopup.onmouseout=new Function("PopupMouseLeave(event); return false;");
6958			oPopup.onclick=new Function("PopupMouseClick(event); TrapMenuClick(event); return false;");
6959			oParent.onmouseover=new Function("PopupMouseOverParent(event); return false;");
6960			oParent.onmouseout=new Function("PopupMouseLeaveParent(event); return false;");
6961			oParent.onmousedown=new Function("TrapMenuClick(event); return false;");
6962			oParent.onclick=new Function("TrapMenuClick(event); return false;");
6963			oParent.oncontextmenu=new Function("TrapMenuClick(event); return false;");
6964		}
6965		if (fTopLevel)
6966		{
6967			var wzOnUnload=oMaster.getAttribute("onunloadtext");
6968			if (wzOnUnload) oPopup.onunload=new Function(wzOnUnload);
6969		}
6970	}
6971	else
6972	{
6973		var oOld=oMaster._arrSelected[oMaster._nLevel];
6974		if (oOld) UnselectItem(oOld);
6975	}
6976	oMaster._arrSelected[oMaster._nLevel]=null;
6977	var oBackFrame;
6978	if (browseris.ie)
6979	{
6980		var originalScrollLeft=document.body.scrollLeft;
6981		oBackFrame=document.createElement("iframe");
6982		AssureId(oBackFrame);
6983		oBackFrame.src="/_layouts/blank.htm";
6984		oBackFrame.style.position="absolute";
6985		oBackFrame.style.display="none";
6986		oBackFrame.scrolling="no";
6987		oBackFrame.frameBorder="0";
6988		document.body.appendChild(oBackFrame);
6989		oPopup.style.zIndex=103;
6990		oPopup._backgroundFrameId=oBackFrame.id;
6991		if (originalScrollLeft !=document.body.scrollLeft)
6992		{
6993			document.body.scrollLeft=originalScrollLeft;
6994		}
6995	}
6996	SetMenuPosition(oMaster, oParent, oPopup, oInnerDiv, fFlipTop, fTopLevel);
6997	if (browseris.ie)
6998	{
6999		SetBackFrameSize(null, oPopup);
7000		oPopup.onresize=new Function("SetBackFrameSize(event, null);");
7001		oBackFrame.style.display="block";
7002		oBackFrame.style.zIndex=101;
7003	}
7004}
7005function SetMenuPosition(oMaster, oParent, oPopup, oInnerDiv, fFlipTop, fTopLevel)
7006{
7007	var maxWidth=window.screen.width;
7008	var maxHeight=window.screen.height;
7009	if (browseris.nav)
7010	{
7011		maxWidth=document.body.clientWidth;
7012		maxHeight=document.body.clientHeight;
7013	}
7014	else if (self.innerHeight)
7015	{
7016		maxWidth=self.innerWidth;
7017		maxHeight=self.innerHeight;
7018	}
7019	else if (document.documentElement && document.documentElement.clientHeight)
7020	{
7021		maxWidth=document.documentElement.clientWidth;
7022		maxHeight=document.documentElement.clientHeight;
7023	}
7024	else if (document.body)
7025	{
7026		maxWidth=document.body.clientWidth;
7027		maxHeight=document.body.clientHeight;
7028	}
7029	var nRealWidth=oPopup.scrollWidth+oPopup.offsetWidth - oPopup.clientWidth;
7030	var nRealHeight=oPopup.scrollHeight+oPopup.offsetHeight - oPopup.clientHeight;
7031	var widthTooBig=false;
7032	var heightTooBig=false;
7033	if (nRealWidth > maxWidth - 50)
7034	{
7035		widthTooBig=true;
7036		nRealWidth=maxWidth - 50;
7037	}
7038	if (oMaster._fCompactItemsWithoutIcons && nRealHeight >=375)
7039	{
7040		heightTooBig=true;
7041		nRealHeight=375;
7042	}
7043	if (nRealHeight >=maxHeight - 50)
7044	{
7045		heightTooBig=true;
7046		nRealHeight=maxHeight - 50;
7047	}
7048	if (!widthTooBig && !heightTooBig)
7049	{
7050		oInnerDiv.style.overflow="visible";
7051	}
7052	else
7053	{
7054		if (browseris.ie)
7055		{
7056			if (widthTooBig)
7057			{
7058				oPopup.style.width=nRealWidth+"px";
7059				oInnerDiv.style.width=nRealWidth+"px";
7060				oInnerDiv.style.overflowX="scroll";
7061			}
7062			else
7063			{
7064				oInnerDiv.style.width=nRealWidth+"px";
7065				oInnerDiv.style.overflowX="visible";
7066			}
7067			if (heightTooBig)
7068			{
7069				oPopup.style.height=nRealHeight+"px";
7070				oInnerDiv.style.height=nRealHeight+"px";
7071				oInnerDiv.style.overflowY="scroll";
7072			}
7073			else
7074			{
7075				oInnerDiv.style.height=nRealHeight+"px";
7076				oInnerDiv.style.overflowY="visible";
7077			}
7078		}
7079		else
7080		{
7081			oPopup.style.height=nRealHeight+"px";
7082			oInnerDiv.style.height=nRealHeight+"px";
7083			oPopup.style.width=nRealWidth+"px";
7084			oInnerDiv.style.width=nRealWidth+"px";
7085			oInnerDiv.style.overflow="auto";
7086		}
7087	}
7088	nRealWidth=oPopup.scrollWidth+oPopup.offsetWidth - oPopup.clientWidth;
7089	nRealHeight=oPopup.scrollHeight+oPopup.offsetHeight - oPopup.clientHeight;
7090	var EdgeLeft=0;
7091	var EdgeRight=maxWidth;
7092	var ParentLeft=0;
7093	var EdgeTop=0;
7094	var ParentTop=0;
7095	var oCurrent=oParent;
7096	if (browseris.safari)
7097	{
7098		if (oCurrent.tagName=="TR" && oCurrent.childNodes.length > 0)
7099			oCurrent=oCurrent.childNodes[0];
7100	}
7101	var p=MenuHtc_GetElementPosition(oCurrent);
7102	ParentLeft=p.x;
7103	ParentTop=p.y;
7104	var nParentWidth;
7105	if (fTopLevel)
7106	{
7107		nParentWidth=p.width;
7108		ParentTop+=p.height;
7109		ParentTop -=1;
7110	}
7111	else
7112	{
7113		nParentWidth=p.width+1;
7114	}
7115	var fTryGoDefault=!fFlipTop && !document.body.getAttribute("flipped");
7116	var fFlippedDefault, fFlippedNonDefault;
7117	var xDefault, xFlipped;
7118	if (!oMaster._fIsRtL)
7119	{
7120		var MenuRightDefault;
7121		var MenuLeftFlipped;
7122		if (fTopLevel)
7123		{
7124			xDefault=ParentLeft;
7125			MenuRightDefault=ParentLeft+nRealWidth;
7126			MenuLeftFlipped=ParentLeft+nParentWidth - nRealWidth;
7127		}
7128		else
7129		{
7130			xDefault=ParentLeft+nParentWidth;
7131			MenuRightDefault=ParentLeft+nParentWidth+nRealWidth;
7132			MenuLeftFlipped=ParentLeft - nRealWidth;
7133		}
7134		xFlipped=MenuLeftFlipped;
7135		fFlippedDefault=MenuRightDefault > EdgeRight && MenuLeftFlipped > EdgeLeft;
7136		fFlippedNonDefault=!(MenuLeftFlipped < EdgeLeft && MenuRightDefault < EdgeRight);
7137	}
7138	else
7139	{
7140		var MenuLeftDefault;
7141		var MenuRightFlipped;
7142		if (fTopLevel)
7143		{
7144			MenuLeftDefault=ParentLeft+nParentWidth - nRealWidth;
7145			MenuRightFlipped=ParentLeft+nRealWidth;
7146			xFlipped=ParentLeft;
7147		}
7148		else
7149		{
7150			MenuLeftDefault=ParentLeft - nRealWidth;
7151			MenuRightFlipped=ParentLeft+nParentWidth+nRealWidth;
7152			xFlipped=ParentLeft+nParentWidth;
7153		}
7154		xDefault=MenuLeftDefault;
7155		fFlippedDefault=MenuLeftDefault < EdgeLeft && MenuRightFlipped < EdgeRight;
7156		fFlippedNonDefault=!(MenuRightFlipped > EdgeRight && MenuLeftDefault > EdgeLeft);
7157	}
7158	var fFlipped=fTryGoDefault ? fFlippedDefault : fFlippedNonDefault;
7159	var x=fFlipped ? xFlipped : xDefault;
7160	var xOffset;
7161	var yOffset;
7162	if (browseris.nav)
7163	{
7164		xOffset=window.pageXOffset;
7165		yOffset=window.pageYOffset;
7166	}
7167	else
7168	{
7169		var htmlElement=document.body.parentElement;
7170		if (!IsElementRtl(document.body))
7171		{
7172			xOffset=document.body.scrollLeft;
7173			xOffset+=htmlElement.scrollLeft;
7174		}
7175		else
7176		{
7177			xOffset=-document.body.scrollWidth+document.body.offsetWidth+document.body.scrollLeft;
7178			xOffset+=-htmlElement.scrollWidth+htmlElement.offsetWidth+htmlElement.scrollLeft;
7179		}
7180		yOffset=document.body.scrollTop;
7181		yOffset+=htmlElement.scrollTop;
7182	}
7183	if (nRealWidth >=maxWidth)
7184	{
7185		x=xOffset;
7186	}
7187	else if (x - xOffset+nRealWidth >=maxWidth)
7188	{
7189		x=xOffset+maxWidth - nRealWidth;
7190	}
7191	var y;
7192	if (nRealHeight >=maxHeight)
7193	{
7194		y=yOffset;
7195	}
7196	else if (ParentTop+nRealHeight - yOffset >=maxHeight)
7197	{
7198		y=yOffset+maxHeight - nRealHeight;
7199	}
7200	else
7201	{
7202		y=ParentTop;
7203	}
7204	oPopup.setAttribute("flipped", fFlipTop ? fFlipped && fFlippedDefault : fFlipped);
7205	var posLeft=Math.max(x,xOffset);
7206	var posTop=Math.max(y,yOffset);
7207	oPopup.style.left=posLeft+"px";
7208	oPopup.style.top=posTop+"px";
7209}
7210function SetBackFrameSize(e, oPopup)
7211{
7212	if (oPopup==null)
7213		oPopup=GetEventSrcElement(e);
7214	var nRealWidth=oPopup.scrollWidth+oPopup.offsetWidth - oPopup.clientWidth;
7215	var nRealHeight=oPopup.scrollHeight+oPopup.offsetHeight - oPopup.clientHeight;
7216	var oBackFrame=document.getElementById(oPopup._backgroundFrameId);
7217	oBackFrame.style.left=oPopup.offsetLeft+"px";
7218	oBackFrame.style.top=oPopup.offsetTop+"px";
7219	oBackFrame.style.width=nRealWidth+"px";
7220	oBackFrame.style.height=nRealHeight+"px";
7221}
7222function HideMenu(oMaster, nPhase)
7223{
7224	ClearTimeOutToHideMenu();
7225	if (nPhase==null)
7226		nPhase=0;
7227	if (nPhase==2)
7228	{
7229		if (oMaster._onDestroy !=null)
7230		{
7231			oMaster._onDestroy();
7232			oMaster._onDestroy=null;
7233		}
7234		return;
7235	}
7236	if (IsOpen(oMaster) && !IsAccessibilityFeatureEnabledProxy())
7237	{
7238		if (oMaster._oParent !=null)
7239		{
7240			oMaster._oParent.onclick=oMaster._oParent._onclick;
7241			oMaster._oParent.onmouseover=oMaster._oParent._onmouseover;
7242			oMaster._oParent.onmouseout=oMaster._oParent._onmouseout;
7243			oMaster._oParent.onmousedown=oMaster._oParent._onmousedown;
7244		}
7245		SetBodyEventHandlers(null);
7246		UpdateLevel(oMaster, 0);
7247		var oPopup=oMaster._arrPopup[0];
7248		if (oPopup !=null)
7249		{
7250			var oBackFrame=document.getElementById(oPopup._backgroundFrameId);
7251			if (oBackFrame !=null)
7252				oBackFrame.parentNode.removeChild(oBackFrame);
7253			oPopup.parentNode.removeChild(oPopup);
7254			oMaster._arrPopup[0]=null;
7255			if (nPhase==0)
7256			{
7257				if (oMaster._onDestroy !=null)
7258				{
7259					oMaster._onDestroy();
7260					oMaster._onDestroy=null;
7261				}
7262			}
7263		}
7264		g_menuHtc_lastMenu=null;
7265	}
7266}
7267function IsOpen(oMaster)
7268{
7269	if (oMaster._accessibleMenu && !oMaster._accessibleMenu.closed)
7270		return true;
7271	if (!oMaster._arrPopup)
7272		return false;
7273	var oPopup=oMaster._arrPopup[oMaster._nLevel];
7274	return oPopup;
7275}
7276function FindLabel(oParent)
7277{
7278	var arrNodes=oParent ? oParent.childNodes : null;
7279	if (arrNodes)
7280		{
7281		for (var nIndex=0; nIndex < arrNodes.length; nIndex++)
7282			{
7283			var oNode=arrNodes[nIndex];
7284			if (oNode.nodeType !=1)
7285				continue;
7286			if (FIsIType(oNode, "label")) return oNode;
7287			}
7288		}
7289	return null;
7290}
7291function ShowRoot(oMaster, oParent, fForceRefresh, fFlipTop, yOffset)
7292{
7293	UpdateLevel(oMaster, 0);
7294	if (fForceRefresh)
7295		{
7296		oMaster._oContents=null;
7297		oMaster._oRoot=null;
7298		oMaster._nLevel=0;
7299		oMaster._arrPopup=new Array();
7300		oMaster._arrSelected=new Array();
7301		}
7302	else
7303		{
7304		oMaster._oRoot=oMaster._oContents;
7305		}
7306	var y=0;
7307	if (oParent) y+=oParent.offsetHeight;
7308	if (browseris.safari)
7309	{
7310		if (oParent.tagName=="TR" && oParent.childNodes.length > 0)
7311		{
7312			y+=(oParent.childNodes[0].offsetTop+oParent.childNodes[0].offsetHeight
7313				- oParent.offsetTop);
7314		}
7315	}
7316	if (yOffset) y+=yOffset;
7317	fFlipTop=fFlipTop !=false;
7318	MenuHtcInternal_Show(oMaster, oParent, y, fFlipTop);
7319}
7320function ShowSubMenu(oMaster, nLevel, oParent)
7321{
7322	if (!oParent) return;
7323	if (oParent.submenuRoot==null) return;
7324	UpdateLevel(oMaster, nLevel);
7325	oMaster._oRoot=oParent.submenuRoot;
7326	oMaster._nLevel=oMaster._nLevel+1;
7327	MenuHtcInternal_Show(oMaster, oParent, -1);
7328}
7329function ShowSubMenuEvnt(id)
7330{
7331	var oMaster=document.getElementById(id);
7332	var oPopup=oMaster._arrPopup[oMaster._nLevel];
7333	if (oPopup)
7334		{
7335		oPopup.removeAttribute("timeoutID");
7336		ShowSubMenu(oMaster, oMaster._nLevel, oMaster._arrSelected[oMaster._nLevel]);
7337		}
7338}
7339function SetShowSubMenuEvnt(oMaster)
7340{
7341	var oPopup=oMaster._arrPopup[oMaster._nLevel];
7342	if (oPopup)
7343	{
7344		ClearTimeOut("timeoutID");
7345		document.body.setAttribute("timeoutID", window.setTimeout(new Function("ShowSubMenuEvnt('"+oMaster.id+"');"), 100));
7346	}
7347}
7348function ClearTimeOut(oAttribute)
7349{
7350	var id=document.body.getAttribute(oAttribute);
7351	if (id !=null)
7352	{
7353		window.clearTimeout(id);
7354	}
7355	document.body.removeAttribute(oAttribute);
7356}
7357function ClearShowSubMenuEvnt(oPopup)
7358{
7359	ClearTimeOut("timeoutID");
7360}
7361function GetEventSrcItem(oMaster, srcElement)
7362{
7363	for (var oSrc=srcElement;
7364		oSrc && !FIStringEquals(oSrc.tagName, "BODY");
7365		oSrc=oSrc.parentNode)
7366	{
7367		if (FIStringEquals(oSrc.tagName, "TR") &&
7368			oSrc.id.substring(0, oMaster._wzPrefixID.length)==oMaster._wzPrefixID)
7369		{
7370			return oSrc;
7371		}
7372	}
7373	return null;
7374}
7375function UpdateLevel(oMaster, nLevel)
7376{
7377	var oPopup;
7378	while (oMaster._nLevel > nLevel)
7379		{
7380		oPopup=oMaster._arrPopup[oMaster._nLevel];
7381		if (oPopup)
7382			{
7383			ClearShowSubMenuEvnt(oPopup);
7384			var oBackFrame=document.getElementById(oPopup._backgroundFrameId);
7385			if (oBackFrame !=null)
7386				oBackFrame.parentNode.removeChild(oBackFrame);
7387			oPopup.parentNode.removeChild(oPopup);
7388			}
7389		oMaster._arrPopup[oMaster._nLevel]=null;
7390		oMaster._arrSelected[oMaster._nLevel]=null;
7391		oMaster._oRoot=oMaster._oRoot.parentNode;
7392		oMaster._nLevel--;
7393		}
7394	oPopup=oMaster._arrPopup[oMaster._nLevel];
7395	if (oPopup) ClearShowSubMenuEvnt(oPopup);
7396}
7397function PopupMouseOver(e)
7398{
7399	var oPopup=GetEventPopup(e);
7400	if (oPopup !=null)
7401	{
7402		var oMaster=oPopup.master;
7403		var nLevel=oPopup.level;
7404		if (nLevel < 0) return;
7405		var oSrcElem=GetEventSrcItem(oMaster, GetEventSrcElement(e));
7406		if (oSrcElem)
7407		{
7408			if (oSrcElem !=oMaster._arrSelected[nLevel])
7409			{
7410				if (FIsIType(oSrcElem, "separator"))
7411					return;
7412				ToggleMenuItem(oMaster, nLevel, oSrcElem);
7413				if (FIsIType(oSrcElem, "submenu"))
7414					EngageSelection(oMaster, true, true, false);
7415			}
7416			else if (nLevel < oMaster._nLevel)
7417			{
7418				UnselectCurrentOption(oMaster);
7419			}
7420		}
7421		ClearTimeOutToHideMenu();
7422	}
7423}
7424function PopupMouseLeave(e)
7425{
7426	var oPopup;
7427	oPopup=GetEventPopup(e);
7428	if (oPopup !=null)
7429	{
7430		UnselectCurrentOption(oPopup.master);
7431		SetTimeOutToHideMenu();
7432	}
7433	return false;
7434}
7435function PopupMouseOverParent(e)
7436{
7437	if (g_menuHtc_lastMenu !=null)
7438	{
7439		ClearTimeOutToHideMenu();
7440		if (g_menuHtc_lastMenu._oParent !=null && g_menuHtc_lastMenu._oParent._onmouseover !=null)
7441		{
7442			g_menuHtc_lastMenu._oParent._onmouseover();
7443		}
7444	}
7445}
7446function PopupMouseLeaveParent(e)
7447{
7448	if (g_menuHtc_lastMenu !=null)
7449	{
7450		if (g_menuHtc_lastMenu._oParent !=null && g_menuHtc_lastMenu._oParent._onmouseout !=null)
7451		{
7452				g_menuHtc_lastMenu._oParent._onmouseout();
7453		}		
7454		SetTimeOutToHideMenu();		
7455	}
7456}
7457function ClearTimeOutToHideMenu()
7458{
7459	if (document.body.getAttribute("HideMenuTimeOut") !=null)
7460	{
7461		ClearTimeOut("HideMenuTimeOut");
7462	}
7463}
7464function SetTimeOutToHideMenu()
7465{
7466	ClearTimeOut("HideMenuTimeOut");
7467	document.body.setAttribute("HideMenuTimeOut", window.setTimeout(MenuHtc_hide, 1500));
7468}
7469function PopupMouseClick(e)
7470{
7471	var oPopup=GetEventPopup(e);
7472	var oMaster=oPopup.master;
7473	var nLevel=oPopup.level;
7474	if (nLevel < 0) return;
7475	var oItem=oMaster._arrSelected[nLevel];
7476	UpdateLevel(oMaster, nLevel);
7477	EngageSelection(oMaster, true, false, false);
7478}
7479function PopupKeyDown(e)
7480{
7481	var oPopup=GetEventPopup(e);
7482	var oMaster=oPopup.master;
7483	var nLevel=oPopup.level;
7484	if (nLevel < 0)
7485		return;
7486	var nKeyCode=GetEventKeyCode(e);
7487	var shiftKey=e.shiftKey;
7488	if (oMaster._fIsRtL)
7489		{
7490		if (nKeyCode==37) nKeyCode=39;
7491		else if (nKeyCode==39) nKeyCode=37;
7492		}
7493	if (nKeyCode==9) nKeyCode=!shiftKey ? 40 : 38;
7494	ClearShowSubMenuEvnt(oPopup);
7495	switch (nKeyCode)
7496		{
7497	case 38:	
7498		MoveMenuSelection(oMaster, -1);
7499		break;
7500	case 40:	
7501		MoveMenuSelection(oMaster, 1);
7502		break;
7503	case 37:	
7504	case 27:	
7505		CloseCurrentLevel(oMaster, nKeyCode==27);
7506		break;
7507	case 39:	
7508	case 13:	
7509		EngageSelection(oMaster, nKeyCode==13, false, true);
7510		break;
7511		}
7512	e.returnValue=false;
7513}
7514function SetNewId(obj)
7515{
7516	obj.id="msomenuid"+GetUniqueNumber();
7517	return obj.id;
7518}
7519function AssureId(obj)
7520{
7521	if (obj.id==null || obj.id=="")
7522		obj.id="msomenuid"+GetUniqueNumber();
7523	return obj.id;
7524}
7525function NavigateToMenu(oMaster)
7526{
7527	var oMenu=oMaster._arrPopup[oMaster._nLevel].firstChild;
7528	AssureId(oMenu);
7529	try
7530	{		
7531		var oFirstItem=oMenu.firstChild.firstChild.firstChild;		
7532		oFirstItem.tabIndex=0;
7533		if (oFirstItem.setActive !=null)
7534			oFirstItem.setActive();
7535		else if (oFirstItem.focus !=null)
7536			oFirstItem.focus();
7537	}
7538	catch (e)
7539	{
7540	}
7541}
7542function ExecuteOnClick(fnOnClick)
7543{
7544	try
7545	{
7546		if (browseris.safari)
7547		{
7548			if (FIStringEquals(typeof(fnOnClick), "string"))
7549				eval("var document=window.document; {"+fnOnClick+"}");
7550			else
7551				fnOnClick();
7552		}
7553		else
7554		{
7555			if (FIStringEquals(typeof(fnOnClick), "string"))
7556			{
7557				fnOnClick=new Function("var document=window.document; {"+fnOnClick+"}");
7558			}
7559			var oTemp=window.document.body.appendChild(window.document.createElement("span"));
7560			oTemp.onclick=fnOnClick;
7561			oTemp.onclick();
7562			oTemp.parentNode.removeChild(oTemp);
7563		}
7564	}
7565	catch (e)
7566	{
7567	}
7568}
7569function EngageSelection(oMaster, fDoSelection, fDelayExpandSM, fEnterSM)
7570{
7571	var oItem=oMaster._arrSelected[oMaster._nLevel];
7572	if (!oItem || oItem.optionDisabled) return;
7573	if (FIsIType(oItem, "submenu"))
7574	{
7575		if (fDelayExpandSM)
7576		{
7577			SetShowSubMenuEvnt(oMaster);
7578		}
7579		else
7580		{
7581			ShowSubMenu(oMaster, oMaster._nLevel, oItem);
7582			if (fEnterSM) MoveMenuSelection(oMaster, 1);
7583		}
7584	}
7585	else if (fDoSelection)
7586	{
7587		var fEnabled=oItem.getAttribute("enabled");
7588		if (fEnabled !="false")
7589		{
7590			var fnOnClick=oItem.getAttribute("onMenuClick");
7591			if (fnOnClick)
7592			{
7593				HideMenu(oMaster, 1);
7594				ExecuteOnClick(fnOnClick);
7595				HideMenu(oMaster, 2);
7596			}
7597		}
7598	}
7599}
7600function CloseCurrentLevel(oMaster, fAllowHideRoot)
7601{
7602	if (oMaster._nLevel > 0)
7603	{
7604		UpdateLevel(oMaster, oMaster._nLevel - 1);
7605		var obj=oMaster._arrSelected[oMaster._nLevel];
7606		if (obj !=null)
7607		{
7608			if (browseris.nav)
7609			{
7610				obj=obj.firstChild.firstChild.firstChild.firstChild.firstChild.nextSibling.firstChild.firstChild;
7611				if (obj.focus !=null)
7612					obj.focus();
7613			}
7614			else
7615			{
7616				if (obj.focus !=null)
7617					obj.focus();
7618			}
7619		}
7620	}
7621	else if (fAllowHideRoot)
7622	{
7623		HideMenu(oMaster);
7624		var oParent=oMaster._oParent;
7625		while (oParent !=null &&
7626			oParent.tagName=="SPAN" &&
7627			oParent.getAttribute("contentEditable") !=null)
7628		{
7629			oParent=oParent.parentElement;
7630		}
7631		if (oParent !=null)
7632		{
7633			var focusElement=oParent;
7634			if (oParent.foa !=null)
7635			{
7636				var foa=null;
7637				foa=eval(oParent.foa);
7638				if(foa==null)
7639				{
7640					foa=byid(oParent.foa );
7641				}
7642				if (foa !=null)
7643				{
7644					focusElement=foa;
7645				}
7646			}
7647			if (focusElement.setActive !=null)
7648			{
7649				focusElement.setActive();
7650			}
7651			else if (focusElement.focus !=null)
7652			{
7653				focusElement.focus();
7654			}
7655		}
7656	}
7657}
7658function UnselectCurrentOption(oMaster)
7659{
7660	if (oMaster._nLevel >=0)
7661		{
7662		var oItem=oMaster._arrSelected[oMaster._nLevel];
7663		if (FIsIType(oItem, "option"))
7664			{
7665			UnselectItem(oItem);
7666			oMaster._arrSelected[oMaster._nLevel]=null;
7667			}
7668		}
7669}
7670function MakeID(oMaster, nLevel, nIndex)
7671{
7672	return oMaster._wzPrefixID+"_"+nLevel+"_"+nIndex;
7673}
7674function GetItem(oMaster, nLevel, nIndex)
7675{
7676	var oPopup=oMaster._arrPopup[nLevel];
7677	return oPopup ? document.getElementById(MakeID(oMaster, nLevel, nIndex)) : null;
7678}
7679function MoveMenuSelection(oMaster, iDir)
7680{
7681	var nIndex=-1;
7682	var nNumItems=oMaster._oRoot.childNodes.length;
7683	var oSelected=oMaster._arrSelected[oMaster._nLevel];
7684	if (oSelected)
7685	{
7686		var wzSelectedID=oSelected ? oSelected.id : null;
7687		if (wzSelectedID)
7688		{
7689			var nCurIndex=parseInt(wzSelectedID.substring(wzSelectedID.lastIndexOf("_")+1, wzSelectedID.length));
7690			nIndex=(nCurIndex+nNumItems+iDir) % nNumItems;
7691		}
7692	}
7693	if (nIndex < 0)
7694		nIndex=iDir > 0 ? 0 : (nNumItems - 1);
7695	var oItem;
7696	var nIndexStart=nIndex;
7697	do
7698	{
7699		oItem=GetItem(oMaster, oMaster._nLevel, nIndex);
7700		nIndex=(nIndex+nNumItems+iDir) % nNumItems;
7701	}
7702	while (nIndex !=nIndexStart &&
7703			 (!oItem || oItem.style.display=="none" ||
7704			  !(FIsIType(oItem, "option") || FIsIType(oItem, "submenu"))));
7705	ToggleMenuItem(oMaster, oMaster._nLevel, oItem);
7706}
7707function ToggleMenuItem(oMaster, nLevel, oItem)
7708{
7709	var oOld=oMaster._arrSelected[nLevel];
7710	if (!oItem || (oOld && oItem.id==oOld.id)) return;
7711	if (oOld)
7712	{
7713		UnselectItem(oOld);
7714		oOld.onkeydown=null;
7715		oOld.onmousedown=null;
7716		oOld.onmouseover=null;
7717		oOld.onmouseout=null;
7718		oOld.oncontextmenu=null;
7719	}
7720	UpdateLevel(oMaster, nLevel);
7721	SelectItem(oItem);
7722	oMaster._arrSelected[nLevel]=oItem;
7723	oItem.tabIndex=0;
7724	if (oItem.setActive !=null)
7725		oItem.setActive();
7726	else if (oItem.focus !=null)
7727		oItem.focus();
7728	var oPopup=oMaster._arrPopup[nLevel];
7729	var oDiv=oPopup.childNodes[0];
7730	var posPopup=MenuHtc_GetElementPosition(oItem, oDiv);
7731	if (posPopup.y+posPopup.height - oDiv.scrollTop > oDiv.offsetHeight)
7732	{
7733		oDiv.scrollTop=posPopup.y+posPopup.height - oDiv.offsetHeight;
7734	}
7735	else if (posPopup.y < oDiv.scrollTop)
7736	{
7737		oDiv.scrollTop=posPopup.y;
7738	}
7739}
7740function SelectItem(oItem)
7741{
7742	if (!oItem) return;
7743	var oItemTableCell=oItem.firstChild;
7744	var oItemTable=oItemTableCell.firstChild;
7745	if (oItemTableCell.className=="ms-MenuUIItemTableCellCompact")
7746		oItemTableCell.className="ms-MenuUIItemTableCellCompactHover";	
7747	else
7748		oItemTableCell.className="ms-MenuUIItemTableCellHover";
7749	oItemTable.className="ms-MenuUIItemTableHover";
7750}
7751function UnselectItem(oItem)
7752{
7753	if (!oItem) return;
7754	var oItemTableCell=oItem.firstChild;
7755	var oItemTable=oItemTableCell.firstChild;
7756	if (oItemTableCell.className=="ms-MenuUIItemTableCellCompactHover")
7757		oItemTableCell.className="ms-MenuUIItemTableCellCompact";	
7758	else
7759		oItemTableCell.className="ms-MenuUIItemTableCell";
7760	oItemTable.className="ms-MenuUIItemTable";
7761}
7762function SetImageSize(oMaster, oImg, oSize)
7763{
7764	if (oSize==null)
7765	{
7766		if (oMaster._fLargeIconMode)
7767			oSize=32;
7768		else
7769			oSize=16;
7770	}
7771	oImg.width=oSize;
7772	oImg.height=oSize;
7773}
7774function CreateMenuOption(oMaster, oRow, oNode, wzID, wzHtml)
7775{
7776	var oIcon=document.createElement("td");
7777	var oLabel=document.createElement("td");
7778	var oAccKey=document.createElement("td");
7779	var oArrow=document.createElement("td");
7780	oRow.appendChild(oIcon);
7781	oRow.appendChild(oLabel);
7782	oRow.appendChild(oAccKey);
7783	oRow.appendChild(oArrow);
7784	if (oMaster._fLargeIconMode)
7785		oIcon.className=!oMaster._fIsRtL ? "ms-MenuUIIconLarge" : "ms-MenuUIIconRtlLarge";
7786	else
7787		oIcon.className=!oMaster._fIsRtL ? "ms-MenuUIIcon" : "ms-MenuUIIconRtL";
7788	oIcon.align="center";
7789	if (oMaster._fCompactItemsWithoutIcons && !oNode.getAttribute("iconSrc"))
7790		oLabel.className=!oMaster._fIsRtL ? "ms-MenuUILabelCompact" : "ms-MenuUILabelCompactRtl";
7791	else
7792		oLabel.className=!oMaster._fIsRtL ? "ms-MenuUILabel" : "ms-MenuUILabelRtL";
7793	oAccKey.className="ms-MenuUIAccessKey";
7794	oArrow.className="ms-MenuUISubmenuArrow";
7795	if (!oMaster._fLargeIconMode)
7796	{
7797		oLabel.noWrap=true;
7798	}
7799	oIcon.noWrap=true;
7800	oAccKey.noWrap=true;
7801	oArrow.noWrap=true;
7802	oLabel.id=oNode.id;
7803	if (!wzHtml) wzHtml=oNode.innerHTML;
7804	if (oNode.getAttribute("enabled")=="false")
7805	{
7806		oRow.disabled=true;
7807		oLabel.className+=" ms-MenuUIItemTableCellDisabled";
7808	}
7809	var wzIconSrc=null, wzIconAlt=null;
7810	if (oNode.getAttribute("checked")=="true")
7811		{
7812		wzIconSrc=oMaster._wzChkMrkPath;
7813		wzIconAlt="*";
7814		}
7815	else
7816		{
7817		wzIconSrc=EvalAttributeValue(oNode, "iconSrc", "iconScript");
7818		wzIconAlt=oNode.getAttribute("iconAltText");
7819		}
7820	var innerHtml=wzHtml;
7821	var sText=EvalAttributeValue(oNode, "text", "textScript");
7822	var sDescription=EvalAttributeValue(oNode, "description", "descriptionScript");
7823	var oMenuItemBody=document.createElement("div");
7824	if (sDescription !=null && oMaster._fLargeIconMode)
7825	{
7826		var oBold=document.createElement("B");
7827		var oTextSpan=document.createElement("SPAN");
7828		var oTextNode=document.createTextNode(sText);
7829		var oBr=document.createElement("BR");
7830		var oDescSpan=document.createElement("SPAN");
7831		var oDescNode=document.createTextNode(sDescription);
7832		oTextSpan.setAttribute("style","white-space: nowrap;");
7833		oDescSpan.className="ms-menuitemdescription";
7834		oMenuItemBody.appendChild(oBold);
7835		oBold.appendChild(oTextSpan);
7836		oTextSpan.appendChild(oTextNode);
7837		oMenuItemBody.appendChild(oBr);
7838		oMenuItemBody.appendChild(oDescSpan);
7839		oDescSpan.appendChild(oDescNode);
7840	}
7841	else if (sText !=null)
7842	{
7843		var oTextSpan=document.createElement("SPAN");
7844		var oTextNode=document.createTextNode(sText);
7845		oTextSpan.setAttribute("style","white-space: nowrap;");
7846		oMenuItemBody.appendChild(oTextSpan);
7847		oTextSpan.appendChild(oTextNode);
7848	}
7849	var htmlSpan=document.createElement("SPAN");
7850	htmlSpan.innerHTML=innerHtml;
7851	oMenuItemBody.appendChild(htmlSpan);
7852	if (wzIconSrc)
7853	{
7854		var oImg=document.createElement("IMG");
7855		SetImageSize(oMaster, oImg);
7856		var oImgLbl=document.createElement("LABEL");
7857		oIcon.appendChild(oImg);
7858		oLabel.appendChild(oImgLbl);
7859		var wzIconId=wzID+"_"+"ICON";
7860		oImg.id=wzIconId;
7861		oImg.src=wzIconSrc;
7862		if (wzIconAlt)
7863		{
7864			oImg.alt="";
7865			oImg.title="";
7866		}
7867		oImgLbl.htmlFor=wzIconId;
7868		oImgLbl.appendChild(oMenuItemBody);
7869	}
7870	else
7871	{
7872		if (browseris.nav || oMaster._fLargeIconMode)
7873		{
7874			var oImg=document.createElement("IMG");
7875			SetImageSize(oMaster, oImg);
7876			var oImgLbl=document.createElement("LABEL");
7877			oIcon.appendChild(oImg);
7878			oLabel.appendChild(oImgLbl);
7879			var wzIconId=wzID+"_"+"ICON";
7880			oImg.id=wzIconId;
7881			oImg.src="/_layouts/images/blank.gif";
7882			oImg.alt="";
7883			oImg.title="";
7884			oImgLbl.htmlFor=wzIconId;
7885			oImgLbl.appendChild(oMenuItemBody);
7886			if (oMaster._fLargeIconMode)
7887			{
7888				oImg.width=32;
7889				oImg.height=16;
7890			}
7891			else
7892			{
7893				oImg.width=16;
7894			}
7895		}
7896		else
7897		{
7898			oIcon.innerHTML="&nbsp;";
7899			oLabel.appendChild(oMenuItemBody);
7900		}
7901	}
7902	var wzAccKey=oNode.getAttribute("accessKeyText");
7903	if (wzAccKey) oAccKey.innerHTML=wzAccKey;
7904	SetIType(oRow, "option");
7905}
7906function CreateMenuSeparator(oMaster, oRow)
7907{
7908	var oCell=document.createElement("td");
7909	var oDiv=document.createElement("div");
7910	oRow.appendChild(oCell);
7911	oCell.appendChild(oDiv);
7912	if (oMaster._fLargeIconMode)
7913		oDiv.className=!oMaster._fIsRtL ? "ms-MenuUISeparatorLarge" : "ms-MenuUISeparatorLargeRtl";
7914	else
7915		oDiv.className=!oMaster._fIsRtL ? "ms-MenuUISeparator" : "ms-MenuUISeparatorRtL";
7916	oDiv.innerHTML="&nbsp;";
7917	SetIType(oRow, "separator");
7918}
7919function CreateSubmenu(oMaster, oRow, oNode, wzID)
7920{
7921	var oLabelNode=FindLabel(oNode);
7922	CreateMenuOption(oMaster, oRow, oNode, wzID, oLabelNode ? oLabelNode.innerHTML : null);
7923	var oArrow=oRow.childNodes[3];
7924	var oArrowImg=document.createElement("IMG");
7925	SetImageSize(oMaster, oArrowImg, 16);
7926	oArrow.appendChild(oArrowImg);
7927	oArrowImg.src=!oMaster._fIsRtL ? oMaster._wzMArrPath : oMaster._wzMArrPathRtL;
7928	oArrowImg.alt=!oMaster._fIsRtL ? ">" : "<";
7929	oArrowImg.title="";
7930	SetIType(oRow, "submenu");
7931	oRow.submenuRoot=oNode;
7932}
7933function MergeAttributes(oTarget, oSource)
7934{
7935	if (browseris.nav || oTarget.mergeAttributes==null)
7936	{
7937		var oAttributes=oSource.attributes;
7938		for (var i=0; i < oAttributes.length; i++)
7939		{
7940			var oAttrib=oAttributes[i];
7941			if (oAttrib !=null &&
7942				oAttrib.specified &&
7943				oAttrib.nodeName !="id" &&
7944				oAttrib.nodeName !="ID" &&
7945				oAttrib.nodeName !="name")
7946			{
7947				oTarget.setAttribute(oAttrib.nodeName, oAttrib.nodeValue);
7948			}
7949		}
7950		if (oSource.getAttribute("type") !=null)
7951			oTarget.setAttribute("type", oSource.getAttribute("type"));
7952		if (oSource.submenuRoot !=null)
7953			oTarget.submenuRoot=oSource.submenuRoot;
7954	}
7955	else
7956	{
7957		oTarget.mergeAttributes(oSource);
7958	}
7959}
7960function CreateMenuItem(oMaster, oNode, wzID, wzHtml)
7961{
7962	if (FIsIType(oNode, "label")) return;
7963	var oRow=document.createElement("tr");
7964	MergeAttributes(oRow, oNode);
7965	oRow.setAttribute("onMenuClick", oNode.getAttribute("onMenuClick"));
7966	if (FIsIType(oNode, "separator"))
7967	{
7968		CreateMenuSeparator(oMaster, oRow);
7969		return oRow;
7970	}
7971	if (!GetIType(oNode)) SetIType(oNode, "option");
7972	var oFmtTableRow=document.createElement("tr");
7973	var oFmtTableCell=document.createElement("td");
7974	var oFmtTable=document.createElement("table");
7975	var oFmtTableBody=document.createElement("tbody");
7976	oFmtTableRow.appendChild(oFmtTableCell);
7977	oFmtTableCell.appendChild(oFmtTable);
7978	oFmtTable.appendChild(oFmtTableBody);
7979	oFmtTableBody.appendChild(oRow);
7980	if (oMaster._fCompactItemsWithoutIcons && !oNode.getAttribute("iconSrc"))
7981		oFmtTableCell.className="ms-MenuUIItemTableCellCompact";
7982	else
7983		oFmtTableCell.className="ms-MenuUIItemTableCell";
7984	oFmtTable.className="ms-MenuUIItemTable";
7985	oFmtTable.width="100%";
7986	oFmtTable.cellSpacing=0;
7987	oFmtTable.cellPadding=0;
7988	if (FIsIType(oNode, "submenu"))
7989		CreateSubmenu(oMaster, oRow, oNode, wzID);
7990	else if (FIsIType(oNode, "option"))
7991		CreateMenuOption(oMaster, oRow, oNode, wzID, wzHtml);
7992	if (oRow.disabled ||
7993		oRow.getAttribute("enabled")=="false")
7994	{
7995		oRow.disabled=false;
7996		oRow.className="ms-MenuUIDisabled";
7997		oRow.disabled=false;
7998		for (var nIndex=0; nIndex < oRow.childNodes.length; nIndex++)
7999		{
8000			if (oRow.childNodes[nIndex].nodeType !=1)
8001				continue;
8002			oRow.childNodes[nIndex].disabled=true;
8003			oFmtTableCell.className+=" ms-MenuUIItemTableCellDisabled";
8004		}
8005		oRow.optionDisabled=true;
8006	}
8007	MergeAttributes(oFmtTableRow, oRow);
8008	if (oRow.optionDisabled !=null)
8009	{
8010		oFmtTableRow.optionDisabled=oRow.optionDisabled;
8011	}
8012	oFmtTableRow.id=wzID;
8013	SetIType(oFmtTableRow, GetIType(oRow));
8014	return oFmtTableRow;
8015}
8016function GetItems(oMaster)
8017{
8018	if (!oMaster._oContents) PrepContents(oMaster);
8019	return oMaster._oContents.childNodes;
8020}
8021function GetIType(oItem)
8022{
8023	return oItem ? oItem.getAttribute("type") : null;
8024}
8025function FIsIType(oItem, wzType)
8026{
8027	return FIStringEquals(GetIType(oItem), wzType);
8028}
8029function SetIType(oItem, wzType)
8030{
8031	if (oItem) oItem.setAttribute("type", wzType);
8032}
8033function FIStringEquals(wzX, wzY)
8034{
8035	return wzX !=null && wzY !=null && wzX.toLowerCase()==wzY.toLowerCase();
8036}
8037function RenderAccessibleMenu(oMaster, fForceRefresh)
8038{
8039	if (fForceRefresh)
8040	{
8041		oMaster._oContents=null;
8042		oMaster._oRoot=null;
8043		oMaster._nLevel=0;
8044		oMaster._arrPopup=new Array();
8045		oMaster._arrSelected=new Array();
8046	}
8047	else
8048	{
8049		oMaster._oRoot=oMaster._oContents;
8050	}
8051	if (!oMaster._oContents) PrepContents(oMaster);
8052	if (!oMaster._oContents) return;
8053	if (!oMaster._oRoot)
8054	{
8055		oMaster._nLevel=0;
8056		oMaster._oRoot=oMaster._oContents;
8057	}
8058	FixUpMenuStructure(oMaster);
8059	var menuDir=oMaster._fIsRtL ? "rtl" : "ltr";
8060	g_menuHtc_html="<html dir='"+menuDir+"'><head><title>"+L_AccessibleMenu_Text+"</title></head><body><ul id='root'>";
8061	RenderMenuLevel(oMaster, oMaster._oRoot, true);
8062	g_menuHtc_html=g_menuHtc_html+"</ul></body></html>";
8063	var oNewWindow=window.open("/_layouts/blank.htm", "_blank", "status=no,toolbar=no,menubar=no,location=no");
8064	oMaster._accessibleMenu=oNewWindow;
8065	oNewWindow.document.write(g_menuHtc_html);
8066	oNewWindow.document.close();
8067	oNewWindow.focus();
8068}
8069function CloseAccessibleMenu(oMaster, n)
8070{
8071	if (n==null)
8072		n=0;
8073	if (oMaster !=null)
8074	{
8075		if (n==0 || n==1)
8076		{
8077			if (oMaster._accessibleMenu !=null)
8078			{
8079				oMaster._accessibleMenu.close();
8080				oMaster._accessibleMenu=null;
8081			}
8082		}
8083		if (n==0 || n==2)
8084		{
8085			if (oMaster._onDestroy !=null)
8086			{
8087				oMaster._onDestroy();
8088				oMaster._onDestroy=null;
8089			}
8090		}
8091	}
8092}
8093function GetMenuItemText(oMaster, oNode, s)
8094{
8095	if (s=="")
8096	{
8097		s=EvalAttributeValue(oNode, "text", "textScript");
8098		var description=EvalAttributeValue(oNode, "description", "descriptionScript");
8099		if (description !=null &&
8100			description !="" &&
8101			oMaster._fLargeIconMode)
8102		{
8103			if (s !="")
8104				s=s+": ";
8105			s=s+description;
8106		}
8107	}
8108	if (oNode.getAttribute("checked")=="true")
8109		s="* "+s;
8110	if (oNode.title !=null && oNode.title !="")
8111		s=s+": "+oNode.title;
8112	return s;
8113}
8114function GetMenuItemEnabled(oNode, fEnabled)
8115{
8116	if (!fEnabled)
8117		return false;
8118	if (oNode.getAttribute("enabled")=="false")
8119		return false;
8120	if (oNode.getAttribute("disabled") !=null && oNode.getAttribute("disabled") !="")
8121		return false;
8122	return true;
8123}
8124var g_menuHtc_html;
8125function RenderMenuLevel(oMaster, oRoot, fEnabled)
8126{
8127	for (var nIndex=0; nIndex < oRoot.childNodes.length; nIndex++)
8128	{
8129		var oNode=oRoot.childNodes[nIndex];
8130		if (oNode.nodeType !=1)
8131			continue;
8132		if (oNode.style.display=="none")
8133			continue;
8134		if (FIsIType(oNode, "option"))
8135		{
8136			var s=GetMenuItemText(oMaster, oNode, oNode.innerHTML);
8137			if (!GetMenuItemEnabled(oNode, fEnabled))
8138			{
8139				g_menuHtc_html=g_menuHtc_html+"<li><span id=\""
8140+oNode.id+"\">"
8141+s+"</span></li>";
8142			}
8143			else
8144			{
8145				g_menuHtc_html=g_menuHtc_html+"<li><a href=\"#\" id=\""
8146+oNode.id+"\" "
8147+"onMenuClick"
8148+"=\""
8149+oNode.getAttribute("onMenuClick")
8150+"\" onclick=\""
8151+"javascript:opener.ExecuteOnAccessibleClick(this.getAttribute('"+"onMenuClick"+"')); return false;"
8152+"\">"
8153+s
8154+"</a></li>";
8155			}
8156		}
8157		else if (FIsIType(oNode, "submenu"))
8158		{
8159			var s=GetMenuItemText(oMaster, oNode, "");
8160			g_menuHtc_html=g_menuHtc_html+"<li><span id=\""+oNode.id+"\">"+s;
8161			for (var n=0; n < oNode.childNodes.length; n++)
8162			{
8163				var oLabelNode=oNode.childNodes[n];
8164				if (oLabelNode.nodeType !=1)
8165					continue;
8166				if (oLabelNode.style.display=="none")
8167					continue;
8168				if (FIsIType(oLabelNode, "label"))
8169				{
8170					g_menuHtc_html=g_menuHtc_html+" "+oLabelNode.innerHTML;
8171					break;
8172				}
8173			}
8174			g_menuHtc_html=g_menuHtc_html+"</span><ul>";
8175			RenderMenuLevel(oMaster, oNode, GetMenuItemEnabled(oNode, fEnabled));
8176			g_menuHtc_html=g_menuHtc_html+"</ul></li>";
8177		}
8178	}
8179}
8180function ExecuteOnAccessibleClick(fnOnClick)
8181{
8182	var oMaster=g_menuHtc_lastMenu;
8183	if (oMaster !=null)
8184	{
8185		CloseAccessibleMenu(oMaster, 1);
8186		window.focus();
8187		ExecuteOnClick(fnOnClick);
8188		CloseAccessibleMenu(oMaster, 2);
8189	}
8190}
8191function FIsIHidden(oItem)
8192{
8193	if (oItem)
8194	{
8195		var hiddenFunc=oItem.getAttribute("hidden");
8196		if (!hiddenFunc) return false;
8197		return eval(hiddenFunc);
8198	}
8199	else
8200		return false;
8201}
8202function EvalAttributeValue(oNode, sAttribute1, sAttribute2)
8203{
8204	var result=oNode.getAttribute(sAttribute2);
8205	if (result !=null &&
8206		result.toLowerCase().indexOf("javascript:")==0)
8207	{
8208		result=eval(result.substring(11));
8209		if (result !=null && result !="")
8210			return result;
8211	}
8212	var result=oNode.getAttribute(sAttribute1);
8213	if (result==null)
8214		return "";
8215	return result;
8216}
8217var flyoutsAllowed=false;
8218function enableFlyoutsAfterDelay()
8219{
8220	setTimeout("flyoutsAllowed=true;", 25);
8221}
8222function overrideMenu_HoverStatic(item)
8223{
8224	if (!flyoutsAllowed)
8225	{
8226		setTimeout(delayMenu_HoverStatic(item), 50);
8227	}
8228	else
8229	{
8230		var node=Menu_HoverRoot(item);
8231		var data=Menu_GetData(item);
8232		if (!data) return;
8233		__disappearAfter=data.disappearAfter;
8234		Menu_Expand(node, data.horizontalOffset, data.verticalOffset);
8235	}
8236}
8237function delayMenu_HoverStatic(item)
8238{
8239	return (function()
8240	{
8241		overrideMenu_HoverStatic(item);
8242	});
8243}
8244var MMU_chDelim=",";
8245var MMU_chDelimEnc="%2c";
8246var MMU_postbackPrefix="javascript:__doPostBack(";
8247var MMU_chDelim2="%";
8248var MMU_chDelim2Enc="%25";
8249function MHash_New()
8250{
8251	var oMaster=new Object();
8252	oMaster._keys=new Array();
8253	oMaster._values=new Array();
8254	return oMaster;
8255}
8256function MHash_Add(oMaster, oKey, oValue)
8257{
8258	oMaster._keys.push(oKey);
8259	oMaster._values.push(oValue);
8260}
8261function MHash_Count(oMaster)
8262{
8263	return oMaster._keys.length;
8264}
8265function MHash_Keys(oMaster)
8266{
8267	return oMaster._keys;
8268}
8269function MHash_Values(oMaster)
8270{
8271	return oMaster._values;
8272}
8273function MHash_Exists(oMaster, oKey)
8274{
8275	for (var i=0; i < oMaster._keys.length; i++)
8276	{
8277		if (oMaster._keys[i]==oKey)
8278			return true;
8279	}
8280	return false;
8281}
8282function MHash_Item(oMaster, oKey)
8283{
8284	for (var i=0; i < oMaster._keys.length; i++)
8285	{
8286		if (oMaster._keys[i]==oKey)
8287			return oMaster._values[i];
8288	}
8289	return null;
8290}
8291var MMU_reDelimEnc=new RegExp(MMU_chDelimEnc, "g");
8292var MMU_reDelim2Enc=new RegExp(MMU_chDelim2Enc, "g");
8293var MMU_reDelimDec=new RegExp(MMU_chDelim, "g");
8294var MMU_reDelim2Dec=new RegExp(MMU_chDelim2, "g");
8295function MMU_EncVal(strDec)
8296{
8297	return strDec.replace(MMU_reDelimDec, MMU_chDelimEnc).replace(MMU_reDelim2Dec, MMU_chDelim2Enc);
8298}
8299function MMU_DecVal(strEnc)
8300{
8301	return strEnc.replace(MMU_reDelim2Enc, MMU_chDelim2).replace(MMU_reDelimEnc, MMU_chDelim);
8302}
8303function MMU_ParseNV(rgnv)
8304{
8305	var dictNV=MHash_New();
8306	var rgstrNV=rgnv.split(MMU_chDelim);
8307	if (rgstrNV !=null)
8308	{
8309		var i;
8310		for (i=0; i < rgstrNV.length; i++)
8311		{
8312			var strNV=rgstrNV[i];
8313			var iEq=strNV.indexOf("=");
8314			if (iEq==0)
8315			{
8316				continue;
8317			}
8318			var name=null;
8319			var value=null;
8320			if (iEq < 0)
8321			{
8322				name=strNV;
8323			}
8324			else
8325			{
8326				name=strNV.substr(0, iEq);
8327				if (iEq < strNV.length - 1)
8328				{
8329					value=MMU_DecVal(strNV.substr(iEq+1));
8330				}
8331				else
8332				{
8333					value="";
8334				}
8335			}
8336			MHash_Add(dictNV, name, value);
8337		}
8338	}
8339	return dictNV;
8340}
8341function MMU_ParseNVAttr(elem, attr)
8342{
8343	var val=elem.getAttribute(attr);
8344	if (val==null && elem.childNodes.length > 0 && elem.childNodes[0].nodeType==1)
8345	{
8346		val=elem.childNodes[0].getAttribute(attr);
8347	}
8348	if (val==null)
8349	{
8350		return MHash_New();
8351	}
8352	return MMU_ParseNV(val);
8353}
8354function MMU_ResetMenuState(menu, dis, hid, chk, tokval)
8355{
8356	var i;
8357	for (i=0; i < menu.childNodes.length; i++)
8358	{
8359		var mnu=menu.childNodes[i];
8360		if (mnu.nodeType !=1)
8361			continue;
8362		var mnuId=mnu.getAttribute("id");
8363		if ((mnu !=null) && (mnuId !=null) && (mnuId.length > 0))
8364		{
8365			if (mnu.childNodes.length > 0)
8366			{
8367				MMU_ResetMenuState(mnu, dis, hid, chk, tokval);
8368				continue;
8369			}
8370			if (MHash_Exists(hid, mnuId))
8371			{
8372				mnu.style.display="none";
8373			}
8374			else
8375			{
8376				mnu.style.display="";
8377				var enabledOverride=mnu.getAttribute("enabledOverride");
8378				if ((enabledOverride !=null) && (enabledOverride.length >0))
8379				{
8380					mnu.setAttribute("enabled", enabledOverride);
8381				}
8382				else
8383				{
8384					if (MHash_Exists(dis, mnuId))
8385					{
8386						mnu.setAttribute("enabled", "false");
8387					}
8388					else
8389					{
8390						mnu.setAttribute("enabled", "true");
8391						if (MHash_Exists(chk, mnuId))
8392						{
8393							mnu.setAttribute("checked", "true");
8394						}
8395						else
8396						{
8397							mnu.setAttribute("checked", "false");
8398						}
8399					}
8400				}
8401			}
8402			MMU_ReplTokValAttr(mnu, "onMenuClick", tokval);
8403			MMU_ReplTokValAttr(mnu, "text", tokval);
8404			MMU_ReplTokValAttr(mnu, "description", tokval);
8405			MMU_ReplTokValVal(mnu, tokval)
8406		}
8407	}
8408}
8409function MMU_ReplTokValAttr(elem, attr, tokval)
8410{
8411	var val=elem.getAttribute(attr);
8412	var orig=elem.getAttribute(attr+"_Original");
8413	if ((val !=null) && (orig==null) && (MHash_Count(tokval) > 0))
8414	{
8415		elem.setAttribute(attr+"_Original", val);
8416	}
8417	else if ((val !=null) && (orig !=null) && (val !=orig))
8418	{
8419		val=orig;
8420	}
8421	if ((val==null) || (val.length <=0))
8422	{
8423		return;
8424	}
8425	var newVal=MMU_ReplTokVal(val,  tokval);
8426	if (newVal !=val)
8427	{
8428		elem.setAttribute(attr, newVal);
8429	}
8430}
8431function MMU_ReplTokValVal(item, tokval)
8432{
8433	if(item.nextSibling==null)
8434	{
8435		return;
8436	}
8437	var val=item.nextSibling.nodeValue;
8438	var orig=item.getAttribute("valOrig");
8439	if ((val !=null) && (orig==null) && (MHash_Count(tokval) > 0))
8440	{
8441		orig=val;
8442		item.setAttribute("valOrig", orig);
8443	}
8444	else if ((val !=null) && (orig !=null) && (val !=orig))
8445	{
8446		val=orig;
8447	}
8448   var newVal=MMU_ReplTokVal(val,  tokval);
8449	if ((val !=null) && (newVal !=null) && (newVal !=val))
8450	{
8451		item.nextSibling.nodeValue=newVal;
8452	}
8453}
8454function MMU_ReplTokVal(toFix, tokval)
8455{
8456	if ((toFix !=null) && (toFix.indexOf("%") >=0) && (tokval !=null) && (MHash_Count(tokval) > 0))
8457	{
8458		var toks=MHash_Keys(tokval);
8459		var vals=MHash_Values(tokval);
8460		var i;
8461		for (i=0; i < toks.length; i++)
8462		{
8463			var tok=toks[i];
8464			var val=vals[i];
8465			toFix=toFix.replace("%"+tok+"%", val);
8466		}
8467	}
8468   return toFix;
8469}
8470var g_MMU_HighlightedEcbTable=null;
8471var g_MMU_HighlightedEcbTableOpen=null;
8472var g_MMU_OpenTimeoutHandle=null;
8473function MMU_Open(menu, ecbLink, e, fAlignRight, alignId, delay)
8474{
8475	try
8476	{
8477		if ((menu==null) || (ecbLink==null))
8478		{
8479			return;
8480		}
8481		if ((ecbLink.getAttribute("suppressBubbleIfPostback") !=null) && (e !=null) && (e.srcElement !=null) && (e.srcElement.href !=null) &&
8482			(e.srcElement.href.substr(0, MMU_postbackPrefix.length)==MMU_postbackPrefix))
8483		{
8484			event.cancelBubble=true;
8485			return;
8486		}
8487		ClearHighlightedEcbTableOpen();
8488		if (fAlignRight==null)
8489		{
8490			fAlignRight=true;
8491		}
8492		MMU_ResetMenuState(menu, MMU_ParseNVAttr(ecbLink, "menuItemsDisabled"), MMU_ParseNVAttr(ecbLink, "menuItemsHidden"),
8493			MMU_ParseNVAttr(ecbLink, "menuItemsChecked"), MMU_ParseNVAttr(ecbLink, "menuTokenValues"));
8494		var elemAlign=null;
8495		if ((alignId !=null) && (alignId.length > 0))
8496		{
8497			elemAlign=document.getElementById(alignId);
8498		}
8499		if (elemAlign==null)
8500		{
8501			elemAlign=document.getElementById(ecbLink.id+"_t");
8502		}
8503		if (elemAlign==null)
8504		{
8505			elemAlign=ecbLink;
8506		}
8507		MMU_EcbHighlight(MMU_GetHighlightElement(ecbLink), true);
8508		var openMenuScript="MenuHtc_show(document.getElementById('"+menu.id+"'), document.getElementById('"+elemAlign.id+				"'), true, "+fAlignRight+", null);";
8509		openMenuScript+="SetEcbMouseOutAndDestroy('"+menu.id+"');"
8510		if ((delay !=null) && (delay > 0))
8511		{
8512			openMenuScript+=" g_MMU_OpenTimeoutHandle=null;";
8513			g_MMU_OpenTimeoutHandle=window.setTimeout(openMenuScript, delay, "javascript");
8514		}
8515		else
8516		{
8517			eval(openMenuScript);
8518		}
8519		if (e !=null)
8520			e.cancelBubble=true;
8521	}
8522	catch (ex)
8523	{
8524		alert(L_Loading_Error_Text);
8525	}
8526}
8527function SetEcbMouseOutAndDestroy(menuId)
8528{
8529		if (g_MMU_HighlightedEcbTable !=null)
8530		{
8531			g_MMU_HighlightedEcbTable.onmouseout=null;
8532			g_MMU_HighlightedEcbTableOpen=g_MMU_HighlightedEcbTable;
8533			document.getElementById(menuId)._onDestroy=ClearHighlightedEcbTableOpen;
8534		}
8535}
8536function ClearHighlightedEcbTableOpen()
8537{
8538	if (g_MMU_HighlightedEcbTableOpen !=null)
8539	{
8540		MMU_EcbHighlight(g_MMU_HighlightedEcbTableOpen, false);
8541		g_MMU_HighlightedEcbTableOpen=null;
8542	}
8543}
8544function MMU_EcbLinkOnFocusBlurDeferCall(menu, ecbLink, fOnFocus)
8545{
8546	if (fOnFocus)
8547	{
8548		ecbLink.onblur=fOnFocus ? new Function("MMU_EcbLinkOnFocusBlurDeferCall(null, this, false)") : null;
8549	}
8550	if (g_MMU_HighlightedEcbTableOpen !=null)
8551		return;
8552	var ecbTable=document.getElementById(ecbLink.id+"_t");
8553	if (ecbTable !=null)
8554	{
8555		MMU_EcbHighlight(ecbTable, fOnFocus);
8556	}
8557}
8558function MMU_EcbLinkOnKeyDown(menu, ecbLink, e)
8559{
8560	if (e==null)
8561	{
8562		e=window.event;
8563		if (e==null)
8564			return;
8565	}
8566	var hasHref=((ecbLink.href !=null) && (ecbLink.href.length > 0));
8567	if (((e.shiftKey || !hasHref) && (GetEventKeyCode(e)==13)) || ((e.altKey) && (GetEventKeyCode(e)==40)))
8568	{
8569		var image=byid(ecbLink.id+"_ti");
8570		if(image==null)
8571		{
8572			var serverClientId=ecbLink.getAttribute("serverclientid");
8573			if ((serverClientId !=null) && (serverClientId.length > 0))
8574			{
8575				image=byid(serverClientId+"_ti");
8576			}
8577		}
8578		if (image !=null)
8579		{
8580			image.click();
8581		}
8582		else
8583		{
8584			ecbLink.click();
8585		}
8586		return false;
8587	}
8588	else
8589	{
8590		return true;
8591	}
8592}
8593function MMU_EcbTableMouseOverOutDeferCall(ecbTable, fMouseOver)
8594{
8595	if (fMouseOver)
8596	{
8597		if (ecbTable==g_MMU_HighlightedEcbTableOpen)
8598		{
8599			return;
8600		}
8601		ecbTable.onmouseout=fMouseOver ? new Function("MMU_EcbTableMouseOverOut(this, false)") : null;
8602	}
8603	MMU_EcbHighlight(ecbTable, fMouseOver);
8604}
8605function MMU_EcbHighlight(ecbTable, fHighlight)
8606{
8607	if ((ecbTable==null) && (!fHighlight))
8608	{
8609		ecbTable=g_MMU_HighlightedEcbTableOpen;
8610	}
8611	if (ecbTable==null)
8612	{
8613		return;
8614	}
8615	if (fHighlight==null)
8616	{
8617		fHighlight=false;
8618	}
8619	var hoverActive=ecbTable.getAttribute("hoverActive");
8620	var hoverInactive=ecbTable.getAttribute("hoverInactive");
8621	if ((hoverActive==null))
8622	{
8623		hoverActive="ms-selectedtitle";
8624	}
8625	if ((hoverInactive==null))
8626	{
8627		hoverInactive="ms-unselectedtitle";
8628	}
8629	if (fHighlight)
8630	{
8631		ecbTable.className=hoverActive;
8632		g_MMU_HighlightedEcbTable=ecbTable;
8633	}
8634	else
8635	{
8636		ecbTable.className=hoverInactive;
8637	}
8638	var menuFormat=ecbTable.getAttribute("menuformat");
8639	var imageCell=document.getElementById(ecbTable.id+"i");
8640	if (imageCell !=null && menuFormat!=null && menuFormat=="ArrowOnHover")
8641	{
8642		imageCell.style.visibility=fHighlight ? "visible" : "hidden";
8643	}
8644	if (!fHighlight)
8645	{
8646		g_MMU_HighlightedEcbTable=null;
8647	}
8648}
8649function MMU_PopMenuIfShowingDeferCall(menuElement)
8650{
8651	if (!IsAccessibilityFeatureEnabledProxy() && g_menuHtc_lastMenu)
8652	{
8653		var menuType=g_menuHtc_lastMenu.getAttribute("type");
8654		if (menuType && menuType=="ServerMenu")
8655			menuElement.onclick();
8656	}
8657}
8658function MMU_HandleArrowSplitButtonKeyDown(e, id, a ,t)
8659{
8660	if (!e.shiftKey &&
8661		!e.altKey &&
8662		!e.ctrlKey &&
8663		(GetEventKeyCode(e)==13))
8664	{
8665		t.parentNode.click();
8666		return;
8667	}
8668	return MMU_EcbLinkOnKeyDown(byid(id), a, e);
8669}
8670function MMU_GetHighlightElement(elem)
8671{
8672	var highlightElement=null
8673	highlightElement=document.getElementById(elem.id+"_t");
8674	if (highlightElement !=null)
8675		return highlightElement;
8676	else
8677		return elem;
8678}
8679function MMU_GetMenuFromClientId(clientId)
8680{
8681	return document.getElementById(clientId);
8682}
8683var g_MMU_theFormActionAtPageLoad=null;
8684var g_MMU_theFormActionAtPreMenuOpen=null;
8685var g_MMU_Form0ActionAtPageLoad=null;
8686var g_MMU_Form0ActionAtPreMenuOpen=null;
8687function MMU_CallbackPreMenuOpen(templateClientId, menuClientId, callbackEventReference, timeoutLength, timeoutMessage, e)
8688{
8689	try
8690	{
8691		g_MMU_theFormActionAtPreMenuOpen=(theForm !=null ? theForm.action : "null");
8692		g_MMU_Form0ActionAtPreMenuOpen=(document.forms !=null && document.forms.length > 0 ? document.forms[0].action : "null");
8693		var menuTemplate=document.getElementById(templateClientId);
8694		var menuLink=document.getElementById(menuClientId);
8695		if ((menuLink.getAttribute("suppressBubbleIfPostback") !=null) && (e !=null) && (e.srcElement !=null) && (e.srcElement.href !=null) &&
8696			(e.srcElement.href.substr(0, MMU_postbackPrefix.length)==MMU_postbackPrefix))
8697		{
8698			event.cancelBubble=true;
8699			return;
8700		}
8701		MMU_StopPendingTimerEventsFromCallback();
8702		MMU_RemoveCallbackItemsFromMenuTemplate(menuTemplate);
8703		var menu=document.getElementById(menuClientId);
8704		menu.setAttribute("callbackInProgress", "true");
8705		var loadingMessageMenuItem=CAMOpt(menuTemplate, L_Loading_Text, "null");
8706		loadingMessageMenuItem.setAttribute("callbackitem", "true");
8707		loadingMessageMenuItem.setAttribute("enabled", "false");
8708		var callbackContext=templateClientId+";"+menuClientId+";"+timeoutMessage.replace(/;/g, "%semi%").replace(/\'/g, "%quot%");
8709		callbackEventReference=callbackEventReference.replace(/__CALLBACKCONTEXT__/g, callbackContext);
8710		eval(callbackEventReference);
8711		g_MMU_RequestTimeoutTimeoutHandle=window.setTimeout("MMU_CallbackErrHandler('timeout', '"+callbackContext+"')", timeoutLength, "javascript");
8712	}
8713	catch (ex)
8714	{
8715		alert(L_Loading_Error_Text);
8716	}
8717}
8718var g_MMU_RequestTimeoutTimeoutHandle=null;
8719function MMU_RemoveCallbackItemsFromMenuTemplate(menuTemplate)
8720{
8721	try
8722	{
8723		for (var menuChildIndex=0; menuChildIndex < menuTemplate.childNodes.length; menuChildIndex++)
8724		{
8725			var menuChild=menuTemplate.childNodes[menuChildIndex];
8726			if ((menuChild.nodeType==1) && (menuChild.getAttribute("callbackitem")=="true"))
8727			{
8728				menuTemplate.removeChild(menuChild);
8729				--menuChildIndex;
8730			}
8731		}
8732	}
8733	catch (ex)
8734	{
8735		alert(L_Loading_Error_Text);
8736	}
8737}
8738function MMU_StopPendingTimerEventsFromCallback()
8739{
8740	if (g_MMU_OpenTimeoutHandle !=null)
8741	{
8742		window.clearTimeout(g_MMU_OpenTimeoutHandle);
8743		g_MMU_OpenTimeoutHandle=null;
8744	}
8745	if (g_MMU_RequestTimeoutTimeoutHandle !=null)
8746	{
8747		window.clearTimeout(g_MMU_RequestTimeoutTimeoutHandle);
8748		g_MMU_RequestTimeoutTimeoutHandle=null;
8749	}
8750}
8751function MMU_UpdateMenuTemplateWithErrorItem(menuTemplate, errorString)
8752{
8753	MMU_RemoveCallbackItemsFromMenuTemplate(menuTemplate);
8754	var errorMenuItem=CAMOpt(menuTemplate, errorString, "null");
8755	loadingMessageMenuItem.setAttribute("callbackitem", "true");
8756	loadingMessageMenuItem.setAttribute("enabled", "false");
8757}
8758function MMU_UpdateOpenedMenuWithErrorItem(menu, menuTemplate, errorString)
8759{
8760	MMU_UpdateMenuTemplateWithErrorItem(menuTemplate, errorString);
8761	HideMenu(menuTemplate);
8762	MMU_Open(menuTemplate, menu);
8763}
8764function MMU_CallbackHandler(result, contextString)
8765{
8766	{
8767		MMU_StopPendingTimerEventsFromCallback();
8768		var context=MMU_ParseContext(contextString);
8769		var menuTemplate=document.getElementById(context.TemplateClientId);
8770		if (menuTemplate==null) { alert(L_Loading_Error_Text); return; }
8771		var menu=document.getElementById(context.MenuClientId);
8772		if (menu==null) { alert(L_Loading_Error_Text); return; }
8773		var disabledIds="";
8774		var hiddenIds="";
8775		var checkedIds="";
8776		var tokensAndValues="";
8777		var menuItemsHtml="";
8778		var parts=result.split(MMU_chDelim);
8779		if ((parts==null) || (parts.length !=5))
8780		{
8781			menuItemsHtml=MMU_GenerateErrorMenuItem(L_Loading_Error_Text);
8782		}
8783		else
8784		{
8785			var re=new RegExp(MMU_chDelimEnc,"g");
8786			disabledIds=parts[0].replace(re, MMU_chDelim);
8787			hiddenIds=parts[1].replace(re, MMU_chDelim);
8788			checkedIds=parts[2].replace(re, MMU_chDelim);
8789			tokensAndValues=parts[3].replace(re, MMU_chDelim);
8790			menuItemsHtml=parts[4].replace(re, MMU_chDelim);
8791		}
8792		menu.setAttribute("menuItemsDisabled", disabledIds);
8793		menu.setAttribute("menuItemsHidden", hiddenIds);
8794		menu.setAttribute("menuItemsChecked", checkedIds);
8795		menu.setAttribute("menuTokenValues", tokensAndValues);
8796		MMU_RemoveCallbackItemsFromMenuTemplate(menuTemplate);
8797		menuTemplate.innerHTML=menuTemplate.innerHTML+menuItemsHtml;
8798		HideMenu(menuTemplate);
8799		MMU_Open(menuTemplate, menu);
8800		menu.setAttribute("callbackInProgress", "");
8801	}
8802	{
8803	}
8804}
8805function MMU_CallbackErrHandler(result, contextString)
8806{
8807	try
8808	{
8809		alert(L_Loading_Error_Text);
8810		var context=MMU_ParseContext(contextString);
8811		var menuTemplate=document.getElementById(context.TemplateClientId);
8812		if (menuTemplate==null) { alert(L_Loading_Error_Text); return; }
8813		var menu=document.getElementById(context.MenuClientId);
8814		if (menu==null) { alert(L_Loading_Error_Text); return; }
8815		menu.setAttribute("callbackInProgress", "");
8816		var errorMessage=L_Loading_Error_Text;
8817		if ((result=="timeout") && (context.TimeoutMessage !=null) && (context.TimeoutMessage.length > 0))
8818		{
8819			errorMessage=context.TimeoutMessage;
8820		}
8821		MMU_UpdateOpenedMenuWithErrorItem(menu, menuTemplate, errorMessage);
8822		;
8823	}
8824	catch (ex)
8825	{
8826		alert(L_Loading_Error_Text);
8827	}
8828}
8829function MMU_ParseContext(contextString)
8830{
8831	try
8832	{
8833		var context=new Object();
8834		var values=contextString.split(';');
8835		context.TemplateClientId=values[0];
8836		context.MenuClientId=values[1];
8837		context.TimeoutMessage=values[2].replace(/%semi%/g, ";").replace(/%quot%/g, "\'");
8838		return context;
8839	}
8840	catch (ex)
8841	{
8842		alert(L_Loading_Error_Text);
8843	}
8844}
8845var L_NewFormLibTb3_Text="The document(s) could not be merged.\nThe required application may not be installed properly, or the template for this document library cannot be opened.\n\nPlease try the following:\n1. Check the General Settings for this document library for the name of the template, and install the application necessary for opening the template. If the application was set to install on first use, run the application and then try creating a new document again.\n\n2.  If you have permission to modify this document library, go to General Settings for the library and configure a new template.";
8846var L_NewFormLibTb4_Text="Select the document(s) you want to merge, and then click 'Merge Selected Documents' on the toolbar.";
8847function combineDocuments(strProgID, strTemplate, strSaveLocation)
8848{
8849	fNewDoc=false;
8850	{
8851		if ((browseris.w3c) && (!browseris.ie))
8852			document.all=document.getElementsByTagName("*");
8853		var fSelectionError=true;
8854		var strTemplateUrl;
8855		var strProgID2;
8856		try
8857		{
8858			var chkCombineCollection=document.all.chkCombine;
8859			for (i=0; fSelectionError && i<chkCombineCollection.length; i++)
8860				if (chkCombineCollection[i].checked && fSelectionError)
8861				{
8862					fSelectionError=false;
8863					strTemplateUrl=document.all.chkUrl[i].HREF;
8864					strProgID2=document.all.chkProgID[i].HREF;
8865				}
8866		}
8867		catch(ex)
8868		{
8869		}
8870		try
8871		{
8872			if (fSelectionError && document.all.chkCombine.checked)
8873			{
8874				fSelectionError=false;
8875				strTemplateUrl=document.all.chkUrl.HREF;
8876				strProgID2=document.all.chkProgID.HREF;
8877			}
8878		}
8879		catch(ex)
8880		{
8881		}
8882		if (!fSelectionError)
8883		{
8884			var bSuccess=false;
8885			try
8886				{
8887				NewDocumentButton=new ActiveXObject(strProgID2);
8888				fNewDoc=NewDocumentButton !=null;
8889				}
8890			catch(ex)
8891				{
8892				}
8893			if (!fNewDoc)
8894				alert(L_NewFormLibTb3_Text);
8895			else
8896			{
8897				try
8898				{					
8899					bSuccess=NewDocumentButton.MergeDocuments(strTemplateUrl, document.all.chkCombine, makeAbsUrl(strSaveLocation));
8900				}
8901				catch(e)
8902				{
8903				}
8904				if (!bSuccess)
8905					alert(L_NewFormLibTb3_Text);
8906				else
8907					window.onfocus=RefreshOnFocus;
8908			}
8909		}
8910		else
8911			alert(L_NewFormLibTb4_Text);
8912	}
8913}
8914var L_NewFormLibTb5_Text="Select the document(s) you want to relink, and then click 'Relink Selected Documents' on the toolbar.";
8915var L_NewFormLibTb6_Text="Only 500 documents can be relinked at a time. Modify your selection and then try again.";
8916function repairLinks(strRootFolder, strList, strVDir)
8917{
8918	if ((browseris.w3c) && (!browseris.ie))
8919		document.all=document.getElementsByTagName("*");
8920	var cntChecked=0;	
8921	var inputSubmitRepairDocs=document.all.SubmitRepairDocs;
8922	inputSubmitRepairDocs.value="";
8923	var inputs=document.getElementsByTagName('input');
8924	for (var i=0; i < inputs.length; i++)
8925	{
8926		if (inputs[i].id=='chkRepair')
8927		{
8928			if (inputs[i].checked)
8929			{
8930				inputSubmitRepairDocs.value+=inputs[i].getAttribute('docID');
8931				inputSubmitRepairDocs.value+=" ";
8932				cntChecked++;
8933			}
8934		}
8935	}
8936	if (cntChecked > 0 && cntChecked <=500)
8937	{
8938	  document.all.SubmitRepairRedirectList.value=strList;
8939	  document.all.SubmitRepairRedirectFolder.value=strRootFolder;
8940	  document.all.SubmitRepairDocsForm.action=strVDir+"/submitrepair.aspx";
8941	  document.all.SubmitRepairDocsForm.submit();
8942	}
8943	else
8944	  alert(cntChecked==0 ? L_NewFormLibTb5_Text : L_NewFormLibTb6_Text);
8945}
8946function NavigateToManageCopiesPage(strHttpRoot, strFileRef)
8947{
8948	STSNavigate(strHttpRoot+"/_layouts"+		"/managecopies.aspx?ItemUrl="+strFileRef+	"&Source="+GetSource());
8949}
8950var L_ViewVersion_Text="View";
8951var L_RestoreVersion_Text="Restore";
8952var L_DeleteVersion_Text="Delete";
8953var L_DenyVersion_Text="Reject this version";
8954var L_UnPublishVersion_Text="Unpublish this version";
8955function AddVersionMenuItemsCore(m, ctx)
8956{
8957	if (currentItemID !=null)
8958	{
8959	   var strCurrentItemID=currentItemID.toString();
8960	   if (strCurrentItemID.indexOf(".0.") >=0 )
8961	   return;
8962	}
8963	if (!HasRights(0x0, 0x40))
8964	  return;
8965	var menuOption;
8966	var IsCurrent=itemTable.getAttribute("isCur");
8967	var iLevel=itemTable.getAttribute("Level");
8968	var canViewProperty=itemTable.getAttribute("canViewProperty");
8969	if (currentItemFSObjType==null)
8970		currentItemFSObjType=GetAttributeFromItemTable(itemTable, "OType", "FSObjType");
8971	if (canViewProperty !="0")
8972	{
8973	menuOption=CAMOpt(m, L_ViewVersion_Text, "javascript:ViewVersion()", "");
8974		menuOption.id="ID_ViewVersion";
8975	}
8976	if (HasRights(0x0, 0x4))
8977	{
8978		menuOption=CAMOpt(m, L_RestoreVersion_Text, "javascript:RestoreVersion()", "");
8979		menuOption.id="ID_RestoreVersion";
8980	}
8981	if (HasRights(0x0, 0x80) && IsCurrent !="1")
8982	{
8983		menuOption=CAMOpt(m, L_DeleteVersion_Text, "javascript:DeleteVersion()", "");
8984		menuOption.id="ID_DeleteVersion";
8985	}
8986	if (HasRights(0x0, 0x10) && HasRights(0x0, 0x4))
8987	{
8988		if ((ctx.isModerated || ctx.EnableMinorVersions) && (currentItemFSObjType !=1)  &&
8989			(iLevel==1 && IsCurrent=="1"))
8990		{
8991			var menustring=L_DenyVersion_Text;
8992			if (ctx.EnableMinorVersions)
8993				menustring=L_UnPublishVersion_Text;
8994			menuOption=CAMOpt(m, menustring, "javascript:TakeOfflineVersion()", "");
8995			menuOption.id="ID_TakeOfflineVersion";
8996		}
8997	}
8998}
8999function ViewVersion()
9000{
9001	if (! IsContextSet())
9002		return;
9003	STSNavigate(itemTable.getAttribute("verUrl"));
9004}
9005var L_Version_Restore_Confirm_Text="You are about to replace the current version with the selected version.";
9006var L_Version_RestoreVersioningOff_Confirm_Text="Versioning is currently disabled. As a result, you are about to overwrite the current version. All changes to this version will be lost.";
9007var L_Version_NoRestore_Current_ERR="Cannot restore the current version.";
9008function RestoreVersion()
9009{
9010	if (! IsContextSet())
9011		return;
9012	var ctx=currentCtx;
9013	if (itemTable.getAttribute("isMostCur") !="0")
9014	{
9015		alert(L_Version_NoRestore_Current_ERR);
9016	}
9017	else
9018	{
9019		var path=ctx.HttpPath+"&op=Restore&ver="+itemTable.getAttribute("verId")
9020		if (confirm(ctx.verEnabled ? L_Version_Restore_Confirm_Text : L_Version_RestoreVersioningOff_Confirm_Text))
9021		{
9022			SubmitFormPost(path);
9023		}
9024	}
9025}
9026var L_Version_NoOffline_NonCurrent_ERR="You can only take offline the current published or approved version";
9027var L_Version_unpublish_Confirm_Text="Are you sure you want to unpublish this version of the document?";
9028var L_Version_deny_Confirm_Text="Are you sure you want to deny this version of the document?";
9029function TakeOfflineVersion()
9030{
9031	if (! IsContextSet())
9032		return;
9033	var ctx=currentCtx;
9034	var confrimstr=L_Version_deny_Confirm_Text;
9035	if (ctx.EnableMinorVersions)
9036		confrimstr=L_Version_unpublish_Confirm_Text
9037	if (itemTable.getAttribute("isCur") !="1" || itemTable.getAttribute("Level") !=1)
9038	{
9039		alert(L_Version_NoOffline_NonCurrent_ERR);
9040	}
9041	else if (confirm(confrimstr))
9042	{
9043		SubmitFormPost(ctx.HttpPath+"&op=TakeOffline");
9044	}
9045}
9046var L_Version_Delete_Confirm_Text="Are you sure you want to delete this version?";
9047var L_Version_Recycle_Confirm_Text="Are you sure you want to send this version to the site Recycle Bin?";
9048var L_Version_NoDelete_Current_ERR="You cannot delete the current checked in version, major version, or approved version.";
9049function DeleteVersion()
9050{
9051	if (! IsContextSet())
9052		return;
9053	var ctx=currentCtx;
9054	if (itemTable.getAttribute("isCur") !="0")
9055	{
9056		alert(L_Version_NoDelete_Current_ERR);
9057	}
9058	else
9059	{
9060		var path=ctx.HttpPath+"&op=Delete&ver="+itemTable.getAttribute("verId");
9061		if (confirm(ctx.RecycleBinEnabled ? L_Version_Recycle_Confirm_Text : L_Version_Delete_Confirm_Text))
9062		{
9063			SubmitFormPost(path);
9064		}
9065	}
9066}
9067var L_Version_DeleteAll_Confirm_Text="Are you sure you want to delete all previous versions associated with this file?";
9068var L_Version_RecycleAll_Confirm_Text="Are you sure you want to send all previous versions associated with this file to the site Recycle Bin?";
9069var L_Version_DeleteAllMinor_Confirm_Text="Are you sure you want to delete all previous draft versions of this file?";
9070var L_Version_RecycleAllMinor_Confirm_Text="Are you sure you want to send all previous draft versions of this file to the site Recycle Bin?";
9071var L_Version_NoDeleteAll_None_ERR="There are no previous versions to delete.";
9072function DeleteAllVersions(nVers, ctx)
9073{
9074	if (nVers <=1)
9075	{
9076		alert(L_Version_NoDeleteAll_None_ERR);
9077	}
9078	else
9079	{
9080		if (confirm(ctx.RecycleBinEnabled ? L_Version_RecycleAll_Confirm_Text : L_Version_DeleteAll_Confirm_Text))
9081		{
9082			SubmitFormPost(ctx.HttpPath+"&op=DeleteAll");
9083		}
9084	}
9085}
9086function DeleteAllMinorVersions(nVers, ctx)
9087{
9088	if (nVers <=1)
9089	{
9090		alert(L_Version_NoDeleteAll_None_ERR);
9091	}
9092	else if (confirm(ctx.RecycleBinEnabled ? L_Version_RecycleAllMinor_Confirm_Text : L_Version_DeleteAllMinor_Confirm_Text))
9093	{
9094		SubmitFormPost(ctx.HttpPath+"&op=DeleteAllMinor");
9095	}
9096}
9097function EditInGrid(using, viewguid)
9098{
9099	EnsureListControl();
9100	if (fListControl)
9101	{
9102		encViewId=escapeProperly(viewguid);
9103		strDocUrl=using+"?ShowInGrid=True&View="+encViewId;
9104		pageView=GetUrlKeyValue("PageView", true);
9105		if (pageView !="")
9106		{
9107			strDocUrl=strDocUrl+"&PageView="+pageView;
9108		}
9109		showWebPart=GetUrlKeyValue("ShowWebPart", true);
9110		if (showWebPart !="")
9111		{
9112			strDocUrl=strDocUrl+"&ShowWebPart="+showWebPart;
9113		}
9114		viewId=GetUrlKeyValue("View", true);
9115		if ((viewId.toUpperCase()==viewguid.toUpperCase()) || (viewId.toUpperCase()==encViewId.toUpperCase()))
9116		{
9117			rootFolder=GetUrlKeyValue("RootFolder", true);
9118			if (rootFolder !="")
9119			{
9120				strDocUrl=strDocUrl+"&RootFolder="+rootFolder;
9121			}
9122		}
9123		SubmitFormPost(strDocUrl);
9124	}
9125	else
9126	{
9127		if (!fListErrorShown)
9128			{
9129			alert(L_EditInGrid_Text);
9130			fListErrorShown=true;
9131			}
9132	}
9133}
9134function ExitGrid(using)
9135{
9136	var strDocUrl;
9137	var pageView;
9138	var viewId;
9139	var rootFolder;
9140	strDocUrl=using;
9141	pageView=GetUrlKeyValue("PageView", true);
9142	viewId=GetUrlKeyValue("View", true);
9143	if (viewId !="")
9144	{
9145		strDocUrl=strDocUrl+"?View="+viewId;
9146		rootFolder=GetUrlKeyValue("RootFolder", true);
9147		if (rootFolder !="")
9148		{
9149			strDocUrl=strDocUrl+"&RootFolder="+rootFolder;
9150		}
9151		if (pageView !="")
9152		{
9153			strDocUrl=strDocUrl+"&PageView="+pageView;
9154		}
9155		showWebPart=GetUrlKeyValue("ShowWebPart", true);
9156		if (showWebPart !="")
9157		{
9158			strDocUrl=strDocUrl+"&ShowWebPart="+showWebPart;
9159		}
9160		strDocUrl=strDocUrl+"&ShowInGrid=HTML";
9161	}
9162	else
9163	{
9164		strDocUrl=strDocUrl+"?ShowInGrid=HTML";
9165		if (pageView !="")
9166		{
9167			strDocUrl=strDocUrl+"&PageView="+pageView;
9168		}
9169		showWebPart=GetUrlKeyValue("ShowWebPart", true);
9170		if (showWebPart !="")
9171		{
9172			strDocUrl=strDocUrl+"&ShowWebPart="+showWebPart;
9173		}
9174	}
9175	SubmitFormPost(strDocUrl);
9176}
9177

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.