﻿/*----------------------------------------------------------------
Copyright (C) 2009 Subcon China Corporation
File function:SubconChina popup js division
Create tag:Lyan 2009-4-13

Change tag:
Change description:
----------------------------------------------------------------*/

// 获取窗体客户端的可见高度和宽度
// 用法:
// $.getClientSize(window)
jQuery.getClientSize = function(w) {
    if ($.browser.msie) {     //IE浏览器
        var oSize, doc = w.document.documentElement;
        oSize = (doc && doc.clientWidth) ? doc : w.document.body;

        if (oSize) {
            return { w: oSize.clientWidth, h: oSize.clientHeight }; //返回客户端宽度和高度
        }
        else {
            return { w: 0, h: 0 }; //否则都返回0
        }
    }
    else {
        return { w: w.innerWidth, h: w.innerHeight };
    }
}

// 获取scroll top of window
// 用法:
// $.getScrollTop()
jQuery.getScrollTop = function() {
    var scrollTop = 0;
    if (document.documentElement && document.documentElement.scrollTop) {
        scrollTop = document.documentElement.scrollTop;
    }
    else if (document.body) {
        scrollTop = document.body.scrollTop;
    }
    return scrollTop;
}

// 判断是否dtd模式
// 用法:
// $.isDTD(window.document)
jQuery.isDTD = function(doc) {
    return ('CSS1Compat' == (doc.compatMode || 'CSS1Compat'));
}

// 设置透明度
// e:要设置透明度的元素
// opac:透明度
// 用法:
// $.setOpacity(document.getElementById('div'), 0.50);
jQuery.setOpacity = function(e, opac) {
    if ($.browser.msie) {
        opac = Math.round(opac * 100);
        e.style.filter = (opac > 100 ? '' : 'alpha(opacity=' + opac + ')');
    }
    else {
        e.style.opacity = opac;
    }
}

// 获取页面元素的位置
// 用法:
// $.getWindowPosiotion(window)
jQuery.getWindowPosiotion = function(w) {
    if ($.browser.msie) {
        var doc = w.document;
        var oPos = { X: doc.documentElement.scrollLeft, Y: doc.documentElement.scrollTop };
        if (oPos.X > 0 || oPos.Y > 0) return oPos;
        return { X: doc.body.scrollLeft, Y: doc.body.scrollTop };
    }
    else {
        return { X: w.pageXOffset, Y: w.pageYOffset };
    }
}

// 为元素设置样式
// 用法:
// $.setStyle(document.getElementById('demo'), { 'width': '100%'});
jQuery.setStyle = function(e, dict) {
    var style = e.style;
    for (var n in dict) { style[n] = dict[n]; }
}

// 为弹出层设置固定样式
jQuery.popStyle = function(e) {
    e.style.cssText = 'margin:0;padding:0;background-image:none;background-color:transparent;border:0;';
}

// 取消默认事件
jQuery.notDoDefaultEvt = function(evt) {
    if (evt.preventDefault) {
        evt.preventDefault();
    } else {
        evt.returnValue = false;
    }
}

// 禁止冒泡
jQuery.cancelBubble = function(evt) {
    var e = (evt) ? evt : window.event;
    if (window.event) {
        e.cancelBubble = true;
    } else {
        //e.preventDefault(); 
        e.stopPropagation();
    }
}

// 为dom添加事件
// o:元素
// e:事件名称，去掉'on'
// l:处理事件handler
jQuery.addEvent = function(o, e, l) {
    if ($.browser.msie) {
        o.attachEvent('on' + e, l);
    }
    else {
        o.addEventListener(e, l, false);
    }
}

// 为dom移除事件
// o:元素
// e:事件名称，去掉'on'
// l:处理事件handler
jQuery.removeEvent = function(o, e, l) {
    if ($.browser.msie)
        o.detachEvent('on' + e, l);
    else
        o.removeEventListener(e, l, false);
}

// 取消右键事件
jQuery.cancelRMenu = function(doc) {
    doc.oncontextmenu = function(e) {
        e = e || event || this.parentWindow.event;
        var o = e.srcElement || e.target;
        if (!(o.type == 'password' || o.type == 'text' || o.type == 'textarea')) {
            if ($.browser.msie) {
                e.returnValue = false;
            } else {
                e.preventDefault();
            }
        }
    };
}

// 获取Document
jQuery.getDocument = function(e) {
    return e.ownerDocument || e.document;
}

// 移除节点
jQuery.removeNode = function(n) {
    return n.parentNode.removeChild(n);
}


//设置弹出层默认配置
var scPopConfig = {};
scPopConfig = {
    opac: 0.50, //透明度
    bgcolor: '#999999', //背景色
    bzi: null, //z index
    it: null,
    il: null
};

