﻿var isIE = (window.showModalDialog) ? true:false;      
var isIE6 = (navigator.appVersion.indexOf("MSIE 6.0")>0)?true:false;
var isIE7 = (navigator.appVersion.indexOf("MSIE 7.0")>0)?true:false;
var isChrome = (navigator.appVersion.indexOf("Chrome")>0)?true:false;

var User = {
    NextFunction : '',
    AfterLoginUserImage : new Array(),
    AfterLoginUserNickname : new Array(),
    Me2day : false,
    RevuLogin : function() {
        var userid = $('ID').value;
        var password = $('PW').value;
        var logintype = $('LoginType').value;
        var rememberme = $('RememberMe').value;        
        var result = Opinity.Ajax.Common.Ajax_LoginRevUID(userid, password, (rememberme == 'on')? true:false).value;
        
        if(result.ResultCode == 0)
        {
            alert(result.Message);
        }
        else
        {
            if (result.ReturnCode == 0)
            {
                alert(result.ReturnValue);
                return;
            }

            var login = Opinity.Ajax.Common.Ajax_GetLoginInfo().value;

            if($('LoginForm')) $('LoginForm').innerHTML = login.Login.Nickname;
            if($('LoginWindow'))
            {
                if(!$('top_container')) 
                    Memo.GetLoginStatus();

                if($('LoginWindow').style.display == 'block') $('LoginWindow').style.display = 'none';
                if(this.NextFunction != '') {
                    this.GetLoginStatus();
                    eval(this.NextFunction);
                }
                else
                    document.location.reload();
            }

            for(i=0;i<this.AfterLoginUserImage.length;++i) {
                $(this.AfterLoginUserImage[i].objImage).src = '/Image/User?ID=' + login.Login.GUID + '&Width=' + this.AfterLoginUserImage[i].width + '&Height=' + this.AfterLoginUserImage[i].height + '';
            }
            for(i=0;i<this.AfterLoginUserNickname.length;++i) {
                $(this.AfterLoginUserNickname[i]).innerHTML = login.Login.Nickname;
            }
        }
    },
    OpendIDLogin : function()
    {
        var openid = $('txtID').value;
        var rememberme = $('RememberMe').value;

        if(openid == "") {
            alert("오픈 아이디를 입력해주세요.");
            return;
        }

        var result = Opinity.Ajax.AjaxOpenID.OpenIDLogin(openid, (rememberme == 'on')? true:false).value;

        if (result.ResultCode == '0')
        {
            alert(result.ReturnValue);
            return;
        }
        else
        {
            document.location.href = result.ReturnValue;
        }
    },
    Logout : function() {
        Opinity.Ajax.Common.Ajax_Logout();
        document.location.reload();
    },
    AssignAfterLoginImage : function(objImage, width, height) {
        var objData = new Object();
        objData.objImage = objImage;
        objData.width = width;
        objData.height = height;

        this.AfterLoginUserImage.push(objData);
    },
    AssignAfterLoginNickname : function(objNickname) {
        this.AfterLoginUserNickname.push(objNickname);
    },
    UserID : function(){
        var result = Opinity.Ajax.Common.Ajax_GetLoginUserID().value;
        if (result.ResultCode == 0)
        {
            return;
        }
        return result.ReturnValue;
    },
    UserUID : function(){
        var result = Opinity.Ajax.Common.Ajax_GetLoginUserGUID().value;
        if (result.ResultCode == 0)
        {
            return;
        }
        return result.ReturnValue.toUpperCase();
    },
    UserNickname: function() {
        var result = Opinity.Ajax.Common.Ajax_GetLoginUserNickName().value;

        if (result.ResultCode == 0)
        {
            return;
        }

        return result.ReturnValue;
    },
    ShowLogin : function(nextfunction) {
        var x = Util.X - 150;
        var y = Util.Y;
        if((document.body.clientWidth - 344) < Util.X) x = document.body.clientWidth - 344;
        if((document.body.clientHeight - 113) < Util.Y) y = document.body.clientHeight - 113;
        if(x < 0) x = 0;
        if(y < 0) y = 0;
        
        $('LoginWindow').setStyle({display:'block',top:y + 'px',left:x + 'px'});
        this.NextFunction = nextfunction;
        
        if($('LoginType').value == 'RevU')
        {
            $('rRevULogin').onclick();
            if($('ID').value.length > 0) $('PW').focus();
            else $('ID').focus();
        }
        else
        {
            $('rOpenIDLogin').onclick();
            $('txtID').focus();
        }
	},
	GetLoginStatus : function() {
	    CtlLoginStatus.GetLoginStatus('Header_Login', Util.AjaxCallback);
	},
    MarkMe2day : function() {
        if(!this.Me2day) {
            this.Me2day = true;
            $('isMe2day').src = '/images/myrevu/ico_checked.gif';
        }
        else {
            this.Me2day = false;
            $('isMe2day').src = '/images/myrevu/ico_unchecked.gif';
        }
    },
    OnUserLayer : true,
    ShowLayer : function(userid) {
        var x = Util.X;
        var y = Util.Y - 47;
        if((document.body.clientWidth - 295) < Util.X) x = document.body.clientWidth - 295;
        if((document.body.clientHeight - 113) < Util.Y) y = document.body.clientHeight - 113;
        if(x < 0) x = 0;
        if(y < 0) y = 0;
        
        Util.Loading('UserLayer');
        $('UserLayer').setStyle({display:'inline',top:y + 'px',left:x + 'px'});

        try {
             CtlUserLayer.UserLayer(userid, 'UserLayer', Util.AjaxCallback);
        }
        catch(e) {
        }
                  
        this.OnUserLayer = false;
    },
    CloseLayer : function() {
        if(!this.OnUserLayer) $('UserLayer').setStyle({display:'none'});
        this.OnUserLayer = true;
    },
    CheckSaveID : function(obj) {
	    var idtype = document.getElementsByName('loginmethod');
	    var logintype = idtype[0].checked?'revu':'open';

        if(!obj.checked) {
	        AjaxCommon.clearUserID(logintype);
	    }
    }

}

