﻿/*
*	VeryIDE 系统操作接口文件：VeryIDE_API.js
*	程序作者：磊磊 ( Leilei E-mail:VeryIDE@Gmail.Com )
*	当前版本：v1.0 ( 基础版本 )
*	最后更新：2006-12-22
*/


/*
函数名称:	LiveInfo
函数作用:	输出鼠标光标信息框
参数说明:	Info:信息 / Class / offsetH&offsetV:位置控制
*/
function VeryInfo(Info,Class,offsetH,offsetV){
	var id="_Info_";
	if(!$(id)){
		var cDiv=document.createElement("div");
		cDiv.id=id;
		var oBody=$$$('body')[0];
		oBody.appendChild(cDiv);
		
	}else{
		var cDiv=$(id);	
	}
	cDiv.className=Class;
	cDiv.innerHTML=Info;
	cDiv.style.position="absolute";
	if (document.all){//FF
		cDiv.style.pixelLeft = $m.x +offsetH;
		cDiv.style.pixelTop  = $m.y +offsetV;
	}else{//IE 
		cDiv.style.left = $m.x +offsetH+"px";
		cDiv.style.top  = $m.y +offsetV+"px";
	}
	if($(id)&&!Info){deleteElement(id);}
}


/*
函数名称:	VeryAlert
函数作用:	取代alert
参数说明:	i(信息)
*/
function VeryAlert(Info){
	if($('_Alert_')){deleteElement('_Alert_');}
	if($('Alert_BG')){deleteElement('Alert_BG');}
	if(Info){
		var cDiv=document.createElement("div");
		cDiv.id='_Alert_';
		cDiv.className="Alert";
		cDiv.innerHTML="<div class='Title'>"+document.title+" - "+location.host+"</div><p class='Info'>"+Info+"</p>";
		cDiv.innerHTML+="<p class='center'><button type='button' id='_Close_' accesskey='x' class='bt' onclick='javascript:deleteElement(&quot;_Alert_&quot;);deleteElement(&quot;Alert_BG&quot;);' />确  定 (<u>X</u>)</button></p>";
		
		var oBody=$$$('body')[0];
		oBody.appendChild(cDiv);
		setButton();
		var oSH=oBody.scrollHeight;
		var oH=oBody.clientHeight;
		var top=((oH-cDiv.offsetHeight)/2+document.body.scrollTop);
		
		var oSW=oBody.scrollWidth;
		var oW=oBody.clientWidth;
		var left=((oW-cDiv.offsetWidth)/2);
		cDiv.style.left=left+"px";
		cDiv.style.top=top+"px";
		var hh=$$$('body')[0].offsetHeight;
		if(hh>oSH){oSH=hh;}
		
		var bgObj=document.createElement("div");
		bgObj.setAttribute('id','Alert_BG');
		bgObj.className='Alert_BG';
	
		bgObj.style.width=oW + "px";
		bgObj.style.height=oSH + "px";
		oBody.appendChild(bgObj);
	}
}

/*
函数名称:	VeryMenu_Float
函数作用:	创建浮动链接菜单(级联菜单)
参数说明:	obj			容器对象,当前为this
			id			新菜单的ID
			class		菜单引用的CSS类
			Main		菜单实体(使用$分隔组,使用^分隔链接)
*/
function VeryMenu_Float(obj,id,Class,Main){
	if(typeof(Up_M_Id)=="undefined"){Up_M_Id='';}
	if(!$(id)){
		var v_obj=obj, s_value , li ;
		if(typeof(v_obj)=="object"){
			if(!v_obj.id){v_obj.id="_p"+id;}
		}
		var VoP=new getPlace(v_obj);
		var obj=document.createElement("ul");
		obj.id=id;obj.className=Class;
		var _value=Main.split("$");
		
		for(var i=0;i<_value.length;i++){
			s_value=_value[i].split("^");
			li=document.createElement("li");
			li.innerHTML="<a href='"+s_value[1]+"' title='"+s_value[0]+"'><span>"+s_value[0]+"</span></a>";
			obj.appendChild(li);
		}
		v_obj.appendChild(obj);
		obj.style.top=VoP.top;obj.style.left=VoP.left;
		$(id).onmouseout=function(){$(id).style.display='none';}
	}else{
		$(id).style.display='block';
	}
	if(Up_M_Id!=""&&Up_M_Id!=id){
		$(Up_M_Id).style.display='none';
	}
	Up_M_Id=id;
}