(function($) {
    $.fn.OpenWin = function(options) {
        var twin = window.parent, cover;
        while (twin.parent && twin.parent != twin) {

            twin = twin.parent; //取得顶级窗口
        }
        var tdoc = twin.document; //取得顶级窗口文档

        var getzi = function() {//取得z-index
            if (!scPopConfig.bzi) {
                scPopConfig.bzi = 999;
            }
            return ++scPopConfig.bzi;
        };

        var resizehdl = function() {//resize 处理函数
            if (!cover) return;
            //根据DTD的不同模式使doc指向不同节点
            var rel = $.isDTD(tdoc) ? tdoc.documentElement : tdoc.body;
            $.setStyle(cover, {
                'width': Math.max(rel.scrollWidth, rel.clientWidth, tdoc.scrollWidth || 0) - 1 + 'px',
                'height': Math.max(rel.scrollHeight, rel.clientHeight, tdoc.scrollHeight || 0) - 1 + 'px'
            });
        };
        return {
            Popup: function(t, p, w, h, c, i, n, s, l) {
                if (i !== "scroll") {
                    this.scrollHide();
                }
                if (c) {
                    this.DisplayFilter();
                } else {
                    if (cover) {
                        cover = null; //如果不显示遮罩层，有也关闭
                    }
                }
                var dinfo = { tit: t, page: p, win: window, topw: twin, link: i, sc: s };
                var clsize = $.getClientSize(twin), spos = $.getWindowPosiotion(twin);

                // 弹出层随滚动条滚动
                var schdl = function() {
                    var rel = $.getWindowPosiotion(twin);
                    $.setStyle(dfrm, { 'top': rel.Y + scPopConfig.it + 'px', 'left': rel.X + scPopConfig.il + 'px' });
                };

                var it = (l && l.top) ? spos.Y + l.top : Math.max(spos.Y + (clsize.h - h - 20) / 2, 0);
                var il = (l && l.left) ? spos.X + l.left : Math.max(spos.X + (clsize.w - w - 20) / 2, 0);

                var dfrm = tdoc.createElement('iframe');
                $.popStyle(dfrm);
                if (n) {
                    dfrm.id = n;
                }
                dfrm.frameBorder = 0;
                dfrm.src = '/selectwin/P.htm';
                $.setStyle(dfrm, {
                    'position': 'absolute', 'top': it + 'px', 'left': il + 'px',
                    'width': w + 'px', 'height': h + 'px', 'zIndex': getzi()
                });

                // 判断是否随滚动条滚动
                if (s) { scPopConfig.it = it - spos.Y; scPopConfig.il = il - spos.X; };
                if (s) {
                    $.addEvent(twin, 'scroll', schdl);
                }
                tdoc.body.appendChild(dfrm);
                dfrm._dlgargs = dinfo;
            },
            // 关闭弹出层
            CloseDiv: function(d, c) {
                var dlg = ('object' == typeof (d)) ? d.frameElement : document.getElementById(d);
                if (dlg) {
                    $.removeNode(dlg);
                }
                if (c) {
                    this.HideFilter(c);
                }
            },
            // 显示遮罩
            DisplayFilter: function(mycolor, myocp) {
                cover = tdoc.createElement('div');
                $.popStyle(cover);
                if (mycolor) {
                    $.setStyle(cover, {
                        'position': 'absolute', 'zIndex': getzi(), 'top': '0px',
                        'left': '0px', 'backgroundColor': mycolor
                    });
                }
                else {
                    $.setStyle(cover, {
                        'position': 'absolute', 'zIndex': getzi(), 'top': '0px',
                        'left': '0px', 'backgroundColor': scPopConfig.bgcolor
                    });
                }
                if (myocp) {
                    $.setOpacity(cover, myocp);
                }
                else {
                    $.setOpacity(cover, scPopConfig.opac);
                }

                if ($.browser.msie && $.browser.version == "6.0") {//IE6防select遮挡问题
                    var ifrm = tdoc.createElement('iframe');
                    $.popStyle(ifrm);
                    ifrm.hideFocus = true;
                    ifrm.frameBorder = 0;
                    ifrm.src = "";
                    $.setStyle(ifrm, {
                        'width': '100%', 'height': '100%', 'position': 'absolute', 'left': '0px',
                        'top': '0px', 'filter': 'progid:DXImageTransform.Microsoft.Alpha(opacity=0)'
                    });
                    cover.appendChild(ifrm);
                }

                $.addEvent(twin, 'resize', resizehdl);
                resizehdl();
                tdoc.body.appendChild(cover);
            },
            // 取得遮罩
            GetCover: function() { return cover; },
            // 关闭遮罩
            HideFilter: function(o) { $.removeNode(o); cover = null; o = null; },
            scrollHide: function() {
                var scrollHide = document.createElement("DIV");
                scrollHide.id = "scScroll";
                scrollHide.style.display = 'none';
                document.body.appendChild(scrollHide);

                $("#scScroll").html("<style>html {overflow: hidden;}</style>");
            },
            scrollShow: function() {
                if ($("#scScroll").length > 0) {
                    $("#scScroll").remove();
                }
            }
        };
    } ();
})(jQuery)

// 系统标签选择接口，引入subconpopup后可以直接调用
var SysTag = {};
SysTag.PopupWidth = 950;
SysTag.PopupHeight = 520;

var mLang = "";
// 以下为管理标签调用
// 行业
SysTag.SI = function(valueId, textId, lang) {
    var title = "Select Trade";
    if (lang == "cn") {
        title = "选择行业";
    }
    mLang = lang;
    $().OpenWin.Popup(title, "/selectwin/t.aspx?v=" + valueId + "&t=" + textId + "&l=" + lang + "&r=" + Math.random(), SysTag.PopupWidth, SysTag.PopupHeight, true);
}

// 地区
SysTag.SA = function(valueId, textId, lang) {
    var title = "Select Area";
    if (lang == "cn") {
        title = "选择地区";
    }
    mLang = lang;
    $().OpenWin.Popup(title, "/selectwin/a.aspx?v=" + valueId + "&t=" + textId + "&l=" + lang + "&r=" + Math.random(), SysTag.PopupWidth, SysTag.PopupHeight, true);
}