var Memo = {
    objID : 0,
    objInterval : 10000,
    GetMemoCount : function(){
        //CtlCommonLoginStatus.GetMemoStatus(Memo.AjaxMemoCallback);
    },
    GetLoginStatus : function(){
        //CtlCommonLoginStatus.GetLoginStatus(Memo.AjaxLoginStatusCallback);
    },
    AjaxLoginStatusCallback : function(res){
        try
        {
            if(res && res.value)
            {
                var result = res.value;

                if(result.ResultCode == 1)
                {
                    $(result.ID).innerHTML = result.HTML;
                }
                else
                {
                    clearInterval(Memo.objID);

                    Memo.GetMemoCount();

                    Memo.objID = setInterval(Memo.GetMemoCount, Memo.objInterval);
                }
            }
        }
        catch(e)
        {
        }
    },
    AjaxMemoCallback : function(res) {
        try
        {
            if(res && res.value)
            {
                var result = res.value;

                if(result.ResultCode == 1)
                {
                    try
                    {
                        if($('LoginStatus_Nickname').innerHTML != (result.Login.Nickname + ' 님'))
                        {
                            $('LoginStatus_Nickname').innerHTML = (result.Login.Nickname + ' 님');
                        }

                        if($('LoginStatus_MemoCount').innerHTML != result.Count)
                        {
                            $('LoginStatus_MemoCount').innerHTML = result.Count;

                            if(result.Count == 0)
                            {
                                $('LoginStatus_MemoImage').src = "/Images/common/ico_memo_off.gif";
                                $('LoginStatus_MemoImage').alt = "받은 쪽지가 없습니다.";
                            }
                            else
                            {
                                $('LoginStatus_MemoImage').src = "/Images/common/ico_memo_on.gif";
                                $('LoginStatus_MemoImage').alt = "쪽지가 도착했습니다.";
                            }
                        }
                    }
                    catch(e)
                    {
                        clearInterval(Memo.objID);

                        Memo.GetLoginStatus();

                        Memo.objID = setInterval(Memo.GetLoginStatus, Memo.objInterval);
                    }
                }
                else
                {
                    clearInterval(Memo.objID);

                    Memo.GetLoginStatus();

                    Memo.objID = setInterval(Memo.GetLoginStatus, Memo.objInterval);
                }
            }
        }
        catch(e)
        {
        }
    },
    InitMemo : function(){
        Memo.GetMemoCount();
    
        Memo.objID = setInterval(Memo.GetMemoCount, Memo.objInterval);
    },
    PopMemo : function()
    {
        var login = Opinity.Ajax.Common.Ajax_GetLoginInfo().value;
        var nickname = (login.Login == null)?"":login.Login.Nickname;

        if (nickname == "")
        {
            alert("로그인 하신 후에 이용하실 수 있습니다.");
            return;
        }

        window.open("/Memo/Box","memosave", "width=770,height=482");
    },
    UninitMemo : function(){
        if(Memo.objID != 0) clearInterval(Memo.objID);
    },
    SendMemo : function (pValue)
    {
        var nickname = User.UserNickname();
             
        if(nickname != null)
            window.open("/Memo/Send?nickname=" + encodeURIComponent(pValue), "Write", "width=390, height=390");
        else
            User.ShowLogin("Memo.SendMemo('" + pValue + "')");
    }
}

