
function CheckItem(inputObj, infoBoxObj, datatype, msg, required, maxlength, minlength, other) {
    this.inputObj = inputObj;
    this.infoBoxObj = infoBoxObj;
    this.datatype = datatype;
    this.msg = msg;
    this.required = required;
    this.maxlength = maxlength;
    this.minlength = minlength;
    this.other = other;
}

function CCheck() {
    //default classes for infobox
    this.infoboxOkClass = "OkMsg";
    this.infoboxWarningClass = "WarningMsg";
    this.infoboxErrorClass = "ErrorMsg";
    this.infoboxHintClass = "HintMsg";
    //default classes for input field
    this.inputWarningClass = "Warning";
    this.inputErrorClass = "Error";
    this.inputOkClass = "Ok";
    this.inputNormalClass = "Normal";
    this.items = new Array;
    this.itemsCount = 0;
    //检查所有验证项
    /////////////////////////////////////////////////////////////////
    //执行
}
//方法
CCheck.prototype.ValidateAll = function(evnt) {
    /*
    var obj;
    if (isIE())
    obj = event.srcElement;
    else
    obj = evnt.target;
    */

    var ret = true;
    var i;
    for (i = 0; i < objCheck.items.length; i++) {
        var obj, tmp;
        obj = objCheck.finalObj(objCheck.items[i])
        tmp = obj;
        var boolTmp = false;
        while (tmp &&tmp.style) {
            if (tmp.style.display == "none") {
                boolTmp = true;
                break;
            }
            tmp = tmp.parentNode;
        }
        if (boolTmp == false && obj !=undefined && obj != null && obj.style.display != "none") {
            var v;
            v = objCheck.validateValue(obj, objCheck.items[i].datatype);
            objCheck.showInfo(obj, v, true)
            if (v > 0)
                ret = false;
        }
    }
    //if(ret)form1.submit();
    return ret;
}

//添加验证项
CCheck.prototype.Add = function(inputObj, infoBoxObj, datatype, msg, required, maxlength, minlength, other) {
    this.items[this.itemsCount++] = new CheckItem(inputObj, infoBoxObj, datatype, msg, required, maxlength, minlength, other);
    this.initItem(this.itemsCount - 1);
    return;
}


//初始化所有验证项
/* 
CCheck.prototype.InitForm = function() {
var i;
for (i = 0; i < this.itemsCount; i++) {
this.initItem(i);
}
return;
}
*/


CCheck.prototype.initItem = function(i) {
    var inputObj = this.items[i].inputObj;
    var infoboxObj = this.items[i].infoBoxObj;
    var datatype = this.items[i].datatype;

    switch (datatype) {
        case "checkbox": //checkbox
        case "radio":
            this.initCheckBoxAndRadio(inputObj, i);
            break;
        case "file":
            this.initFile(inputObj, i);
            break;
        case "editor":
            this.initEditor(inputObj, i);
            break;
        default:
            this.initInput(inputObj, i, datatype); //text|password
            break;
    }

    if (infoboxObj.className != this.infoboxErrorClass) {
        infoboxObj.innerHTML = this.items[i].msg[0];
        infoboxObj.className = this.infoboxHintClass;
    }

}

CCheck.prototype.initFile = function(inputObj, i) {


    //如果多个文件时，加入添加按钮
    var maxlength;
    var other;
    maxlength = this.items[i].maxlength;
    if (maxlength !=undefined && Number(maxlength) > 1) {
        var str = '<a style="cursor:hand;" onclick="objCheck.AddFile(' + i + ');" onselectstart="return false;"><img  src="/editor_control/check/icoAddFl.gif" border="0">添加</a>';
        other = this.items[i].other;
        other[0].innerHTML = other[0].innerHTML + str;
    }

    inputObj.setAttribute("i", i);
    inputObj.onfocus = this.getFocus;
    inputObj.onblur = this.lostFocus;
    inputObj.onkeyup = this.keyup;

    inputObj.onkeypress = function() { return false; }
    inputObj.onpaste = function() { return false; }
    inputObj.onchange = this.fileChange;
    this.initStatus(inputObj);
}

