//version 2.1.1
var arrInstances = new Array();

var Ichr = Class.create(
{
	//public property holding references to created dockers
	dockerList: null,
	
	m_objDispatcher: null,
	
	m_objCharacter: null,
	m_arrLoadListners: null,
	m_strInstanceName: null,
	m_objWinWrapper: null,
	m_objWin: null,
	
	
	initialize: function(p_strInstanceName, p_strPath, p_iWidth, p_iHeight){
		
		this.m_strInstanceName = p_strInstanceName;
		
		p_strPath += p_strPath.indexOf("?") > -1?"&amp;":"?";
		p_strPath += "instanceName=arrInstances['"+p_strInstanceName+"']";
		
		strPath = p_strPath.substr(0, p_strPath.indexOf("?"));
		
		strParams = p_strPath.substr(p_strPath.indexOf("?")+1);
		
				
		if (AC_FL_RunContent == 0) {
			alert("This page requires AC_RunActiveContent.js.");
		} else {
			var hasRightVersion = DetectFlashVer(9, 0, 115);
			if(hasRightVersion){
				document.write("<div id=\""+p_strInstanceName+"_win_wrapper\" style=\"position: relative; width: "+p_iWidth+"px; height: "+p_iHeight+"px;\">");
				document.write("<div id=\""+p_strInstanceName+"_win\" style=\"position: absolute; left: 0; top: 0; width: "+p_iWidth+"px; height: "+p_iHeight+"px;\">");
				AC_FL_RunContent(
					'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,115,0',
					'width', '100%',
					'height', '100%',
					'src', strPath,
					'quality', 'high',
					'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
					'align', 'middle',
					'play', 'true',
					'loop', 'true',
					'scale', 'noscale',
					'wmode', 'transparent',
					'devicefont', 'false',
					'id', p_strInstanceName,
					'bgcolor', '#ffffff',
					'name', p_strInstanceName,
					'menu', 'true',
					'allowFullScreen', 'false',
					'allowScriptAccess','always',
					'movie', strPath,
					'salign', 'tl',
					'flashVars', strParams
					); //end AC code
					document.write("</div></div>");
			}
			else{
				var alternateContent = '<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;" >Please <a href="http://www.macromedia.com/go/getflash/" target="_blank">update</a> your Adobe Flash Player to see our <strong><nobr>Virtual Assistant</nobr></strong></span>.';
					
				document.write(alternateContent);
			}
		}
		
				
		if (navigator.appName.indexOf("Microsoft") != -1) {
			this.m_objCharacter =  document.getElementById(p_strInstanceName);
			//this.m_objCharacter =  window[p_strInstanceName];
		} else {
			this.m_objCharacter = document[p_strInstanceName];
		}
		arrInstances[p_strInstanceName] = this;
		this.m_arrLoadListners = new Array();
		
		this.m_objDispatcher = new ICHR_ExEventDispatcher(this.m_objCharacter);
		
		this.dockerList = new Array();
	},
	
	getInstance: function(){
		return this.m_objCharacter;
	},
	
	getWindowWrapper: function(){
		return this.m_objWinWrapper;
	},
	
	getWindow: function(){
		return this.m_objWin;
	},
	
	addLoadListener: function(p_funListener){
		this.m_arrLoadListners.push(p_funListener);
	},
	
	createDocker: function(p_strType, p_objProperties){
		var objClass = ICHR_ExternalDocker;
		
		switch(p_strType){
			case "ExternalOutputWindow":
				objClass = ICHR_ExternalOutputWindow;
				break;
			case "ExternalInputWindow":
				objClass = null;
				break;
				
		}
		
		if(objClass){
			try{
				var objDocker = new objClass(p_objProperties, this.m_objWinWrapper);				
				this.dockerList[p_objProperties.id] = objDocker;			
				return "dockerList['"+p_objProperties.id+"'].";
			}
			catch(error){
				alert('Docker Class error\nFile: '+error.fileName+'\nLine: '+error.lineNumber+'\nType: '+error.name+'\nMessage: '+error.message);
			}
		}
		
		return null;
	},
	
	defineUserAction: function(p_strActionType, p_strElementId){
		this.m_objDispatcher.defineUserAction(p_strActionType, p_strElementId);
	},
	
		
	_loadComplete: function(p_strMsg){
		this.m_objWin = $(this.m_strInstanceName+"_win");
		this.m_objWinWrapper = $(this.m_strInstanceName+"_win_wrapper");
		
			
		for (var ind = 0; ind < this.m_arrLoadListners.length; ind++){
			try{
				this.m_arrLoadListners[ind](this.m_objCharacter);
			}
			catch(error){
				alert('Load listener error \nListener check: '+this.m_arrLoadListners[ind]+'\nFile: '+error.fileName+'\nLine: '+error.lineNumber+'\nType: '+error.name+'\nMessage: '+error.message);
			}
		}
	}
	
}
);