var Search = {
    Search : function(){
        var keyword = document.getElementById('Keyword').value;
            
        var searchtype = document.getElementById('SearchCriteria').value;
        if(keyword == ""){
            alert('검색어를 입력해주세요');
            keyword.focus();
            return; 
        }

        window.location.href =  "/Search/" +  searchtype.replace('search','') + "/" + encodeURIComponent(keyword);
        return;
    },
    Search2 : function(){
        var keyword
        if($('Keyword2'))
            keyword = $('Keyword2').value;
            
        var searchtype = document.getElementById('SearchCriteria').value;
        if(keyword == ""){
            alert('검색어를 입력해주세요');
            keyword.focus();
            return; 
        }

        window.location.href =  "/Search/" +  searchtype.replace('search','') + "/" + encodeURIComponent(keyword);
        return;
    },
    AutoComplete : function(searchtype) {
        var strurl = "/search/" + searchtype + "/" + encodeURIComponent(strkeyword);
        window.location.href = strurl;
    },
    ShowOptions : function() {
        if($('SearchOptions_Layer').style.display != 'inline')
            $('SearchOptions_Layer').setStyle({display:'inline'});
        else
            $('SearchOptions_Layer').setStyle({display:'none'});
    },
    closeOptions : function() {
        $('SearchOptions_Layer').setStyle({display:'none'});
    },
    SetSearchOption : function(opt, obj) {        
        $('SearchCriteria').value = opt;
        $('SearchOptions').setStyle({background:'url(/images/common/btn_search_' + opt + '.gif) no-repeat'});
        $('SearchOptions_Layer').setStyle({background:'url(/images/common/bg_search_layer_' + opt + '.gif) no-repeat'});
        this.closeOptions();
    },
    GetHotCollections : function(page) {
        Search_Collection_CollectionSearch.getHotCollections(page, 6, 'HotCollections', Util.AjaxCallback);
    },
    GetHotItems : function(page) {
        Search_Item_ItemSearch.getHotItems(page, 5, 'HotItems', Util.AjaxCallback);
    }
}



