﻿// web
function onSilverlightError(sender, args) {
    var appSource = "";
    if (sender != null && sender != 0) {
      appSource = sender.getHost().Source;
    }
    
    var errorType = args.ErrorType;
    var iErrorCode = args.ErrorCode;

    if (errorType == "ImageError" || errorType == "MediaError") {
      return;
    }

    var errMsg = "Unhandled Error in Silverlight Application " +  appSource + "\n" ;

    errMsg += "Code: "+ iErrorCode + "    \n";
    errMsg += "Category: " + errorType + "       \n";
    errMsg += "Message: " + args.ErrorMessage + "     \n";

    if (errorType == "ParserError") {
        errMsg += "File: " + args.xamlFile + "     \n";
        errMsg += "Line: " + args.lineNumber + "     \n";
        errMsg += "Position: " + args.charPosition + "     \n";
    }
    else if (errorType == "RuntimeError") {           
        if (args.lineNumber != 0) {
            errMsg += "Line: " + args.lineNumber + "     \n";
            errMsg += "Position: " +  args.charPosition + "     \n";
        }
        errMsg += "MethodName: " + args.methodName + "     \n";
    }

    throw new Error(errMsg);
}

function ToLogin() {
    window.location.href = "../login.html";
}

// editor
var imgPath = "doctemp/images/";

var editor;
function editorLoad(){
     editor = document.getElementById("editer_edit").contentWindow;
     editor.document.designMode = 'on';
     editor.document.contentEditable = true;
     editor.document.open();
     editor.document.writeln('<html><body></body></html>');
     editor.document.close();
}
 
function format(type, para) {
     var err = "";
     if (!window.ActiveXObject) {
         switch (type) {
             case "cut":
                 err = "您的浏览器安全设置不允许编辑器自动执行剪切操作,请使用键盘快捷键(Ctrl+X)来完成";
                 break;
             case "copy":
                 err = "您的浏览器安全设置不允许编辑器自动执行拷贝操作,请使用键盘快捷键(Ctrl+C)来完成";
                 break;
             case "paste":
                 err = "您的浏览器安全设置不允许编辑器自动执行粘贴操作,请使用键盘快捷键(Ctrl+V)来完成";
                 break;
         }
     }
     if (err != "") {
         alert(err);
         return;
     }
     editor.focus();
     if (!para) {
         if (window.ActiveXObject) {
             editor.document.execCommand(type);
         } else {
             editor.document.execCommand(type, false, false);
         }
     } else {
         editor.document.execCommand(type, false, para);
     }
     editor.focus();
 }

 function editorCreat(element,width,height){
     var div = document.createElement("div");
     div.innerHTML = '<div id="editer" style="width:'+ width +'px;">' +
        '<div id="editer_bar">' +
            //'<a id="fstyle" title="字体"></a>' +
            //'<a id="fsize" title="大小"></a>' +
            '<a id="cut" title="剪切" href="javascript:format(\'cut\')"></a>' +
            '<a id="copy" title="复制" href="javascript:format(\'copy\')"></a>' +
            '<a id="paster" title="粘贴" href="javascript:format(\'paste\')"></a>' +
            '<a id="blod" title="加粗" href="javascript:format(\'bold\')"></a>' +
            '<a id="italic" title="斜体" href="javascript:format(\'italic\')"></a>' +
            '<a id="underline" title="下划线" href="javascript:format(\'underline\')"></a>' +
            //'<a id="fcolor" title="字体颜色"></a>' +
            //'<a id="bcolor" title="背景颜色"></a>' +
            '<a id="left" title="左对齐" href="javascript:format(\'JustifyLeft\')"></a>' +
            '<a id="center" title="居中对齐" href="javascript:format(\'JustifyCenter\')"></a>' +
            '<a id="right" title="右对齐" href="javascript:format(\'JustifyRight\')"></a>' +
            '<a id="listnum" title="数字编号" href="javascript:format(\'InsertOrderedList\')"></a>' +
            '<a id="listdot" title="项目编号" href="javascript:format(\'InsertUnorderedList\')"></a>' +
            '<a id="ml" title="减少缩进" href="javascript:format(\'Outdent\')"></a>' +
            '<a id="mr" title="缩进" href="javascript:format(\'Indent\')"></a>' +
            //'<a id="link" title="添加链接" href=""></a>' +
            '<a id="img" title="添加图片" href="javascript:ImageUpload();"></a>' +
            //'<a id="att" title="添加附件" href="javascript:void();"></a>' +
            '<a title="代码" href="javascript:void();" onclick="changeText(this);" style="width:30px;text-align:center; line-height:19px;">代码</a>' +
            '<div style="clear:both"></div>' +
        '</div>' +
        '<div id="editer_content">' +
            '<iframe style="width:100%;height:'+ height +'px; padding:0px; margin:0px; background:#FFF" frameborder="0" scrolling="auto" id="editer_edit"></iframe>' +
        '</div>' +
    '</div>';
     element.appendChild(div);
     editorLoad();
}
// 添加图片
function ImageAdd(filePath) {
    format("InsertImage", imgPath + filePath);
}