var tableIndex = 3; //表开始序列
var tableRowIndex = 4; //表行开始序列
var filecount = 0;

CCheck.prototype.AddFile = function(i) {
    var element;
    var table, tr, td;
    var str;
    var row_index;
    var divInput;
    divInput = this.items[i].other[1];
    if (filecount + 1 >= this.items[i].maxlength) {
        alert("对不起，你上传的文件不能超过" + this.items[i].maxlength + "个。");
        return;
    }
    filecount++;

    table = this.items[i].other[tableIndex];
    if (table ==undefined) {
        var row_index;
        row_index = 0;
        table = document.createElement("table");
        this.items[i].other[tableIndex] = table;
        table.cellSpacing = 4;
        divInput.appendChild(table);
    }

    var j = this.items[i].other.length;
    row_index = table.rows.length;
    this.items[i].other[j] = row_index;
    tr = table.insertRow();
    td = tr.insertCell();
    str = "<input type='file' name='" + this.items[i].inputObj.name + "' style='font-size:12px;width:" + this.items[i].inputObj.style.width + ";' class='Normal'>";
    element = window.document.createElement(str);
    element.setAttribute("i", i);
    element.onfocus = this.getFocus;
    element.onblur = this.lostFocus;
    element.onkeyup = this.keyup;
    element.onkeypress = function() { return false; }
    element.onpaste = function() { return false; }
    element.onchange = this.fileChange;
    td.appendChild(element);
    str = "<input type='button' onclick='objCheck.RemoveFile(" + i + "," + j + ");' value='删除' >";
    element = window.document.createElement(str);
    td.appendChild(element);
    //td.innerHTML=str
}
/*
CCheck.prototype.LoadFile = function(i) {
var name, form;
name = this.items[i].inputObj.name;
form = this.items[i].inputObj.form;
var divInput;
divInput = this.items[i].other[1];
var str;
str = "";
var k;
for (k = tableIndex; k < this.items[i].other.length; k++) {
if (this.items[i].other[k] != null)
str = str + this.items[i].other[k];
}
divInput.innerHTML = str;



for (k = 0; k < form.length; k++) {
var element = form.elements[k];
var first = false;
if (element.type == "file" && element.name == name) {

element.setAttribute("i", i);
element.onfocus = this.getFocus;
element.onblur = this.lostFocus;
element.onkeyup = this.keyup;
element.onkeypress = function() { return false; }
element.onpaste = function() { return false; }
element.onchange = this.fileChange;

if (first == false) {
this.items[i].inputObj = element;
first = true;
}

}
}

}
*/

CCheck.prototype.RemoveFile = function(i, j) {
    var table;
    var rowindex;
    table = this.items[i].other[tableIndex];
    rowindex = this.items[i].other[j];
    table.deleteRow(rowindex);

    var k;
    for (k = tableRowIndex; k < this.items[i].other.length; k++) {
        if (this.items[i].other[k] > rowindex)
            this.items[i].other[k]--;
    }
    filecount--;
}

CCheck.prototype.initEditor = function(inputObj, i) {
    inputObj.setAttribute("i", i);
}

CCheck.prototype.initInput = function(inputObj, i, datatype) {
    inputObj.setAttribute("i", i);
    inputObj.onfocus = this.getFocus;
    inputObj.onblur = this.lostFocus;
    inputObj.onkeyup = this.keyup;
    switch (datatype) {
        case "same":
            inputObj.onpaste = this.paste;
            break;
        case "date":
        case "datetime":
            inputObj.onclick = this.dateClick;
            break;
        case "username":
        case "num":
        case "string":
            var maxlength = this.items[i].maxlength;
            if (maxlength !=undefined && maxlength != 0) {
                inputObj.maxLength = maxlength;
            }
            break;
    }


    this.initStatus(inputObj);
}