var TopMenu = {
    URL : document.location.href,
    MouseOver : function(target) {    
        $('Menu_' + target).setStyle({backgroundImage:'url(/images/common/gnb_' + target.toLowerCase() + '_on.gif)'});
    },
    MouseOut : function(target) {
        if(target == "Item" && this.URL.match(/\/Items/gi) != null)
            return;
        else if(target == "Review" && this.URL.match(/\/Reviews/gi) != null)
            return;
        else if(target == "Frontier" && this.URL.match(/\/Event\/Frontier/gi) != null)
            return;
        else if(target == "MyRevU" && this.URL.match(/\/MyRevU/gi) != null)
            return;

        $('Menu_' + target).setStyle({backgroundImage:'none'});
    },
    Go : function(target) {
        if(target == "Item")
        {
            document.location.href = "/Items";
        }
        else if(target == "Review")
        {
            document.location.href = "/Reviews";
        }
        else if(target == "Frontier")
        {
            document.location.href = "/Frontiers";
        }
        else if(target == "MyRevU")
        {
            var nickname = User.UserNickname();

            if(nickname != null)
            {
                document.location.href = "/MyRevU/" + User.UserNickname();
            }
            else
                User.ShowLogin("TopMenu.Go('" + target + "')");
        }
        else if(target == "BlogReview")
        {
            var reviewcode = $('ReviewCode').value;
            var nickname = User.UserNickname();
            
            if(nickname != null)
            {
                document.location.href = "/BlogReview/" + reviewcode;
            }
            else
                User.ShowLogin("TopMenu.Go('" + target + "')");
        }        
        else if(target == 'Profile' || target == 'Cash' || target == 'Point' || target == 'Blog')
        {
            var nickname = User.UserNickname();
            if(nickname != null)
            {
                var host = document.location.host;
                if(host.match(/www\.revu/gi) != null) host = 'https://' + host;
                else host = 'http://' + host;

                document.location.href = host + '/MyRevU/' + User.UserNickname() + '/' + target;
            }
            else
                User.ShowLogin("TopMenu.Go('" + target + "')");
        }

    },
    ShowCategory : function() {
        if($('Category_Layer').style.display != 'block')
          $('Category_Layer').setStyle({display:'block'});
        else
          $('Category_Layer').setStyle({display:'none'});
    }
}


