function $g(e) {return document.getElementById(e);}

document.getElementsByClassName = function(cl) {
    var retnode = [];
    var myclass = new RegExp('\\b'+cl+'\\b');
    var elem = this.getElementsByTagName('*');
    for (var i = 0; i < elem.length; i++) {
        var classes = elem[i].className;
        if (myclass.test(classes)) retnode.push(elem[i]);
    }
    return retnode;
}

function resizeImage(obj, MaxW, MaxH){
	var imageObject = obj;
	var state = imageObject.readyState;
	if(state!='complete') {
		setTimeout('resizeImage("+imageObject+","+MaxW+","+MaxH+")',50);
		return;
	}
	var oldImage = new Image();
	oldImage.src = imageObject.src;
	var dW = oldImage.width; 
	var dH = oldImage.height;
	if(dW>MaxW || dH>MaxH){
		a = dW/MaxW; b = dH/MaxH;
		if( b>a ) a = b;
		dW = dW/a; dH = dH/a;
	}
	if(dW > 0 && dH > 0) {
		imageObject.width = dW;
		imageObject.height = dH;
	}
}

var regexEnum = 
{
	intege:"^-?[1-9]\\d*$",					//整数
	intege1:"^[1-9]\\d*$",					//正整数
	intege2:"^-[1-9]\\d*$",					//负整数
	num:"^([+-]?)\\d*\\.?\\d+$",			//数字
	num1:"^[1-9]\\d*|0$",					//正数（正整数 + 0）
	num2:"^-[1-9]\\d*|0$",					//负数（负整数 + 0）
	decmal:"^([+-]?)\\d*\\.\\d+$",			//浮点数
	decmal1:"^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$",　　	//正浮点数
	decmal2:"^-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*)$",　 //负浮点数
	decmal3:"^-?([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0)$",　 //浮点数
	decmal4:"^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0$",　　 //非负浮点数（正浮点数 + 0）
	decmal5:"^(-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*))|0?.0+|0$",　　//非正浮点数（负浮点数 + 0）

	email:"^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$", //邮件
	color:"^[a-fA-F0-9]{6}$",				//颜色
	url:"^http[s]?:\\/\\/([\\w-]+\\.)+[\\w-]+([\\w-./?%&=]*)?$",	//url
	chinese:"^[\\u4E00-\\u9FA5\\uF900-\\uFA2D]+$",					//仅中文
	ascii:"^[\\x00-\\xFF]+$",				//仅ACSII字符
	zipcode:"^\\d{6}$",						//邮编
	mobile:"^(13|15)[0-9]{9}$",				//手机
	ip4:"^(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)$",	//ip地址
	notempty:"^\\S+$",						//非空
	picture:"(.*)\\.(jpg|bmp|gif|ico|pcx|jpeg|tif|png|raw|tga)$",	//图片
	rar:"(.*)\\.(rar|zip|7zip|tgz)$",								//压缩文件
	date:"^\\d{4}(\\-|\\/|\.)\\d{1,2}\\1\\d{1,2}$",					//日期
	qq:"^[1-9]*[1-9][0-9]*$",				//QQ号码
	tel:"^(([0\\+]\\d{2,3}-)?(0\\d{2,3})-)?(\\d{7,8})(-(\\d{3,}))?$",	//电话号码的函数(包括验证国内区号,国际区号,分机号)
	username:"^\\w+$",						//用来用户注册。匹配由数字、26个英文字母或者下划线组成的字符串
	letter:"^[A-Za-z]+$",					//字母
	letter_u:"^[A-Z]+$",					//大写字母
	letter_l:"^[a-z]+$",					//小写字母
	idcard:"^[1-9]([0-9]{14}|[0-9]{17})$"	//身份证
}

//获取指定字符串的长度
function getLength(obj){
    var srcjo = $(obj);
    var sType = srcjo.get(0).type;
    var len = 0;
    switch(sType)
	{
		case "text":
		case "hidden":
		case "password":
		case "textarea":
		case "file":
	        var val = srcjo.val();
			for (var i = 0; i < val.length; i++) 
            {
		        if (val.charCodeAt(i) >= 0x4e00 && val.charCodeAt(i) <= 0x9fa5){ 
			        len += 2;
		        }else {
			        len++;
				}
	        }
	        break;
		case "checkbox":
		case "radio": 
			len = $("input[type="+sType+"][name="+srcjo.attr("name")+"]:checked").length;
			break;
	    case "select-one":
		case "select-multiple":
			len = $("select[name="+srcjo.get(0).name+"] option:selected").length;
			break;
    }
	return len;
}