CCheck.prototype.initCheckBoxAndRadio = function(objs, i) {
    var ii;
    var elements_length;
    var obj;
    if (objs.length==undefined) {
        obj = objs;
        obj.setAttribute("i", i);
        obj.onfocus = this.getFocus;
        obj.onblur = this.lostFocus;
        if (this.items[i].other !=undefined)
            obj.onclick = this.items[i].other;
    }
    else {
        elements_length = objs.length;
        for (ii = 0; ii < elements_length; ii++) {
            obj = objs[ii];
            obj.setAttribute("i", i);
            obj.onfocus = this.getFocus;
            obj.onblur = this.lostFocus;
            if (this.items[i].other != undefined)
                obj.onclick = this.items[i].other;
        }
    }
}
//////////////////////////////////////////////////////////////////////////////////////	

//私有方法

//获取最终对象
CCheck.prototype.finalObj = function(item) {
    var ret;
    switch (item.datatype) {
        case "radio":
        case "checkbox":
            if(item.inputObj.length==undefined)
                ret = item.inputObj;
            else
               ret = item.inputObj[0];     
            break;
        default:
            ret = item.inputObj;
            break;
    }
    return ret;
}

/*
CCheck.prototype.setFiledWidth = function(obj) {
obj.style.width = (19 / 3) * obj.size + 11;
}
*/

CCheck.prototype.initStatus = function(obj) {
    //setFiledWidth(obj);
    if (this.IsRequired(obj))
        this.showStatus(obj, "warning");
    else
        this.showStatus(obj, "normal");
}

CCheck.prototype.IsRequired = function(obj) {
    var i;
    i = obj.getAttribute("i");
    var item = this.items[i];

    if (item.required)
        return true;
    return false;
}

CCheck.prototype.showStatus = function(obj, stat) {
    switch (stat) {
        case "ok":
            obj.className = this.inputOkClass;
            break;
        case "warning":
            obj.className = this.inputWarningClass;
            break;
        case "error":
            obj.className = this.inputErrorClass;
            break;
        case "normal":
            obj.className = this.inputNormalClass;
            break;
    }
}


CCheck.prototype.showInfo = function(obj, errorCode, forcible) {
    var i = obj.getAttribute("i");
    var infobox = this.items[i].infoBoxObj;

    if (infobox) {
        if (infobox.className != this.infoboxErrorClass || forcible) {
            if (errorCode == 0) {
                infobox.className = this.infoboxOkClass;
                infobox.innerHTML = this.items[i].msg[0]; // getErrorMsg(obj,errorCode);
            }
            if (errorCode > 0) {
                infobox.className = this.infoboxErrorClass;
                infobox.innerHTML = this.items[i].required == true ? "此项为必填项。<br>" + this.items[i].msg[errorCode] : this.items[i].msg[errorCode];
            }
            if (errorCode == -1) {
                infobox.className = this.infoboxHintClass;
            }
            if (errorCode == -2) {
                infobox.className = this.infoboxWarningClass;
                //infobox.innerHTML	=this.items[i].required==true?"此项为必填项。<br>" + this.items[i].msg[0]:this.items[i].msg[0];

            }
        }
    }
}

CCheck.prototype.getErrorMsg = function() { return; }




//事件
CCheck.prototype.getFocus = function(evnt) {
    var obj;
    if (isIE()) {
        obj = event.srcElement;
    } else {
        obj = evnt.target;
    }
    objCheck.showInfo(obj, -2);
}
CCheck.prototype.lostFocus = function(evnt) {
    var obj;
    if (isIE()) {
        obj = event.srcElement;
    } else {
        obj = evnt.target;
    }
    objCheck.showInfo(obj, -1);
}

