﻿// JScript 文件
function useWatermark(object) {//水印
    try {
        object.useWatermark();
        //$("#DetailFrame").useWatermark();
    }
    catch (e) {
        if (object.contents().find("#watermark").html()) return;
        object.contents().find("body").append("<div id='watermark'></div>");
        var waterobj = object.contents().find("#watermark");
        waterobj.css("left", "0px");
        waterobj.css("top", "0px");
        waterobj.css("width", object.contents().find("body").attr("scrollWidth") - 2);
        waterobj.css("height", object.contents().find("body").attr("scrollHeight"));
        waterobj.css("position", "absolute");
        waterobj.css("zIndex", "1000");
        waterobj.css("backgroundImage", "url(../../images/watermark.gif)");
        waterobj.css("filter", "Alpha(opacity=40,finishOpacity=0,style=0)");

        //bottomWindow.document.body.oncontextmenu=function() { return false; }
        object.contents().find("body").select(function() {
            // $(this).contents().selection.empty();
            return false;
        });
        // bottomFrame.document.body.onselect = function() { bottomFrame.document.selection.empty(); };

        //<input   type=button   onclick="javascript:alert(document.body.oncontextmenu=null)"   value="取消右键">   
        //<input   type=button   onclick="javascript:alert(document.body.onselectstart=null)"   value="取消选取">   
        //<input   type=button   onclick="javascript:alert(document.body.onselect=null)"   value="取消选取">   
        //<input   type=button   onclick="javascript:alert(document.body.oncopy=null)"   value="取消复制">

        object.contents().help = (function() {
            return false;
        });
        //bottomFrame.window.onhelp = function() { return false; }
        // bottomFrame.document.onkeydown = function(){ return disableShortcutkey(bottomFrame.event); };

        if (typeof (object.useCustomWatermark) == "function")
            object.useCustomWatermark();
    }
}

function ClearContent(object) {//清空页面上元素的内容
    object.contents().find(":text[!disabled]").each(function() {
        bindElementValue($(this));
    });
    //        object.contents().find(":hidden").each(function() {
    //           bindElementValue($(this));
    //        });
    object.contents().find(":file").each(function() {
        bindElementValue($(this));
    });
    object.contents().find(":radio").each(function() {
        $(this).attr("checked", (($(this).attr("defValue") == undefined) ? false : true));
    });
    object.contents().find(":checkbox").each(function() {
        $(this).attr("checked", (($(this).attr("defValue") == undefined) ? false : true));
    });

    object.contents().find("textarea").each(function() {
        bindElementValue($(this));
    });
    object.contents().find("select").each(function() {
        if ($(this).attr("defValue") != undefined)
            $(this).val($(this).attr("defValue"));
    });

}


function bindElementValue(ele) {
    if (ele.attr("defValue")) {
        var defval = ele.attr("defValue");
        //        if (defval=="__generateGuid")
        //            ele.val(newGuid());
        //        else    
        ele.val(defval);
    }
    else if (ele.attr("bindValue"))
        ele.val(ele.attr("bindValue"));
    else
        ele.val("");

}

// Bind Form Data To System
function bindForm(object, element, hasWatermark) {
    if (element.val()) {
        var xml = element.val();
        var doc = new ActiveXObject("MSXML.DOMDocument");
        doc.loadXML(xml.replace(/<CRLF\/>/g, "\n")); ////Bind Control Charactor CRLF 

        var length = doc.lastChild.lastChild.childNodes.length;
        var objPara, objParalist;
        for (var i = 0; i < length; i++) {
            var node = doc.lastChild.lastChild.childNodes.item(i);
            try {
                objParalist = object.contents().find("#" + node.nodeName);
                if (!objParalist.length) {
                    objParalist = object.contents().find(":input[name='" + node.nodeName + "']");
                }
                if (!objParalist.length) continue;

                if (objParalist.length > 1) {
                    objPara = objParalist.first();
                }
                else
                    objPara = objParalist;

                if (objPara.attr("sfNoBind") != undefined) continue;
                // debugger;
                if (objPara.attr("tagName").toLowerCase() == "input") {
                    if (objPara.attr("type").toLowerCase() == "radio") {////Bind radio input
                        objParalist.each(function() {
                            $(this).attr("checked", ($(this).val() == node.text ? true : false));
                        });
                    }
                    else if (objPara.attr("type").toLowerCase() == "checkbox") {////Bind checkbox input
                        var _valList = node.text.split("|");
                        objParalist.each(function() {
                            $(this).attr("checked", false);
                            for (var k = 0; k < _valList.length; k++) {
                                if ($(this).val() == _valList[k]) {
                                    $(this).attr("checked", true);
                                    break;
                                }
                            }
                        });

                    }
                    else
                        objPara.val(node.text);
                }
                else if (objPara.attr("tagName").toLowerCase() == "textarea") {
                    objPara.val(node.text);
                }
                else if (objPara.attr("tagName").toLowerCase() == "select") {
                    objPara.val(node.text);
                    objPara.attr("disabled", hasWatermark);
                }
            }
            catch (e) {
            }
        }
    }
    try {
        if (object.attr("tagName").toLowerCase() == "iframe") {
            if (typeof (frames[object[0].id].afterDatabind) == "function")
                frames[object[0].id].afterDatabind();
        }
        else if (typeof (object[0].afterDatabind) == "function")
            object[0].afterDatabind();
    }
    catch (e) { }

}

