function turnPageCommon(surl,sselectobj)
{
	//alert(sselectobj.value);
	window.location.href = surl + sselectobj.value;
}
function AddFavorite(sURL, sTitle)
{
    try
    {
        window.external.addFavorite(sURL, sTitle);
    }
    catch (e)
    {
        try
        {
            window.sidebar.addPanel(sTitle, sURL, "");
        }
        catch (e)
        {
            alert("加入收藏失败，请使用Ctrl+D进行添加");
        }
    }
}
function SetHome(obj,vrl){
	if (htmlObj(obj) == null){ return; }
	obj = htmlObj(obj);
	if (vrl == null || vrl == ""){		vrl = location.href;	}
	try{
		obj.style.behavior='url(#default#homepage)';obj.setHomePage(vrl);
	}
	catch(e){
		if(window.netscape) {
			try {
				netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
			}
			catch (e) {
				alert("此操作被浏览器拒绝！\n请在浏览器地址栏输入“about:config”并回车\n然后将 [signed.applets.codebase_principal_support]的值设置为'true',双击即可。");
			}
			var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
			prefs.setCharPref('browser.startup.homepage',vrl);
		 }
	}
}
//得到HTML对象
function htmlObj(ee)
{
	var xx=null;
	if(typeof(ee)=="string"){ xx = document.getElementById(ee); }
	else if(typeof(ee)=="object"){ xx = ee; }
	else { return null; }
	if(xx) { return xx; }
	else { return null; }
}
function htmlObjValue(eobj)
{
	if(htmlObj(eobj)!=null)
	{
		if(typeof(htmlObj(eobj)).toString().indexOf("input") >=0)
		{ return htmlObj(eobj).value; }
		else if(typeof(htmlObj(eobj)).toString().indexOf("select") >=0)
		{ return htmlObj(eobj).value; }
		else
		{ return ""; }
	}
	else
	{ return ""; }
}
function appendElement(ee,aname,etype)
{
	if(etype == null || etype == ""){ etype= "span"; }
	if(htmlObj(ee)!=null)
	{ 
		if (htmlObj(aname)!=null)
		{
			var tempE = htmlObj(aname);
			deleteElement(htmlObj(aname));
			htmlObj(ee).appendChild(tempE)	;
		}
		else
		{
			var x=htmlObj(ee);
			var newel,newtext;
			newel=document.createElement(etype);
			newel.setAttribute("id",aname);
			newel.setAttribute("name",aname);
			x.appendChild(newel);
		}
	}
	
}
function deleteElement(aname)
{
	if(htmlObj(aname)!=null)
	{
		htmlObj(aname).parentNode.removeChild(htmlObj(aname));
	}
}
//trim方法
function trim(str1)
{
      return str1.replace(/(^\s*)|(\s*$)/g,"");
}
//图片点击查看内容
function resizeimg(ImgD,iwidth,iheight) { 
     var image=new Image(); 
     image.src=ImgD.src; 
     if(image.width>0 && image.height>0){ 
        if(image.width/image.height>= iwidth/iheight){ 
           if(image.width>iwidth){ 
               ImgD.width=iwidth; 
               ImgD.height=(image.height*iwidth)/image.width; 
           }else{ 
                  ImgD.width=iwidth; 
	              ImgD.height=(image.height*iwidth)/image.width; 
                } 
               ImgD.alt=image.width+"×"+image.height; 
        } 
        else{ 
                if(image.height>iheight){ 
                       ImgD.height=iheight; 
                       ImgD.width=(image.width*iheight)/image.height; 
                }else{ 
                        ImgD.height=iheight; 
                       ImgD.width=(image.width*iheight)/image.height; 
                     } 
                ImgD.alt=image.width + "*" + image.height; 
            }
		ImgD.style.cursor= "pointer";
    } 
}
function showBigImage(eobj,p,evt)
{	
	var ss = showBigImageInterface(eobj,p,evt,-300,-100);
	window.setTimeout(function(){ss.style.display = "";},1000);
}
function showBigImageRight(eobj,p,evt)
{	
	var ss = showBigImageInterface(eobj,p,evt,50,-100);
	window.setTimeout(function(){ss.style.display = "";},1000);
}
function  popBigImage(sobj,p,evt)
{	
	var popDiv1 = createAbsoluteDiv(400,400);
	new classDrag(popDiv1,"move",false,false,false,false,true,false);
	var ss = showBigImageInterface(sobj,p,evt,-500,-100);
	htmlObj("popDivContent").innerHTML = ss.innerHTML; 
	deleteElement(ss);
}
function setElementShow(eobj)
{
	var eobj1 = htmlObj(eobj);
	if(eobj1)
	{
		eobj1.style.display = "";
	}
}
function setElementHidden(eobj)
{
	var eobj1 = htmlObj(eobj);
	if(eobj1)
	{
		eobj1.style.display = "none"; 
	}
}
function switchElementDisplay(eobj)
{
	var eobj1 = htmlObj(eobj);
	if(eobj1)
	{
		if (eobj1.style.display == "none") {eobj1.style.display = "";}
		else  {eobj1.style.display = "none";}
	}
}
//异步调用通用不弹出窗口,参数列表：eobj,iurl,iarguments
function showAjaxCommon(eobj)
{
	var iurl = arguments[1];
	if (iurl.indexOf("?")<0)
	{iurl = iurl + "?XError=";}
	var ia=""; 
	for (var i = 2;i<arguments.length;i++)
	{
		ia +="&"+arguments[i];
	}
	//alert(iurl+ia);
	XHRGetCommon(iurl + ia,eobj,null);	
	return;
}
//通用异步调用弹出窗口，参数列表：iwidth,iheight,iurl,iarguments
function showAjaxPopDiv()
{
	var popDiv1 = createAbsoluteDiv(parseInt(arguments[0]),parseInt(arguments[1]));
	new classDrag(popDiv1,"move",false,false,false,false,true,false);
	var iurl = arguments[2];
	if (iurl.indexOf("?")<0)
	{iurl = iurl + "?E=";}
	var ia=""; 
	for (var i = 3;i<arguments.length;i++)
	{
		ia +="&"+arguments[i];
	}
	XHRGetCommon(iurl + ia,"popDivContent",null);
}
//创建绝对层
function createAbsoluteDiv(iwidth,iheight)
{		
	createBackGroundDiv();	
	var iDiv = createPopDivBase(iwidth,iheight);
	return iDiv;
}
function createBackGroundDiv()
{
	var bDiv = htmlObj("backgroundDiv");
	if (bDiv == null)
	{
		bDiv=document.createElement("div");
		bDiv.setAttribute("id","backgroundDiv");
		bDiv.setAttribute("name","backgroundDiv");
		document.body.appendChild(bDiv);
	}
	bDiv.setAttribute("style","padding:0px;margin:0px;position:absolute;width:100%;top:0px;left:0px;background-color:#ECECEC;filter:alpha(opacity=50);-moz-opacity:0.5;opacity: 0.5;z-index:5;");	
	bDiv.style.height = getDocumentSize()[1] + "px";
	bDiv.style.padding = "0px";
	bDiv.style.margin = "0px";
	bDiv.style.position = "absolute";
	bDiv.style.width = "100%";
	bDiv.style.top = "0px";
	bDiv.style.left = "0px";
	bDiv.style.backgroundColor = "#ECECEC";
	bDiv.style.zIndex = "5";
	bDiv.style.filter = "alpha(opacity=50)";
	bDiv.style.display = "";
	if(bDiv.style.MozOpacity)
	{ bDiv.style.MozOpacity = "0.5"; }
	if(bDiv.style.opacity)
	{ bDiv.style.opacity = "0.5"; }	
}
function createPopDivBase(iwidth,iheight)
{
	var pwidth = parseInt(iwidth);
	var pheight = parseInt(iheight);
	if (pwidth > 0)
	{
		if (Math.floor(getDocumentSize()[0]*95/100)<pwidth)
		{pwidth = Math.floor(getDocumentSize()[0]*95/100);}
		else if(pwidth<150)
		{pwidth = 300;}
	}	
	var innerHeightStyle;
	if (pheight>0)
	{		
		if (Math.floor(getDocumentSize()[1]*90/100) < pheight)
		{
			pheight = Math.floor(getDocumentSize()[1]*90/100);	
		}
	}
	else
	{
		pheight = 300; 
	}
	innerHeightStyle = "height:"+ pheight +"px;overflow:auto;";
	
	if (htmlObj("popDivOuter") == null)
	{
		var addpopDiv = document.createElement("div");
		addpopDiv.setAttribute("id","popDivOuter");
		addpopDiv.setAttribute("name","popDivOuter");
		//if(document.getElementsByTagName("form")[0]!=null) 
		document.body.appendChild(addpopDiv);
	}
	var popDiv1 = htmlObj("popDivOuter");
	popDiv1.style.position = "absolute";
	popDiv1.style.width = pwidth + "px";
	popDiv1.style.height = "auto";
	popDiv1.style.backgroundColor = "#ECECEC";
	popDiv1.style.zIndex = "10";
	popDiv1.style.padding = "1px";
	popDiv1.style.cursor = "move";	
	popDiv1.style.top = getScrollTop() + 50 +"px";
	popDiv1.style.left = Math.floor((getDocumentSize()[0]-pwidth)/2) + "px";	
	popDiv1.style.border = "#FF9900 1px solid";	
	
	popDiv1.innerHTML = "<div style='width:100%;height:25px;line-height:25px;background-color:#FF9900;color:white;float:left;clear:both;'><span style='float:right;margin-right:20px;cursor:pointer;height:25px;' onClick='javascript:stopParentEvent(event);closePopDiv();'>[关闭窗口]</span></div><div id='popDivContent' style='background-color:#FFFFFF;width:100%;cursor:auto;"+innerHeightStyle+"float:left;clear:both;position:relative;' onMouseDown='stopParentEvent(event);'></div>";	
	popDiv1.style.display = "";
	return popDiv1;	
}
function closePopDiv()
{
	if(htmlObj("backgroundDiv"))
	{
		htmlObj("backgroundDiv").style.display="none";
	}
	if(htmlObj("popDivOuter"))
	{
		htmlObj("popDivOuter").style.display = "none";	
	}
}
function  showBigImageInterface(eobj,p,evt,ipositionX,ipositionY)
{
	var eobjName = eobj;
	var PopMenu = htmlObj(eobj);
	if (ipositionX == null){ipositionX = -300;}
	if (ipositionY == null){ipositionY = -100;}
	
	if(PopMenu == null)
	{
		PopMenu=document.createElement("div");
		PopMenu.setAttribute("id",eobjName);
		PopMenu.setAttribute("name",eobjName);
		document.body.appendChild(PopMenu);			
	}
	//alert(tempImagePath);
	PopMenu.innerHTML = "<div style='width:100%;' onmouseover=\"setElementShow('"+eobjName+"')\" onmouseout=\"setElementHidden('"+eobjName+"')\"><img src='"+ p +"' onload='javascript:resizeimg(this,400,400)' /></div>";
	PopMenu.style.position = "absolute";
	PopMenu.style.padding = "10px";
	PopMenu.style.backgroundColor = "#ECECEC";
	PopMenu.style.border = "#CCCCCC 1px solid";
	
	if (window.event) evt = window.event;
	PopMenu.style.left = getScrollLeft() + eval(evt.clientX+ipositionX) +"px";
	PopMenu.style.top = getScrollTop() + eval(evt.clientY+ipositionY) +"px";
	//PopMenu.style.display = "";
	return PopMenu;
}
// 返回函数指定的逗号分隔的参数列表字串
function returnArgumentsList(iarguments,istart,iend)
{
	if (!iarguments){return null;}
	var request1 = "";
	if (parseInt(istart) < 0||istart == null) istart = 0;
	if(parseInt(iend) > iarguments.length ||iend == null) iend = iarguments.length;
	for (var i = istart;i<iend;i++)
	{
		request1 += "\""+iarguments[i].toString() + "\",";
	}
	if(request1 != "")
	{
		request1 = request1.substring(0,request1.length-1)	
	}
	return request1;
}
// 返回函数指定的参数连接字串，
function returnArgumentsJoinString(iarguments,istart,iend)
{
	var request1 = "";
	if (parseInt(istart) < 0||istart == null) istart = 0;
	if(parseInt(iend) > iarguments.length ||iend == null) iend = iarguments.length;
	for (var i = istart;i<iend;i++)
	{
		request1 += "&"+iarguments[i];
	}
	if(request1 != "")
	{
		request1 = request1.substring(1,request1.length)	
	}
	return request1;
}
//delayShowCommon:延迟执行某函数
//参数列表：inum-循环次数,arguments[1]为执行条件,其余为传递的参数字串
function delayExecute(xhnum,icondition,ifunctionName,iarguments)
{	
	var inum = parseInt(arguments[0]);
	if (inum < 1){return;}
	if ((typeof(icondition)=="boolean" && icondition == true)||htmlObj(arguments[1])!=null)
	{
		var request1 = returnArgumentsList(arguments,3,null);
		eval(arguments[2]+"("+request1+")");
	}
	else
	{	
		inum -= 1;	
		var request1 = returnArgumentsList(arguments,1,null);	
		var ifor = "delayExecute(\""+inum+"\","+request1+")";
		window.setTimeout(ifor,500);
		//document.getElementById("test").innerHTML = document.getElementById("test").innerHTML + inum+"<br />";
	}
	
}
function stopParentEvent(e)
{  
	if (!e) e = window.event;  
	if (e.stopPropagation){
		e.stopPropagation();  
	}
	else {  
		e.cancelBubble = true;  
	} 
} 