CCheck.prototype.keyup = function(evnt) {
    var obj, errorCode;
    if (isIE()) {
        obj = event.srcElement;
    }
    else {
        obj = evnt.target;
    }
    errorCode = objCheck.validateValue(obj);
    objCheck.showStatusFormErrorCode(obj, errorCode);
}

CCheck.prototype.fileChange = function(evnt) {
    var obj, errorCode;
    if (isIE()) {
        obj = event.srcElement;
    }
    else {
        obj = evnt.target;
    }
    errorCode = objCheck.validateValue(obj);
    objCheck.showStatusFormErrorCode(obj, errorCode);

    var i;
    var infoBox, msg;
    i = obj.getAttribute("i");
    infoBox = objCheck.items[i].infoBoxObj;
    msg = objCheck.items[i].msg;

    if (obj.value != "") {
        var patrn = /\.(jpg|gif|bmp)/;

        if (patrn.exec(obj.value))
            infoBox.innerHTML = "<img height=64 border=0 src='" + obj.value + "'><br>" + msg[0];
        else
            infoBox.innerHTML = msg[0];
    }

}


CCheck.prototype.paste = function(evnt) {
    return false;
}



CCheck.prototype.dateClick = function(evnt) {
    var obj, errorCode;
    if (isIE()) {
        obj = event.srcElement;
    }
    else {
        obj = evnt.target;
    }


    var showstyle;
    showstyle = 'dialogLeft:' + window.event.x + ';dialogTop:' + window.event.y + ';dialogWidth:150px;dialogHeight:220px;status:no;scroll=no;';
    var ret;
    ret = window.showModalDialog('/editor_control/Dialog/selectdateEx.htm', '', showstyle);
    if (ret !=undefined&& ret != '') {
        obj.value = ret;
        errorCode = objCheck.validateValue(obj);
        objCheck.showStatusFormErrorCode(obj, errorCode);
    }

}
//////////////////////////////////////////////////////////






CCheck.prototype.showStatusFormErrorCode = function(obj, errorCode) {
    if (errorCode == 0) {
        this.showStatus(obj, "ok");
    }
    if (errorCode >= 1) {
        this.showStatus(obj, "error");
    }
    if (errorCode < 0) {
        this.showStatus(obj, "normal");
    }

}


CCheck.prototype.validateValue = function(obj, type) {
    //switcher
    var errorCode = -1;
    var i = obj.getAttribute("i");
    var datatype;
    if (type ==undefined)
        datatype = this.items[i].datatype;
    else
        datatype = type;

    switch (datatype) {
        case "username":
            errorCode = this.validateUsername(obj);
            break;
        case "money":
            errorCode = this.validateMoney(obj);
            break;
        case "email":
            errorCode = this.validateEmail(obj);
            break;
        case "same":
            errorCode = this.validateSame(obj);
            break;
        case "mobile":
            errorCode = this.validateMobile(obj);
            break;
        case "idcard":
            errorCode = this.validateIdCard(obj);
            break;
        case "areacode":
            errorCode = this.validateAreaCode(obj);
            break;
        case "postalcode":
            errorCode = this.validatePostalCode(obj);
            break;
        case "editor":
            errorCode = this.validateEditor(obj);
            break;
        case "text":
        case "string":
        case "password":
            errorCode = this.validateString(obj);
            break;
        case "num":
            errorCode = this.validateNum(obj);
            break;
        case "date":
        case "time":
        case "datetime":
            errorCode = this.validateDateTime(obj, datatype);
            break;
        case "radio":
        case "checkbox":
            errorCode = this.validateCheckboxAndRadio(obj);
            break;
        case "select":
        case "area":
            errorCode = this.validateSelect(obj);
            break;
        case "file":
            errorCode = this.validateFile(obj);
            break;
        default:
            errorCode = -1;
            break;
    }
    return errorCode;
}

