//初始化
if(typeof(dowell)=="undefined"){
    dowell={}
};

//命名空间
dowell.namespace=function(){
    var A=arguments,E=null,C,B,D;
    for(C=0;C<A.length;C=C+1){
        D=A[C].split(".");
        E=dowell;
        for(B=(D[0]=="dowell")?1:0;B<D.length;    B=B+1){
            E[D[B]]=E[D[B]]||{} ;
            E=E[D[B]]
        }
    }
    return E;
};
//验证操作空间
dowell.namespace("validate");
dowell.validate={
   //版本号
    version : "1.0",
    //返回字符串是否电子邮件
    isEmail :  function(str){
        return (/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/).test(str);
    },
    //返回字符串是否合法URL地址
    isUrl : function(str){
        return (/^(http|https|ftp):\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/).test(str);
    },
    //返回字符串是否http地址
    isHttp : function(str){
        return (/^(http|https|ftp):\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/).test(str);
    },
    //返回字符串是否整数,包含正整数和负整数
    isIntegral : function(str){
        return (/^(-|\+)?(\d)*$/).test(str);
    },
    //返回字符串是否浮点数
    isFloat : function(str){
        return (/^(-)?(\d)*(\.)?(\d)*$/).test(str);
    },
    //返回字符串是否汉字
    isChinese : function(str){
        return (/^[u4e00-u9fa5],{0,}$/).test(str);
    },
    //返回字符串是否普通电话、传真号码
    isTelephone : function(str){
        return (/^((d{3,4})|d{3,4}-)?d{7,8}$/).test(str);
    },
    //返回字符串是否手机号
    isMobile : function(str){
        return (/^1(3|5)\d{9}$/).test(str);
    },
    //返回字符串是否匹配腾讯QQ号
    isQQ : function(str){
        return (/^[1-9][0-9]{4,10}$/).test(str);
    },
    //返回字符串是否匹配中国邮政编码
    isPostCode : function(str){
        return (/^(\d){6}$/).test(str);
    },
    //返回字符串是否匹配身份证
    isIdenCardID : function(str){
        return (/^(\d{15}|\d{17}[x0-9])$/).test(str);
    },
    //返回字符串是否匹配时间格式
    isTime : function(str){
        return (/^(\d+):(\d{1,2}):(\d{1,2})$/).test(str);
    },
    //返回字符串是否匹配日期验证
    isDatetime : function(str){
            if(Date.parse(str)||Date.parseDate(str)){
            return true;
        }else{
            return false;
        }
    },
    //返回字符串是否合法文件名
    isFileName : function(str){
        return (/[\\\/\*\?\|:"<>]/).test(str);
    },
    // 判断是否是ip
    isIp : function(str){
        return (/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])(\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])){3}$/).test(str);
    },

    //判断输入是否是一个整数
     isValidPositiveInteger : function(str){
        var result=str.match(/^(-|\+)?\d+$/);
        if(result==null) return false;
        return true;
    },
    //判断输入是否是一个正整数
     isValidPositiveInteger : function(str){
        var result=str.match(/^\d+$/);
        if(result==null) return false;
        if(parseInt(str)>0) return true;
        return false;
    },
    //判断输入是否是一个负整数
     isValidNegativeInteger : function(str){
        var result=str.match(/^-\d+$/);
        if(result==null) return false;
        return true;
    },
     //判断输入是否是一个数字
     isValidNumber : function(str){
        return !isNaN(str);
    },
    //判断输入是否是一个由 A-Z / a-z 组成的字符串
     isValidLetters : function(str){
        var result=str.match(/^[a-zA-Z]+$/);
        if(result==null) return false;
        return true;
     },
     //判断输入是否是一个由 0-9 / A-Z / a-z 组成的字符串
     isValidAlphanumeric : function(str){
        var result = str.match(/^[a-zA-Z0-9]+$/);
        if(result==null) return false;
        return true;
     },
     //判断输入是否是一个由 0-9 组成的数字
    isValidDigits : function(str){
        var result = str.match(/^[1-9][0-9]+$/);
        if(result==null) return false;
        return true;
    },
    //判断输入是否是一个由 0-9 / A-Z / a-z / . / _ 组成的字符串
    isValidString : function(str){
        var result=str.match(/^[a-zA-Z0-9\s.\-_]+$/);
        if(result==null) return false;
        return true;
    },
    //判断输入是否是有效的短日期格式 - "YYYY-MM-DD"
    isValidDate : function(str){
        var result=str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
        if(result==null) return false;
        var d=new Date(result[1], result[3]-1, result[4]);
        return (d.getFullYear()==result[1]&&d.getMonth()+1==result[3]&&d.getDate()==result[4]);
    },
    //判断输入是否是有效的时间格式 - "HH:MM:SS"
    isValidTime : function(str){
        var resule=str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/);
        if (result==null) return false;
        if (result[1]>24 || result[3]>60 || result[4]>60) return false;
        return true;
    },
    //判断输入是否是有效的长日期格式 - "YYYY-MM-DD HH:MM:SS"
    isValidDatetime : function(str){
        var result=str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/);
        if(result==null) return false;
        var d= new Date(result[1], result[3]-1, result[4], result[5], result[6], result[7]);
        return (d.getFullYear()==result[1]&&(d.getMonth()+1)==result[3]&&d.getDate()==result[4]&&d.getHours()==result[5]&&d.getMinutes()==result[6]&&d.getSeconds()==result[7]);
    }
}