//提交数据

function prepareSave(object, isCheckdata, dataobj) {
    if (isCheckdata) {
        //验证数据
        if (!validateElement(object))
        { return false; }
    }
    try {

        var content = new Array();
        content.push("<Content><Item>");

        var chkName = "";
        object.contents().find("input[id][type],textarea[id],select[id]").each(function() {
            //debugger;
            if ($(this).attr("id").substring(0, 2) == "__" || $(this).attr("id").indexOf('$') > -1) return true;
            if ($(this).attr("sfNoNeed") != undefined) return true;

            if ($(this).attr("tagName").toLowerCase() == "input") {
                var objType = $(this).attr("type").toLowerCase();
                if (objType == "radio") {
                    // Parse radio input 
                    if ($(this).attr("checked")) {
                        content.push("<" + $(this).attr("name") + "><![CDATA[" + $.trim($(this).val()) + "]]></" + $(this).attr("name") + ">");
                    }
                }
                else if (objType == "checkbox") {// Parse checkbox input
                    if (chkName.indexOf($(this).attr("name") + "|") > -1) return true;
                    var chkData = " ";
                    object.contents().find(":checkbox[name='" + $(this).attr("name") + "'][checked='true']").each(function() {
                        chkData += $(this).val() + '|';
                    });
                    chkData = $.trim(chkData.substr(0, chkData.length - 1));
                    content.push("<" + $(this).attr("name") + "><![CDATA[" + chkData + "]]></" + $(this).attr("name") + ">");
                    chkName += $(this).attr("name") + "|";
                }
                else if (objType == "text" || objType == "file") {
                    content.push("<" + $(this).attr("id") + "><![CDATA[" + (($(this).attr("bindValue") != undefined) ? $.trim($(this).attr("bindValue")) : $.trim($(this).val())) + "]]></" + $(this).attr("id") + ">");
                }
            }
            else if ($(this).attr("tagName").toLowerCase() == "textarea") {
                var areaValue = ($(this).attr("bindValue") != undefined) ? $(this).attr("bindValue") : $.trim($(this).val());

                content.push("<" + $(this).attr("id") + "><![CDATA[" + areaValue.replace(/\r\n/g, "<CRLF/>") + "]]></" + $(this).attr("id") + ">");
            }
            else if ($(this).attr("tagName").toLowerCase() == "select") {
                content.push("<" + $(this).attr("id") + "><![CDATA[" + $(this).val() + "]]></" + $(this).attr("id") + ">");
            }

        });
        content.push("</Item></Content>");
        var pageData = content.join("")
        pageData = pageData.replace(/&hellip;/g, "...");
        pageData = pageData.replace(/<CRLF\/>/g, "\n")
        dataobj.val(pageData); ////Handle user cancel submit 
    } catch (e) {
        alert("[perpareSave - Retrieve Data error]:" + e.message);
        return false;
    }
    return true;
}
//数据有效性验证
function validateElement(object) {
    try {
        var errorObj = null;
        object.contents().find("*[validate][display!='none'][!disabled]").each(function() {
            //  debugger;
            var sValue = $.trim($(this).val());
            var Description = ($(this).attr("Description") == undefined) ? "" : $(this).attr("Description");
            var rules = $(this).attr("validate").split(",");

            for (var i = 0; i < rules.length; i++) {
                var rldata = rules[i].split(" ");
                if (rldata[0] == "required") {
                    if (sValue.length == 0) {
                        alert("请输入" + Description + "！");
                        errorObj = $(this);
                        return false;
                    }
                }
                else if (rldata[0] == "byteRangeLength") {
                    var olength = sValue.length;
                    for (var k = 0; k < sValue.length; k++) {
                        if (sValue.charCodeAt(k) > 127)
                            olength++;
                    }

                    var minLength, maxLength;
                    var param = rldata.slice(1, rldata.length).join("=").split("=");
                    for (var k = 0; k < param.length; k + 2) {
                        if (param[k] == "minLength") minLength = param[k + 1];
                        else if (param[k] == "maxLength") maxLength = param[k + 1];
                    }
                    if (olength < minLength || olength > maxLength) {
                        alert(Description + '请确保输入的值在' + minLength + '-' + maxLength + '个字节之间(一个中文字算2个字节)"');
                        errorObj = $(this);
                        return false;
                    }
                }
                else if (rldata[0] == "int") {//整数  
                    if (!validateRegExp(rldata[0], sValue, Description)) {
                        errorObj = $(this);
                        return false;
                    }
                    var minVal = NaN, maxVal = NaN;
                    var param = rldata.slice(1, rldata.length).join("=").split("=");
                    for (var k = 0; k < param.length; k = k + 2) {
                        if (param[k] == "min") minVal = param[k + 1];
                        else if (param[k] == "max") maxVal = param[k + 1];
                    }
                    if (!isNaN(minVal)) {
                        if (parseInt(sValue) < parseInt(minVal)) {
                            alert(Description + "不能小于" + minVal);
                            errorObj = $(this);
                            return false;
                        }
                    }
                    if (!isNaN(maxVal)) {
                        if (parseInt(sValue) > parseInt(maxVal)) {
                            alert(Description + "不能大于" + maxVal);
                            errorObj = $(this);
                            return false;
                        }
                    }
                }
                else if (rldata[0] == "float") {//浮点数
                    if (!validateRegExp(rldata[0], sValue, Description)) {
                        errorObj = $(this);
                        return false;
                    }
                    var minVal = NaN, maxVal = NaN;
                    var param = rldata.slice(1, rldata.length).join("=").split("=");
                    for (var k = 0; k < param.length; k = k + 2) {
                        if (param[k] == "min") minVal = param[k + 1];
                        else if (param[k] == "max") maxVal = param[k + 1];
                    }
                    if (!isNaN(minVal)) {
                        if (parseFloat(sValue) < parseFloat(minVal)) {
                            alert(Description + "不能小于" + minVal);
                            errorObj = $(this);
                            return false;
                        }
                    }
                    if (!isNaN(maxVal)) {
                        if (parseFloat(sValue) > parseFloat(maxVal)) {
                            alert(Description + "不能大于" + maxVal);
                            errorObj = $(this);
                            return false;
                        }
                    }
                }
                else {
                    if (!validateRegExp(rldata[0], sValue, Description)) {
                        errorObj = $(this);
                        return false
                    }
                }
            }
        });
        if (errorObj) {
            errorObj.focus();
            return false;
        }
    }
    catch (e) {
        alert("[perpareSaveOrSubmit - Check Data error]:" + e.message);
        return false;
    }
    return true;
}

