	
	dojo.require("dojo.lang.*");
	dojo.require("dojo.widget.*");
	dojo.require("dojo.widget.Tree");
	dojo.require("dojo.widget.TreeNode");
	dojo.require("dojo.widget.TreeSelector");
	dojo.require("dojo.widget.TreeLoadingController");
	dojo.require("dojo.widget.AccordionContainer");
	dojo.require("dojo.widget.ContentPane");
	dojo.require("dojo.event.*");
	dojo.hostenv.writeIncludes();
// display folder image for folders// Process every DOMNode at creation-time for tree, add checkbox to it
	function addCheckBox(message) {
		// add checkBox before titleNode
		var node = message.source;

		var checkBox = document.createElement('input');
		checkBox.setAttribute('name', node.objectId);
		checkBox.setAttribute('type', 'checkbox');

		dojo.html.setClass(checkBox, 'treeCheckBox');

		dojo.dom.insertBefore(checkBox, node.titleNode);
	}

function khaz(formField){
var o=dojo.widget.byId('firstTree').selector.selectedNode;
var isFolder=o.isFolder;
var objectId=o.objectId;
var title=o.title;
if (isFolder){}
else{
	var p=top.opener;
	//alert('formfield is: ' +formField);
//alert('Debug information: \n Alfresco record id: '+objectId+ '\n'	+'\n parent window might be:'+	p + '\n Form object:'+ p.document.editform+ '\n title:'+ title);

  if (p && !p.closed){	  // set value	  
	 var f=p.document.editform;
	 var sel=formField+'_list';
	 var tts=f[sel];
	 //alert('form field:'+f[formField].value);
	 // add child
		 
	  /*
	  pouplate with multiple values - if checkboxes are implemented
	  for (var x in clist) {
                                                         var opt=document.createElement('option');
                                                         element.appendChild(opt);
                                                         opt.text = clist[x];
                                                         opt.value=x;

                                                         }
   */
var opt=p.document.createElement('option');
tts.appendChild(opt);
opt.text = title;
														//  opt.text = objectId;
opt.value=objectId;
														  //tts.selectedIndex=objectId;
														//  opt.selected=true;
	
	
// detect object
var h=f[formField];
if (h){ // scenario 2: existing record
// we open object and append values to it
temp_val=h.value;
temp_val+="," +objectId;
//alert('type:'+h.type+'\n name:'+h.name);
//alert(temp_val);
h.value=temp_val;
//alert('new value: '+h.value);
}
else{// scenario 1: new record 
	// we create new element and assign value to it
	var el = p.document.createElement("input");									
		el.type = "hidden";
		el.name = formField;
		el.value = objectId;
		f.appendChild(el);
}

top.window.close();	
													



														
														
										


//<a onclick="return insertElement('','61ca5db6a2', 'file', 'breadcrumb_bg.gif', unescape('%2Fopt%2Flampp%2Fhtdocs%2Ffileadmin%2Fassets%2Fimgs%2Fbreadcrumb_bg.gif'), 'gif', 'gif.gif','',1);" href="#">
//<a title="" onclick="setFormValueFromBrowseWin('data[tt_news][4][category]',2,'Videomakers'); return false;" href="#">Videomakers</a>
//<a onclick="return insertElement('pages', '127', 'db', 'Khaz', '', '', 'gfx/i/pages.gif','',1);" href="#">Khaz</a>
//<select style="width: 250px;" name="data[tt_news][4][page]_list" multiple="multiple" class="formField1" size="1">


 /// merge with the form 
/*setFormValueFromBrowseWin setFormValueManipulate('data[tx_tyfrescomedia_video_assets][5][alfresco_uuid]','Down'
var mytemp=setFormValueFromBrowseWin(formField,objectId,title);
if (mytemp)
{
	alert('yes'+mytemp);
}
else{
alert('no'+mytemp);
}*/

  }


}

}
	// need to subscribe BEFORE dojo.addOnLoad
	// BEFORE widgets are made.
	//dojo.event.topic.subscribe("firstTree/createDOMNode", addCheckBox);

