;(function(){
    "use strict";
    if(window.EmbedFileView)return;//already loaded
    var EmbedFileView={};
//*****************************************************************
//*** component for show file into <embed> element for SEDKP (v3b)
//*****************************************************************
//переменные, зависящие от браузера
EmbedFileView.viewByPage=true;//так лучше
EmbedFileView.isSafari=false;
EmbedFileView.embedTag="embed";
EmbedFileView.touchZoom=false;
EmbedFileView.previewResizeTimer;
/*--------------*/
EmbedFileView.embed = function(url, fname, targetSelector, options)
//url - file url 
//fname - file name
//targetSelector - query selector <div> в котором будет отображаться файл
//options: в данной версии не используется
{
    //console.log("begin");
	//url=url.split("?")[0];//пока так
    if(fname && fname!="")
    {
		fname=fname.replace(new RegExp("[/?&=#]","g"),"_");
		fname="/"+encodeURI(fname);
    }
	else 
		fname="";
	var userAgent = window.navigator.userAgent;
	var pdf="1";
	var param_png="";
    if(userAgent)
    {
		if(userAgent.indexOf(" Android ") !== -1 || userAgent.indexOf("(Android ") !== -1)
		{
			EmbedFileView.embedTag="img";//на телефоне embed не масштабируется щипком
			param_png="&png=1";
			EmbedFileView.viewByPage=true;
			pdf="0";//pdf на странице не отображает
			EmbedFileView.touchZoom=true;
		}
		if(userAgent.indexOf(" Safari/") !== -1)EmbedFileView.isSafari=true;
    }
    if(EmbedFileView.isSafari)EmbedFileView.viewByPage=true;
    //param_png="&png=1";//отладка
    //var urlEmbed=url+"?mode=embed;//распознавание поддержки PDF возлагаем на сервер
    var urlEmbed=url+"?mode=embed&pdf="+pdf+param_png;//пока так версия на основном сервере-устаревшая
    var urlDownload=url+fname+"?mode=browser&pdf=0";//загрузить оригинальный файл
    //alert(targetSelector);
    var targetNode = document.querySelector(targetSelector);
    if(!targetNode)
    {
		console.log("EmbedFileView: "+targetSelector+" not found");
		return(false);
    }
	//console.log("EmbedFileView.targetNode.height="+targetNode.clientHeight);
    var sPanel=preparePanel(urlDownload);
	//чтобы расчитать свободное место в элементе - сначала добавим под targetNode панель
	targetNode.innerHTML = sPanel;
	var nodeDiv=targetNode.getElementsByTagName("div")[0];
	var height=targetNode.clientHeight-nodeDiv.offsetHeight;
    //console.log("urlEmbed="+urlEmbed);
	targetNode.urlEmbed=urlEmbed;
	var sEmbed=prepareEmbed(urlEmbed,height);
	targetNode.innerHTML = sPanel+sEmbed;
	var divs=targetNode.getElementsByTagName("div");
	var ePanel=targetNode.ePanel=divs[0];
	targetNode.eInput=ePanel.getElementsByTagName("input")[0];
	targetNode.ePages=ePanel.getElementsByTagName("span")[0];
	var eScroll=targetNode.eScroll=divs[1];
	var eEmbed=targetNode.eEmbed=eScroll.getElementsByTagName(EmbedFileView.embedTag)[0];
	//если ширина eEmbed превышает ширину eScroll, eEmbed надо уменьшить
	fitToScroll(targetNode.eEmbed,targetNode.eScroll);
	//асинхронно запрашиваем число страниц
	//требуется IProjectDoc.ConverterToPDF (v3a и выше)
	//if(EmbedFileView.viewByPage)requestPageCount(eEmbed);--пока пусть вызывается из onLoadEmbed
	eEmbed.addEventListener("load",function(e){onLoadEmbed(this,e);});
	//targetNode.addEventListener("resize",function(e){alert("***");});--не работает
	if(EmbedFileView.touchZoom)
		eScroll.addEventListener('touchstart',function(e){onTouchStart(e,targetNode);}); 
	//console.log("end");
	return(eEmbed);
};
/*--------------*/
function updateHeight(targetNode)
{
	//console.log("EmbedFileView.updateHeight().targetNode.clientHeight="+targetNode.clientHeight);
	var height=targetNode.clientHeight-targetNode.ePanel.offsetHeight;
	// высота еще нулевая - тогда ждем пока элемент будет отображен на экране
	if (height == 0) 
	{
		clearTimeout(EmbedFileView.previewResizeTimer);
		EmbedFileView.previewResizeTimer = setTimeout(function() { updateHeight(targetNode); }, 1000,targetNode);
	}
	var sHeight=height+"px";
	//обновляем масштаб содержимого
	fitToScroll(targetNode.eEmbed,targetNode.eScroll);
	
	if(targetNode.eScroll.style.height==sHeight)return;
	targetNode.eScroll.style.height=height+"px";
	//console.log("EmbedFileView.updateHeight().sHeight="+sHeight);
}
/*--------------*/
function requestPageCount(obj)
//запрашивает с сервера число страниц в файле и показывает его
{
	//alert("requestPageCount");
	if(obj.parentElement.pageCount)return;//для этого embed число страниц уже запрашивали
	obj.parentElement.pageCount="0";//при смене страницы obj приходится формировать заново, поэтому берём родителя
	var xhr = new XMLHttpRequest();
	//alert(obj.src);
	var url=obj.src.split("?")[0];//отрезаем старые параметры
	//alert(url);
	xhr.open('GET', url+"?mode=pageCount", true);
	xhr.EmbedFileView_embed=obj;
	xhr.onreadystatechange=function()
	{
		if(this.readyState!=4)return;
		//alert(this);
		var pages=(this.status == 200)?this.responseText:"???";
		//alert(pages);
		//alert(xhr.EmbedFileView_embed);
		if(xhr.EmbedFileView_embed && xhr.EmbedFileView_embed.parentElement && xhr.EmbedFileView_embed.parentElement.parentElement)
		{
			var targetNode=xhr.EmbedFileView_embed.parentElement.parentElement;
			//var ePanel=targetNode.getElementsByTagName("div")[0];
			//var eInput=ePanel.getElementsByTagName("input")[0];
			//var ePages=ePanel.getElementsByTagName("span")[0];
			var ePanel=targetNode.ePanel;
			var eInput=targetNode.eInput;
			var ePages=targetNode.ePages;
			if(!pages||pages.length>5)
				ePages.innerHTML="###";
			else
			{
				if(pages=="0")//это не PDF
					pages=1;//пока так
				ePages.innerHTML=pages;
				obj.pageCount=pages;
				eInput.max=pages;
			}
		}
		
	};
	xhr.send();
}
/*--------------*/
function onLoadEmbed(obj,e)
{
	//alert("onLoadEmbed");
	//alert(obj);
	//alert(obj.src);
	if(EmbedFileView.viewByPage)
	{//надо запросить с сервера число страниц в файле
	    requestPageCount(obj);
	}
	//Обновляем размееры предпросмотра при каждой загрузке. для стабильности на Firefox
	//if(obj.parentElement.clientHeight<=0)
	//{
		var targetNode=obj.parentElement.parentElement;
		updateHeight(targetNode);
		//оказалось, что targetNode.clientHeight к этому моменту неправильный
		 EmbedFileView.previewResizeTimer = setTimeout(function() { updateHeight(targetNode); }, 1000,targetNode);
		
		//console.log("EmbedFileView.onLoadEmbed().targetNode.clientHeight="+targetNode.clientHeight);
		//console.log("EmbedFileView.onLoadEmbed().nodeDiv.offsetHeight="+targetNode.ePanel.offsetHeight);
		//var height=targetNode.clientHeight-targetNode.ePanel.offsetHeight;
		//console.log("EmbedFileView.onLoadEmbed().height="+height);
		//targetNode.eScroll.style.height=height+"px";

	//}
}
/*--------------*/
function prepareEmbed(url,height)
{
	//alert("prepereEmbed");
	if(height<0)height=0; 
	if(EmbedFileView.viewByPage)return(prepareEmbedPG(url,height));

        //var sEmbed="<embed src=\""+url+"\" style=\"width:210mm;height:297mm\" oncontextmenu=\"return(false);\" />";-- на телефоне в embed  не работает масштабирование шипком
	var sEmbed="<"+EmbedFileView.embedTag+" src=\""+url+"\" style=\"overflow: auto; width: 100%; height: 100%;\"/>";
	var sScroll="<div style=\"width:100%; height:"+height+"px;\">"+sEmbed+"</div>";
	return(sScroll);
}
/*--------------*/
function prepareEmbedPG(url,height)
{
	//alert("prepareEmbedPG");
	var cm=EmbedFileView.touchZoom?" oncontextmenu=\"return(false);\"":"";
	var sEmbed="<"+EmbedFileView.embedTag+" src=\""+url+"&page=1"+"\" style=\"width:210mm;height:297mm\""+cm+"/>";
	var sScroll="<div style=\"width:100%; height:"+height+"px; overflow:auto;-webkit-overflow-scrolling: touch;\">"+sEmbed+"</div>";
	//alert(sScroll);
	return(sScroll);
}
/*--------------*/
function preparePanel(urlDownload)
{
	if(EmbedFileView.viewByPage)return(preparePanelPG(urlDownload));
	var sDownload="<a href=\""+urlDownload+"\" style=\"text-decoration:none;\" target=\"_blank\" download=\"\">Скачать</a>";
	var sPanel="<div class=\"embedFileViewPanel\">"+sDownload+"</div>";
	return(sPanel);
}
/*--------------*/
function preparePanelPG(urlDownload)
{
	var sDownload="<a href=\""+urlDownload+"\" style=\"text-decoration:none;\" target=\"_blank\" download=\"\">Скачать</a>";
	var sBtnDn="<a href=\"#\" onclick=\"EmbedFileView.onBtnUpDown(this,-1);return(false);\">◄◄</a>";
	var sBtnUp="<a href=\"#\" onclick=\"EmbedFileView.onBtnUpDown(this, 1);return(false);\">►►</a>";
	var sInput="<input type=\"number\" value=\"1\" min=\"1\" max=\"1\" size=\"3\" onchange=\"EmbedFileView.onChangePage(this)\"/>"
	var sPageCount="<span>???</span>";
	var sPanel="<div class=\"embedFileViewPanel\">"+"Страница"+sInput+sBtnUp+sBtnDn+"&nbsp;из&nbsp;"+sPageCount+sDownload+"</div>";
	return(sPanel);
}
/*--------------*/
EmbedFileView.onBtnUpDown=function(obj,step)
{
	var ePanel=obj.parentElement;
	var targetNode=ePanel.parentElement;
	var eInput=targetNode.eInput;
	var nOld=eInput.value;
	var n=1;
	if(eInput.value || eInput.value!="")
		n=parseInt(eInput.value)+step;
	n=checkPage(eInput,n)
	if(n==nOld)return;//остались на старой странице
	eInput.value=n;
	doChangePage(ePanel);
}
/*--------------*/
function checkPage(eInput,n)
{
	var nMax=1;
    if(eInput.max || eInput.max!="")
		nMax=parseInt(eInput.max);
	if(n>nMax)n=nMax;
	if(n<1)n=1;
	return(n);
}
/*--------------*/
function doChangePage(ePanel)
//проверяет значение номера страницы из eInput, 
//возвращает его в пределы допустимого и обновляет eEmbed.src
{ 
	var targetNode=ePanel.parentElement;
	var eInput=targetNode.eInput;
	var nOld=eInput.value;
	var n=1;
	if(eInput.value || eInput.value!="")
		n=parseInt(eInput.value);
	n=checkPage(eInput,n)
	if(n!=nOld)
		eInput.value=n;
	var eScroll=targetNode.eScroll;
	//на Safari и Chrome недостаточно поменять атрибут src - поэтому формируем элемент заново
	var url=targetNode.urlEmbed;
	//alert(url);
	var cm=EmbedFileView.touchZoom?" oncontextmenu=\"return(false);\"":"";
	var sEmbed="<"+EmbedFileView.embedTag+" src=\""+url+"&page="+n+"\" style=\"width:210mm;height:297mm\""+cm+"/>";
	//alert(sEmbed);
	targetNode.eScroll.innerHTML="";
	targetNode.eScroll.innerHTML=sEmbed;
	targetNode.eEmbed=eScroll.getElementsByTagName(EmbedFileView.embedTag)[0];
	//если ширина eEmbed превышает ширину eScroll, eEmbed надо уменьшить
	fitToScroll(targetNode.eEmbed,targetNode.eScroll);
	//alert(eEmbed.src);
}
/*--------------*/
function fitToScroll(eEmbed,eScroll)
{
	//alert(eEmbed.offsetWidth);
	if(eEmbed.offsetWidth>eScroll.offsetWidth)
	{
		var w=eScroll.offsetWidth;
		var h=(w*eEmbed.offsetHeight)/eEmbed.offsetWidth;
		eEmbed.style.width=w+"px";
		eEmbed.style.height=h+"px";
	}
}
/*--------------*/
EmbedFileView.onChangePage=function(eInput)
{
	doChangePage(eInput.parentElement);
}
/*--------------*/
function onTouchStart(e,targetNode)
{
    if (e.targetTouches && e.targetTouches.length==2 && !window.touchZoomInfo)
    {
        var eScroll=targetNode.eScroll;
        var eEmbed =targetNode.eEmbed;
        //alert(e);
        var p0=e.targetTouches[0];
        var p1=e.targetTouches[1];
        var dx=p0.clientX-p1.clientX;
        var dy=p0.clientY-p1.clientY;
        var bcr=(eScroll.getBoundingClientRect)?eScroll.getBoundingClientRect():{left:0,top:0};
        var touchZoomInfo=window.touchZoomInfo={};
        touchZoomInfo.eScroll=eScroll;
        touchZoomInfo.eEmbed=eEmbed;
        touchZoomInfo.startDistance=Math.sqrt(dx*dx+dy*dy);
        touchZoomInfo.startDistX=eEmbed.offsetWidth;
        touchZoomInfo.startDistY=eEmbed.offsetHeight;
        touchZoomInfo.bcr=bcr;
	touchZoomInfo.p0x=p0.clientX-bcr.left;//координата пальца относительно eScroll
	touchZoomInfo.p0y=p0.clientY-bcr.top;
	touchZoomInfo.startScrollX=eScroll.scrollLeft;
	touchZoomInfo.startScrollY=eScroll.scrollTop;
        //alert(touchZoomInfo.startScrollTop);
        window.addEventListener('touchend', onTouchEnd);
        window.addEventListener('touchmove',onTouchMove);
        //touchZoomInfo.eScroll.style.border="1px solid blue";
        e.preventDefault();
        e.stopPropagation();
    }
}
/*--------------*/
function onTouchMove(e)
{
    if(window.touchZoomInfo)
    {
        //alert(obj);
        var tzi=window.touchZoomInfo;
        var p0=e.targetTouches[0];
        var p1=e.targetTouches[1];
        var dsx=p0.clientX-p1.clientX;
        var dsy=p0.clientY-p1.clientY;
        var d=Math.sqrt(dsx*dsx+dsy*dsy);
        var w=(d*tzi.startDistX)/tzi.startDistance;
        var h=(d*tzi.startDistY)/tzi.startDistance;
        tzi.eEmbed.style.width=w+"px";
        tzi.eEmbed.style.height=h+"px";
        var M=(1.0*d)/tzi.startDistance;//увеличение размеров засчёт масштабирования
        //определим новый скроллинг
        var scrollX=tzi.startScrollX;//берём исходный скроллинг
        var scrollY=tzi.startScrollY;
        //компенсируем смещение точки p0 из за масштабирования
        scrollX+=(tzi.startScrollX+tzi.p0x)*(M-1);
        scrollY+=(tzi.startScrollY+tzi.p0y)*(M-1);
//        if(M>=1.1 && !tzi.aa)
//        {
//            tzi.aa=true;
//            alert(d);
//            alert(tzi.startDistX);
//            alert(tzi.startDistance);
//            //alert(tzi.startScrollY);
//            //alert(tzi.p0y);
//            //alert(M-1);
//            //alert(scrollY);
//        }
        //if(M>=1.1)alert(tzi.p0x);
        //учитываем смещение пальца в точке p0
        var p0x=p0.clientX-tzi.bcr.left;//координата пальца относительно eScroll
        var p0y=p0.clientY-tzi.bcr.top;//координата пальца относительно eScroll
        scrollX-=(p0x-tzi.p0x)*M;
        scrollY-=(p0y-tzi.p0y)*M;
        if(scrollX<0)scrollX=0;
        if(scrollY<0)scrollY=0;
        tzi.eScroll.scrollLeft=Math.floor(scrollX);
        tzi.eScroll.scrollTop =Math.floor(scrollY);
        //if(M>=1.1)alert(tzi.eScroll.scrollTop);
        //alert(p0dy)
        //if(dtop!=0)alert(dtop);
        e.preventDefault();
        e.stopPropagation();
    }
}
/*--------------*/
function onTouchEnd(e)
{
    if(window.touchZoomInfo)
    {
        //alert(e);
        window.removeEventListener('touchend', onTouchEnd);
        window.removeEventListener('touchmove',onTouchMove);
        //touchZoomInfo.eScroll.style.border="1px solid red";
        window.touchZoomInfo=null;
        e.preventDefault();
        e.stopPropagation();
    }
}
/*--------------*/
EmbedFileView.countRefreshes = 0;//количество обновление embed элемента из приложения android
EmbedFileView.signFiles=function(targetSelector,basePath,ids,idList,userHash,test)
//подписывает на Android файл с id, перечисленными через звапятую в ids, 
//используя уже сформированный элемент предпросмотра файла targetSelector
{
	if(!ids || ids==undefined)return(false);
    var targetNode = document.querySelector(targetSelector);
    if(!targetNode || targetNode==undefined)
    {
		alert("На странице отсутствует элемент предпросмотра файлов. Обратитесь к разработчикам.");
		return(false);
    }
    targetNode.basePath=basePath;//понадобится, чтобы проверить успешность загрузки подписи в refreshAfterSignTimer
    targetNode.idList=idList;
	targetNode.userHash=userHash;
    if(!targetNode.eScroll || targetNode.eScroll==undefined)
    {
		alert("Не сформировался элемент предпросмотра файлов. Выделите любой файл и поторите операцию.");
		return(false);
    }
	var eScroll=targetNode.eScroll;
	if(targetNode.refreshAfterSignTimer_id!=undefined)
	{
		alert("Процесс подписи уже запущен. Подождите 5 секунд.");
		return;//3 секунд не прошло как пользователь нажимал эту кнопку
	}
	//на Safari и Chrome недостаточно поменять атрибут src - поэтому формируем элемент заново
	var url="http://127.0.0.1:8099/signFiles?ids="+ids+"&userHash="+userHash+"&basePath="+basePath;
	if(test!=undefined)url+="&test="+test;
	var cm=EmbedFileView.touchZoom?" oncontextmenu=\"return(false);\"":"";
	var sEmbed="<embed src=\""+url+"\" style=\"width:210mm;height:297mm\""+cm+"/>";
	targetNode.eScroll.innerHTML="";
	targetNode.eScroll.innerHTML=sEmbed;
	if(targetNode.eEmbed=eScroll.getElementsByTagName("embed").length<1)
	{
		console.log("EmbedFileView: embed element not found");
		return(false);
	}
	targetNode.eEmbed=eScroll.getElementsByTagName("embed")[0];
	targetNode.eEmbed.addEventListener("load",function(e){onLoadEmbedSign(this,e);});
	//если страница в embed не обновится в течении 5 секунд - сервис подписи не запущен
	targetNode.refreshAfterSignTimer_id=setTimeout(function() { absentSignServiseTimer(targetNode); }, 5000,targetNode);

	//проверка доступности localhost
	// checkLocalhostAlive(targetNode);//через запрос
	EmbedFileView.countRefreshes = 0;
	setTimeout(function() { checkCountRefreshes(targetNode) }, 5000);//подсчет обновлений embed

	//если ширина eEmbed превышает ширину eScroll, eEmbed надо уменьшить
	fitToScroll(targetNode.eEmbed,targetNode.eScroll);
	return(true);
}
/*--------------*/
function checkCountRefreshes(targetNode)
{
	if (EmbedFileView.countRefreshes < 2) 
	{
		absentSignServiseTimer(targetNode);
		// alert("localhost not responding.");
	}
	// else
	// {
	// 	alert("localhost is alive.");
	// }
}
/*--------------*/
function checkLocalhostAlive(targetNode)
{
/*	//вариант, если приложение обновленное с header-ом на CORS
	try {
		var xhr = new XMLHttpRequest();
		xhr.open('GET', 'http://127.0.0.1:8099', false);
		xhr.send();
		//ошибки нет - значит запрос выполнился и пришел ответ - сервис запущен
	} catch (error) {
		//во время запроса ошибка - сервис не запущен
		absentSignServiseTimer(targetNode);
	}*/
	//-------------------------
	//вариант, который работает без header-а CORS
	const request = new Request('http://127.0.0.1:8099/status', {method: 'GET', mode:'no-cors'});
	const URL = request.url;
	const method = request.method;
	const credentials = request.credentials;
	const bodyUsed = request.bodyUsed;
	try {
		fetch(request)
		.then(response => {
			//пришел какой-либо ответ - сервис работает
		})
		.catch(error => {
			//ошибка fetch - сервис не работает
			absentSignServiseTimer(targetNode);
			console.log(error);
		// alert("error:"+error);
		});	
	} catch (error) {
		console.log(error);
		// alert("host off\n" + e);
	}
	
}
/*--------------*/
function propobj(obj)
//выводит описание свойств объекта obj в поле
{
        var s=obj.tagName+"(id="+obj.id+"):\r\n"
       	for(var i in obj)
       	{
       		s+=i+"="+(obj)[i]+"\r\n"
        }
        alert(s);
}
/*--------------*/
function onLoadEmbedSign(obj,e)
{
	EmbedFileView.countRefreshes++;
	// console.log("onLoadEmbedSign().begin");
	//alert("onLoadEmbedSign().begin");
	//alert(obj);
	//propobj(obj);
	var targetNode=obj.parentElement.parentElement;
	if(obj.parentElement.clientHeight<=0)
	{
		updateHeight(targetNode);
		//оказалось, что targetNode.clientHeight к этому моменту неправильный
		setTimeout(function() { updateHeight(targetNode); }, 500,targetNode);
	}
	//в коде embed-страницы есть сценарий, который обновляет её через 1000ms
	//если в течении секунды+запас не приёдёт очередное обновление, значит процесс подписи завершён
	//а если пришёл, запускаем новый таймер
	if(targetNode.refreshAfterSignTimer_id!=undefined)clearTimeout(targetNode.refreshAfterSignTimer_id);
	targetNode.refreshAfterSignTimer_id=setTimeout(function() { refreshAfterSignTimer(targetNode); }, 1500,targetNode);
	// console.log("onLoadEmbedSign().end");
	//alert("onLoadEmbedSign().end");
}
/*--------------*/
function refreshAfterSignTimer(targetNode)
{
	targetNode.refreshAfterSignTimer_id=undefined;
	//alert(targetNode);
	//проверяем успешность загрузки подписей (число неподписанных файлов)
	var xhr = new XMLHttpRequest();
	var urlRefresh= targetNode.basePath+"/sedkp/file/"+targetNode.idList+"?mode=nonSigned";
	//alert(urlRefresh);
	xhr.open('GET', urlRefresh, true);
	xhr.setRequestHeader("Authorization","Basic "+targetNode.userHash);
	xhr.onreadystatechange = function() 
	{
		if (xhr.readyState != 4) return;
		if (xhr.status != 200)return;//Ошибка. Ничего не делаем
		if(xhr.responseText==undefined)return;
		//alert(xhr.responseText);
		if(xhr.responseText=="0")//неподписанных файлов нет
			window.location.reload(true);
	}
	xhr.send();
}
/*--------------*/
function absentSignServiseTimer(targetNode)
{
	targetNode.refreshAfterSignTimer_id=undefined;
	//alert(targetNode.eScroll.clientHeight);
	if(targetNode.eScroll.clientHeight<=0)
		updateHeight(targetNode);
	var s="<h1>Служба подписи СЭДКП не отвечает</h1>"
+"<div>Если Служба установлена - запустите её</div>"
+"<div>Если служба не установлена - установите её</div>"
+"<div>Ссылки: </div>"
+"<ul>"
+"	<li><a href=\"/src/download/android/manualSignAndroid.pdf\" target=\"_blank\">Инструкция по установке</a></li>"
+"	<li><a href=\"https://www.cryptopro.ru/news/2013/07/kriptopro-csp-pod-android\" target=\"_blank\">КриптоПро CSP</a></li>"
//+"	<li><a href=\"/src/download/android/ACSP.apk\" download=\"\">ACSP.apk</a></li>"
+"	<li><a href=\"/src/download/android/SedkpSign.apk\" download=\"\">SedkpSign.apk</a></li>"
+"</ul>";
	var sDiv="<div style=\"width:100%;height:100%\">"+s+"</div>";
	//alert(sDiv);
	//alert(targetNode.eScroll);
	targetNode.eScroll.innerHTML="";
	targetNode.eScroll.innerHTML=sDiv;
}
/*--------------*/
/*--------------*/
window.EmbedFileView=EmbedFileView;
}());