function getScrollTop()    //浏览器滚动条位置
{
    var scrollTop = 0;
    if (document.documentElement && document.documentElement.scrollTop){
        scrollTop = document.documentElement.scrollTop;
    }else if (document.body){
        scrollTop = document.body.scrollTop;
    }else if (window.pageYOffset){
        scrollTop = window.pageYOffset;
    }
    return scrollTop;
}
function getScrollLeft()    //浏览器滚动条位置
{
    var scrollLeft = 0;
    if (document.documentElement && document.documentElement.scrollTop){
        scrollLeft = document.documentElement.scrollLeft;
    }else if (document.body){
        scrollLeft = document.body.scrollLeft;
    }else if (window.pageYOffset){
        scrollLeft = window.pageXOffset;
    }
    return scrollLeft;
}
function getDocumentSize()
{
    var xScroll, yScroll;
    if (document.body.scrollHeight > document.body.offsetHeight)
    {
        xScroll = document.body.scrollWidth;
        yScroll = document.body.scrollHeight;
    }
    else if (window.innerHeight && window.scrollMaxY)
    {
        xScroll = document.body.scrollWidth;
        yScroll = window.innerHeight + window.scrollMaxY;
    }
    else 
    {
        xScroll = document.body.offsetWidth;
        yScroll = document.body.offsetHeight;
    }
	var pageHeight,pageWidth;
    var windowWidth, windowHeight;
    if (self.innerHeight)
    {
        windowWidth = self.innerWidth;
        windowHeight = self.innerHeight;
    }
    else if (document.documentElement && document.documentElement.clientHeight)
    {
        windowWidth = document.documentElement.clientWidth;
        windowHeight = document.documentElement.clientHeight;
    }
    else if (document.body)
    {
        windowWidth = document.body.clientWidth;
        windowHeight = document.body.clientHeight;
    }
    if (yScroll < windowHeight)
    {
        pageHeight = windowHeight;
    }
    else
    {
        pageHeight = yScroll;
    }
    if (xScroll < windowWidth)
    {
        pageWidth = windowWidth;
    }
    else
    {
        pageWidth = xScroll;
    }
    arrayPageSize = new Array(pageWidth, pageHeight, windowWidth, windowHeight);
    return arrayPageSize;
}
//过滤重复字串,只留下一个,返两边不带分号的
function DelSameStr(ss)
{
	var r="";
	var parray = ss.split(",");
	for(var qq=0;qq<parray.length;qq++)
	{
		var isame = false;
		for (var tt = qq+1;tt<parray.length;tt++)
		{
			if(parray[qq] == parray[tt])
			{	isame = true;	}
		}
		if (isame == false&&parray[qq]!="")
		{	r = r + parray[qq] + ",";	}
	}
	if(r!=""){	return r.substring(0,r.length - 1);	}
	else {	return r;	}
}
//注册事件方法
function addListener(oElement,sEvent,func){ 
	if (oElement.attachEvent){ 
		oElement.attachEvent(sEvent,func); 
	} 
	else{ 
		sEvent=sEvent.substring(2,sEvent.length); 
		oElement.addEventListener(sEvent,func,false); 
	} 
}
//注册事件方法的类
function setEventListener(sobj,sEvent,sfunction)   
{   
	this.iname = sobj;
	this.iEvent = sEvent;	
	this.iprocess = sfunction;
	this.set();	
}   
setEventListener.prototype.set = function()   
{   
	var eobj = htmlObj(this.iname);   
	if(eobj.attachEvent)
	{  
        eobj.attachEvent("on"+this.iEvent,this.iprocess);  	
		//eobj.attachEvent("onpropertychange",this.iprocess); 
    }
	else if(eobj.addEventListener){  
    	//eobj.addEventListener("input",this.iprocess,false); 
		eobj.addEventListener(this.iEvent,this.iprocess,false);
    }    
}
<!------------------------------------------------------------------------------
/*------------------------------------------------------------------------------
/*
* 拖动类
* param:
*      a       -   要被拖动对象的 id 或 对象本身
*      cursor -   拖动时的鼠标指针样式
*      onStart -   当拖动开始时执行的函数，函数原形: onDragStart(evt); evt - 事件
*      onDrag -   当对象正在被拖动时的执行函数，函数原形: onDrag(evt,clientX,clientY, movedX, movedY); evt - 事件,clientX - 当前 x 坐标,clientY - 当前 y 坐标, movedX - 水平方向移动的距离, movedY - 垂直方向移动的距离
*      onEnd   -   当拖动结束时的执行函数，函数原形: onDragEnd(evt); evt - 事件
*      onScroll - 每隔段时间执行的函数，函数原形: onScroll();
*      isDrag -   对象是否跟着动 true, false
*      isDisposed -拖动结束后不需要释放自己 true,false
* author: beikx
* date time: 2008.5.28
* email: beikx#126.com
*/
function classDrag(a,cursor,onStart,onDrag,onEnd, onScroll,isDrag, isDisposed)
{
    if (typeof(a) == 'string')
        this._obj = document.getElementById ? document.getElementById(a) : null
    else if (typeof(a) == 'object')
        this._obj = a;
    else
        this._obj = null;
    if(this._obj == null)
        return;
    if (!isNaN(this._obj.__isCD) && this._obj.__isCD == true)
        return;
    this._obj.__isCD = true;/* 对象是否已经创建了拖动 */
    this.__cursor = this._obj.style.cursor;
    if (cursor)
        this._obj.style.cursor = cursor;
    this.__onmousedown = this._obj.onmousedown;
    this._obj.onmousedown = this.start();
    if (onStart)
        this.onDragStart = onStart;
    else
        this.onDragStart = new Function();
    if (onDrag)
        this.onDrag = onDrag;
    else
        this.onDrag = new Function();
    if(onEnd)
        this.onDragEnd = onEnd;
    else
        this.onDragEnd = new Function();
    if(onScroll)
        this.onScroll = onScroll;
    else
        this.onScroll = new Function();
    if (isNaN(isDrag) || typeof(isDrag) != 'boolean')
        this.isDrag = true;
    else
        this.isDrag = isDrag;
    if (this.isDrag == true)
        this._obj.style.position = 'absolute';
    if (isNaN(isDisposed) || typeof(isDisposed) != 'boolean')
        this._isDisposed = true;
    else
        this._isDisposed = isDisposed;
    this.lastMouseX = null;
    this.lastMouseY = null;
    this.interval = null;
	if (this._obj.style.left!="")
	{
		var ileft = this._obj.style.left.replace(/px/,"");
		if(ileft.indexOf('%')>0)
		{ileft= ileft.replace(/\D?/,"");
		ileft = Math.floor(parseInt(window.screen.width) * parseFloat(ileft)/100);}
		this._obj.style.left = ileft + "px";
	}
}
classDrag.prototype._fixE = function(evt) {
    if (typeof evt == "undefined") {
        evt = window.event;
    }
    if (typeof evt.layerX == "undefined") {
        evt.layerX = evt.offsetX;
    }
    if (typeof evt.layerY == "undefined") {
        evt.layerY = evt.offsetY;
    }
    if (typeof evt.which == "undefined") {
        evt.which = evt.button;
    }
    return evt;
};
classDrag.prototype.start = function() {
    var a = this;
    return function(evt) {
        evt = a._fixE(evt);
        if (evt.which != 1) {
            return true;
        }
        if (isNaN(parseInt(a._obj.style.left))) {
            a._obj.style.left = (evt.clientX - a._obj.offsetWidth / 2) + 'px';
        }
        if (isNaN(parseInt(a._obj.style.top))) {
            a._obj.style.top = (evt.clientY - a._obj.offsetHeight / 2) + 'px';
        }
        a.onDragStart(evt);
        a.lastMouseX = evt.clientX;
        a.lastMouseY = evt.clientY;
        a.interval = window.setInterval(a.scroll(), 10);
        document.onmouseup = a.end();
        document.onmousemove = a.drag();
        return false;
    };
};
classDrag.prototype.drag = function() {
    var a = this;
    return function (evt) {
        evt = a._fixE(evt);
        if (evt.which == 0) {
            return (a.end())();
        }
        var element = a._obj;
        var _clientX = evt.clientX;
        var _clientY = evt.clientY;
        if (a.lastMouseX == _clientX && a.lastMouseY == _clientY) {
            return false;
        }
        var movedX, movedY;
        movedX = _clientX - a.lastMouseX;
        movedY = _clientY - a.lastMouseY;
        if (a.isDrag == true)
        {
            var l,t;
            l = parseInt(element.style.left) + movedX;
            t = parseInt(element.style.top) + movedY;
            element.style.left = l + "px";
            element.style.top = t + "px";
        }
        a.lastMouseX = _clientX;
        a.lastMouseY = _clientY;
        a.onDrag(evt,_clientX,_clientY, movedX, movedY);
        return false;
    };
};
classDrag.prototype.dispose = function() {
    this._obj.onmousedown = this.__onmousedown;
    this._obj.style.cursor = this.__cursor;
    this.__onmousedown = null;
    this.__cursor = null;
    this.__position = null;
    this.onDragStart = new Function();
    this.onDragEnd = new Function();
    this.onDrag = new Function();
    this._obj.__isCD = false;
    this._obj = null;
};
classDrag.prototype.end = function() {
    var a = this;
    return function (evt) {
        var _onDragEndFuc = a.onDragEnd;
        evt = a._fixE(evt);
        document.onmousemove = null;
        document.onmouseup = null;
        window.clearInterval(a.interval);
        a.interval = null;
        if (a._isDisposed == true)
            a.dispose();
        return _onDragEndFuc(evt);
    };
};
classDrag.prototype.scroll = function() {
    var a = this;
    return function() {
        var obj = a._obj;
        if (obj != null)
        {
            var b;
            if(document.body.scrollHeight > document.documentElement.clientHeight)
                b = document.body.scrollHeight;
            else
                b = document.documentElement.clientHeight;
            var c = a.clientHeight();
            var d = a.pageOffset();
            var e = d[1];
            var f = 4;
            var g = 0.05 * c;
            var h = e;
            var i = obj.offsetTop;
            if(a.lastMouseY <= g) {
                h = e - f;
            } else if(a.lastMouseY >= c - g) {
                h = Math.min(b - c,e + f);
            }
            var j = h - e;
            if(j != 0) {
                window.scrollBy(0, j);
                i += j;
                if (i > 0)
                    obj.style.top = i + "px";
            }
        }
        a.onScroll();
    };
};
classDrag.prototype.clientHeight = function() {
    var a;
    if(window.innerHeight) {
        a = window.innerHeight;
    } else if(document.documentElement && document.documentElement.clientHeight) {
        a = document.documentElement.clientHeight;
    } else {
        a = document.body.offsetHeight;
    }
    if( a < document.body.clientHeight) {
        return a;
    }
    return document.body.clientHeight;
};
classDrag.prototype.pageOffset = function() {
    var a = 0;
    var b = 0;
    if(typeof window.pageYOffset == "number") {
        a = window.pageXOffset;
        b = window.pageYOffset;
    } else if(document.body && (document.body.scrollLeft || document.body.scrollTop)) {
        a = document.body.scrollLeft;
        b = document.body.scrollTop;
    } else if(document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
        a = document.documentElement.scrollLeft;
        b = document.documentElement.scrollTop;
    }
    return [a,b];
};
//--------------------------------------------------------
//--------------------------------------------------------
//-->
