﻿/*----------------------------------------------------------------
// 文件名：voe2_common.js
// 依赖于：jquery-1.3.2.min.js
//
// 功能描述：全站通用类、对象.
//
// 创建标识：2010/02/02
//
// 修改标识：
// 修改描述：
//----------------------------------------------------------------*/
__ACCEPT__=-1;                                  //当前用户
__VOESERVICE__="/grid/g.voe";                   //服务提供者

WINDOW=window
/*
    窗体管理器，管理当前页面中所有窗体的创键个销毁。
    建意:当前页面中所有窗体都通过管理器创建。
    var frmMgr=FormManager.getInstance()
    var frm=frgMgr.getForm("KEY");
    if(!frm)
    {
        frmMgr.createForm("KEY",
        {
            theme:"",
            header:{
                enable:true,
                title:"新窗口",
                isClose:true,
                closeHander:function(event){self.hide();}
            },
            footer:{
                enable:false,
                isConfirm:true,
                confirmHander:function(event){self.hide();},
                isCancel:true,
                cancelHandler:function(event){self.hide();}
            }
        });
    }
    frm.setPosition("center","center");
    frm.show("",true);
*/
function FormManager()
{
    var forms={};       
    var win=WINDOW;
    if(FormManager.WINDOW) win=FormManager.WINDOW;
    
    var container=win.document.body;
    
    this.container=container;
    //创建一个被窗体管理器管理的窗口
    //[必须]key
    //[可选]args
    this.createForm=function(key,args)
    {
        if(forms[key])
        {
            alert("己经存在相同键值的窗体。");
            return;
        }
        if(args)
        {
            args.key=key;
            args.formManager=this;
            args.window=win;
        }
        else
        {
            args={
                key:key,
                formManager:this,
                window:win
            }
        }
        forms[key]=new Form(args);
        return forms[key];
    }
    //销毁一个被窗体管理器管理的窗口
    //[必须]key
    this.destoryForm=function(key)
    {
        var form=forms[key];
        if(form)
        {
            delete forms[key];
            container.removeChild(form.mode);
            container.removeChild(form.container);
        }
    }
    //窗体管理器中获取指定key值的窗体，没有则返回null
    //[必须]key
    this.getForm=function(key)
    {
        var form=null;
        if(forms[key])
        {
            form=forms[key];
        }
        return form;   
    }
}
FormManager._Self=null;
FormManager.getInstance=function()
{
    if(this._Self==null)
    {
        this._Self=new FormManager();
    }
    return this._Self;
}


