﻿//*******************JS修正IE浏览器忽略select option项disabled功能作用的BUG*************************//
window.onload = function() {
	if (document.getElementsByTagName) {
		var s = document.getElementsByTagName("select");

		if (s.length > 0) {
			window.select_current = new Array();

			for (var i=0, select; select = s[i]; i++) {
				var oldOnclickStr="";
				var oldOnchangeStr="";
				var str="";

				if(select.onclick){
					str=select.onclick.toString();
					//取标签中设定的onclick事件代码体
					oldOnclickStr=str.substring(str.indexOf("{")+1,str.lastIndexOf("}"));
				}
				if(select.onchange){
					str=select.onchange.toString();
					//取标签中设定的onchange事件代码体
					oldOnchangeStr=str.substring(str.indexOf("{")+1,str.lastIndexOf("}"));
				}
				if (select.multiple==true){	//多重选择时
					//select设为multiple属性时，其selectedIndex属性永远指向第一次选择的项目，要改用option项的selected属性判断选择项
					//select.onclick = function(){window.select_current[this.id] = this.selectedIndex;}
					select.onchange = new Function("select_restoreMultiple(this);"+oldOnchangeStr);
				}else{	//单项选择时
					select.onclick = new Function("window.select_current[this.id] = this.selectedIndex;"+oldOnclickStr);
					//select.onchange = function(){select_restore(this);}	//原方法，缺点是重设后无法使用对象标签中设定的动作
					select.onchange = new Function("select_restore(this);"+oldOnchangeStr);
				}
				select_emulate(select);
			}
		}
	}
}

function select_restore(e) {
	if (e.options[e.selectedIndex].disabled) {
		e.selectedIndex = window.select_current[e.id];
	}
}
function select_restoreMultiple(e){
	for(var i=0,option;option=e.options[i];i++){
		if (option.disabled){
			option.selected=false;
		}
	}
	e.blur();
}

function select_emulate(e) {
	for (var i=0, option; option = e.options[i]; i++) {
		if (option.disabled) {
			option.style.color = "graytext";
		}
		else {
			option.style.color = "menutext";
		}
	}
}
//function getSelectedIndex(e){
//	var option_current=new Array();	//保存选择的option数组
//	for(var i=0,option;option=e.options[i];i++){
//		if (option.selected==true){
//			option_current[option_current.length]=i;
//		}
//	}
//	return option_current;
//}

//********************END*************************//