/*
函数名称:	VerySelect_Float
函数作用:	创建浮动菜单选项(链接)
参数说明:	obj			容器对象
			id			新菜单的ID
			Class		菜单引用的CSS类
			url			基础URL地址(不变的部分)
			value		参数(变动的部分)
			disabled	需要禁用项的值
*/
function VerySelect_Float(obj,id,Class,url,value,disabled){
	if(!$(id)){
		var v_obj=obj , s_value , li;
		var VoP=new getPlace(v_obj);
		var obj=document.createElement("ul");
		obj.id=id;obj.className=Class;
		var _value=value.split("|");
		for(var i=0;i<_value.length;i++){
			s_value=_value[i].split(":");
			li=document.createElement("li");
			if(s_value[1]!=disabled){
				li.innerHTML="<a href='"+url+s_value[1]+'&amp;url='+escape(location.href)+"' title='"+s_value[0]+"'>"+s_value[0]+"</a>";
			}else{
				li.innerHTML=s_value[0];
			}
			obj.appendChild(li);
		}
		v_obj.appendChild(obj);
		obj.style.top=VoP.top;obj.style.left=VoP.left;
		$(id).onmouseout=function(){$(id).style.display='none';}
	}else{
		$(id).style.display='block';
	}
}

/*
函数名称:	VeryXML_WriteSelect
函数作用:	读取XML根据条件生成下拉列表项
参数说明:	XmlURL xml	文件地址
			Tag			需要遍历的标签名
			Att			需要获取的标签属性,依次为[条件|]名称|值
			Condition	条件表达式(可选变量:Cond , Text , Value)
			注意:当条件不为空时Att中的第一个便为条件对比对象
			obj			下接列表对象
			selectV		需要选中项的值
*/
function VeryXML_WriteSelect_back(XmlURL,Tag,Att,Condition,obj,selectV){
	var ajax = new sack(XmlURL);
	ajax.method = "GET";
	ajax.setVar({
		"new":Math.random()
	});
	ajax.onCompletion = function (){
		Obj=$(obj);
		Atts=Att.split("|");
		var response  = ajax.responseXML;
		var Items=response.getElementsByTagName(Tag);
		var s_show=false;
		var Add=false;
		var Text,Value
		for(var i=0;i<Items.length;i++){
			if(Condition==""){
				s_show=true;
				Add=true;
				var Text=Items[i].getAttribute(Atts[0]);
				var Value=Items[i].getAttribute(Atts[1]);
			}else{
				var Cond=Items[i].getAttribute(Atts[0])
				var Text=Items[i].getAttribute(Atts[1]);
				var Value=Items[i].getAttribute(Atts[2]);
				
				if(eval(Condition)){s_show=true;Add=true;}else{Add=false;}
			}
			if(Add){Obj.options[Obj.length] = new Option(Text,Value);}
		}
		if(!s_show){Obj.options.length=0;}
		setSelect(obj,selectV);
	}
	ajax.send("");
}

function VeryXML_WriteSelect(XmlURL,Tag,Att,ToText,ToValue,Condition,obj,selectV){
	var ajax = new sack(XmlURL);
	ajax.method = "GET";
	ajax.setVar({
		"new":Math.random()
	});

	ajax.onCompletion = function (){
		var Obj=$(obj);
		Atts=Att.split("|");
		//alert(ajax.response)
		var response  = ajax.responseXML;
		var Items=response.getElementsByTagName(Tag);
		var s_show=true;
		//var Text,Value;
		//alert(Items.length)
		for(var i=0;i<Items.length;i++){
			var Add=true;
			if(Condition!=""){
				var sArray=new Array();
				for(var a=0;a<Atts.length;a++){
					if(Atts[a]){sArray.push(Items[i].getAttribute(Atts[a]));}	
				}
				//alert(sArray+" "+Condition+" "+eval(Condition))
				if(!eval(Condition)){Add=false;}
			}
			if(Add){Obj.options[Obj.length] = new Option(Items[i].getAttribute(ToText),Items[i].getAttribute(ToValue));}
		}
		if(!s_show){Obj.options.length=0;}
		setSelect(obj,selectV);
	}
	ajax.send("");
}

/*
函数名称:	VerySelect_Set
函数作用:	根据Select数据设置其他对象
参数说明:	obj			select对象
			ObjList		目标对象列表
			Space		使用的分隔符
			Type		值来源(可选项:text , value)
*/
function VerySelect_Set(obj,ObjList,Space,Type){
	var v,os,vs,t,o;
	v=new getSelect(obj).value	
	if(Type=="text"){v=new getSelect(obj).text	}
	if(!v){return false;}
	os=ObjList.split(Space);
	vs=v.split(Space);
	for(var i=0;i<os.length;i++){
		if(os[i]!=''){
			o=$$(os[i])[0]
			if(!o){o=$(os[i]);}
			t=o.type;
			switch(t){
				case "text"	:		o.value=vs[i];				break;
				case "hidden":		o.value=vs[i];				break;
				case "select-one":	setSelect(os[i],vs[i]);		break;
				case "radio":		setSelect(os[i],vs[i]);		break;
			}	
		}	
	}
}