/*
    窗体基类
*/
function Form()
{
    var self=this;
    var args={
        key:null,
        formManager:null,
        window:window,
        theme:"",
        header:{
            enable:true,
            title:"新窗口",
            isClose:true,
            closeHander:function(event){self.hide();}
        },
        footer:{
            enable:false,
            isConfirm:true,
            confirmHander:function(event){self.hide();},
            isCancel:true,
            cancelHandler:function(event){self.hide();}
        }
    };
    for(key in arguments[0]) 
    {
        if(key=="header")
        {
            for(key2 in arguments[0][key])
                args[key][key2]=arguments[0][key][key2];
            continue;
        }
        if(key=="footer")
        {
            for(key2 in arguments[0][key])
                args[key][key2]=arguments[0][key][key2];
            continue;
        }
        args[key]=arguments[0][key];
    }
    
    var container=args.window.document.createElement("dl");
    var mode=args.window.document.createElement("div");         //模似模式窗口
    
    if(args.theme=="") 
        container.className="formBase"
    else 
        container.className="formBase "+args.theme;
    
    mode.className="formMode";
    
    //构造头部 Begin
    if(args.header.enable)
    {
        var head=args.window.document.createElement("dt");    
        head.className="head";
        
        var tit=args.window.document.createElement("b");
        tit.innerHTML=args.header.title;
        head.appendChild(tit);
        
        if(args.header.isClose)
        {
            var close=args.window.document.createElement("a");
                close.title="关闭"
                close.innerHTML=" ";
                $(close).bind("click",{sender:self},args.header.closeHander)
                
            head.appendChild(close);
        }
        container.appendChild(head);
    }
    //构造头部 End
    
    //构造内容区 Begin
    var load=args.window.document.createElement("div");
        load.className="load";
    var ifra=args.window.document.createElement("iframe");
        ifra.className="ifra";
        ifra.src="about:blank";
        ifra.scrolling="no";
        ifra.marginWidth="0";
        ifra.marginHeight="0";
        ifra.frameBorder="0";
        ifra.allowTransparency=true;
    var docm=args.window.document.createElement("div");
        docm.className="docm";
        
        
    var wrap=args.window.document.createElement("dd");
        wrap.className="wrap";
        wrap.appendChild(load);
        wrap.appendChild(ifra);
        wrap.appendChild(docm);
    
    container.appendChild(wrap);
    //构造内容区 End
    
    
    //构造底部区 Begin
    if(args.footer.enable)
    {
        var foot=args.window.document.createElement("dd");    
            foot.className="foot"; 
        
        if(args.footer.isConfirm)
        {
            var confirm=args.window.document.createElement("input");
                confirm.type="button";
                confirm.value="确定";
                $(confirm).bind("click",{sender:self},args.footer.confirmHander);
                
            foot.appendChild(confirm);
        }
        
        if(args.footer.isCancel)
        {
            var cancel=args.window.document.createElement("input");
                cancel.type="button";
                cancel.value="取消";
                $(cancel).bind("click",{sender:self},args.footer.cancelHandler);
            
            foot.appendChild(cancel);
        }
        
        container.appendChild(foot);
    }
    //构造底部区 End
    if(args.formManager)
    {
        args.formManager.container.appendChild(mode);
        args.formManager.container.appendChild(container);
    }else{
        args.window.document.body.appendChild(mode);
        args.window.document.body.appendChild(container);
    }
    
    
    this.mode=mode;
    this.container=container;
    this.content=wrap;
    
    
    
    //获取或设置主题
    this.getTheme=function()
    {
        return container.className;        
    }
    this.setTheme=function(theme)
    {
        container.className="formBase "+theme;
    }
    
    this.getTitle=function()
    {
    
    }
    this.setTitle=function()
    {
    
    }
    
    
    //获取窗体的内容区大小
    this.getSize=function()
    {
       return {
            width:$(container).width(),
            height:$(container).height()
        };
    }
    this.setSize=function(width,height)
    {
        if(typeof width ==="number")
        {
            $(container).width(width);
        }
        if(typeof height==="number")
        {
            var wheight=height;
            if(args.header.enable)
            {
                wheight-=$(".head",container).outerHeight();
            }
            if(args.footer.enable)
            {
                wheight-=$(".foot",container).outerHeight();
            }
            $(wrap).height(wheight);
            $(container).height(height);
        }
    }
    
    //设置窗体显示位置
    this.setPosition=function(x,y)
    {
       var win={
                clientWidth:args.window.document.documentElement.clientWidth,
                clientHeight:args.window.document.documentElement.clientHeight,
                scrollTop:args.window.document.documentElement.scrollTop,
                scrollLeft:args.window.document.documentElement.scrollLeft
            };
        var ctr={
                offsetWidth:$(container).outerWidth(true),
                offsetHeight:$(container).outerHeight(true)
            };
        
        var left=0,top=0;
        
        if(x==="left"){left=0;}
        else if(x==="right") {left=(win.clientWidth-ctr.offsetWidth);}
        else if(x==="center"){left=(win.clientWidth-ctr.offsetWidth)/2;}
        else{left=x;}
        
        if(y==="top"){top=0;}
        else if(y==="bottom"){top=(win.clientHeight-ctr.offsetHeight);}
        else if(y==="center"){top=(win.clientHeight-ctr.offsetHeight)/2;}
        else{top=y;}
        
        container.style.left=left+"px";
        container.style.top=top+"px";
        
        if(($.browser.msie && $.browser.version==6.0)||( $(container).css("position")==="absolute"))
        {
            container.style.left=(left+win.scrollLeft)+"px";
            container.style.top=(top+win.scrollTop)+"px";
        }
    }
    
    //显示窗体内容
    //[必须]content         若指定是一个URL将以IFrame程载形式显示内容,否则解析成HTML
    //[可选]isMode=false    指定为true以模式窗口形式显示
    this.show=function(content,isMode)
    {
        if(isMode)
        {
            mode.style.height=args.window.document.documentElement.scrollHeight+"px";
            mode.style.display="block";
        }
        container.style.display="block";
        
        if(!content) return;    //若没有指定任何内容
        
        if(typeof content ==="object")
        {
            $(docm).append(content).css({display:"block"});
            $(load).css({display:"none"});
            $(ifra).css({visibility:"hidden"})
            return
        }
        
        if(/^\/?([0-9a-z_-]+\/)*[0-9a-z_-]+\.[a-zA-Z]+/i.test(content))
        {
            $(load).css({display:"block"});
            $(docm).css({display:"none"});
            $(ifra).css({visibility:"hidden"})
            .one("load",function()
            {
                $(ifra).css({visibility:"visible"});
                $(load).fadeOut("slow");
            })
            .attr("src",content);
            return;
        }
        
        if(typeof content==="string")
        {
            $(docm).html(content).css({display:"block"});
            $(load).css({display:"none"});
            $(ifra).css({visibility:"hidden"})
            return
        }
    }
    this.hide=function()
    {
        mode.style.display="none";
        container.style.display="none";
    }
    this.close=function()
    {
        if(args.formManager)
        {
            args.formManager.destoryForm(args.key);
            return
        }
        args.window.document.body.removeChild(form.mode);
        args.window.document.body.removeChild(form.container);
    }
}

