//朱艳萍老师建议:用释义的方式更加利于学生理解,也更加便于此系统的普及及应用,建议采纳。
//Usestudio.UnionForm.getUserLocation
//U.UF.CI.getUserLocation = function (fun) {


/*
变量命名编写规范:
变量类型   变量名称
string       str
object       obj。
Array        arr
Element      el
bool         b
用户信息     userinfo
硬盘信息     diskinfo
好友信息     frindinfo
群信息       groupinfo
回调callback       cb
函数         fun
错误         err
参数数组aruguments   arg    
*/
/*
uform框架解决了以下问题:
1、此js主要扩展了String,Number,Array,Object,Guid,json,Date等七种数据类型的方法,还有一些html5的数据类型,但暂未使用,此js需要立即执行的区域比较多。
2、有丰富的正则表达式
3、为了对元素进行更良好的操作,如动画,选择元素,制作了选择器
4、全兼容ie6以上浏览器,Chrome浏览器,Safari浏览器,Firefox。
*/

//#region document.domain 设置区域

//域名初始化 这个地方是初始化domain 设置后允许跨域
//用于
try {
    if (document.domain) {
        //如果是1473的域名。
        if (document.domain.indexOf("1473.cn") > -1) {
            document.domain = "1473.cn"; //把www.1473.cn和main.1473.cn,a.1473.cn的域统一设置为1473.cn
        }
        else {
            document.domain = "boomyun.com"; //是能是boomyun.com有效,其他均不能设置,会跳转到catch语句
        }
    }
}
catch (e) { }

//#endregion

//#region 命名空间处理

//命名空间类
window.Namespace = {};

/**
* 命名空间注册
*
* @param  {object} 好友头像处理
* @param  {object} 方法集合
* @param  {function} 注册时候的回调函数
* @return  {object} 命名空间
*/
Namespace.register = function (namespace) {
    var i,
        _local = window, //用于把第一个命名空间归属于window。
        _namespacearr = namespace.split("."); //命名空间分段
    //循环命名空间变量定义区域
    for (i = 0; i < _namespacearr.length; i++) {
        //如果命名空间未定义,那么给该命名空间添加方法
        if (!_local[_namespacearr[i]]) {
            _local[_namespacearr[i]] = {}; //创建一个新的命名空间
        }
        //由于命名空间的方式为 name.name.name 每一次会循环.号后面的,所以每一次等于创建命名空间的值
        _local = _local[_namespacearr[i]];
    }
}

//#endregion