function validateRegExp(mode, value, proMsg) {
    if (value == "") return true;
    switch (mode) {
        case "email": //电子邮箱
            var pattern = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/;
            if (!pattern.test(value)) {
                alert(proMsg + '请正确输入电子邮箱！（比如：xxxx@163.com）');
                return false;
            }
            break;
        case "mobile": // 手机号码验证    
            var pattern = /^(((13[0-9]{1})|(18[0-9]{1})|(15[0-9]{1}))+\d{8})+/;
            if (!pattern.test(value)) {
                alert(proMsg + '请正确输入手机号码！');
                return false;
            }
            break;
        //		case "phone": // 电话号码验证 
        //			var pattern = /^(\d{3,4}-?)?\d{7,9}$/g; 
        //			if (!pattern.test(value)) { 
        //				alert(proMsg + '请正确输入电话号码！'); 
        //				return false; 
        //			} 
        //			break; 
        case "postcode": // 邮政编码验证
            var pattern = /^[0-9]{6}$/;
            if (!pattern.test(value)) {
                alert(proMsg + '请正确输入邮政编码！');
                return false;
            }
            break;
        case "uname": //用户名称
            var pattern = /^[\u0391-\uFFE5\w]+$/;
            if (!pattern.test(value)) {
                alert(proMsg + '用户名只能包括中文字、英文字母、数字和下划线"！');
                return false;
            }
            break;
        case "enornum":
            var pattern = /^[a-zA-Z0-9]{0,25}$/;
            if (!pattern.test(value)) {
                alert(proMsg + '请输入数字或英文，首字母为英文！');
                return false;
            }
            break;
        case "firsten":
            var pattern = /^[a-zA-Z][a-zA-Z0-9]{5,16}$/; 
            if (!pattern.test(value)) {
                alert(proMsg + '请输入英文或数字，首字母为英文,至少6位！');
                return false;
            }
            break;
        case "pwssafe"://密码校验
            var pattern = /^[a-zA-Z0-9]{6,16}$/;
            if (!pattern.test(value)) {
                alert(proMsg + '密码由数字、英文组成，最少6位！');
                return false;
            }
            break;
        case "idcard": //身份证校验
            var pattern = /^\d{15}(\d{2}[A-Za-z0-9])?$/;
            if (!pattern.test(value)) {
                alert(proMsg + '请正确输入身份证号！');
                return false;
            }
            break;
        case "number": //全部是数字
            var pattern = /^[0-9]{1,20}$/;
            if (!pattern.test(value)) {
                alert(proMsg + '只能输入数字"！');
                return false;
            }
            break;
        case "int": //整数     
            var pattern = /^-?\d+$/;
            if (!pattern.test(value)) {
                alert(proMsg + '只能输入整数！');
                return false;
            }
            break;
        case "float": //浮点数
            var pattern = /^(-?\d+)(\.\d+)?$/;
            if (!pattern.test(value)) {
                alert(proMsg + '只能输入浮点数"！');
                return false;
            }
            break;
        case "date":
            if (!fnIsDateTime(value) && !fnIsDate(value)) {
                alert(proMsg + '请输入有效的日期！');
                return false;
            }
            break;
        case "time":
            var a = value.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/);
            if (a == null) {
                alert('请输入有效的时间！如01:25:36(1小时25分36秒)');
                return false;
            }
            if (a[1] > 24 || a[3] > 60 || a[4] > 60) {
                alert('请输入有效的时间！如01:25:36(1小时25分36秒)');
                return false
            }
            break;
        case "year":
            var pattern = /((^((1[8-9]\d{2})|([2-9]\d{3}))([-\/\._])(10|12|0?[13578])([-\/\._])(3[01]|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))([-\/\._])(11|0?[469])([-\/\._])(30|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))([-\/\._])(0?2)([-\/\._])(2[0-8]|1[0-9]|0?[1-9])$)|(^([2468][048]00)([-\/\._])(0?2)([-\/\._])(29)$)|(^([3579][26]00)([-\/\._])(0?2)([-\/\._])(29)$)|(^([1][89][0][48])([-\/\._])(0?2)([-\/\._])(29)$)|(^([2-9][0-9][0][48])([-\/\._])(0?2)([-\/\._])(29)$)|(^([1][89][2468][048])([-\/\._])(0?2)([-\/\._])(29)$)|(^([2-9][0-9][2468][048])([-\/\._])(0?2)([-\/\._])(29)$)|(^([1][89][13579][26])([-\/\._])(0?2)([-\/\._])(29)$)|(^([2-9][0-9][13579][26])([-\/\._])(0?2)([-\/\._])(29)$))/;
            if (!pattern.test(value)) {
                alert(proMsg + '请输入有效时间！如2010-04-01"');
                return false;
            }
            break;
        default:
            break;
    }
    return true;
}

