//作者：limei   MSN：limei@letv.com

function addEvent(o,s,fun){o.attachEvent?o.attachEvent("on"+s,fun):o.addEventListener(s,fun,false);}//创建事件
function delEvent(o,s,fun){o.detachEvent?o.detachEvent('on'+s,fun):o.removeEventListener(s,fun,false);}//删除事件
function $f(id,tag){var re=id&&typeof id!="string"?id:document.getElementById(id)||document;if(!tag){return re;}else{return re.getElementsByTagName(tag);}}//表单选择器

//注册ID下所有表单效果
function regForm(id){
	var oselect=$f(id,"select");
	for(var i=0;i<oselect.length;i++){regselects(oselect[i]);} //执行下拉列表函数
	hidselect(oselect); //执行点击body区域隐藏所有下拉列表函数
}

//文本框初始文字
function startext(id,otext){
	var o=$f(id);
	this.value=otext;
	o.onclick=function(){this.focus();if(this.value==otext){this.value=""}};
	o.onmouseout=function(){if(this.value==""){this.value=otext}}
	if($f(o).value==otext){$f(o).value=""}else{$f(o).value=otext}
}

//浮动层
function showlayer(id){
	var layerdl=$f(id,"dl")[0],layerdd=$f(id,"dd")[0],layerdt=$f(id,"dt")[0];
	layerdd.style.display="none";
	addEvent(layerdt,"mouseover",function(){if(layerdd.style.display=="none"){layerdd.style.display="block";layerdd.style.width=(layerdd.offsetWidth)+"px";}else{layerdd.style.display="none";}});
	addEvent(layerdt,"mouseover",function(){layerdt.className="dt2";});
	addEvent(layerdl,"mouseout",function(){layerdd.style.display="none";layerdt.className="";});
	addEvent(layerdd,"mouseover",function(){layerdd.style.display="block";layerdt.className="dt2";});
}

//浮动层 me 0304
function showlayer0304(id){
	var layer0304dl=$f(id,"dl")[0],layer0304dd=$f(id,"dd")[0],layer0304dt=$f(id,"dt")[0];
	layer0304dd.style.display="none";
	addEvent(layer0304dt,"mouseover",function(){if(layer0304dd.style.display=="none"){layer0304dd.style.display="block";layer0304dd.style.width=(layer0304dd.offsetWidth)+"px";}else{layer0304dd.style.display="none";}});
	addEvent(layer0304dt,"mouseover",function(){layer0304dt.className="dt2";});
	addEvent(layer0304dl,"mouseout",function(){layer0304dd.style.display="none";layer0304dt.className="";});
	addEvent(layer0304dd,"mouseover",function(){layer0304dd.style.display="block";layer0304dt.className="dt20304";});
}


//下拉列表函数
function regselects(o){
	var select_div = document.createElement('div'); //创建DIV
	select_div.id = "select_" + o.name;
	select_div.className = 'select';
	select_div.style.width = (o.offsetWidth-21)+"px";
	select_div.innerHTML="<div class='select_tit' id='select_tit_"+o.name+"' style='width:"+(o.offsetWidth-26)+"px'></div><ul id='select_ul_"+o.name+"' style='width:"+o.offsetWidth+"px'></ul>"; 
	o.parentNode.insertBefore(select_div,o); //在当前select前插入此DIV列表
	soption(o); //执行创建LI列表函数
	mouseselects(o); //执行select事件函数
	ullist(o); //列表事件函数
	o.style.display = 'none'; //隐藏全部真实select
}

//创建LI列表函数(读取option选项列表)
function soption(o){
	options = o.getElementsByTagName('option'); //取得真实下拉列表集合
	var select_li="";
	for(var n=0;n<options.length;n++){
		option_selected = o.options[n].selected; //读取真实下拉列表当前选项
		if(option_selected){ //设置默认选项
			select_li+="<li class='show' id='open' title='"+o.options[n].text+"'>"+o.options[n].text+"</li>";
			$f("select_" + o.name,"div")[0].innerHTML=o.options[n].text;
		}else{select_li+="<li title='"+o.options[n].text+"'>"+o.options[n].text+"</li>";}
	}
	$f("select_" + o.name,"ul")[0].innerHTML=select_li; //在UL中插入所有li列表
}

//select事件函数
function mouseselects(o){
	var select = $f("select_" + o.name);
	var select_ul = $f("select_" + o.name,"ul")[0];
	addEvent(select,"mouseover",function(){select.className="select select_s2";});
	addEvent(select,"mousedown",function(e){ulshow();select.className="select select_s3";(document.all)?window.event.cancelBubble=true:e.stopPropagation();});
	addEvent(select,"mouseup",function(){select.className="select select_s2";});
	addEvent(select,"mouseout",function(){select.className="select";});
	addEvent(select_ul,"mousedown",function(){ulshow();});
	function ulshow(){//列表显示隐藏
		var hselect=$f(document,"select");
		if(select_ul.className==""){
			for(var i=0;i<hselect.length;i++){ //隐藏所有下拉列表
				$f('select_ul_' + hselect[i].name).style.display="none";
				$f('select_ul_' + hselect[i].name).className="";
			}
			select_ul.style.display="block"; //显示当前下拉列表
			($f(select_ul,"li").length>=10)?select_ul.className="showh":select_ul.className="show"; //列表大于10条则显示滚动条
		}else{
			select_ul.className="";select_ul.style.display="none"; 
		}
	}
}

//列表事件函数
function ullist(o){
	var listli=$f("select_" + o.name,"li");
	for(var li=0;li<listli.length;li++){downlist(li);}
	function downlist(li){
		listli[li].onmouseover=function(){this.className="show";};
		listli[li].onmouseout=function(){this.className="";};
		listli[li].onmousedown=function(e){
			$f("select_" + o.name,"div")[0].innerHTML=this.innerHTML; //改变标题显示内容
			o.options[li].selected = 'selected'; //将真实的下拉列表选中
			for(var m=0;m<listli.length;m++){listli[m].className="";listli[m].id="";this.id="open";}
			$f("select_ul_"+o.name).className="";$f("select_ul_"+o.name).style.display="none"; //隐藏UL列表
			$f("select_"+ o.name).className="select";
			(document.all)?window.event.cancelBubble =true:e.stopPropagation(); //冒泡处理
			//联动处理
			var change=o.getAttribute("change");
			var nextid=o.getAttribute("nextid");
			if(change!=null){
				eval(change);
				soption($f(nextid)); //获取联动下级的id，并执行创建LI列表函数
				ullist($f(nextid)); //列表事件函数
			}
		};
	}
}

//点击body区域隐藏所有下拉列表函数
function hidselect(o){
	bodymouse = document.getElementsByTagName("body")[0];
	alldiv = document.getElementsByTagName("div");
	bodymouse.onmousedown=function(){
		for(var i=0;i<o.length;i++){
			$f('select_' + o[i].name).className="select";
			$f('select_ul_' + o[i].name).className="";
			$f('select_ul_' + o[i].name).style.display="none";
		}
	};
	//执行所有浮动层 属性名必须为：yokalayer
	for(var d=0;d<alldiv.length;d++){
		var divname=alldiv[d].getAttribute("name");
		if(divname=="yokalayer"){$f(alldiv[d].id,"dd")[0].style.display="none";showlayer(alldiv[d].id);}
	}
}


addEvent(window,"load",function(){regForm(document);});