CCheck.prototype.validateUsername = function(obj) {
    var str = obj.value;
    var maxlength, minlength;
    var i = obj.getAttribute("i");
    maxlength = this.items[i].maxlength;
    minlength = this.items[i].minlength;
    var patn = /^[0-9a-zA-Z]*$/;
    if (patn.test(str)) {
        if (checkByteLength(str, maxlength, minlength)) return 0;
    }
    return 1;
}

CCheck.prototype.validateIdCard = function(obj) {

    var str = obj.value;
    var required;
    var i = obj.getAttribute("i");
    required = this.items[i].required;
    if (required == false && str == "")
        return -1;
    if (required == true && str == "")
        return 1;

    var len = str.length, re;
    if (len == 15)
        re = new RegExp(/^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{3})$/);
    else if (len == 18)
        re = new RegExp(/^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\d)$/);
    else
        return 1;

    var arr = str.match(re);
    if (arr != null) {
        var strDate;
        var y, m, d;
        if (len == 15) {
            y = "19" + arr[3];
            m = arr[4];
            d = arr[5];
        }
        else {
            y = "19" + arr[3];
            m = arr[4];
            d = arr[5];
        }

        strDate = y + "-" + m + "-" + d;
        if (IsDate(strDate))
            return 0;
        else
            return 1;
    }
    return 1;
}

CCheck.prototype.validateEmail = function(obj) {
    obj.value = obj.value.trim();
    var str = obj.value
    var required;
    var i;
    i = obj.getAttribute("i");
    required = this.items[i].required;
    if (required == false && str.length == 0)
        return -1;

    str = quanjiao2Banjiao(str);
    var patn = /^[_a-zA-Z0-9\-]+(\.[_a-zA-Z0-9\-]*)*@[a-zA-Z0-9\-]+([\.][a-zA-Z0-9\-]+)+$/;
    if (patn.test(str)) {
        return 0;
    }
    else {
        return 1; //incorrect format
    }
}

CCheck.prototype.validateMobile = function(obj) {
    obj.value = obj.value.trim();
    var str = obj.value;
    var required;
    var i;
    i = obj.getAttribute("i");
    required = this.items[i].required;
    if (required == false && str.length == 0)
        return -1;

    var patn = /^0{0,1}1\d{10}$/;
    if (patn.test(str)) return 0;
    return 1;
}

CCheck.prototype.validateSame = function(obj) {
    var source, source_datatype;
    var i;
    i = obj.getAttribute("i");
    source = this.items[i].other;
    i = source.getAttribute("i");
    source_datatype = this.items[i].datatype;

    if (obj.value != source.value)
        return 1
    else
        return this.validateValue(obj, source_datatype);

}

CCheck.prototype.validatePostalCode = function(obj) {
    var str = obj.value;
    var required;
    var i = obj.getAttribute("i");
    required = this.items[i].required;
    if (required == false && str == "")
        return -1;
    if (required == true && str == "")
        return 1;

    if (IsPostalCode(str))
        return 0;
    return 1;
}


CCheck.prototype.validateAreaCode = function(obj) {
    var str = obj.value;
    var required;
    var i = obj.getAttribute("i");
    required = this.items[i].required;
    if (required == false && str == "")
        return -1;
    if (required == true && str == "")
        return 1;

    if (IsAreaCode(str))
        return 0;
    return 1;
}



////////////////////////////////////////////////////////////////////////////////////////

CCheck.prototype.validateMoney = function(obj) {
    var str = obj.value;
    var required, maxlength, minlength;
    var i;
    i = obj.getAttribute("i");
    required = this.items[i].required;
    //maxlength=this.items[i].maxlength;
    //minlength=this.items[i].minlength;

    if (required == false && str.length == 0)
        return -1;


    var patn;
    patn = new RegExp("^\\d{1,8}(\\.\\d{1,2}){0,1}$");
    if (patn.test(str)) return 0;
    return 1;
}