//#region uform云端全局变量处理区域
Namespace.register("U"); //注册全局函数命名空间
Namespace.register("US"); //注册全局变量命名空间
//这个判断什么意思?
if (!US.disk) {
    //变量定义区域
    US.userInfo = {}; //个人用户变量
    US.disk = {}; //网盘使用变量
    US.blog = {}; //朋友圈变量
    US.forum = {}; //学习系统
    US.friend = {}; //用户好友
    US.city = {}; //系统访问用户信息
    //此处为1473常用全局变量
    US.domain = "1473.cn"; //主站点命名
    US.forum.news = null; //论坛消息
    US.systemId = 0; ////默认为0,作为测试用使用,1为1473主站用,2为1473手机端用。
    US.pageId = ""; //页面识别码,用户通过浏览器进入生成唯一识别码,解决同一个浏览器多登录情况下,及聊天室刷新功能。
    //US.userInfo.LoginId  这个是用户登录识别码,记录在Cookie中,并在后台识别,保证是同一个用户进行操作。
    US.height = window.screen.availHeight; //页面高度
    US.width = window.screen.availWidth; //页面长度

    //常量定义区域
    US.OFFICEFILEURL = "http://office.1473.cn/usoffice/"; //office 打开文件对应链接
    US.SCOKET = "//poll.cocorobo.cn"; //1473长轮训 长连接请求地址
    US.FILESYSTEMURL = "http://fs.1473.cn/";  //fs对应的链接
    US.DOMAIN = "/"; //主站域名
    US.ERRORIMAGE = "/img/error.png"; //错误图片
    US.CD = "http://cd.1473.cn/net/ssh.ashx"; //请求地址
    US.AUTH = "http://main.1473.cn/Uses.ashx"; //请求地址
    US.FRIEND = "http://friend.1473.cn/friend.ashx"; //请求地址
    US.DISK = "http://disk.1473.cn/disk.ashx"; //请求地址
    US.USER = "http://user.1473.cn/user.ashx"; //请求地址
    US.ADMINAUTH = "http://main.1473.cn/admin.ashx"; //请求地址
    US.DB = "sqlserver.1473.cn"; //1473数据库的地址
    US.FORUMROOTID = "1e0742d8-737e-46e2-b03b-2f23ca8c1f17"; //论坛根目录id
    US.MYDISK = "d8ae0266-481d-4064-86d2-fb52a4059793";  //我的电脑id
    US.PRIVATEFOLDERID = "9639aba6-03eb-443c-be4e-f0c8d24767f5"; //私密文件夹id
    US.FTPFOLDERID = "f6d7a4b6-e34c-4964-beed-24187b2cb1ba"; //FTP文件夹id
    US.MYFOLDERID = "7aeaab56-485f-4150-b781-8ffd86d593ce"; //我的文件夹id
    US.IMAGEFOLDERID = "93553847-e299-464c-a0e2-c15872efb6ae"; //图片文件夹id
    US.MUSICEFOLDERID = "8a2135ff-746a-43a8-97b8-552d228a00bb"; //我的音乐文件夹id
    US.VIDEOFOLDERID = "bf21bf7a-1e95-4194-8e4a-e9334d7d998d"; //视频文件夹id
    US.EMPTYGUID = "00000000-0000-0000-0000-000000000000"; //空id
    US.ZINDEX = 20;  //页面层次
    US.FEEDBACKID = "3c779543-bc1a-4851-af22-af9ba97a5f33" //意见反馈目录id;
    US.MAINDOMAIN = "http://" + ((window.location.host.indexOf("www.1473.cn") > -1 ||
                 window.location.host == "1473.cn" ||
                 window.location.host.indexOf("www.boomyun.com") > -1 ||
                 window.location.host == "boomyun.com") ? window.location.host : "www.1473.cn");
}
//#endregion


//#region  权限全局变量
US.permission = {}; //所有的权限列表

//网盘所有的权限
US.permission.disk = {
    "isopen": true, //是否允许打开, 现在所有的文件都有打开权限
    "isupadte": true, //是否允许修改, 只有自己的文件,他人添加文件或者文件夹到我的ftp中,或者是我作为群主的群文件
    "isdelete": true, //是否允许删除, 只有自己的文件,他人添加文件或者文件夹到我的ftp中,或者是我作为群主的群文件
    "iscopy": true, //是否允许复制,现在所有的文件都有复制权限
    "isshear": true, //是否允许剪切,只有自己的文件,他人添加文件或者文件夹到我的ftp中,或者是我作为群主的群文件
    "isencryption": false, //是否允许加密,展示取消这个功能。
    "isreply": true, //是否允许加密,展示取消这个功能。
    "isdownload": true, //是否允许下载,只有自己的文件夹,或者是任何人的ftp文件夹下及下的文件夹,或者是群里
    "isnew": true, //是否允许新建, 只有自己的文件夹,或者是任何人的ftp文件夹下及下的文件夹,或者是群里
    "ispaste": true, //是否允许粘贴,只有自己的文件夹,或者是任何人的ftp文件夹下及下的文件夹,或者是群里
    "isrefresh": true, //是否允许刷新, 现在所有的文件都有刷新权限
    "isupload": true, //是否允许上传,文件夹设置了不允许下载的文件夹和文件夹下的所有文件都不允许下载,其他都有权限
    "isview": true, //是否允许视图切换,所有的文件夹都支持
    "isedit": true //是否允许编辑,只有拥有可修改权限的文本文件才能修改
};
//网盘权限获取方法,此函数与  var a=US.permission.disk有啥区别?
US.permission.getDiskPermission = function () {
    var i, _obj = {}, _p = US.permission.disk; //定义变量i,返回值对象_obj,获取全局的初始权限对象
    for (i in _p) {//定义循环,将全局权限对象克隆给_obj
        _obj[i] = _p[i]

    }
    return _obj; //返回_obj对象

}
//#endregion