var Util = {
	X : null,
	Y : null,
    AjaxInnerHTMLCallback : function(res) {
        if(res && res.value)
        {
            var result = res.value;
            if(result.ResultCode == 1) { $(result.ID).setStyle({display:'inline'}); $(result.ID).update(result.HTML); }
            $(result.ID).setStyle({filter:'alpha(opacity=100)','-moz-opacity':'100%','opacity':'1.0'});
        }
    },
    AjaxCallback : function(res) {
        if(res && res.value)
        {
            var result = res.value;
            if(result.ResultCode == 1) { $(result.ID).setStyle({display:'inline'}); $(result.ID).update(result.HTML); }
            $(result.ID).setStyle({filter:'alpha(opacity=100)','-moz-opacity':'100%','opacity':'1.0'});
        }
    },    
    GetAbsolutePos : function(el)
    {
        var r = { x: el.offsetLeft, y: el.offsetTop };
        if (el.offsetParent) {
            var tmp = this.GetAbsolutePos(el.offsetParent);
            r.x += tmp.x;
            r.y += tmp.y;
        }
        return r;
    },
    AddEvent : function(object, type, listener)
	{
		if(object.addEventListener) { object.addEventListener(type, listener, false); } 
		else if(object.attachEvent) { object.attachEvent("on"+type, listener);}
	},
    CaptureEvent : function(event) {
        this.Y = Event.pointerY(event);
        this.X = Event.pointerX(event);
    },
    CopyCode : function(inElement) {
        var browserName = navigator.appName;
        if ( browserName.search("Explorer") > 0 ) {
                var doc = document.body.createTextRange();
                doc.moveToElementText(inElement); 
                doc.select(); 
                doc.execCommand('copy'); 
        } 
        else {
            var flashcopier = 'flashcopier';
            if(!document.getElementById(flashcopier)) {
              var divholder = document.createElement('div');
              divholder.id = flashcopier;
              document.body.appendChild(divholder);
            }
            document.getElementById(flashcopier).innerHTML = '';
            var str=inElement.innerHTML;
            
            str=str.replace(/&lt;/gm,"<");
            str=str.replace(/&gt;/gm,">");
            str=this.Encode4Flash(str);
            var divinfo = '<embed src="http://www.revu.co.kr/_clipboard.swf" FlashVars="clipboard='+ str +'" width="0" height="0" type="application/x-shockwave-flash"/>';

            document.getElementById(flashcopier).innerHTML = divinfo;
        }
        
        alert('복사되었습니다.\n퍼가시려는 곳에 붙여넣기(Ctrl+V)하세요.');
    },
    CopyText : function(strText) {
        var browserName = navigator.appName;
        if ( browserName.search("Explorer") > 0 ) {           
            window.clipboardData.setData('Text', String(strText));  
        } 
        else {
            var flashcopier = 'flashcopier';
            if(!document.getElementById(flashcopier)) {
              var divholder = document.createElement('div');
              divholder.id = flashcopier;
              document.body.appendChild(divholder);
            }
            document.getElementById(flashcopier).innerHTML = '';
            var str=inElement.innerHTML;
            
            str=str.replace(/&lt;/gm,"<");
            str=str.replace(/&gt;/gm,">");
            str=this.Encode4Flash(str);
            var divinfo = '<embed src="http://www.revu.co.kr/_clipboard.swf" FlashVars="clipboard='+ str +'" width="0" height="0" type="application/x-shockwave-flash"/>';

            document.getElementById(flashcopier).innerHTML = divinfo;
        }
        
        alert('복사되었습니다.\n퍼가시려는 곳에 붙여넣기(Ctrl+V)하세요.');
    },     
    Encode4Flash : function(str) 
    {
       var SAFECHARS = "0123456789" +
                     "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
                     "abcdefghijklmnopqrstuvwxyz" +
                     "-_.!~*'()";

       var HEX = "0123456789ABCDEF";

       var plaintext = str;
       var encoded = "";
       for (var i = 0; i < plaintext.length; i++ ) {
           var ch = plaintext.charAt(i);
           if (ch == " ") {
               encoded += "+";
           } else if (SAFECHARS.indexOf(ch) != -1) {
               encoded += ch;
           } else {
               var charCode = ch.charCodeAt(0);
               if (charCode > 255) {
                   encoded += ch;
               } else {
                   encoded += "%";
                   encoded += HEX.charAt((charCode >> 4) & 0xF);
                   encoded += HEX.charAt(charCode & 0xF);
               }
           }
       }
       return encoded;
    },
    Loading : function(targetid) {
        $(targetid).innerHTML = '<table cellpadding="0" cellspacing="0" border="0" style="width:100%;height:100%;line-height:50px;"><tr><td align="center" valign="middle"><img src="/images/common/img_loading.gif" id="Loading" alt=""/></td></tr></table>';
    },   
    ThemeLoading : function(targetid) {
        $(targetid).innerHTML = "";
        $(targetid).innerHTML = '<div style="position:relative;top:-6px;left:6px;padding:0 0 0 0;z-index:50000;"><img src="/images/common/Map_img_loading.gif" width="954" height="580"></div>';       
    },       
    Show : function(target) {
        //if($(target).style.display != 'inline')
            $(target).setStyle({display:'inline'});
        //else
         //   $(target).setStyle({display:'none'});        
    },
    Close : function(target) {
        if($(target)) $(target).setStyle({display:'none'});
    },
    ShowFlash : function(url, width, height) {    
        var flash_tag = '<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" ';
        flash_tag +='codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" ';
        flash_tag +='WIDTH="'+width+'" HEIGHT="'+height+'">';
        flash_tag +='<param name="movie" value="'+url+'">';
        flash_tag +='<param name="quality" value="high">';
        flash_tag +='<param name="scale" value="exactfit"/>';
        flash_tag +='<param name="wmode" value="transparent"/>';
        flash_tag +='<embed src="'+url+'" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" ';
        flash_tag +='type="application/x-shockwave-flash" wmode="transparent" scale="exactfit" quality="high" WIDTH="'+width+'" HEIGHT="'+height+'"></embed></object>'

        document.write(flash_tag); 
    }
}