function fnIsDate(str) {
    str = $.trim(str);
    var reg = /^(\d+)-(\d{1,2})-(\d{1,2})$/;
    var r = str.match(reg);

    if (r == null) {
        reg = /^(\d+)\/(\d{1,2})\/(\d{1,2})$/;
        r = str.match(reg);
        if (r == null) return false;
    }

    r[2] = r[2] - 1;
    var d = new Date(r[1], r[2], r[3]);
    if (d.getFullYear() != r[1]) return false;
    if (d.getMonth() != r[2]) return false;
    if (d.getDate() != r[3]) return false;
    return true;

}

function fnIsDateTime(str) {
    str = $.trim(str);
    var reg = /^(\d+)-(\d{1,2})-(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
    var r = str.match(reg);
    if (r == null) {
        reg = /^(\d+)\/(\d{1,2})\/(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
        r = str.match(reg);
        if (r == null) return false;
    }
    r[2] = r[2] - 1;
    var d = new Date(r[1], r[2], r[3], r[4], r[5], r[6]);
    if (d.getFullYear() != r[1]) return false;
    if (d.getMonth() != r[2]) return false;
    if (d.getDate() != r[3]) return false;
    if (d.getHours() != r[4]) return false;
    if (d.getMinutes() != r[5]) return false;
    if (d.getSeconds() != r[6]) return false;
    return true;

}

function newGuid() {
    var guid = "";
    for (var i = 1; i <= 32; i++) {
        var n = Math.floor(Math.random() * 16.0).toString(16);
        guid += n;
        if ((i == 8) || (i == 12) || (i == 16) || (i == 20))
            guid += "-";
    }
    return guid;
}



