﻿var isShowEditor = false;//当前是否为编辑状态

//删除左右两端的空格
function trim(str) {
    return str.replace(/(^\s*)|(\s*$)/g, "");
}

function len(s) {
    var l = 0;
    var a = s.split("");
    for (var i = 0; i < a.length; i++) {
        if (a[i].charCodeAt(0) < 299) {
            l++;
        } else {
            l += 2;
        }
    }
    return l;
}

// 检查用户选择上传的文件的扩展名，是否符合要求
function checkFileExtend(str) {
    var regu = /(.jpg|.JPG|.bmp|.BMP|.tif|.TIF|.png|.PNG)$/;  //用于验证图片扩展名的正则表达式

    if (str.match(regu)) {
        return 1;
    }
    else {
        return 0;
    }
}

function getCallUrl() {
    var url = window.location.href.replace("http://", ""); ;
    var indexPos = url.indexOf("/");
    var urlStr = (indexPos >= 0) ? url.substring(indexPos + 1) : "";
    return urlStr;
}

function setUrlByDesignId(value) {
    var indexPos = window.location.href.indexOf("#");
    var url = window.location.href.substring(0, indexPos);
    window.location.href = url + "#" + value;
}

var Sys = {};
function initWindows() {
    var ua = navigator.userAgent.toLowerCase();
    var s;
    (s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] :
    (s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] :
    (s = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] :
    (s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] :
    (s = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0;

    if (ua.indexOf("ipad") > 0 || ua.indexOf("ipod") > 0 || ua.indexOf("iphone") > 0) {
        Sys.ios = true;
    }
    else {
        Sys.ios = false;
    }

    //topbar搜索框在Ipod显示
    if ($("#txtSearch") != null) {
        if (Sys.ios) {
            $("#txtSearch").height("14px");
            $("#txtSearch").width("115px");
            $("#txtSearch").css("margin-top", "-1");
            $("#Search_text").css("margin-left", "5px");
            $("#Search_Go").css("margin-left", "5px");
        }
    }
    //searchLine
    if ($("#rightline") != null) {
        $("#rightline").width(document.documentElement.clientWidth - 399);
    }
}

function windowResize() {
    if (typeof (templateEditorResize) == "function") {
        templateEditorResize();
    }

    if (typeof (resetSingleView) == "function") {
        resetSingleView();
    }
//    else {
//        InitContentPanel();
//    }
    //首页幻灯
    if ($("#slideShowCenter") != null) {
        var num = document.documentElement.clientHeight - 170 - 146;
        if (num < 280)
            num = 280;
        $("#slideShowCenter").height(num);
        var num2 = document.documentElement.clientHeight - 170 - 146 - 280;
        num2 = Math.floor(num2 / 2);
        if (num2 <= 0) num2 = 0;
        $("#topSginUp").css("padding-top", num2 + "px");
        var num3 = num2 + 50;
        $("#defaultError").css("margin-top", num3 + "px");
    }

    //topBar
    if ($("#headCenter").css("display") == "block"){
        if ($("#Menu1").css("display") == "none")
            $("#headCenter").width(document.documentElement.clientWidth - 175 - 180);
        else
            $("#headCenter").width(document.documentElement.clientWidth - 175 - 250);
    }
    onHideToolTip();
    resizeTabLine();

    // 窗口Resize后，将GridView的tools、toolTip隐藏掉
    if ($("#divToolTip") != null) {
        $(".ToolArrow").hide(); 
        $("#divToolTip").hide();        
    }
    if ($("#divTools") != null)
        $("#divTools").hide();
    //SearchLine
    if ($("#rightline") != null) {
        $("#rightline").width(document.documentElement.clientWidth - 399);
     }
    // 随着窗口的Resize动态的更改GridView的Item的位置
    onResetPosition("DefaultPageNext", 200, "Login", 230);
    if (typeof(type) != "undefined" && type == "SearchResult")
    {
        if(typeof(serachType) != "undefined" && serachType==0)
            onResetPosition("GridViewItemPageNext", 200, "contentPanel", 150);
        else
            onResetPosition("GridViewItemPageNext", 200, "contentPanel", 80);    
    } 
    else
        onResetPosition("GridViewItemPageNext", 200, "contentPanel", 10);

    // 当出现摄像头或编辑窗口时，动态的更改当前容器的高度，保持它的滚动条正常
    if ($('#templateDiv').css("display") == "block") {
        var docHeight = Math.max(document.documentElement.clientHeight, document.body.clientHeight);
        docHeight = Math.max(document.body.scrollHeight, docHeight) - 80;
        $('#templateDiv').height(docHeight);
    }   
}


//　检查Email格式是否正确
function isEmail(str) {

    var regu = /^[0-9a-zA-Z\-\.\_]+@[0-9a-zA-Z\-]+\.[0-9a-zA-Z\-\.]+$/;

    if (str.match(regu)) {
        return 1;
    }
    else {
        return 0;
    }
}

//　检查密码格式是否正确
function isPassword(str) {
    var regu = /^[0-9a-zA-Z\-\_]{6,15}$/;

    if (str.match(regu)) {
        return 1;
    }
    else {
        return 0;
    }
}

//　检查用户名格式是否正确，大于4位，只允许数字和字母
function isRightUserName(str) {
    var regu = /^[0-9a-zA-Z\_]{4,15}$/;

    if (str.match(regu)) {
        return 1;
    }
    else {
        return 0;
    }
}
// 从URL提到指定参数
function GetQry(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
    var r = window.location.search.substr(1).match(reg);
    if (r != null) {
        return unescape(r[2]);
    }
    return null;
}

function setBtnStyle(obj, value) 
{
    $(obj).css("background-position", "0px " + value + "px");
}

function onRepostOverHandle(obj, id, index) {
    var state = $("#divRepostState" + id + index).html();
    setBtnStyle(obj, -23)

    var vy = 0;
    if (isToBottom("divRepostBtn" + id + index))
        vy = -27;
    
    if (state == "0")
        onShowToolTip("divRepostBtn" + id + index, 0, "repost", "", 0, 0, vy);
    else
        onShowToolTip("divRepostBtn" + id + index, 0, "remove repost", "", 0, 0, vy);
}
function onRepostOutHandle(obj, id, index) {
    var state = $("#divRepostState" + id + index).html();
    setBtnStyle(obj, (state == "0") ? 0 : -46);
    onHideToolTip();
}
function onRepostDownHandle(obj, id, index) {
    var state = $("#divRepostState" + id + index).html();
    setBtnStyle(obj, (state == "0") ? -46 : 0);
}

function onFlagOverHandle(obj, designId) {
    var vy = 0;
    if (isToBottom("btnFlag" + designId))
        vy = -46;
    // 显示ToolTip
    if ($("#" + "divFlagState" + designId).html() == "0")
        onShowToolTip("btnFlag" + designId, 0, "unflag", "", 0, 0, vy);
    else
        onShowToolTip("btnFlag" + designId, 0, "flag as inapproapriate", "", 0, 0, vy);
}
function onFlagOutHandle(obj, designId) {
    // 隐藏ToolTip
    onHideToolTip();
}

function onEidtOverHandle(obj, designId,text) {
    setBtnStyle(obj, -22);

    var vy = 0;
    if (isToBottom("btnEdit" + designId))
        vy = -45;
    // 显示ToolTip
    if (text == "edit") {
        onShowToolTip("btnEdit" + designId, 0, text, "", 0, 0, vy);
    }
    else {
        onShowToolTip("btnDelete" + designId, 0, text, "", 0, 0, vy);
    }
}
function onEidtOutHandle(obj) {
    setBtnStyle(obj,0);
    // 隐藏ToolTip
    onHideToolTip();
}

function onErrorOkOutHandle(obj) {
    $(obj).css("background-position", "0px 0px");
}
function onErrorOkOverHandle(obj) {
    $(obj).css("background-position", "0px 0px");
}
function onErrorOkDownHandle(obj) {
    $(obj).css("background-position", "0px 0px");
}

function onFlagClickHandle(designId, url, index) {
    Master.IsLoginUser(function resultHandle(result) {
        if (checkAjax(result) == false) return;
    
        if (result.value <= 0) {
            $("#anyonemostDiv").show();
        }
        else {
            // 0已举报，1未举报
            var state = $("#divFlagState" + designId + index).html();
            switch (state) {
                case "1":
                    {
                        $("#divFlagDesignId").html(designId + "," + index);
                        $("#maskFlag").show();

                        if (url == "") {
                            $("#divFlagImg").hide();
                            $("#divFlagTitle").css("width", "300px");
                            $("#divFlagTop").css("margin-top", "20px");
                        }
                        else {
                            $("#divFlagImg").attr("src", url);
                            $("#divFlagTitle").css("width", "240px");
                            $("#divFlagTop").css("margin-top", "10px");
                            $("#divFlagImg").show();
                        }
                        if (isIE8()) {
                            $("#flagPanel").show();
                        }
                        else {
                            $("#flagPanel").fadeIn("slow");
                        }
                        var top = $(document).scrollTop();
                        var width = $(document).width();
                        var fW = $("#flagPanel").width();
                        $("#flagPanel").css("left", Math.floor((width - fW) / 2) + "px");
                        $("#flagPanel").css("top", top + 200 + "px");
                        break;
                    }
                case "0":
                    {
                        var resultF = Controls_ucFlagPanel.SetFlag(designId, "UnSelect");
                        if (checkAjax(resultF) == false) return;
                        if (resultF.value == 1) {
                            $("#btnFlag" + designId + index).css("background-position", "0px 0px");
                            $("#divFlagState" + designId + index).html(1);
                        }
                        break;
                    }
            }
        }
    });
}

function onFlagCancelHandle() {
    $("#divFlagDesignId").html("");
    $("#maskFlag").hide();
    if (isIE8()) {
        $("#flagPanel").hide();
    }
    else {
        $("#flagPanel").fadeOut("slow");
    }
}

function onFlagOkHandle() {
    var designIds = $("#divFlagDesignId").html().split(",");
    var designId = designIds[0];
    var index = designIds[1];
    var result = Controls_ucFlagPanel.SetFlag(designId, "Select");
    if (checkAjax(result) == false) return;
    
    if (result.value == 1) {
        $("#btnFlag" + designId + index).css("background-position", "0px -21px");
        $("#divFlagState" + designId + index).html(0);
        $("#gridItem_" + designId + index + "_flag").css("background-image", "0px -17px");
    }
    $("#maskFlag").hide();
    if (isIE8()) {
        $("#flagPanel").hide();
    }
    else {
        $("#flagPanel").fadeOut("slow");
    }
}

function onDeleteDesignClickHandle(designId, index) {
    Master.IsLoginUser(function resultHandle(result) {
        if (checkAjax(result) == false) return;
    
        if (result.value <= 0) {
            $("#anyonemostDiv").show();
        }
        else {
            $("#maskFlag").show();
            $("#divDeleteDesignId").html(designId + "," + index);
            if (isIE8()) {
                $("#delDesPanel").show();
            }
            else {
                $("#delDesPanel").fadeIn("slow");
            }
            var top = $(document).scrollTop();
            var width = $(document).width();
            var fW = $("#delDesPanel").width();
            $("#delDesPanel").css("left", Math.floor((width - fW) / 2) + "px");
            $("#delDesPanel").css("top", top + 200 + "px");
        }
    });
}

function onDeleteDesignCancelHandle() {
    $("#divDeleteDesignId").html("");
    $("#maskFlag").hide();
    if (isIE8()) {
        $("#delDesPanel").hide();
    }
    else {
        $("#delDesPanel").fadeOut("slow");
    }
}

function onUserClickHandle(value) {
    ShowGridViewPage(value);
}

// 显示通用错误面板
function onShowErrorPanel(msg) {
    var width = $(document).width();
    var height = $(document).height();
    $("#maskFlag").width(width);
    $("#maskFlag").height(height);
    $("#maskFlag").show();
    if (isIE8()) {
        $("#errorPanel").show();
    }
    else {
        $("#errorPanel").fadeIn("slow");
    }
    var top = 0;
    var fW = $("#errorPanel").width();
    var fH = $("#errorPanel").height();
    var left1 = (width - fW) / 2;
    var top1 = (height - fH) / 2 - top;
    
    if (msg != "") {
        $("#msgError").html(msg);
    }
    else {
        $("#msgError").html("Network problem.  Please try again later.");
    }
    
    $("#errorPanel").css("left", left1);
    $("#errorPanel").css("top", top1);        
}

function onErrorCancelHandle() {
    if(isAjaxFault)
    {
        isShowEditor = false;
        window.location.reload();
    }
    else
    {
        $("#maskFlag").hide();
        if (isIE8()) {
            $("#errorPanel").hide();
        }
        else {
            $("#errorPanel").fadeOut("slow");
        }
    }
    
}

function onCommentCheck(obj)
{
    var str = $(obj).val();
    if(str.length > 140)
    {
        $(obj).val(str.substr(0, 140));
    }
}

function onPreferencesClickHandle() {
    onAccountClickHandle(1);
}

function showDivLeft(type) {
    var obj = $("#noData");
    if (obj.length == 1) return;
    
    var state;
    var btn;
    switch (type)
    { 
        case "GridView":
            state = "Grid";
            btn = $("#btnGrid")[0];
            break;
        case "ListView":
            state = "List";
            btn = $("#btnList")[0];
            break;
        case "SingleView":
            state = "Single";
            btn = $("#btnSingle")[0];
            break;
        case "SlideView":
            state = "Slideshow";
            btn = $("#btnSlideshow")[0];
            break;
    }
    
    setBtnStyle(btn, -34);
    $("#viewState").html(state);
    $("#divLeft").show();
}

function onReviewItemOverHandle(reviewId, showState) {
    if (showState == 1) {
        $("#btnDelRv" + reviewId).show();
    }
}

function onReviewItemClickHandle(reviewId, showState) {
    onReviewItemOverHandle(reviewId, showState);
}

function onReviewItemOutHandle(reviewId) {
    $("#btnDelRv" + reviewId).hide();
}

// 根据所给的Item的样式名称，宽度来动态的计算在容器中所处理的位置，
// 以此来解决div居中的问题。
// 前提，注意必须为Item设置Id值，便于锁定Item
// cssName表示该Item的样式名称 w表示Item的占用宽度 container存放Item的容器　rTop表示距离最顶端的值
function onResetPosition(cssName, w, container, rTop) {
    var objs = $("." + cssName);
    var wContainer = $("#" + container).width();
    if (objs.length <= 0)
        return;
        
    //把垂直滚动条的宽度也计算进来
    var nScrollHeight = $("#" + container)[0].scrollHeight;
    var hContainer = $("#" + container).height();
    
    if (nScrollHeight > hContainer)
        wContainer = wContainer - 20;
    
    // 计算每行应该使用的宽度。
    var itemContainerWidth = 0;
    
    for (var n = 0; n < 1000; n++) {
        if (itemContainerWidth + w > wContainer)
            break;
        else
            itemContainerWidth = itemContainerWidth + w;
    }

    // 每行可以显示Item的数量
    var rItem = itemContainerWidth / w;
    // 每行的Item的Left，不会随便更改，除非容器Resize
    var rLeft = (wContainer - itemContainerWidth) / 2;
    // 每行的Item的Top，会随着行数据的增加而变化

    // 去掉重复的元素
    var tmpObj;
    var tmpObjs = new Array();
    for (var t = 0; t < objs.length; t++) {
        tmpObj = objs[t];
        if (!isArrContainer(tmpObjs, tmpObj)) {
            tmpObjs.push(tmpObj);
        }
    }
    objs = tmpObjs;
    
    //区分开少于一行与多行的处理逻辑　暂时不做区分
    var hang;
    for (var i = 0; i < objs.length; i++) {
        var obj = objs[i];
        // 第几行
        var r = parseInt(i / rItem);
        // 第几列
        hang = r+1;
        var c = i % rItem;

        var vx = (c * 200) + rLeft;
        var vy = r * 200 + rTop;
        
        $("#" + obj.id).css("left", vx);
        $("#" + obj.id).css("top", vy);
        $("#" + obj.id).css("display", "block");
    }
    if ($("#bottom")) {
        $("#bottom").show();
        var num = hang * 210 + 150;
        $("#bottom").css("top", num+70 + "px");
        $("#Login").height(num+70);
    }
}

// 检查数据中是否已包含该元素
function isArrContainer(arr, obj) {
    for (var i = 0; i < arr.length; i++) {
        if (arr[i].id == obj.id)
            return true;
    }
    return false;
}

// 动态显示ToolTip
function onShowToolTip(id, width ,text, state, tipx, vxx, vyy) {
    $("#divTopbarTipText").html(text);
    
    var vx = $("#" + id).offset().left;
    var vy = $("#" + id).offset().top;
    var vw = $("#" + id).width();
    var vh = $("#" + id).height();

    if (state == "") {
        if (isToBottom(id))
            state = "";
        else
            state = "top";
    }

    var wToolTip = $("#divTopbarTip").width();
    // 箭头居中
    if (tipx == 0) {
        tipx = (wToolTip - 13) / 2;
    }
    if (vxx == 0) {
        vx = vx + vw / 2 - wToolTip/2;
    }
        
    if(state=="top") {
        if (vyy == 0) {
            vy = vy + vh + 10;
        }
        $("#divTopbarDownArrow").css("display", "none");
        $("#divTopbarUpArrow").css("display", "block");
        $("#divTopbarUpArrow").css("left", tipx+"px");
        $("#divTopbarTip").css("top", vy+vyy+"px");
        $("#divTopbarTip").css("left", vx+vxx+"px");
    }
    else {
        if (vyy == 0) {
            vy = vy - vh - 16;
        }
        // 针对GridView中的元素的ToolTip，由于GridView的容器是子容器，所以-20
        if (id.toString().indexOf("btn") == -1)
            vyy = vyy - 20;
        $("#divTopbarDownArrow").css("display", "block");
        $("#divTopbarUpArrow").css("display", "none");
        $("#divTopbarDownArrow").css("left", tipx+"px");
        $("#divTopbarTip").css("top", vy+vyy+"px");
        $("#divTopbarTip").css("left", vx+vxx+"px");
    }
    
    if (isIE8())
        $("#divTopbarTip").css("display", "block");
    else
        $("#divTopbarTip").fadeTo("slow", 1);
}

function onHideToolTip() {
    if($("#divTopbarTip")!=null)
        $("#divTopbarTip").hide();
}

function isToBottom(id) {
    if ($("#" + id) == null)
        return false;

    var vy = $("#" + id).offset().top;
    var nScrollTop = $("#contentPanel")[0].scrollTop;
    var nScrollHeight = $("#contentPanel").height();
    
    if (vy + nScrollTop - 30 > nScrollTop + nScrollHeight)
        return true;
    else
        return false;
}

// 检查当前的浏览器是否是IE8及以下
function isIE8() {
    if (Sys.ie && Sys.ie != "9.0")
        return true;
    else
        return false;
}
function resizeTabLine() {
    //随着窗口的Resize动动态的更改Account、MobileApp页面的选项卡的左右两侧延长线
    if ($("#oLeftLine") != null) {
        var w = $("#contentPanel").width();
        var ol = (w - 1000) / 2;
        var or = (w - 1000) / 2;
        $("#oLeftLine").width(ol);
        $("#oRightLine").width(or);
        $("#oRightLine").css("margin-left", ol + 975);
    }
}

function getMapData(obj, x, y) {
    if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById(obj));
        var point = new GLatLng(x, y);
        map.setCenter(point, 14);
        var marker = new GMarker(point);
        map.addOverlay(marker);
        var geocoder = new GClientGeocoder();
    }
}

