﻿// 向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"); 
        }
    },
    
    /// 框架跳转
    /////////////////////////////////////////////////////////////////////
    FrameGoUrl:function(frame,url){
        eval("window.parent."+frame+".document.location='"+url+"'");
    },
    
    // 标签页切换
    // 应用:$.slipTab(1,2,"Tab","formTabA","formTabB","click",1);
    //////////////////////////////////////////////
    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=$("#"+prefname+i);
                objTabBox=$("#"+prefname+i+"_Box");
                objTab.attr("class",styleB);
                objTabBox.show();
            }
        }    
        
    },
    
    // 无限无逢循环滚动  例子:$.cycRoll("demo","left",10);
    // 参数:prefname:ID前缀名,direction:方向,s:速度
    // 规则:如prefname为"demo",则ID分别为:demo,demo1,demo2
    //      direction:有向上:"UP",向下:"DOWN",向左:"LEFT",向右:"RIGHT"
    cycRoll:function(prefname,direction,s){
    
        prefname=(prefname==null?"demo":prefname) //  默认:demo
        direction=(direction==null?"RIGHT":direction) //默认:向右
        s=(s==null?10:s) //默认值:10
    
        var tab=$("#"+prefname); 
        var tab1=$("#"+prefname+"1"); 
        var tab2=$("#"+prefname+"2");

        if(tab.length>=1 && tab1.length>=1 && tab2.length>=1){
            tab2.html(tab1.html());  //克隆HTML        
            var MyMar=setInterval(function(){$.Marquee[direction.toUpperCase()](tab[0],tab1[0],tab2[0])},s);
            // 绑定事件
            tab.bind("mouseover",function() {clearInterval(MyMar)}); //鼠标移上时清除定时器达到滚动停止的目的 
            tab.bind("mouseout",function() {MyMar=setInterval(function(){$.Marquee[direction.toUpperCase()](tab[0],tab1[0],tab2[0])},s)});//鼠标移开时重设定时器 
        }
    },
    
    // 滚动函数
    Marquee: Object({    
        UP :    function(obj,obj1,obj2){ if( obj2.offsetTop - obj.scrollTop <= 0 ){ obj.scrollTop -= obj1.offsetHeight; } else{ obj.scrollTop ++; };},
        DOWN :  function(obj,obj1,obj2){ if( obj1.offsetTop - obj.scrollTop >= 0 ){ obj.scrollTop += obj2.offsetHeight; } else{ obj.scrollTop --; };},
        LEFT :  function(obj,obj1,obj2){ if( obj2.offsetWidth - obj.scrollLeft <= 0 ){ obj.scrollLeft -= obj1.offsetWidth; } else{ obj.scrollLeft ++; };},
        RIGHT : function(obj,obj1,obj2){ if( obj.scrollLeft <= 0 ) {obj.scrollLeft += obj2.offsetWidth; } else{ obj.scrollLeft -- ;};}
    }),
    
    // 表单验证
    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" :
                        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/
    }),
    
    // 初始化input or select对象
    // formElement=对象,value=赋值,defvalue=默认值
    setElementValue:function(formElement,value,defvalue){
		var Result=defvalue;
		if(formElement!=null){
		    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("onclick");
						    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;
    }
    
    
});



Array.prototype.indexof = function(val){
    var Result=-1;
    for(var i = 0; i < this.length; i++){
        if (this[i].toString()==val.toString())
            Result = i;
    }
    return Result;
}