/********************************************************
警告对话框
[必须]message
[可选]{
    title:"",
    theme:"default_alert",
    isClose:false,
    isOk:true,
    isCancel:false,
    closeHandler:function(event){},
    okHandler:function(event){},
    cancelHandler:function(event){}
}
********************************************************/
function MsgShow(message,options,inithandler)
{
    var args={
        title:"",
        theme:"default_alert",
        isClose:false,
        isOk:true,
        isCancel:false,
        closeHandler:function(event)
        {
            event.data.sender.close();
        },
        okHandler:function(event)
        {
            event.data.sender.close();
        },
        cancelHandler:function(event)
        {
            event.data.sender.close();
        }
    }
    for(key in options) 
    {
        args[key]=options[key];
    }
    
    var form=FormManager.getInstance().createForm("__ALERT__",
    {
        theme:args.theme,
        header:{
            enable:true,
            title:args.title,
            isClose:args.isClose,
            closeHander:args.closeHandler
        },
        footer:{
            enable:true,
            isConfirm:args.isOk,
            confirmHander:args.okHandler,
            isCancel:args.isCancel,
            cancelHandler:args.cancelHandler
        }
    });
    form.setTheme(args.theme);
    form.setPosition("center","center");
    
    if(inithandler && typeof inithandler==="function"){inithandler(form)}
    
    form.show(message,true);
}

/*
    显示/隐藏遮照层
*/
function showVeil(box)
{
    var veil=$("#__MODELVEIL__");
    if(veil.length<=0)
    {
       var _v=document.createElement("div");
       _v.id="__MODELVEIL__";
       _v.className="VEIL";
       document.body.appendChild(_v);
       veil=$(_v);
    }
    box.before(veil.css({height:document.documentElement.scrollHeight}).show());
}
function hideVeil()
{
    $("#__MODELVEIL__").hide();
}



/*
    验证是否登录，没有则显示登录框
*/
function VLogin()
{
    if(__ACCEPT__<=0)
    {
        var form= FormManager.getInstance().getForm("__LOGIN__");
        if(form==null)
        {
            form=FormManager.getInstance().createForm("__LOGIN__",
            {
                theme:"form_login",
                header:{
                    enable:true,
                    title:"",
                    isClose:true
                },
                footer:{enable:false}
            });
        }
        form.setPosition("center","center");
        form.show("/grid/login.aspx",true);
        return false;
    }
    return true;
}