dojo.addOnLoad(function() {

		// Hook before dojo.event.publish to print all events
		var reporter = {
			beforePublish: function(topic, message) {
				//dojo.debug("Going to publish:"+topic);		
				//print();
						},
			beforeSubscribe: function(topic, message) {
				dojo.debug("Going to subscribe:"+topic);
			}
		}

		dojo.event.kwConnect({
			type: "before",
			srcObj: dojo.event.topic,
			srcFunc: "publish",
			targetObj: reporter,
			targetFunc: "beforePublish"
		});


dojo.event.topic.subscribe("TreeSelector_0/select", function() { khaz(formField); });
		

	});


	function setFormValueFromBrowseWin(fName,value,label)	{	//
				
				//var formObj = setFormValue_getFObj(fName);
				 var formObj = p.document.editform;
				 //var fKh=p.document.editform;
				 //var formObj=fKh[fName];

				if (formObj && value!="--div--")	{
					fObj = formObj[fName+"_list"];
						// Inserting element
					var l=fObj.length;
					var setOK=1;
					if (!formObj[fName+"_mul"] || formObj[fName+"_mul"].value==0)	{
						for (a=0;a<l;a++)	{
							if (fObj.options[a].value==value)	{
								setOK=0;
							}
						}
					}
					if (setOK)	{
						fObj.length++;
						fObj.options[l].value=value;
						fObj.options[l].text=unescape(label);

							// Traversing list and set the hidden-field
						setHiddenFromList(fObj,formObj[fName]);
						'.$this->TBE_EDITOR_fieldChanged_func.'  //'TBE_EDITOR_fieldChanged_fName(fName,formObj[fName+"_list"]);';
					}
				}
			}
	function setHiddenFromList(fObjSel,fObjHid)	{	//
				l=fObjSel.length;
				fObjHid.value="";
				for (a=0;a<l;a++)	{
					fObjHid.value+=fObjSel.options[a].value+",";
				}
			}
			function setFormValueManipulate(fName,type)	{	//
				var formObj = setFormValue_getFObj(fName)
				if (formObj)	{
					var localArray_V = new Array();
					var localArray_L = new Array();
					var localArray_S = new Array();
					var fObjSel = formObj[fName+"_list"];
					var l=fObjSel.length;
					var c=0;
					if (type=="Remove" || type=="Top" || type=="Bottom")	{
						if (type=="Top")	{
							for (a=0;a<l;a++)	{
								if (fObjSel.options[a].selected==1)	{
									localArray_V[c]=fObjSel.options[a].value;
									localArray_L[c]=fObjSel.options[a].text;
									localArray_S[c]=1;
									c++;
								}
							}
						}
						for (a=0;a<l;a++)	{
							if (fObjSel.options[a].selected!=1)	{
								localArray_V[c]=fObjSel.options[a].value;
								localArray_L[c]=fObjSel.options[a].text;
								localArray_S[c]=0;
								c++;
							}
						}
						if (type=="Bottom")	{
							for (a=0;a<l;a++)	{
								if (fObjSel.options[a].selected==1)	{
									localArray_V[c]=fObjSel.options[a].value;
									localArray_L[c]=fObjSel.options[a].text;
									localArray_S[c]=1;
									c++;
								}
							}
						}
					}
					if (type=="Down")	{
						var tC = 0;
						var tA = new Array();

						for (a=0;a<l;a++)	{
							if (fObjSel.options[a].selected!=1)	{
									// Add non-selected element:
								localArray_V[c]=fObjSel.options[a].value;
								localArray_L[c]=fObjSel.options[a].text;
								localArray_S[c]=0;
								c++;

									// Transfer any accumulated and reset:
								if (tA.length > 0)	{
									for (aa=0;aa<tA.length;aa++)	{
										localArray_V[c]=fObjSel.options[tA[aa]].value;
										localArray_L[c]=fObjSel.options[tA[aa]].text;
										localArray_S[c]=1;
										c++;
									}

									var tC = 0;
									var tA = new Array();
								}
							} else {
								tA[tC] = a;
								tC++;
							}
						}
							// Transfer any remaining:
						if (tA.length > 0)	{
							for (aa=0;aa<tA.length;aa++)	{
								localArray_V[c]=fObjSel.options[tA[aa]].value;
								localArray_L[c]=fObjSel.options[tA[aa]].text;
								localArray_S[c]=1;
								c++;
							}
						}
					}
					if (type=="Up")	{
						var tC = 0;
						var tA = new Array();
						var c = l-1;

						for (a=l-1;a>=0;a--)	{
							if (fObjSel.options[a].selected!=1)	{

									// Add non-selected element:
								localArray_V[c]=fObjSel.options[a].value;
								localArray_L[c]=fObjSel.options[a].text;
								localArray_S[c]=0;
								c--;

									// Transfer any accumulated and reset:
								if (tA.length > 0)	{
									for (aa=0;aa<tA.length;aa++)	{
										localArray_V[c]=fObjSel.options[tA[aa]].value;
										localArray_L[c]=fObjSel.options[tA[aa]].text;
										localArray_S[c]=1;
										c--;
									}

									var tC = 0;
									var tA = new Array();
								}
							} else {
								tA[tC] = a;
								tC++;
							}
						}
							// Transfer any remaining:
						if (tA.length > 0)	{
							for (aa=0;aa<tA.length;aa++)	{
								localArray_V[c]=fObjSel.options[tA[aa]].value;
								localArray_L[c]=fObjSel.options[tA[aa]].text;
								localArray_S[c]=1;
								c--;
							}
						}
						c=l;	// Restore length value in "c"
					}

						// Transfer items in temporary storage to list object:
					fObjSel.length = c;
					for (a=0;a<c;a++)	{
						fObjSel.options[a].value = localArray_V[a];
						fObjSel.options[a].text = localArray_L[a];
						fObjSel.options[a].selected = localArray_S[a];
					}
					setHiddenFromList(fObjSel,formObj[fName]);

					'.$this->TBE_EDITOR_fieldChanged_func.'
				}
			}

			function setFormValue_getFObj(fName)	{	//
				var formObj = '.$formObj.';
				if (formObj)	{
					if (formObj[fName] && formObj[fName+"_list"] && formObj[fName+"_list"].type=="select-multiple")	{
						return formObj;
					} else {
						alert("Formfields missing:\n fName: "+formObj[fName]+"\n fName_list:"+formObj[fName+"_list"]+"\n type:"+formObj[fName+"_list"].type+"\n fName:"+fName);
					}
				}
				return "";
			}
	/*
	function kill() {
		dojo.debug("RUN DESTROY...");
		dojo.widget.byId('tree').destroy();
		dojo.debug("...DONE DESTROY");
	}

	function print() {
		dojo.debug('---');
		//dojo.debug("Dumping all widgets:");
		dojo.debug(dojo.widget.byId('firstTree').selector.selectedNode);
		//dojo.lang.forEach(dojo.widget.manager.getAllWidgets(),
			//function(t) { dojo.debug(t.widgetType) }
		//);
		dojo.debug('---');
	}

	function test() {
		print();
		kill();
		dojo.debug("Must be no widgets now");
		print();
	}
*/