// 获取焦点
var currRang
function currentRang() {
    currRang = editor.document.selection.createRange();
}

 function EditerHTML() {
     return editor.document.body.innerHTML;
 }
 function EditerHTMLSet(txt) {
     editor.document.body.innerHTML = txt;
 }
 function EditerText() {
     if (window.ActiveXObject)
         return editor.document.body.innerText;
     else
         return editor.document.body.textContent;
 }
 function EditerTextSet(txt) {
     if (window.ActiveXObject)
         editor.document.body.innerText = txt;
     else
         editor.document.body.textContent = txt;
 }
 
 function EditerImages() {
     var div = document.createElement("div");
     div.innerHTML = EditerHTML();
     var images = div.getElementsByTagName("img");
     var imagelist = "";
     for (var i = 0; i < images.length; i++) {
         var url = images[i].src.toLowerCase();
         url = url.substring(url.indexOf("doctemp/"), url.length);
         imagelist = imagelist.replace(url + ",", "");
         imagelist += url + ",";
     }
     if (imagelist.length > 0)
         imagelist = imagelist.substring(0, imagelist.length - 1);
     return imagelist;
 }

 function WebRoot() {
     var div = document.createElement("div");
     div.innerHTML = EditerHTML();
     var images = div.getElementsByTagName("img");
     if (images.length>0) {
         var url = images[0].src.toLowerCase();
         return url.substring(0, url.indexOf("doctemp/"));
     }
     return "";
 }
 
 function changeText(ele) {
     if (ele.innerHTML == "代码") {
         EditerTextSet(EditerHTML());
         ele.innerHTML = "文本";
     }
     else {
         EditerHTMLSet(EditerText());
         ele.innerHTML = "代码";
     }
 }
 
 /* childWindow */
 function childWindow(title, txt, width, height, marginTop, closeButton) {
     var div = document.createElement("div");
     var childWindowHtml =
            '<div style="width:100%; height:100%; position:absolute; left:0px; top:0px; background:#9ABFFC; filter:Alpha(opacity=50); -moz-opacity:.5; opacity:0.5;"></div>' +
            '<div style="width:100%; height:100%; position:absolute; left:0px; top:0px;">' +
            '<div style="height:' + height + 'px; width:' + width + 'px; margin:0px auto; margin-top:' + marginTop + 'px; background:url(source/images/leftTitle_bg.png) repeat-x  #FFF;border:1px solid #7F9DB9;">' +
                '<div style="float:left;height:24px; line-height:24px; text-indent:5px;">' + title + '</div>';
     if (closeButton)
         childWindowHtml += '<div style="background:url(source/images/cross.gif) center center no-repeat;float:right; width:24px; height:24px; cursor:pointer" title="关闭" onclick="childWindowClose()"></div>';
     childWindowHtml += '<div style="clear:both">' + txt + '</div></div></div>';

     div.innerHTML = childWindowHtml;
     selectDisplay(true);
     document.body.appendChild(div);
 }
 
 function childWindowFrame(title,src, width, height, marginTop, closeButton) {
     var html = '<iframe scrolling="no" frameborder="0" style="width:100%;height:' + (height - 24) + 'px;" src="' + src + '"></iframe>';
     childWindow(title, html, width, height, marginTop, closeButton)
 }
 function childWindowClose() {
     destroy(lastChildNode(document.body));
     selectDisplay(false)
 }
 
 /* core */
 function destroy(element) {
     var parent = element.parentNode;
     parent.removeChild(element);
 }
 
 function $ele(id) {
     return document.getElementById(id);
 }
 
 function lastChildNode(node){
     var child = document.body.lastChild;
     while (child.nodeType != 1 && child.previousSibling != null) {
         child = child.previousSibling;
         break;
     }
     return child;
 }
 function selectDisplay(hide) {
     var select = document.getElementsByTagName("select");
     for (var i = 0; i < select.length; i++) {
         if (hide)
             select[i].style.visibility = 'hidden';
         else
             select[i].style.visibility = 'visible';
     }
 }
 function find(element,tag) {
     return element.parentNode.getElementsByTagName(tag);
 }
 
 function optionValue(id){
    return $(id).options[$(id).options.selectedIndex].value;
 }
 
 function Reg(value, type) {
     var reg = null;
     switch (type) {
         case 'uid':
             reg = /^[a-zA-Z][a-zA-Z0-9_]{5,14}$/;
             break;
         case 'pwd':
             reg = /^[\w]\w{5,14}$/;
             break;
         case 'email':
             reg = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
             break;
         case 'que':
             reg = /^([a-zA-Z0-9_\u4e00-\u9fa5]){4,16}$/;
             break;
         case 'validata':
             reg = /^(\w){7}$/;
             break;
         case 'img':
             reg = /^[a-zA-Z0-9_]{1,30}$/;
     }
     return reg.test(value);
 }
 
 function ImageUrlConvert(id) {
     var img = document.getElementById(id).getElementsByTagName("img");
     var src;
     for (var i = 0; i < img.length; i++) {
         src = img[i].getAttribute("src");
         src = src.split("\\").join("/");
         img[i].setAttribute("src", src);
     }
 }
 
 /* ajax */
 function JsonToParam(param) {
     if (param) {
         var paramVal = "";
         for (var key in param) {
             paramVal += key + '=' + escape(param[key]) + "&"; 
         }
         if (paramVal.length > 0)
             paramVal = paramVal.substring(0, paramVal.length - 1);
         return paramVal;
     }
     return null;
 }

 function AjaxGet(url, param, onComplete) {
     Ajax(url + "?" + JsonToParam(param) + "&" + Math.random(), "GET", null, onComplete);
 }

 function AjaxPost(url, param, onComplete) {
     Ajax(url, "POST", JsonToParam(param), onComplete);
 }
 
 function Ajax(url, method, param,onComplete) {
     var req = newXMLHttpRequest();
     req.onreadystatechange = function(rep) {
         if (req.readyState == 4) {
             if (req.status == 200) {
                 onComplete(req.responseText);
             } else {
                 alert("请求失败: " + req.status);
             }
         }
     }
     req.open(method, url, true);
     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
     req.send(param);
 }
 function newXMLHttpRequest() {
     var xmlreq = false;
     if (window.XMLHttpRequest) {
         xmlreq = new XMLHttpRequest();
     } else if (window.ActiveXObject) {
         try {
             xmlreq = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e1) {
             try {
                 xmlreq = new ActiveXObject("Microsoft.XMLHTTP");
             } catch (e2) {
             }
         }
     }
     return xmlreq;
 }