/*
    全站客服QQ
*/
function QQBar()
{
    var win=window;
    if(WINDOW){ win=WINDOW;}
    
    var shadow=win.document.createElement("div");
        shadow.className="shadow";
    var container=win.document.createElement("div");
        container.className="serviceBar";
    var a=win.document.createElement("a");
        a.href="javascript:void(0)";
        a.onclick=function()
        {
            $(shadow).hide();
            $(container).hide();
        }
    var h3=win.document.createElement("h3");
        h3.className="tit";    
        h3.appendChild(a);
        container.appendChild(h3);
    var divLeft=win.document.createElement("div");
        divLeft.className="div_left";
        divLeft.innerHTML="<h3 class='left_title'>沃土湾客服美眉上班制度</h3>";
        divLeft.innerHTML+="<ul class='kf_ul'><li style='background:url(/grid/themes/kfmm.jpg) no-repeat 0 0'>正常班<br />08:30</li><li style='background:url(/grid/themes/kfmm.jpg) no-repeat -60px 0'>睡过头<br />09:00</li><li style='background:url(/grid/themes/kfmm.jpg) no-repeat -120px 0'>失恋期<br />08:00</li><li style='background:url(/grid/themes/kfmm.jpg) no-repeat -180px 0'>下班<br />17:30</li></ul>";
        divLeft.innerHTML+="<p class='kf_p' style='text-align:left;'>如遇客服不在线，请加为好友以便联系。有问题请留言，我们会尽快回复。</p>";
        container.appendChild(divLeft);
    
    var divRight=win.document.createElement("div");
        divRight.className="div_right";
        container.appendChild(divRight);
    var dl=win.document.createElement("dl");
    var callback=function(data)
    {
        $(data).find("category").each(function(index)
        {
            var node=$(this);
            
            dt=win.document.createElement("dt");
            dt.innerHTML=node.attr("name");
            dt.className="gory collapse";
            span=win.document.createElement("span");
            span.className="normal_weight";
            span.innerHTML=node.attr("case");
            dt.appendChild(span);
            dd=win.document.createElement("dd");
            dd.className="items";
            node.children().each(function()
            {
                a=win.document.createElement("a")
                a.href=$(this).attr("interface");
                a.innerHTML=$(this).attr("name");
                dd.appendChild(a);
            });
            dl.appendChild(dt);
            dl.appendChild(dd);
            divRight.appendChild(dl);
       });
    }
    $.get("/grid/resource/customerservice.xml",null,callback,"xml");
    
    win.document.body.appendChild(shadow);
    win.document.body.appendChild(container);
    
    this.show=function()
    {
        var sha=$(shadow);
        var ctr=$(container);
        if(arguments[0])
        {
            var offset=$(arguments[0]).offset();
                /*offset.left-=322;
                offset.top+=20;
            ctr.css(offset);*/
        }
        $(shadow).show();
        $(container).show();
    }
    this.hide=function()
    {
        $(shadow).hide();
        $(container).hide();
    }
    this.toggle=function()
    {
        var _this=this;
        var sha=$(shadow);
        var ctr=$(container);
        if(ctr.css("display")==="none" && sha.css("display")==="none")
            _this.show(arguments);
        else
            _this.hide();
    }
}
QQBar._qqbar=null;
QQBar.getInstance=function()
{
    if(this._qqbar==null)
    {
        this._qqbar=new QQBar();
    }
    return this._qqbar;
}


/*
    用户想法
*/
function IdeasBox()
{
    var win=window;
    if(WINDOW){ win=WINDOW;}
    
    var sug=$("#input_box input[name='suggestion']",win.document);
    var sub=$("#input_box input[name='submit']",win.document);
    
    var message = '写下您对本站的任何看法，让我们知道如何做的更好';
    sug.val(message).css({"color":"#444"});
    sug.focus(function()
    {
        if(this.value == message){ this.value = ''; }
        this.style.color = '#000';
    });
    sug.blur(function()
    {
        if(this.value == ''){
            this.value = message;
            this.style.color = '#444';
        }else{
            this.style.color = '#000';
        }
    });
    
    sub.mouseover(function()
    {
        this.style.backgroundColor = '#FF0000';
    });
    sub.mouseout(function()
    {
        this.style.backgroundColor = '#b12300';
    });
    sub.click(function()
    {
        if(sug.val()===message||sug.val()=="")
        { 
            MsgShow("请输入意见。");
            return; 
        }
        var self=this;
        
        var handler=function(data)
        {
            self.disabled=false;
            sug.val(message).css({"color":"#444"});
            
            if(typeof data !== "object") return;
            if(data.__ISEXCEPTION)
            {
                if(data.__TYPE==="ApplicationException") 
                    MsgShow(data.Message,{title:"错误提示!",isClose:false,isOK:true,isCancel:false})
                else
                    MsgShow("获取数据出错。",{title:"错误提示!",isClose:false,isOK:true,isCancel:false})
                return;
            }
            
            if(data.state==="OK")
            {
                MsgShow("感谢您的宝贵意见。");
            }
        }
        self.disabled=true;
        $.post(__VOESERVICE__,{"__cmd":"WRITEIDEA","content":sug.val()},handler,"json");
    });
}