function checkform(formobj){
	var ret=false;
	var condcnt=0,passcnt=0;
	$(formobj).find("*[name]").each(function(){
		if(typeof($(this).attr("empty"))!='undefined'){
			if($(this).attr("empty")=="false"){
				condcnt++;
				var pass=true;
				var len=getLength(this);
				if(this.type=="select-one"){
					var val=$.trim($(this).val());
					pass=val.length>0?true:false;
				}
				if(len>0 && pass){
					if($(this).attr("datatype")){
						// 验证数据类型
						regexpress=eval("regexEnum."+$(this).attr("datatype"));
						if(!(regexpress==undefined || regexpress=="")){
							var exp = new RegExp(regexpress,"i");
							if (exp.test(val)){
								passcnt++;
							}else{
								alert($(this).attr("ctlname")+"输入格式不正确，请检查!");
								// 当为隐藏字段时，focus事件不存在
								if(this.type!="hidden") {
									// 当验证项目display为none时，IE下出错导致表单验证未通过情况下被提交，这里做错误捕获
									try{this.focus();}catch(e){};
								}
								return false;
							}
						}else{
							// 未定义的数据类型，保留用作自定义验证规则部分
						}
					}else{
						passcnt++;
					}
				}else{
					alert($(this).attr("ctlname")+"不能为空!"); if(this.type!="hidden") { try{this.focus();}catch(e){};} return false;
				}
				if($(this).attr("eqctl")){
					condcnt++;
					if($(this).val()==$("#"+$(this).attr("eqctl")).val()){
						passcnt++;
					}else{
						alert($("#"+$(this).attr("eqctl")).attr("ctlname")+"与"+$(this).attr("ctlname")+"输入不一致!"); if(this.type!="hidden") { try{this.focus();}catch(e){};}; return false;
					}
				}
			}
		}
	});
	if(condcnt==passcnt) { ret=true;}
	return ret;
}

function AddFavorite(sURL, sTitle){
	try{
		window.external.addFavorite(sURL, sTitle);
	}catch (e){
		try{
			window.sidebar.addPanel(sTitle, sURL, "");
		}catch (e){
			alert("加入收藏失败，请使用Ctrl+D进行添加");
		}
	}
}


/*
通用三级联动说明
参数配置如下，配置select的三个ID和默认值就行，无默认值填写为null
var defaults = {
	s1:'Select1',
	s2:'Select2',
	s3:'Select3',
	v1:null,
	v2:null,
	v3:null
};
*/

function threeSelect(config){
	var $s1=$("#"+config.s1);
	var $s2=$("#"+config.s2);
	var $s3=$("#"+config.s3);
	var v1=config.v1?config.v1:null;
	var v2=config.v2?config.v2:null;
	var v3=config.v3?config.v3:null;
	$.each(threeSelectData,function(k,v){
		appendOptionTo($s1,k,v.val,v1);
	});
	$s1.change(function(){
		$s2.html("");
		$s3.html("");
		if(this.selectedIndex==-1) return;
		var s1_curr_val = this.options[this.selectedIndex].value;
		$.each(threeSelectData,function(k,v){
			if(s1_curr_val==v.val){
				if(v.items){
					$.each(v.items,function(k,v){
						appendOptionTo($s2,k,v.val,v2);
					});
				}
			}
		});
		if($s2[0].options.length==0){appendOptionTo($s2,"...","",v2);}
		$s2.change();
	}).change();
	$s2.change(function(){
		$s3.html("");
		var s1_curr_val = $s1[0].options[$s1[0].selectedIndex].value;
		if(this.selectedIndex==-1) return;
		var s2_curr_val = this.options[this.selectedIndex].value;
		$.each(threeSelectData,function(k,v){
			if(s1_curr_val==v.val){
				if(v.items){
					$.each(v.items,function(k,v){
						if(s2_curr_val==v.val){
							$.each(v.items,function(k,v){
								appendOptionTo($s3,k,v,v3);
							});
						}
					});
					if($s3[0].options.length==0){appendOptionTo($s3,"...","",v3);}
				}
			}
		});
	}).change();
	function appendOptionTo($o,k,v,d){
		var $opt=$("<option>").text(k).val(v);
		if(v==d){$opt.attr("selected", "selected")}
		$opt.appendTo($o);
	}
}

function IsNumeric(sText){
	var ValidChars = "0123456789.";
	var IsNumber=true;
	var Char;
	for (i = 0; i < sText.length && IsNumber == true; i++) { 
		Char = sText.charAt(i); 
		if (ValidChars.indexOf(Char) == -1) {
			IsNumber = false;
		}
	}
	return IsNumber;
}