﻿jQuery.extend(
 {
     /**
     * @see  将json字符串转换为对象
     * @param   json字符串
     * @return 返回object,array,string等对象
     */
     evalJSON: function(strJson) {
         return eval("(" + strJson + ")");
     }
 });
jQuery.extend(
 {
     /**
     * @see  将javascript数据类型转换为json字符串
     * @param 待转换对象,支持object,array,string,function,number,boolean,regexp
     * @return 返回json字符串
     */
     toJSON: function(object) {
         var type = typeof object;
         if ('object' == type) {
             if (Array == object.constructor)
                 type = 'array';
             else if (RegExp == object.constructor)
                 type = 'regexp';
             else
                 type = 'object';
         }
         switch (type) {
             case 'undefined':
             case 'unknown':
                 return;
                 break;
             case 'function':
             case 'boolean':
             case 'regexp':
                 return object.toString();
                 break;
             case 'number':
                 return isFinite(object) ? object.toString() : 'null';
                 break;
             case 'string':
                 return '"' + object.replace(/(\\|\")/g, "\\$1").replace(/\n|\r|\t/g,
       function() {
           var a = arguments[0];
           return (a == '\n') ? '\\n' :
                       (a == '\r') ? '\\r' :
                       (a == '\t') ? '\\t' : ""
       }) + '"';
                 break;
             case 'object':
                 if (object === null) return 'null';
                 var results = [];
                 for (var property in object) {
                     var value = jQuery.toJSON(object[property]);
                     if (value !== undefined)
                         results.push(jQuery.toJSON(property) + ':' + value);
                 }
                 return '{' + results.join(',') + '}';
                 break;
             case 'array':
                 var results = [];
                 for (var i = 0; i < object.length; i++) {
                     var value = jQuery.toJSON(object[i]);
                     if (value !== undefined) results.push(value);
                 }
                 return '[' + results.join(',') + ']';
                 break;
         }
     }
 });
 
//加载编辑器
 function loadEditor(id, width, height) {
     tinyMCE.init({
         mode: "textareas",
         theme: "advanced",
         editor_deselector: "mceNoEditor",
         accessibility_warnings: "false",
         plugins: "safari,inlinepopups,contextmenu,emotions,media,fullscreen",
         //theme_advanced_buttons1: "bold,italic,underline,strikethrough,|,forecolor,backcolor,|,justifyleft,justifycenter,justifyright,|,outdent,indent,|,fontsizeselect,|,removeformat,|,undo,redo,|,link,unlink,image,media,emotions",
         theme_advanced_buttons1: "fontselect,fontsizeselect,|,bold,italic,underline,strikethrough,|,forecolor,backcolor,|,justifyleft,justifycenter,justifyright,outdent,indent,|,removeformat,undo,redo,|,link,unlink,image,|,fullscreen",
         theme_advanced_fonts : "宋体=宋体,黑体=黑体,隶书=隶书,楷体=楷体,幼圆=幼圆,Arial=Arial,Impact=Impact,Georgia=Georgia,Verdana=Verdana",
         theme_advanced_buttons2: "",
         theme_advanced_buttons3: "",
         theme_advanced_toolbar_location: "top",
         theme_advanced_toolbar_align: "left",
         theme_advanced_statusbar_location: "bottom",
         theme_advanced_path: false,
         theme_advanced_resizing: true,
         theme_advanced_resize_horizontal: false,
         theme_advanced_resizing_use_cookie: 0,
         auto_focus: false,
         relative_urls: 0,
         width: width ? width : 600,
         height: height ? height : 300,
         keep_values: true,
         content_css: "/Styles/richtext_sditor.css",
         extended_valid_elements: "img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name|obj|param|embed]",
         language: "zh"
     });

 }

//获取编辑器的文本
 function getRichText(id){
    return tinyMCE.get(id).getContent();
}

//往编辑器插入图片
function insertImage(id, src, alt, width, height) {
    var url = '<img src="' + src + '" border="0" />';
    tinyMCE.get(id).execCommand('mceInsertContent', false, url);
}

var object =
{
    isA: function(aType) {
        var self = this;
        while (self) {
            if (self == aType)
                return true;
            self = self.Type;
        };
        return false;
    }
};

function Class(aBaseClass, aClassDefine) {
    function class_() {
        this.Type = aBaseClass;
        for (var member in aClassDefine)
            this[member] = aClassDefine[member];
    };
    class_.prototype = aBaseClass;
    return new class_();
};

function New(aClass, aParams) {
    function new_() {
        this.Type = aClass;
        if (aClass.Create)
            aClass.Create.apply(this, aParams);
    };
    new_.prototype = aClass;
    return new new_();
};

//获取元素位置
function getPosition(obj) {
    var top = 0;
    var left = 0;
    var width = obj.offsetWidth;
    var height = obj.offsetHeight;
    while (obj.offsetParent) {
        top += obj.offsetTop;
        left += obj.offsetLeft;
        obj = obj.offsetParent;
    }
    return { "top": top, "left": left, "width": width, "height": height };
}

//初始化图片大小
function ResetImageSize(id, limitWidth) {
    $('#' + id + ' img').each(function() {
        try {
            var size = getImageSize(this.src);
            if (size.width > limitWidth)
                $(this).replaceWith('<a href="/pic.aspx?pic=' + escape(this.src) + '" target="_blank" title="点击查看原图"><img src="' + this.src + '" alt="" width="' + limitWidth + '" /></a>');
        } catch (err) { }
    });
}

//获取图片实际大小
function getImageSize(src) {
    var img = new Image();
    img.src = src;
    return { "width": img.width, "height": img.height };
}

//设置字体大小
function SetFont(id,size){
	document.getElementById(id).style.fontSize=size;
}

//设置Combo的值
function SetCombo(id, value) {
    $('#' + id).children().each(function() {
        if ($(this).val() == value) {
            this.selected = true;
        }
    });
}

//获取CheckBox的所选值
function getCheckBoxVal(name) {
    var rValue = '';
    $("input[@name='" + name + "']").each(function() {
        if ($(this).attr("checked")) {
            rValue += "," + $(this).attr("value");
        }
    })
    return rValue.substr(1);
}

//CheckBox全选
function checkAll(name) {
    $("input[@name='" + name + "']").each(function() {
        if ($(this).attr("checked"))
            $(this).attr("checked", false);
        else
            $(this).attr("checked", true);
    })
}

//Ajax调用WebService
function WebService( s ) {
    $.ajax({
        data: $.toJSON(s.postdata),
        url: s.url,
        type: "POST",
        contentType: "application/json;utf-8",
        dataType: 'json',
        cache: false,
        success: function(json) {
            json = eval(json.d);
            s.callback(json);
        },
        error: function(xml, status) {
            if (status == 'error') {
                try {
                    var json = eval('(' + xml.responseText + ')');
                    alert(json.Message);
                } catch (e) { }
            } else {
                alert(status);
            }
        },
        beforeSend: function(xml) {
            if (!s.postdata) xml.setRequestHeader("Content-Type", "application/json;utf-8")
        }
    });
}