//--------------------------------------------------------------------------------------------------------------------------------
function setProperties(p_objTarget, p_objSource){
	var strProperty;
	for (strProperty in p_objSource){
		//alert(strProperty+": "+p_objSource[strProperty]);
		var strSetterName = "set"+strProperty.substr(0,1).toUpperCase()+strProperty.substr(1);
		if (p_objTarget[strSetterName]){
			p_objTarget[strSetterName](p_objSource[strProperty]);
		}
	}
}

//--------------------------------------------------------------------------------------------------------------------------------
var ICHR_ExternalDocker = Class.create(
{
	m_objDocker: null,
	initialize: function(p_objProperties, p_objWinWrapper){
		this.m_objDocker = $(p_objProperties.id);
		if(!this.m_objDocker){
			this.m_objDocker = new Element("DIV");
			
			p_objWinWrapper.insert(this.m_objDocker);
			setProperties(this, p_objProperties);
		}
	},
	
	
	
	getId: function(){
		return this.m_objDocker.id;
	},
	
	getX: function(){
		return this.m_objDocker.positionedOffset()[0];
	},
	
	getY: function(){
		return this.m_objDocker.positionedOffset()[1];
	},
	
	getWidth: function(){
		return this.m_objDocker.getWidth();
	},
	
	getHeight: function(){
		return this.m_objDocker.getHeight();
	},
	
	getVisible: function(){
	   if(this.m_objDocker.style.display == "none" || this.m_objDocker.style.visibility == "hidden") {
			return true;
	   } 
	   else {
			return false;
	   }
	},
	
	getAlpha: function(){
		this.m_objDocker.getStyle("opacity");
	},
	
	setId: function(p_strId){
		this.m_objDocker.id = p_strId;
	},
	
	setX: function(p_iX){
		if(!isNaN(p_iX)){
			this.m_objDocker.style.position = "absolute";
			this.m_objDocker.style.left = p_iX+"px";
		}
	},
	
	setY: function(p_iY){
		if(!isNaN(p_iY)){
			this.m_objDocker.style.position = "absolute";
			this.m_objDocker.style.top = p_iY+"px";
		}
	},
	
	setWidth: function(p_iWidth){
		if(!isNaN(p_iWidth)){
			this.m_objDocker.style.width = p_iWidth+"px";
		}
	},
	
	setHeight: function(p_iHeight){
		if(!isNaN(p_iHeight)){
			this.m_objDocker.style.height = p_iHeight+"px";
		}
	},
	
	setVisible: function(p_bVisible){
	   if(p_bVisible && p_bVisible != "false") {
			this.m_objDocker.style.display = "";
			if(this.m_objDocker.style.visibility == "hidden"){
				this.m_objDocker.style.visibility = "show";
			}
	   } else {
			this.m_objDocker.style.display = "none";
	   }
	},
	
	setAlpha: function(p_numAlpha){
		this.m_objDocker.setStyle({opacity:p_numAlpha});
	},
	
	setBackgroundSkin: function(p_backgroundSkin){
		this.m_objDocker.style.backgroundImage = "url("+p_backgroundSkin+")";
		this.m_objDocker.style.backgroundPosition = "top left";
	},
	
	getBackgroundSkin: function(){
		return this.m_objDocker.style.backgroundImage;
	}
}
);