/*
添加收藏
*/
function addBookMark(url,title)
{
    var ctrl=(navigator.userAgent.toLowerCase()).indexOf("mac")!=-1?"Command/Cmd":"CTRL";
    try{
        window.external.addFavorite(url,title);
    }
    catch(e)
    {
        try
        {
            window.sidebar.addPanel(url,title);
        }
        catch(e)
        {
            MsgShow("您可以尝试通过快捷键"+ ctrl +"+D 添加书签",{title:"",theme:"default_alert"});
        }
    }   
}
/*
    获取查询串
*/
function getParam(paramName)
{
    var paramList = location.search.replace("?","").split("&");
    for(var i = 0 ; i < paramList.length ; i++)
    {
        if(paramList[i].split("=")[0] == paramName)
            return paramList[i].substring(paramList[i].indexOf("=") + 1,paramList[i].length);
    }
    return "";
}

/*
    获取样式值
*/
function getStyle(obj, prop)
{     
    if (obj.currentStyle)
    {
        return obj.currentStyle[prop];     
    }
    else if(window.getComputedStyle)
    {
        propprop = prop.replace(/([A-Z])/g, "-$1");           
        propprop = prop.toLowerCase();        
        return document.defaultView.getComputedStyle(obj,null)[prop];     
    }      
    return null;
}
/*
    获取双字节字符长度
*/  
function getStrlen(str)
{
    var a=0;
    for (i=0;i<str.length;i++)
    {
        a++;
        if (str.charCodeAt(i)>255) //按照预期计数增加2
        {
            a++;
        }
    }
    return a;
}





//奖品滚动列表
function scrollAwardBar()
{
    var isstop=false;
    var box=$("div.awardList");
    setInterval(function()
    {
        if(isstop) return;
        var first=$("div.awardGroup:first",box);
        first.animate({"marginLeft":'-120px'},'slow',function()
        {
            box.append(first.css("margin-left","3px"));
        });
    },2500);
    box.mouseover(function(){isstop=true;});
    box.mouseout(function(){isstop=false;});
}
//获奖名单滚动列表
function scrollAwardUserList()
{
    var isstop=false;
    var box=$("#scrollAward");
    setInterval(function()
    {
        if(isstop) return;
        var first=$("div.group:first",box);
        first.animate({"marginTop":'-30px'},'slow',function()
        {
            box.append(first.css("margin-Top","0px"));
        });
    },4000);
    box.mouseover(function(){isstop=true;});
    box.mouseout(function(){isstop=false;});
}
//高分名单滚动列表
function scrollHScoreList()
{
    var isstop=false;
    var box=$("#scrollHScore");
    setInterval(function()
    {
        if(isstop) return;
        var first=$("div.group:first",box);
        first.animate({"marginTop":'-30px'},'slow',function()
        {
            box.append(first.css("margin-Top","0px"));
        });
    },4000);
    box.mouseover(function(){isstop=true;});
    box.mouseout(function(){isstop=false;});
}

function focusPic()
{
    var container=$("#focusPic",WINDOW.document);
    if(container.length<=0)
    {
        return;
    }    
    var tabContents=$(".tabContent",container);
    var tabs=$(".tabs_s .tab_s",container);
    var curIndex=0;
    var isStop=false;
    
    tabs.each(function(i)
    {
       $(this).mouseover(function()
       {
            tabs.removeClass("on");
            tabContents.removeClass("on");
            $(tabs.get(i)).addClass("on");
            $(tabContents.get(i)).addClass("on");
            curIndex=i;
       });
    });
    
    setInterval(function()
    {
        if(isStop) return;
        
        tabs.removeClass("on");
        tabContents.removeClass("on");
        $(tabs.get(curIndex%3)).addClass("on");
        $(tabContents.get(curIndex%3)).addClass("on");
        curIndex++;
    
    },2000);
    container.mouseover(function()
    {
        isStop=true;
    })
    container.mouseout(function()
    {
        isStop=false;
    })
}



jQuery(function(){
   IdeasBox(); 
    
});