﻿// 向jQuery名称空间中添加函数。
jQuery.extend({
    /// 获取 HTTP 查询字符串变量
    /////////////////////////////////////////////////////////////////////
    getQueryString:function(key,def){ 
        var Result=null;
        var varArry=new Array();
        varArry=window.document.URL.toLowerCase().split(key+"=");
        if(varArry.length>1){
            varArry=varArry.reverse();        
            varArry=varArry[0].split("&");
            Result=$.trim(varArry[0]);
        }else{
            if(def!=null)Result=def;
        }
        return Result;
    },
    
    ShowDialog:function(url,width,height){
        if($.browser.msie){
            return showModalDialog(url, window, "dialogWidth:" + width + "px;dialogHeight:" + height + "px;help:no;scroll:no;status:no");
        }
        else if($.browser.mozilla){
            return window.open(url, "mcePopup", "top=200,left=200,scrollbars=no,dialog=yes,modal=yes,width=" + width + ",height=" + height + ",resizable=no"); 
        }
    },
    
    
    
    // 表单验证
    ValidateForm:function(form,mode){
        var objForm = form || event.srcElement;
        var count = objForm.elements.length;
        var ErrorMessage=new Array("以下原因导致提交失败:\t\t\t\t");
        var ErrorItem =new Array();
        ErrorItem[0] = document.forms[0];
        for(var i=0;i<count;i++){            
            with(objForm.elements[i]){                         
                var _dataType = getAttribute("dataType");
                if(typeof(_dataType) == "object" || typeof(_dataType) == "undefined")  continue;                
                if(getAttribute("require") == "false" && value == "") continue;
                switch(_dataType.toLowerCase()){
                    case "idcard" :
                    case "date" :
                    case "repeat" :
                    case "range" :
                    case "compare" :
                    case "custom" :
                    case "group" : 
                    case "limit" :
                    case "limitb" :                    
                    case "filter" :
//                        if(!eval(_dataType)) {
//                            ErrorItem[ErrorItem.length]=objForm.elements[i];
//                            ErrorMessage[ErrorMessage.length]=ErrorMessage.length + ":" + getAttribute("tip"); 
//                        }
                        break;
                    case "safestring" :  // 包含字母、数字和特殊符号的一种以上，不允许出现空间，至少需要6位的长度
                        if($.Validator["unSafe"].test(value)){
                            ErrorItem[ErrorItem.length]=objForm.elements[i];
                            ErrorMessage[ErrorMessage.length]=ErrorMessage.length + ":" + getAttribute("tip");
                        }
                        break;
                    default:
                        if(!$.Validator[_dataType.toLowerCase()].test(value)){
                            ErrorItem[ErrorItem.length]=objForm.elements[i];
                            ErrorMessage[ErrorMessage.length]=ErrorMessage.length + ":" + getAttribute("tip");                                                        
                        }
                        break;
                }
            }
        }        
        if (ErrorMessage.length>1){
            switch(mode){
                case 1:
                    alert(ErrorMessage.join("\n"));
                    ErrorItem[1].focus();
                    break;
                default:
                    break;
            }
            return false
        }
        else{
            return true;
        }
    },
    
    // 验证对象
    Validator: Object({
        require : /.+/,
        email : /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,
        phone : /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/,
        mobile : /^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$/,
        Url : /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/,
        idcard : "this.IsIdCard(value)",
        currency : /^\d+(\.\d+)?$/,
        number : /^\d+$/,
        zip : /^[1-9]\d{5}$/,
        qq : /^[1-9]\d{4,11}$/,
        integer : /^[-\+]?\d+$/,
        double : /^[-\+]?\d+(\.\d+)?$/,
        english : /^[A-Za-z]+$/,
        chinese :  /^[\u0391-\uFFE5]+$/,
        username : /^[a-z]\w{3,}$/i,
        unSafe : /^(([A-Z]*|[a-z]*|\d*|[-_\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\?\\\/\'\"]*)|.{0,5})$|\s/,
        isSafe : function(str){return !this.UnSafe.test(str);},
        safeString : "$.Validator['IsSafe'](value)",
        filter : "this.DoFilter(value, getAttribute('accept'))",
        limit : "this.limit(value.length,getAttribute('min'),  getAttribute('max'))",
        limitB : "this.limit(this.LenB(value), getAttribute('min'), getAttribute('max'))",
        date : "this.IsDate(value, getAttribute('min'), getAttribute('format'))",
        repeat : "value == document.getElementsByName(getAttribute('to'))[0].value",
        range : "getAttribute('min') < (value|0) && (value|0) < getAttribute('max')",
        compare : "this.compare(value,getAttribute('operator'),getAttribute('to'))",
        custom : "this.Exec(value, getAttribute('regexp'))",
        group : "this.MustChecked(getAttribute('name'), getAttribute('min'), getAttribute('max'))"
    }),
    
    // 初始化input or select对象
    // formElement=对象,value=赋值,defvalue=默认值
    setElementValue:function(formElement,value,defvalue){
		var Result=defvalue;
		var eleType=formElement.type
		if(value==""){
		    value=defvalue;
		}
		if(eleType==undefined) eleType=formElement[0].type
		
		//alert(eleType);
		switch(eleType){
			case "select-one":
			case "select-multiple":
				for(var i=0;i<formElement.length;i++){
					if(formElement.options[i].value==value){
						formElement.selectedIndex=i;
						Result=value;
					};
				}
				formElement.fireEvent("onchange");
				break;
			case "radio":
				for(var i=0;i<formElement.length;i++){
					if(formElement[i].value==value)	{		
						formElement[i].checked='on';
						formElement[i].fireEvent("onchange");
						Result=value;
					};
				};
				break;
		    case "checkbox":
				if(formElement.value==value){
				    formElement.checked='on';
				    formElement.fireEvent("onchange");
				    Result=value;
				};
				break;
			default:
				alert("");
				break;
				
		}
		return Result;
		
    },
    
    // checkbox批量选择,classname:类名(class)
    //////////////////////////////
    SelectAllCB:function(cobj,classname){
        $("."+classname).each(function(i){this.checked=cobj.checked;})
    },
    
    // 返回选中checkbox的值集合
    //////////////////////////////////
    getChecked:function(classname){
        var Result=new Array();
        $("."+classname).each(function(i){if(this.checked)Result.push(this.value);})
        return Result;
    },
    
    // 标签页切换
    //////////////////////////////////////////////
    slipTab:function(from,to,prefname,styleA,styleB,event,def){
        var objTab,objTabBox;
        for(var i=from;i<=to;i++){        
            objTab=$("#"+prefname+i);        
            objTabBox=$("#"+prefname+i+"_Box");
            objTab.attr("class",styleA);
            objTab.unbind();
            objTab.bind(event,function(){$.slipTab(from,to,prefname,styleA,styleB,event,this.id.substr(prefname.length,2))}); 
            objTabBox.hide();
            if(i==def){
                objTab.attr("class",styleB);
                objTabBox.show();
            }
        }    
        
    }
    
    
});