//--------------------------------------------------------------------------------------------------------------------------------
var ICHR_ExternalOutputWindow = Class.create(ICHR_ExternalDocker,
{
	formList: null,
	m_objStyleSheet: null,
	
	initialize: function($super, p_objProperties, p_objWinWrapper){
		var objDocker = $(p_objProperties.id);		
		$super(p_objProperties, p_objWinWrapper);
		if(!objDocker){
			if((p_objProperties.x || p_objProperties.y) && p_objProperties.scrollbarVisible != false){
				this.m_objDocker.style.overflowY = "hidden";
			}
			
			//alert(p_objProperties.scrollbarVisible);
			/*if(p_objProperties.scrollbarVisible == false){
				this.m_objDocker.style.overflowY = "hidden";
			} else {
				this.m_objDocker.style.overflowY = "scroll";
			}*/
			setProperties(this, p_objProperties);
		}
		this.formList = new Array();
	},
	
	addHtml: function(p_strHtml){
		if(this.m_objDocker){	
			//alert(this.m_objDocker);
			this.m_objDocker.insert("<span class='standard'>"+p_strHtml+"</span>");
		}
	},
	
	addLink: function(p_strText, p_strLinkId){
		if(this.m_objDocker && !$(p_strLinkId)){
			this.m_objDocker.insert("<a id='"+p_strLinkId+"' href='#'>"+p_strText+"</a>");
		}
	},
	
	addImage: function(p_strImageId, p_strURL, p_iWidth, p_iHeight){
		if(this.m_objDocker && !$(p_strImageId)){
			if(p_strURL.indexOf(".swf") != -1){
				var strParams = p_strURL.indexOf("?") > 0?p_strURL.split("?")[1]:"";
				p_strURL = p_strURL.split("?")[0];
				var strFlash = AC_FL_RunContent_Str(
					'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,115,0',
					'width', p_iWidth?p_iWidth:"100%",
					'height', p_iHeight?p_iHeight:"100%",
					'src', p_strURL,
					'quality', 'high',
					'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
					'align', 'middle',
					'play', 'true',
					'loop', 'true',
					'scale', 'noscale',
					'wmode', 'transparent',
					'devicefont', 'false',
					'id', p_strImageId,
					'bgcolor', '#ffffff',
					'name', p_strImageId,
					'menu', 'true',
					'allowFullScreen', 'true',
					'allowScriptAccess','always',
					'movie', p_strURL,
					'FlashVars', strParams,
					'salign', 'tl'
					); //end AC code	
				this.m_objDocker.insert(strFlash);
			}
			else{
				this.m_objDocker.insert("<img id='"+p_strImageId+"' src='"+p_strURL+"' />");
			}
		}
	},
	
	addForm: function(p_strFormId){
		if(this.m_objDocker){
			var objForm = new ICHR_ExternalForm(this.m_objDocker, p_strFormId);
			this.formList[p_strFormId] = objForm;
			return "formList['"+p_strFormId+"'].";
		}
	},
	
	clear: function(){
		//alert("clear");
		this.m_objDocker.innerHTML = "";
		this.formList = new Array();
	},
	
	setScrollbarVisible: function(p_bScrollVisible){
		this.m_objDocker.style.overflowY = p_bScrollVisible && p_bScrollVisible != "false"?"scroll":"hidden";
	},
	
	getScrollbarVisible: function(){
		return this.m_objDocker.style.overflowY == "scroll"?true:false;
	},
	
	getStyleSheet: function(){
		if(this.m_objStyleSheet){
			return this.m_objStyleSheet.innerHTML;
		}
		return null;
	},
	
	setStyleSheet: function(p_strStyle){
		if(this.getId()){	
						
			p_strStyle = p_strStyle.replace(/\n/g, " ");//removing enters
			p_strStyle = p_strStyle.replace(/\t/g, "");//removing tabs
			p_strStyle = p_strStyle.replace(/\}/g, "}\n#"+this.getId()+" ");//adding dockerId prefixes
			p_strStyle = "#"+this.getId()+" "+p_strStyle;//adding dockerId prefix to first class
			p_strStyle = p_strStyle.substr(0, p_strStyle.lastIndexOf("#"+this.getId()));
			var objStyleSheet = this.m_objStyleSheet;
			if(!objStyleSheet){
				
				objStyleSheet = new Element("style");
				objStyleSheet.type = "text/css";
				objStyleSheet.media = "screen";
				var objHead = $(document.getElementsByTagName("head")[0]);				
				objHead.insert(objStyleSheet);
				this.m_objStyleSheet = objStyleSheet;
			}
			if (navigator.appName.indexOf("Microsoft") > -1){  
	            objStyleSheet.styleSheet.cssText = p_strStyle;
	        }
	        else{  
	            objStyleSheet.appendChild(document.createTextNode(p_strStyle));
	        }
			//alert(p_strStyle);
		}
	}
	
}
);