//#region   互联办公通用函数区域

Namespace.register("U.MD.C");
/**
* 图片错误处理
*
* @param  {element} 图片元素
* @param  {number} 判断的类型
*/
U.MD.C.imgError = function (imgel, type) {
    var _number, //存放参数
        _url; //存放图片的src
    //获取出错的对象
    imgel = imgel && !imgel.srcElement ? imgel : (event ? event.srcElement || this : this);
    //如果是错误图片就不执行
    if (imgel.src != "/img/error.png") {
        if (type == 2) { //重复请求图片 用于初始上传的图片
            _url = imgel.src; //图片的路径
            _number = _url.indexOf("?&n="); //判断是否添加获取
            //允许文件同时获取10次
            if (_number < 0 || _url.length - _number < 10) {
                imgel.src += (_number == -1 ? "?&n=" : "") + 1; //添加缓存过滤
                return
            }
            else {
                type = 1;
            }
        }
        if (type == 1) { //错误图像处理
            U.selectEl(imgel).addAttrArray({ "src": "/img/error.png" });
        }
        else { //错误头像处理 
            imgel.src = type || "/img/UserHead/UseHead.jpg";
        }
    }
}
/**
* 获取用户头像
* 此函数在多个系统中均会调用,在用户系统里面应该独立一份,代码保持一致。以便于用户系统独立性。
*
* 如果没有设置用户头像,则使用默认的无头像的地址:/img/UserHead/UseHead.jpg。
* 如果用户使用了链接地址,例如:/img/UserHead/UseHead.jpg.  则直接使用此地址。  至于外链地址如:http://sina.com/head.jpg 则暂时不考虑
* 如果用户头像没有带http,则添加上http://fs.1473.cn的文件服务器地址,则添加上http://fs.1473.cn地址。
*
* @param  {string}  需要生成正常地址的 由于1473的地址 需要带上 http://fs.1473.cn 无需 这里同时处理了 1473和外链地址
* @return  {string} 过滤过的
*/
U.MD.C.getHeadImage = function (url) {
    var _headimg;
    //如果没有设置用户头像,数据库返回null,则返回指定的默认头像。
    if (!url) {
        _headimg = "/img/UserHead/UseHead.jpg";
    }
    else {
        //如果传递的头像图片带了http字符串,则可能使用了外链地址或者www.1473.cn的地址,直接使用用户传递的url,
        //if(-1) 为真,非0为真,if(0)才为假的,所以要加!号
        if (!url.indexOf("http")) {
            _headimg = url;
        }
        else {
            _headimg = US.FILESYSTEMURL + url;
        }
    }
    //返回用户正确的头像地址
    return _headimg;
    //给用户头像添加上http://fs.1473.cn的前缀。。。
    // 正则表达式RegExp,第二个参数释意。i表示不区分大小写匹配。m :表示多行匹配。g : 表示全局匹配。
    //_headimg = US.FILESYSTEMURL + url.replace(new RegExp(US.FILESYSTEMURL, "gm"), "");
    //如果没有带www.1473.cn,则???此处应该不需要
    //if (url.indexOf("www.1473.cn") > -1) {
    //    _headimg = url;
    //}
    //else {
    //    _headimg = US.FILESYSTEMURL + url.replace(new RegExp(US.FILESYSTEMURL, "gm"), "");
    //}
    //_headimg = ((url.indexOf("www.1473.cn") > -1 ? url : US.FILESYSTEMURL + url.replace(new RegExp(US.FILESYSTEMURL, "gm"), "")));
    //严禁这样写代码。
    //return (!url ? "/img/UserHead/UseHead.jpg" : !url.indexOf("http") ? url : ((url.indexOf("www.1473.cn") > -1 ? url : US.FILESYSTEMURL + url.replace(new RegExp(US.FILESYSTEMURL, "gm"), ""))));
}
//#endregion