CCheck.prototype.validateEditor = function(obj) {
    var targetObj = window.document.getElementById("Form" + obj.id);
    var targetObj = targetObj.document.frames.item(0);
    var str = targetObj.eWebEditor.document.body.innerText;
    var required, maxlength, minlength;
    var i;
    i = obj.getAttribute("i");
    required = this.items[i].required;
    maxlength = this.items[i].maxlength;
    minlength = this.items[i].minlength;

    if (required == false && str.length == 0)
        return -1;

    if (required == true && str.length == 0)
        return 1;


    if (maxlength ==undefined|| maxlength == 0)
        return 0;

    var ret;

    var len = str.length;
    if (len > maxlength || len < minlength)
        return 1;
    return 0;
}

CCheck.prototype.validateString = function(obj) {
    var str = obj.value;
    var required, maxlength, minlength;
    var i;
    i = obj.getAttribute("i");
    required = this.items[i].required;
    maxlength = this.items[i].maxlength;
    minlength = this.items[i].minlength;

    if (required == false && str.length == 0)
        return -1;

    if (required == true && str.length == 0)
        return 1;


    if (maxlength ==undefined|| maxlength == 0)
        return 0;

    var ret;
    ret = checkByteLength(str, maxlength, minlength);
    if (ret) return 0;
    return 1;

}


CCheck.prototype.validateNum = function(obj) {
    var str = obj.value;
    var required, maxlength, minlength;
    var i;
    i = obj.getAttribute("i");
    required = this.items[i].required;
    maxlength = this.items[i].maxlength;
    minlength = this.items[i].minlength;

    if (required == false && str.length == 0)
        return -1;

    var patn;
    if (maxlength ==undefined|| maxlength == 0)
        patn = new RegExp("^\\d+$");
    else
        patn = new RegExp("^\\d{" + minlength + "," + maxlength + "}$");
    if (patn.test(str)) return 0;
    return 1;
}

CCheck.prototype.validateDateTime = function(obj, type) {
    if (type ==undefined|| type == "date")
        obj.value = obj.value.trim();

    var str = obj.value;
    var required;
    var i;
    i = obj.getAttribute("i");
    required = this.items[i].required;
    if (required == false && str.length == 0)
        return -1;



    var tempArray;
    tempArray = str.split(" ");

    switch (type) {
        case "time":
            if (IsTime(tempArray[0]))
                return 0;
            else
                return 1;
            break;
        case "datetime":
            switch (tempArray.length) {
                case 1:
                    if (IsDate(tempArray[0]))
                        return 0;
                    else
                        return 1;
                    break;
                case 2:
                    if (IsDate(tempArray[0]) && IsTime(tempArray[1]))
                        return 0;
                    else
                        return 1;
                    break;
                default:
                    return 1;
            }
            break;
        default:
            if (IsDate(tempArray[0]))
                return 0;
            else
                return 1;
            break;
    }
}

/////////////////////////////////////////////////////////////


CCheck.prototype.validateSelect = function(obj) {
    var i;
    i = obj.getAttribute("i");
    var required, maxlength, minlength;
    var count;

    required = this.items[i].required;

    if (required == false && obj.value == "")
        return -1;

    if (required == true && obj.value == "")
        return 1;


    maxlength = this.items[i].maxlength;
    if (maxlength ==undefined|| maxlength == 0)
        return 0;

    minlength = this.items[i].minlength;

    count = 0;

    for (i = 0; i < obj.options.length; i++) {
        if (obj.options[i].selected)
            count++;
    }

    if (maxlength < count || count < minlength)
        return 1;

    return 0;


}


CCheck.prototype.validateCheckboxAndRadio = function(o) {
    var objs;
    var count;
    var required, maxlength, minlength;
    var i;
    i = o.getAttribute("i");
    objs = this.items[i].inputObj;
    required = this.items[i].required;
    maxlength = this.items[i].maxlength;
    minlength = this.items[i].minlength;
    count = 0;
    
    if(objs.length==undefined)
    {
        if (objs.checked)
            count++;
    }
    else {
        var obj;
        var sum_count = objs.length;
        for (i = 0; i < sum_count; i++) {
            obj = objs[i];
            if (obj.checked)
                count++;
        }
    }

    if (required == false && count == 0)
        return -1;


    if (required == true && count == 0)
        return 1;


    if (maxlength ==undefined|| maxlength == 0)
        return 0;

    if (minlength ==undefined|| minlength == 0)
        return 0;

    if (maxlength < count || count < minlength)
        return 1;

    return 0;
}