//--------------------------------------------------------------------------------------------------------------------------------
var ICHR_ExternalForm = Class.create(
{
	m_objForm: null,
	initialize: function(p_objDocker, p_strFormId){
		if(!$(p_strFormId)){
			p_objDocker.insert("<form id='"+p_strFormId+"' ></form>");
		}
		this.m_objForm = $(p_strFormId);
		//alert(this.m_objForm.parentNode);
	},
	
	addHtml: function(p_strHtml){
		if(this.m_objForm){	
			this.m_objForm.insert(p_strHtml);
		}
	},
	
	addCheckBox: function(p_strCheckboxId, p_strLabel, p_strValue){
		if(this.m_objForm && !this.m_objForm[p_strCheckboxId]){
			this.m_objForm.insert("<label><input type='checkbox' checked='"+p_strValue+"' name='"+p_strCheckboxId+"' />"+p_strLabel+"</label>");
		}
		else if(p_strValue){
			var objField = this.m_objForm[p_strCheckboxId];
			objField.checked = p_strValue == "true"?true:false;
		}
	},

	addComboBox: function(p_strComboboxId, p_arrOptions, p_iSelected) {
		var iTer;
		var objOption;
		var cbHtml = "";
		if(this.m_objForm && !this.m_objForm[p_strComboboxId]){
			cbHtml += "<select name='"+p_strComboboxId+"' >";
			for(iTer = 0; iTer < p_arrOptions.length; iTer++) {
				objOption = p_arrOptions[iTer];
				cbHtml += "<option value='" + objOption.value + "'" + (iTer == p_iSelected ? "selected" : "") + ">" + objOption.label + "</option>";
			}
			cbHtml += "</select>";
			this.m_objForm.insert(cbHtml);
		}
		else{
			if(!isNaN(p_iSelected)){
				var objField = this.m_objForm[p_strComboboxId];			
				objField.selectedIndex = !isNaN(p_iSelected)?p_iSelected:0;
			}
			if(p_arrOptions){
			}
		}
	},
	
	addRadioGroup: function(p_strRadioId, p_arrOptions, p_iSelected) {
		
		var objOption;
		var cbHtml = "";
		if(this.m_objForm && !this.m_objForm[p_strRadioId]){
			for(iTer = 0; iTer < p_arrOptions.length; iTer++) {
				objOption = p_arrOptions[iTer];
				cbHtml += "<label><input type='radio' name='"+p_strRadioId+"' value='" + objOption.value + "'" + (iTer == p_iSelected ? "checked" : "") + " />" + objOption.label + "</label>";
			}
			this.m_objForm.insert(cbHtml);
		}
		else if(!isNaN(p_iSelected)){
			var arrRadios = this.m_objForm[p_strRadioId];	
			for(i = 0; i < arrRadios.length; i++){
				arrRadios[i].checked = i == p_iSelected?true:false;
			}
		}
	},
	
	addTextField: function(p_strTextfieldId, p_strText, p_bMultiline, p_iMaxlength, p_strRestrict){
		if(this.m_objForm && !this.m_objForm[p_strTextfieldId]){
			if(p_bMultiline){
				this.m_objForm.insert("<textarea name='"+p_strTextfieldId+"' >" + p_strText + "</textarea>");
			}
			else{
				var strParams = p_iMaxlength?' maxlength="'+p_iMaxlength+'" ':"";
				this.m_objForm.insert('<input type="text" name="'+p_strTextfieldId+'" value="'+p_strText+'" '+strParams+'/>');
			}
			
		}
		else if(p_strText != null){
			var objField = this.m_objForm[p_strTextfieldId];			
			objField.value = p_strText;
		}
	},
	
	clear: function(){
		if(this.m_objForm){
			this.m_objForm.innerHTML = '';
		}
	}
}
);

