/* **************************************************************************************
*  * common.js 1.2.1 By 福建电子口岸股份有限公司 (http://www.fjeport.gov.cn)
*  * Copyright (c) 2008 福建电子口岸股份有限公司
*  *************************************************************************************/
var __loadingTrigger;
(function($) {
    //document.domain = window.location.hostname.replace(/.*\.(.+\..+)$/, "$1");
    $.getEvent = function(e) {
        var event = e || window.event;
        var eventElement = event.target || event.srcElement;
        return eventElement;
    };
    $.fn.reset = function() {
        var id = this.attr("id");
        document.getElementById(id).reset();
    };
    $.fn.blank = function() {
        var data = this.val();
        if (data == null || data.length == 0) {
            return true;
        }
        data = $.trim(data);
        return (data.length == 0);
    };
    $.blank = function(data) {
        if (data == null || data.length == 0) {
            return true;
        }
        data = $.trim(data);
        return (data.length == 0);
    };
    $.htmlEncode = function(data) {
        if (data == null || data.length == 0) {
            return "";
        }
        return data.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
    };
    $.fn.option = function() {
        return this.find("option:selected");
    };
    $.fn.optionText = function() {
        return $.trim(this.find("option:selected").text());
    };
    $.fn.clearOption = function() {
        this.find("option[value!='']").remove();
        this.find(":first").attr("selected", true);
    };
    $.fn.deleteOption = function() {
        this.find("option:selected").remove();
    };
    $.fn.addOption = function(text, value) {
        var oOption = "<option value=\"" + value + "\">" + $.trim(text) + "</option>";
        this.append(oOption);
    };
    $.fn.updateOption = function(text) {
        this.find("option:selected").text($.trim(text));
    };
    $.fn.selectOption = function(value) {
        if (value == null) {
            return;
        }
        var expr = "option[value='" + value + "']";
        this.find(expr).attr("selected", true);
    };
    $.fn.checkIt = function(id) {
        var checked = this.attr("checked");
        if (!checked) {
            $(id).attr("checked", false);
        } else {
            var name = this.attr("id");
            var items = $(document.body).find(":checkbox[id='" + name + "']:not(:checked)");
            var flag = !(items.length > 0);
            $(id).attr("checked", flag);
        }
    };
    $.fn.checkAll = function(name) {
        var checked = this.attr("checked");
        var items = $(document.body).find(":checkbox[id='" + name + "']");
        items.attr("checked", checked);
    };
    $.fn.checkData = function() {
        var name = this.attr("id");
        var items = $(document.body).find(":checkbox[id='" + name + "']:checked");
        var hasData = (items.length > 0);
        return hasData;
    };
    $.fn.tabItem = function() {
        this.siblings("[id='tabItemNavg']").removeAttr("id");
        this.attr("id", "tabItemNavg");
    };
    $.fillHSTime = function(h, m) {
        var d = "2008-6-15 " + h + ":" + m + ":00";
        return d;
    };
    $.fillTime = function(time) {
        var d = "2008-6-15 " + time;
        return d;
    };
    $.fillStartDate = function(date) {
        return date + " 00:00:00";
    };
    $.fillEndDate = function(date) {
        return date + " 23:59:59";
    };
    $.split = function(data, s) {
        if (data == null || data.length == 0) {
            return null;
        }
        data = $.trim(data);
        if (data.length == 0) {
            return null;
        }
        return data.split(s);
    };
    $.fn.clean = function() {
        var d = $.trim(this.val());
        return d.replace(/,|\'|;|:|\"|\/|-|=|&|^|=/g, "");
    };
    $.fn.chk = function() {
        return $(this).attr("checked");
    };
    $.toEmpty = function(data) {
        if (data == null || data == "undefined") {
            return "";
        }
        return data;
    };
    $.getText = function(list, value) {
        if (value == null || list == null) {
            return "";
        }
        var text = "";
        $.each(list, function(index, element) {
            if (element.value == value) {
                text = element.text;
                return false;
            }
        });
        return text;
    };
    $.alert = function(message, fn) {
        var opt = {complete: fn};
        $.prompt("系统提示", {
            message: message,
            buttons: { "确定": true},
            callback: function(v, m) {
                if (jQuery.isFunction(opt.complete) && v) {
                    opt.complete.call(this);
                }
                return v;
            }
        });
    };
    $.confirm = function(message, fn1, fn2) {
        var opt = {complete: fn1, cancel: fn2};
        $.prompt("系统提示", {
            message: message,
            buttons: { "确定": true, "取消" : false},
            callback: function(v, m) {
                if (v) {
                    if (jQuery.isFunction(opt.complete)) {
                        opt.complete.call(this);
                    }
                } else {
                    if (jQuery.isFunction(opt.cancel)) {
                        opt.cancel.call(this);
                    }
                }
            }
        });
    };
    $.submit = function(o) {
        o = jQuery.extend({}, {
            type: "post",
            url: "",
            data: "",
            success: function(d) {},
            error: function(d) {},
            contentId: [],
            eventId: [],
            showContentLoading: true,
            showEventLoading: true
        }, o);
        var hasL = (o.contentId != null && o.contentId.length > 0);
        var hasT = (o.eventId != null && o.eventId.length > 0);
        if (hasL) calcPosition(o.contentId, 0);
        if (hasT) calcPosition(o.eventId, 1);
        $.ajax({
            cache: false,
            type: o.type,
            dataType: "json",
            data: o.data,
            url: o.url,
            beforeSend: function() {
                if (hasL) showOrHide(o.contentId, true);
                if (hasT) showOrHide(o.eventId, true);
            },
            success: function(d) {
                switch (d.Result) {
                    case "success":
                        o.success(d);
                        break;
                    case "error":
                        o.error(d);
                        break;
                    default:
                        break;
                }
            },
            error: function() {
                //$.alert("客户端运行的程序出现错误");
            },
            complete: function() {
                if (hasL) showOrHide(o.contentId, false);
                if (hasT) showOrHide(o.eventId, false);
            }
        });
        function calcPosition(data, type) {
            $.each(data, function(index, element) {
                var id = $(element).attr("id") + "_" + index;
                var jid = "#" + id;
                var loadingDiv = "<div id='" + id + "' class='loading'><div class='loadingContainer'>";
                loadingDiv += "<span class='loadingImage'></span>";
                switch (type) {
                    case 0:
                        if (o.showContentLoading) {
                            loadingDiv += "<span class='loadingText'>正在装载数据，请稍候...</span>";
                        }
                        break;
                    case 1:
                        if (o.showEventLoading) {
                            var title = $(element).attr("title");
                            if (title == null || title.length == 0) {
                                title = "<span class='loadingText'>正在处理，请稍候...</span>";
                            } else {
                                title = "<span class='loadingText'>正在" + title + "，请稍候...</span>";
                            }
                            loadingDiv += title;
                        }
                        break;
                    default:
                        break;
                };
                loadingDiv += "</div></div>";
                $("body").append(loadingDiv);
                var top = $(element).offset().top;
                var left = $(element).offset().left;
                var width = $(element).width();
                var height = $(element).height();
                var jWidth = $(jid).width();
                var jHeight = $(jid).height();
                switch (type) {
                    case 0:
                        //width = (width > jWidth) ? width : jWidth;
                        //height = (height > jHeight) ? height : jHeight;
                        if ($.browser.mozilla) {
                            top -= 1;
                            left -= 1;
                            width += 1;
                            height += 1;
                        }
                        break;
                    case 1:
                        height = (height > jHeight) ? height : jHeight;
                        height += 2;
                        if (width > jWidth) {
                            width += 18;
                        } else {
                            width = jWidth;
                        }
                        break;
                    default:
                        break;
                }
                $(jid).css({top: top, left: left});
                $(jid + "> div").css({width: width, height: height});
            });
        };
        function showOrHide(data, show) {
            $.each(data, function(index, element) {
                var id = $(element).attr("id") + "_" + index;
                var jid = "#" + id;
                if (show)
                    $(jid).show();
                else
                    $(jid).remove();
            });
        };
    };
    /**
    * 格式化时间显示方式
    * 用法:format="yyyy-MM-dd hh:mm:ss";
    */
    $.formatDate = function(v, format) {
        if (v == null)
            return v;

        var d = new Date(Date.parse(v.replace(/-/g, "/")));
        var o = {
            "M+": d.getMonth() + 1,  //month
            "d+": d.getDate(),       //day
            "h+": d.getHours(),      //hour
            "m+": d.getMinutes(),    //minute
            "s+": d.getSeconds(),    //second
            "q+": Math.floor((d.getMonth() + 3) / 3),  //quarter
            "S": d.getMilliseconds() //millisecond
        }
        if (/(y+)/.test(format)) {
            format = format.replace(RegExp.$1, (d.getFullYear() + "").substr(4 - RegExp.$1.length));
        }
        for (var k in o) {
            if (new RegExp("(" + k + ")").test(format)) {
                format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
            }
        }
        return format;
    };
    /**  
    * 格式化数字显示方式   
    * 用法  
    * formatNumber(12345.999,'#,##0.00');  
    * formatNumber(12345.999,'#,##0.##');  
    * formatNumber(123,'000000');
    */
    $.formatNumber = function(v, pattern) {
        if (v == null)
            return v;
        var strarr = v ? v.toString().split('.') : ['0'];
        var fmtarr = pattern ? pattern.split('.') : [''];
        var retstr = '';
        // 整数部分   
        var str = strarr[0];
        var fmt = fmtarr[0];
        var i = str.length - 1;
        var comma = false;
        for (var f = fmt.length - 1; f >= 0; f--) {
            switch (fmt.substr(f, 1)) {
                case '#':
                    if (i >= 0) retstr = str.substr(i--, 1) + retstr;
                    break;
                case '0':
                    if (i >= 0) retstr = str.substr(i--, 1) + retstr;
                    else retstr = '0' + retstr;
                    break;
                case ',':
                    comma = true;
                    retstr = ',' + retstr;
                    break;
            }
        }
        if (i >= 0) {
            if (comma) {
                var l = str.length;
                for (; i >= 0; i--) {
                    retstr = str.substr(i, 1) + retstr;
                    if (i > 0 && ((l - i) % 3) == 0) retstr = ',' + retstr;
                }
            }
            else retstr = str.substr(0, i + 1) + retstr;
        }
        retstr = retstr + '.';
        // 处理小数部分   
        str = strarr.length > 1 ? strarr[1] : '';
        fmt = fmtarr.length > 1 ? fmtarr[1] : '';
        i = 0;
        for (var f = 0; f < fmt.length; f++) {
            switch (fmt.substr(f, 1)) {
                case '#':
                    if (i < str.length) retstr += str.substr(i++, 1);
                    break;
                case '0':
                    if (i < str.length) retstr += str.substr(i++, 1);
                    else retstr += '0';
                    break;
            }
        }
        return retstr.replace(/^,+/, '').replace(/\.$/, '');
    };
    $.subString = function(str, len, hasDot) {
        if (str == null || str.length == 0) {
            return "";
        }
        var newLength = 0;
        var newStr = "";
        var chineseRegex = /[^\x00-\xff]/g;
        var singleChar = "";
        var strLength = str.replace(chineseRegex, "**").length;
        for (var i = 0; i < strLength; i++) {
            singleChar = str.charAt(i).toString();
            if (singleChar.match(chineseRegex) != null) {
                newLength += 2;
            }
            else {
                newLength++;
            }
            if (newLength > len) {
                break;
            }
            newStr += singleChar;
        }
        if (hasDot && strLength > len) {
            newStr += "...";
        }
        return newStr;
    };
    $.typeset = function(str) {
        if (str == null || str.length == 0) {
            return "";
        }
        var regex = /[ ]/g;
        str = str.replace(regex, "&nbsp;");
        regex = /\n/g;
        str = str.replace(regex, "<br/>");
        return str;
    };
    $.showLoading = function() {
        var top = $(__loadingTrigger).offset().top;
        var left = $(__loadingTrigger).offset().left;
        var triggerWidth = $(__loadingTrigger).width();
        var triggerHeight = $(__loadingTrigger).height();
        var loadingWidth = $("#__loading").width();
        var loadingHeight = $("#__loading").height();
        var width = (triggerWidth > loadingWidth) ? triggerWidth : loadingWidth;
        var height = (triggerHeight > loadingHeight) ? triggerHeight : loadingHeight;
        $("#__loading").css({"top": top, "left": left, "width": width, "height": height});
        $("#__loading").show();
    };
    $.hideLoading = function() {
        $("#__loading").hide();
    };
})(jQuery);