var isAjaxFault = false;
function checkAjax(result)
{
    if(result != null && result.error != null)
    {
        onShowErrorPanel("Welcome back.  Click ok to continue.");
        isAjaxFault = true;
        return false;
    }
    else
        return true;
}

function showGuidePanel() {
    $("#maskFlag").css("background-color", "#000000");
    $("#maskFlag").show();
    var top = $(document).scrollTop();
    var width = $(document).width();
    var fW = $("#guidePanel").width();
    var left = Math.floor((width - fW) / 2);
    $("#guidePanel").css("left", left + "px");
    $("#guidePanel").css("top", top + 50 + "px");
    $("#guideClose").css("left", width / 2 + 290 - left + "px");
    $("#guideClose").css("top", top + 25 + "px");
    
    if (isIE8()) {
        $("#guidePanel").show();
    }
    else {
        $("#guidePanel").fadeIn("slow");
    }
}
function onMaskHandle(obj) {
    var flagPanel = $("#flagPanel");
    if (flagPanel.css("display") == "block") {
        flagPanel.hide();
    }
    var delDesPanel = $("#delDesPanel");
    if (delDesPanel.css("display") == "block") {
        delDesPanel.hide();
    }
    var errorPanel = $("#errorPanel");
    if (errorPanel.css("display") == "block") {
        errorPanel.hide();
    }
var guidePanel = $("#guidePanel");
    if (guidePanel.css("display") == "block") {
        guidePanel.hide();
    }
    $(obj).hide();
}