//---------------------------------------------------------------------------------------------------------------------------------

var ICHR_ExEventDispatcher = Class.create(
{
	m_objInstance: null,
	m_strLastFocused: null,
	m_funBind_onUserClick: null,
	m_funBind_onUserMouseOver: null,
	m_funBind_onUserMouseOut: null,
	m_funBind_onUserValueChange: null,
	m_funBind_onUserFocusIn: null,
	m_funBind_onUserFocusOut: null,
	m_funBind_onSuggestedAnswer: null,
	
	
	initialize: function(p_objInstance){
		this.m_objInstance = p_objInstance;
		
		this.m_funBind_onUserClick = this._onUserClick.bindAsEventListener(this);
		this.m_funBind_onUserMouseOver = this._onUserMouseOver.bindAsEventListener(this);
		this.m_funBind_onUserMouseOut = this._onUserMouseOut.bindAsEventListener(this);
		this.m_funBind_onUserValueChange = this._onUserValueChange.bindAsEventListener(this);
		this.m_funBind_onUserFocusIn = this._onUserFocusIn.bindAsEventListener(this);
		this.m_funBind_onUserFocusOut = this._onUserFocusOut.bindAsEventListener(this);
		this.m_funBind_onSuggestedAnswer = this._onUserSuggestedAnswer.bindAsEventListener(this);
	},
	
	_onUserClick: function(event){
		this.dispatchEvent("mouseClick", Event.element(event));
	},
	
	_onUserMouseOver: function(event){
		this.dispatchEvent("mouseOver", Event.element(event));
	},
	
	_onUserMouseOut: function(event){
		this.dispatchEvent("mouseOut", Event.element(event));		
	},
	
	_onUserValueChange: function(event){
		
		this.dispatchEvent("valueChange", Event.element(event));		
	},
	
	_onUserFocusIn: function(event){
		this.dispatchEvent("focusIn", Event.element(event));		
	},
	
	_onUserFocusOut: function(event){
		this.dispatchEvent("focusOut", Event.element(event));		
	},
	
	_onUserSuggestedAnswer: function(event){
		this.dispatchEvent("suggestedAnswer", Event.element(event));		
	},
	
	dispatchEvent: function(p_strEventType, p_objElement){
		var strId = p_objElement.id;
		var strValue = p_objElement.innerHTML;
		var strFormFields = "INPUT, SELECT, TEXTAREA";
		if(strFormFields.indexOf(p_objElement.tagName.toUpperCase()) > -1){//element is a form field
			
			if(p_objElement.tagName.toUpperCase() == 'INPUT' && p_objElement.type.toUpperCase() == 'CHECKBOX'){
				
				strValue = p_objElement.checked?'true':'false';			}
			else{
				strValue = p_objElement.value;
			}
			var objForm = p_objElement.form;
			if(objForm){
				strId = objForm.id+":"+p_objElement.name;
			}
		}
		
		var objEvent = {type:p_strEventType, result:"eventSuccess", sourceId:strId, sourceValue:strValue};		
		this.m_objInstance.dispatchEvent(objEvent);
		
	},
	
	defineUserAction: function(p_strActionType, p_strElementId){
		var objElement = $(p_strElementId);
		
		if(p_strElementId.indexOf(":") > -1){
			var arrIds = p_strElementId.split(":");
			var objForm = $(arrIds[0]);
			if(objForm){
				objElement = objForm[arrIds[1]];
			}
		}
		
		if(objElement){
			var arrElements;
			if(objElement.length && objElement.tagName == undefined){
				arrElements = objElement;
			}
			else{
				arrElements = new Array();
				arrElements.push(objElement);
				
			}
			var iTer;
			for (iTer = 0; iTer < arrElements.length; iTer++){
				objElement = $(arrElements[iTer]);
				switch(p_strActionType){
					case "mouseClick":
						objElement.stopObserving('click', this.m_funBind_onUserClick);
						objElement.stopObserving('ichr:mouseClick', this.m_funBind_onUserClick);
						objElement.observe("click", this.m_funBind_onUserClick);
						objElement.observe("ichr:mouseClick", this.m_funBind_onUserClick);
						break;
					case "suggestedAnswer":
						if(objElement.tagName.toUpperCase() == 'A'){
							objElement.stopObserving('click', this.m_funBind_onSuggestedAnswer);
							objElement.stopObserving('ichr:suggestedAnswer', this.m_funBind_onSuggestedAnswer);
							objElement.observe("click", this.m_funBind_onSuggestedAnswer);
							objElement.observe("ichr:suggestedAnswer", this.m_funBind_onSuggestedAnswer);
						}
						break;
					case "mouseOver" :
						objElement.stopObserving('mouseover', this.m_funBind_onUserMouseOver);
						objElement.stopObserving('ichr:mouseOver', this.m_funBind_onUserMouseOver);
						objElement.observe("mouseover", this.m_funBind_onUserMouseOver);
						objElement.observe("ichr:mouseOver", this.m_funBind_onUserMouseOver);
						break;
					case "mouseOut" :
						objElement.stopObserving('mouseout', this.m_funBind_onUserMouseOut);
						objElement.stopObserving('ichr:mouseOut', this.m_funBind_onUserMouseOut);
						objElement.observe("mouseout", this.m_funBind_onUserMouseOut);
						objElement.observe("ichr:mouseOut", this.m_funBind_onUserMouseOut);
						break;
					case "valueChange" :
						if(objElement.tagName.toUpperCase() == 'INPUT' && objElement.type.toUpperCase() == 'TEXT' || objElement.tagName.toUpperCase() == 'TEXTAREA' ||  objElement.tagName.toUpperCase() == 'SELECT'){
							objElement.stopObserving('change', this.m_funBind_onUserValueChange );
							objElement.observe("change", this.m_funBind_onUserValueChange );
							
						} 
						else{
							objElement.stopObserving('click', this.m_funBind_onUserValueChange );
							objElement.observe("click", this.m_funBind_onUserValueChange );
						}
						objElement.stopObserving('ichr:valueChange', this.m_funBind_onUserValueChange );
						objElement.observe("ichr:valueChange", this.m_funBind_onUserValueChange );
						break;
					case "focusIn" :
						objElement.stopObserving('focus', this.m_funBind_onUserFocusIn );
						objElement.stopObserving('ichr:focusIn', this.m_funBind_onUserFocusIn);
						objElement.observe("focus", this.m_funBind_onUserFocusIn);
						objElement.observe("ichr:focusIn", this.m_funBind_onUserFocusIn);
						break;
					case "focusOut" :
						objElement.stopObserving('blur', this.m_funBind_onUserFocusOut);
						objElement.stopObserving('ichr:focusOut', this.m_funBind_onUserFocusOut);
						objElement.observe("blur", this.m_funBind_onUserFocusOut);
						objElement.observe("ichr:focusOut", this.m_funBind_onUserFocusOut);
						break;
				}
			}
			
		}
	}
	
}
);