CCheck.prototype.validateFile = function(obj) {
    var required;
    var i;
    i = obj.getAttribute("i");
    required = this.items[i].required;

    if (required == false && obj.value == "")
        return -1;

    if (required == true && obj.value == "")
        return 1;

    if (!IsExt(obj.value, this.items[i].other[2]))
        return 2;
    return 0;

}
//--CCheck()--结束






//-----------------通用-----------------------------
function isIE() {
    if (document.all)
        return true;
    return false;
}


String.prototype.trim = function() {
    return this.replace(/(^\s*)|(\s*$)/g, "");
}


function checkByteLength(str, maxlen, minlen) {
    if (str == null) return false;
    var l = str.length;
    var blen = 0;
    for (i = 0; i < l; i++) {
        if ((str.charCodeAt(i) & 0xff00) != 0) {
            blen++;
        }
        blen++;
    }
    if (blen > maxlen || blen < minlen) {
        return false;
    }
    return true;
}

function quanjiao2Banjiao(str) {
    var i;
    var result = '';
    for (i = 0; i < str.length; i++) {
        code = str.charCodeAt(i);
        if (code >= 65281 && code < 65373) {
            result += String.fromCharCode(str.charCodeAt(i) - 65248);
        }
        else {
            result += str.charAt(i);
        }
    }
    return result;
}

function IsTime(str) {
    var patn;
    patn = new RegExp("^\\d{1,2}:\\d{1,2}:\\d{1,2}$");
    if (!patn.test(str)) return false;

    var tempArray;
    tempArray = str.split(":");
    var h, m, s;
    h = Number(tempArray[0]);
    m = Number(tempArray[1]);
    s = Number(tempArray[2]);

    if (h > 23)
        return false;

    if (m > 59)
        return false;

    if (s > 59)
        return false;


    return true;

}

function IsDate(str) {
    var patn;
    patn = new RegExp("^\\d{4}-\\d{1,2}-\\d{1,2}$");
    if (!patn.test(str)) return false;

    var tempArray;
    tempArray = str.split("-");
    var y, m, d;
    y = Number(tempArray[0]);
    m = Number(tempArray[1]);
    d = Number(tempArray[2]);

    if (y < 1900) {
        return false;
    }

    switch (m) {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            if (d > 31)
                return false;
            else
                return true;
            break;
        case 2:
            if ((y % 4 == 0 && d > 29) || ((y % 4 != 0 && d > 28)))
                return false;
            else
                return true;
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            if (d > 30)
                return false;
            else
                return true;
            break;
        default:
            return false;
    }
}


//校验邮政编码
function IsPostalCode(s) {
    //var patrn=/^[1-9]{1}(\d){5}$/;
    var patrn = /^(\d)+$/;
    if (!patrn.exec(s)) return false
    return true
}

function IsAreaCode(s) {
    //var patrn=/^(\d){3,4}$/;
    var patrn = /^(\d)+$/;
    if (!patrn.exec(s)) return false
    return true
}

// 是否有效的扩展名
function IsExt(url, opt) {
    var sTemp;
    var b = false;
    var s = opt.toUpperCase().split("|");
    for (var i = 0; i < s.length; i++) {
        sTemp = url.substr(url.length - s[i].length - 1);
        sTemp = sTemp.toUpperCase();
        s[i] = "." + s[i];
        if (s[i] == sTemp) {
            b = true;
            break;
        }
    }
    return b;
}



//---------------------------------------------------