var Common = {
    BodyUnload : function() {
        Memo.UninitMemo();
    },
    Click : function() {
        User.CloseLayer();
        try {
                if($('ReviewRecommenderList') && !Review.RecommenderFlag) { Util.Close('ReviewRecommenderList'); Review.RecommenderFlag = false; }
        }
        catch(e) {
                if($('ReviewRecommenderList') && !BestReview.RecommenderFlag) { Util.Close('ReviewRecommenderList'); BestReview.RecommenderFlag = false; }
        }
    },
    MakeButtonOver : function(target) {
        $('MakeButton').src = '/images/make/btn_make_' + target.toLowerCase() + '.gif';
    },
    MakeButtonOut : function() {
        $('MakeButton').src = '/images/make/btn_make_off.gif';
    },
    WriteReview : function(parameters) {
        var nickname = User.UserNickname();
        
        if(nickname != null) {
            document.location.href='/Make/Review' + parameters;
        }
        else
            User.ShowLogin("Common.WriteReview('" + parameters + "')");
    },
    CreateItem : function(parameters) {
        if(User.UserUID() != null) {
            document.location.href='/Make/Item' + parameters;
        }
        else
            User.ShowLogin("Common.CreateItem('" + parameters + "')");
    },
    MakeCollection : function(parameters) {
        if(User.UserUID() != null) {
            document.location.href='/Make/Collection' + parameters;
        }
        else
            User.ShowLogin("Common.MakeCollection('" + parameters + "')");
    },
    SponsorClick : function (pKeyword)
    {
        Opinity.Ajax.Common.SponsorClick(pKeyword);
    },
    GetOpenAPIKey : function() {
        var userid = User.UserUID();
        if(userid == null) {
            User.ShowLogin('Common.GetOpenAPIKey()');
            return;
        }
        else {
            var key = OpenAPI_OpenAPI.GetOpenAPIKey().value.ReturnValue;
            if(key != '')
                $('OpenAPIKey').update('<span>' + key + '</span>');
        }
    },
    RecommendReview : function(id, type) {
        var result = Opinity.Ajax.AjaxReview.RecommendReview(id, type).value;
        if(result.ReturnValue) {
            $('RECOMMEND-' + id).innerHTML = parseInt($('RECOMMEND-' + id).innerHTML) + 1;
            alert("추천되었습니다.");
        }
        else if(result.ResultCode == "1")
            alert("이미 추천하셨습니다.");
    },
    SetMenu : function(target) {
        $('Header_Menu').setStyle({background:'url(/images/common/bg_header_menu_' + target + '.gif) no-repeat'});
    },
    GoMyRevU : function(target1, target2) {
        var nickname = User.UserNickname();
        if(nickname == null) {
            User.ShowLogin("Common.GoMyRevU('" + target1 + "','" + target2 + "')");
        }
        else {
            document.location.href = '/MyRevU/' + nickname + '/' + target1 + '?Target=' + target2;
        }
    }
}



var Tag = {
    ShowEditor : function(id, type, width) {
        var userid = User.UserUID();
        
        if(userid != null)
            Opinity.Controls.Common.CtlTagEditor.showTagEditor(id, type, width, 'TAGS-' + id, Util.AjaxCallback);
        else
            User.ShowLogin("Tag.ShowEditor('" + id + "','" + type + "'," + width +")");
    },
    CloseEditor : function(id, type, width) {
        this.GetTags(id, type, width);
    },
    GetTags : function(id, type, width) {
        Opinity.Controls.Common.CtlTags.getTags(id, type, width, 'TAGS-' + id, Util.AjaxCallback);
    },
    Save : function(id, type, width) {
        if(Opinity.Controls.Common.CtlTags.insTag($('TagForm').value.trim(), id, type).value.ReturnValue) {
            this.GetTags(id, type, width);
        }
    }
}