//----------------------------------------------------------------------------------------------------------------
function runUserAction(p_strActionType, p_strElementId){
	var objElement = $(p_strElementId);
	if(p_strElementId.indexOf(":") > -1){
		var arrIds = p_strElementId.split(":");
		var objForm = $(arrIds[0]);
		if(objForm){
			objElement = objForm[arrIds[1]];
		}
	}
	if(objElement){
		objElement.fire("ichr:"+p_strActionType);
	}
}
	
//----------------------------------------------------------------------------------------------------------------
function AC_Generateobj_Str(objAttrs, params, embedAttrs) 
{ 
  var str = '';
  if (isIE && isWin && !isOpera)
  {
    str += '<object ';
    for (var i in objAttrs)
    {
      str += i + '="' + objAttrs[i] + '" ';
    }
    str += '>';
    for (var i in params)
    {
      str += '<param name="' + i + '" value="' + params[i] + '" /> ';
    }
    str += '</object>';
  }
  else
  {
    str += '<embed ';
    for (var i in embedAttrs)
    {
      str += i + '="' + embedAttrs[i] + '" ';
    }
    str += '> </embed>';
  }

  return str;
}

function AC_FL_RunContent_Str(){
  var ret = 
    AC_GetArgs
    (  arguments, "", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  return AC_Generateobj_Str(ret.objAttrs, ret.params, ret.embedAttrs);
}
	
	
	
	
