﻿var Blog = {
    BlogID : null,
    EventID : null,
    JoinEvent : false, // 이벤트(프론티어) 응모인 경우만 true
    NextFunction : null,
    ReviewID : null,
    CategoryDepth : 1,
    Category : new Array(4),
    CategoryID : null,
    AddressDepth : 1,
    Address : new Array(4),
    AddressID : null,
    BlogPostIndex : null,
    InitBlogReviewSaver : function(category, address) {
        this.CategoryID = null;
        this.AddressID = null;
        this.CategoryDepth = 1;
        this.AddressDepth = 1;
        this.Category = new Array();
        this.Address = new Array();
        this.EventID = null;
        //this.BlogPostIndex = null;
        //this.ReviewID = null;        
        
        if(category != '') {
            this.Category = category.split('$');
            this.CategoryDepth = this.Category.length;
            this.CategoryID = this.Category[this.Category.length - 1];
        }
        if(address != '') {
            this.Address = address.split('$');
            this.AddressDepth = this.Address.length;
            this.AddressID = this.Address[this.Address.length - 1];
        }
        
        if(ImageLinker) ImageLinker.List = new Array();
        ItemLinker.LinkItemCount = 0;
        ItemLinker.ListID = new Array();
    },
    CloseBlogReviewSaver : function() {
        var obj = $('BlogPostRegister');
        if(obj) {
            obj.setStyle({display:'none'});
            obj.update('');
        }
        
        if(this.BlogPostIndex != null && this.ReviewID == null)
            $('BlogRegister' + this.BlogPostIndex).setStyle({display:'inline'});
        if(this.BlogPostIndex == null && this.ReviewID != null)
            $('BlogRegister' + this.ReviewID).setStyle({display:'inline'});
            
        this.BlogPostIndex = null;
        this.ReviewID = null;        
        this.InitBlogReviewSaver('','');
    },
    CloseURLBlogReviewSaver : function() {
        var obj = $('URLBlogPostRegister');
        if(obj) {
            obj.setStyle({display:'none'});
            obj.update('');
        }
        
        if(this.BlogPostIndex != null && this.ReviewID == null)
            $('URLBlogRegister' + this.BlogPostIndex).setStyle({display:'inline'});
        if(this.BlogPostIndex == null && this.ReviewID != null)
            $('URLBlogRegister' + this.ReviewID).setStyle({display:'inline'});
            
        this.BlogPostIndex = null;
        this.ReviewID = null;        
        this.InitBlogReviewSaver('','');
    },    
    ShowBlogReviewSaver : function(blogid, index) {
        if(this.EventID != null) { //프론티어 리뷰 바로 등록
            if(confirm('리뷰등록과 동시에 프론티어 리뷰로 등록됩니다.')) {
                var result = Opinity.Ajax.AjaxReview.SaveEventReview(this.EventID, blogid, $('BlogLink' + index).value);
                if(result && result.value.ResultCode == 1) {
                    $('BlogRegister' + index).setStyle({display:'none'});
                    if(this.JoinEvent) { // 프론티어 리뷰 응모일 경우
                        Frontier.JoinByReview();
                        return;
                    }
                    else {
                        alert('등록되었습니다.');
                        if(this.NextFunction != null) eval(this.NextFunction);
                    }
                }
                else alert('등록중 에러가 발생하였습니다');
            }
            return;
        }
        else {
            var obj = $('BlogPostRegister');

            if(obj.style.display == 'inline') {
                if(!confirm('현재 포스트 등록을 중단하고 새 포스트 등록을 진행하시겠습니까?'))
                return;
            }
            
            this.CloseBlogReviewSaver();
                    
            this.BlogPostIndex = index;
            obj.setStyle({display:'inline'});
            $('BlogRegister' + index).setStyle({display:'none'});  
            CtlBlogPostRegister.GetBlogPostRegister(blogid, index, $('BLOGPOST-TITLE' + index).innerHTML, 'BlogPostRegister', Util.AjaxCallback);
        }
    },
    ShowURLBlogReviewSaver : function(blogid, index) {
        alert(blogid);
        if(this.EventID != null) { //프론티어 리뷰 바로 등록
            if(confirm('리뷰등록과 동시에 프론티어 리뷰로 등록됩니다.')) {
                var result = Opinity.Ajax.AjaxReview.SaveEventReview(this.EventID, blogid, $('BlogLink' + index).value);
                if(result && result.value.ResultCode == 1) {
                    $('BlogRegister' + index).setStyle({display:'none'});
                    if(this.JoinEvent) { // 프론티어 리뷰 응모일 경우
                        Frontier.JoinByReview();
                        return;
                    }
                    else {
                        alert('등록되었습니다.');
                        if(this.NextFunction != null) eval(this.NextFunction);
                    }
                }
                else alert('등록중 에러가 발생하였습니다');
            }
            return;
        }
        else {
            var obj = $('URLBlogPostRegister');

            if(obj.style.display == 'inline') {
                if(!confirm('현재 포스트 등록을 중단하고 새 포스트 등록을 진행하시겠습니까?'))
                return;
            }
            
            this.CloseURLBlogReviewSaver();
                    
            this.BlogPostIndex = index;
            obj.setStyle({display:'inline'});
            $('URLBlogRegister' + index).setStyle({display:'none'});  
            CtlURLBlogPostRegister.GetBlogPostRegister(blogid, index, $('BLOGPOST-TITLE' + index).innerHTML, 'URLBlogPostRegister', Util.AjaxCallback);
        }
    },    
    ShowBlogReviewEditor : function(reviewid) {
        var obj = $('BlogPostRegister');

        if(obj.style.display == 'inline') {
            if(!confirm('현재 포스트 등록을 중단하고 새 포스트 등록을 진행하시겠습니까?'))
            return;
        }
        
        this.CloseBlogReviewSaver();
                
        this.ReviewID = reviewid;
        obj.setStyle({display:'inline'});
        $('BlogRegister' + reviewid).setStyle({display:'none'});  
        
        CtlBlogPostRegister.GetBlogPostEditor(reviewid, 'BlogPostRegister', Util.AjaxCallback);
    },       
    ShowCategory : function(index, target) {
        if(index > 4) return;
     
        var obj = $('Layer_' + target + index);
        if(target == 'Category') {
            this.CategoryDepth = index;
            if(index > 1)
                this.CategoryID = this.Category[index-2];
            else
                this.CategoryID = '00000000-0000-0000-0000-000000000000';
        }
        else if(target == 'Address') {
            this.AddressDepth = index;
            if(index > 1)
                this.AddressID = this.Address[index-2];
            else
                this.AddressID = 'C5C7D9D9-B071-4374-980B-2CD25AD13561';
        }        
        
        if(obj.style.display != 'inline') {       
            for(i=1;i<5;i++)
                $('Layer_' + target + i).setStyle({display:'none'});
            
            if(target == 'Category') 
                CtlBlogPostRegister.GetReveiwCategory(this.CategoryID, 'Layer_Category' + index, Blog.ShowCategoryCallback);           
            else if(target == 'Address') 
                CtlBlogPostRegister.GetAddress(this.AddressID, 'Layer_Address' + index, Blog.ShowAddressCallback);           
        }
        else
            obj.setStyle({display:'none'});
    },   
    CloseCategory : function(index, target) {
            $('Layer_' + target + index).setStyle({display:'none'});
            $('Layer_' + target + index).update('');
            $(target + 'Name' + index).setStyle({display:'none'});
            $(target + 'Name' + index).update('선택해주세요.');
    },
    SelectCategory : function(taxonomy) {
        this.CategoryID = taxonomy;
        this.Category[this.CategoryDepth - 1] = taxonomy;
        $('CategoryName' + this.CategoryDepth).update($('BLOG-' + this.CategoryID).innerHTML);

        if(this.CategoryDepth < 4) {
            this.CategoryDepth = this.CategoryDepth + 1;
            this.ShowCategory(this.CategoryDepth, 'Category');
        }
        else if(this.CategoryDepth == 4) {
            $('Layer_Category' + this.CategoryDepth).setStyle({display:'none'});
            $('Layer_Category' + this.CategoryDepth).update('');
        }
    },
    ShowCategoryCallback : function(res) {
        if(res.value.ResultCode == 1) {
            if(Blog.CategoryDepth < 5) {
                $('CategoryName' + Blog.CategoryDepth).setStyle({display:'inline'});
                $('CategoryName' + Blog.CategoryDepth).innerHTML = '선택해주세요.';
                
                for(i = Blog.CategoryDepth + 1; i < 5; i++) {
                    Blog.CloseCategory(i, "Category");
                }  
                
                $(res.value.ID).setStyle({display:'inline'});
                Util.AjaxCallback(res);
           }
        }
    },
    SelectAddress : function(taxonomy) {
        this.AddressID = taxonomy;
        this.Address[this.AddressDepth - 1] = taxonomy;

        $('AddressName' + this.AddressDepth).update($('BLOG-' + this.AddressID).innerHTML);

        if(Blog.AddressDepth < 4) {
            this.AddressDepth = this.AddressDepth + 1;
            this.ShowCategory(this.AddressDepth, 'Address');
        }
        else if(this.AddressDepth == 4) {
            $('Layer_Address' + this.AddressDepth).setStyle({display:'none'});
            $('Layer_Address' + this.AddressDepth).update('');
        }        
    },
    ShowAddressCallback : function(res) {
        if(res.value.ResultCode == 1) {
            if(Blog.AddressDepth < 5) {
                $('AddressName' + Blog.AddressDepth).setStyle({display:'inline'});
                $('AddressName' + Blog.AddressDepth).innerHTML = '선택해주세요.';
                
                for(i = Blog.AddressDepth + 1; i < 5; i++) {
                    Blog.CloseCategory(i, "Address");
                }  
                
                $(res.value.ID).setStyle({display:'inline'});
                Util.AjaxCallback(res);
           }
        }
    },
    ShowEvents : function() {
        if($('Layer_Events').style.display != 'inline') 
            $('Layer_Events').setStyle({display:'inline'});
        else 
            $('Layer_Events').setStyle({display:'none'});
    },
    SelectEvent : function(id, name) {
        this.EventID = id;
        $('EventName').update(name);
        Util.Close('Layer_Events');
    },
    SaveBlogPost : function(blogid, mode) {        
        var result;

        if(this.CategoryID == '00000000-0000-0000-0000-000000000000') this.CategoryID = null;
        if(this.AddressID == 'C5C7D9D9-B071-4374-980B-2CD25AD13561') this.AddressID = null;
        
        if(this.CategoryID == null) {
            alert('카테고리를 선택해주세요.');
            return;
        } 
        
        if($('Address2').value.match('@') != null) {
            alert('주소에 쓰일 수 없는 문자가 들어있습니다.');
            return;
        }  
        
        if(mode == "Update")
        {
            if($('TitleText').value == "") 
            {
                alert("제목이 공백입니다.");
                return;
            }
        }     
    
        var ItemIDList = ItemLinker.ListID;
        if(ItemLinker.LinkItemCount > 0) ItemIDList.splice(0,ItemLinker.LinkItemCount);
        
        if(mode == "Save")
            result = Opinity.Ajax.AjaxReview.SaveBlogReview(blogid, $('BlogLink' + this.BlogPostIndex).value, this.CategoryID, ItemIDList).value;   
        else if(mode == "Update")
            result = Opinity.Ajax.AjaxReview.UpdateBlogReview(this.ReviewID, this.CategoryID, ItemLinker.ListID, $('TitleText').value).value;   
        
        if(result != null && result.ResultCode == "1") {
            this.ReviewID = result.ReturnValue;
            
            if(this.AddressID != null) {
                var address = '';
                
                for(i=1;i<5;i++) {
                    var temp = $('AddressName' + i).innerHTML.trim().replace('선택해주세요.','');
                    if(temp != '')
                        addresss = address  + ' ' + temp;
                    else {
                        address = address.trim();
                        break;
                    }
                }
                address = address + '@' + $('Address2').value;
                
                Opinity.Ajax.AjaxReview.SaveReviewAddress(this.ReviewID, 2, this.AddressID, address);
            }
            
            if(ImageLinker && ImageLinker.List.length > 0) {
                Opinity.Ajax.AjaxReview.SaveThumbnail2(this.ReviewID, '/FileServer/TEMP/bbs/' + ImageLinker.List[0] + '.jpg');
            }
            
            // 프론티어 리뷰 저장일 경우
            if(this.EventID != null) {
                Opinity.Ajax.AjaxReview.SaveFrontierReview(this.EventID, this.ReviewID, 2);
            }
            
            if(mode == "Save") alert('등록되었습니다');
            else alert('수정되었습니다');
            
            this.CloseBlogReviewSaver();
            if(this.NextFunction != null) eval(this.NextFunction); 
        }
        else {
            alert('블로그 리뷰 등록중 에러가 발생했습니다.');
        }
    },
    SaveURLBlogPost : function(blogid, mode) {  
        alert(blogid);      
        var result;

        if(this.CategoryID == '00000000-0000-0000-0000-000000000000') this.CategoryID = null;
        if(this.AddressID == 'C5C7D9D9-B071-4374-980B-2CD25AD13561') this.AddressID = null;
        
        if(this.CategoryID == null) {
            alert('카테고리를 선택해주세요.');
            return;
        } 
        
        if($('Address2').value.match('@') != null) {
            alert('주소에 쓰일 수 없는 문자가 들어있습니다.');
            return;
        }       
    
        var ItemIDList = ItemLinker.ListID;
        if(ItemLinker.LinkItemCount > 0) ItemIDList.splice(0,ItemLinker.LinkItemCount);       
        
        if(mode == "Save")
            result = Opinity.Ajax.AjaxReview.SaveURLBlogReview(blogid, $('BlogURL').value, $('HURLBlogTitle').value, null, this.CategoryID, ItemIDList).value;   
        else if(mode == "Update")
            result = Opinity.Ajax.AjaxReview.UpdateBlogReview(this.ReviewID, this.CategoryID, ItemLinker.ListID).value;   
        
        if(result != null && result.ResultCode == "1") {
            this.ReviewID = result.ReturnValue;
            
            if(this.AddressID != null) {
                var address = '';
                
                for(i=1;i<5;i++) {
                    var temp = $('AddressName' + i).innerHTML.trim().replace('선택해주세요.','');
                    if(temp != '')
                        addresss = address  + ' ' + temp;
                    else {
                        address = address.trim();
                        break;
                    }
                }
                address = address + '@' + $('Address2').value;
                
                Opinity.Ajax.AjaxReview.SaveReviewAddress(this.ReviewID, 2, this.AddressID, address);
            }
            
            if(ImageLinker && ImageLinker.List.length > 0) {
                Opinity.Ajax.AjaxReview.SaveThumbnail2(this.ReviewID, '/FileServer/TEMP/bbs/' + ImageLinker.List[0] + '.jpg');
            }
            
            // 프론티어 리뷰 저장일 경우
            if(this.EventID != null) {
                Opinity.Ajax.AjaxReview.SaveFrontierReview(this.EventID, this.ReviewID, 2);
            }
            
            if(mode == "Save") alert('등록되었습니다');
            else alert('수정되었습니다');
            
            this.CloseBlogReviewSaver();
            if(this.NextFunction != null) eval(this.NextFunction); 
        }
        else {
            alert('블로그 리뷰 등록중 에러가 발생했습니다.');
        }
    },    
    DeleteBlogReview : function(id) {
        if(confirm('정말 삭제하시겠습니까?')) {
            if(Opinity.Ajax.AjaxReview.DeleteReview(id, 2).value.ResultCode == "1") {
                alert('삭제되었습니다.');
                MyRevU.GetList(MyRevU.PageNo);
            }
            else {
                alert('블로그리뷰 삭제중 오류발생');
                return; 
            }
        }
    },
    ClearFile : function() {
        $('ReviewThumb').select();
        document.selection.clear();
    },
    DeleteFile : function(id) {
        if(confirm('삭제하시겠습니까?')) {
            if(Opinity.Ajax.AjaxReview.DeleteThumbnail(id).value.ResultCode == 1) {
                alert('삭제되었습니다.');
                ImageLinker.List = new Array();
                ImageLinker.GetList();
            }
            else {
                alert('삭제중 오류발생');
                return; 
            }
        }
    },
    // 프론티어 리뷰 등록시
    ShowBlogs : function() {
        if($('Layer_Blog').style.display != 'inline')
            $('Layer_Blog').setStyle({display:'inline'});
        else
            $('Layer_Blog').setStyle({display:'none'});
    },
    SelectBlog : function(id) {
        $('MakeReview_Blog_Name').innerText = $('BLOG-'+id).innerText;
        this.BlogID = id;
        this.ShowBlogs();
    },
    GetBlogPosts : function(page) {
        if(this.BlogID == null) {
            alert('블로그를 선택해주세요.');
            return;
        }
        $('BlogPosts').setStyle({display:'inline'});       
        CtlBlogPosts.GetBlogPosts(this.BlogID, page, 10, 'BlogPosts', Util.AjaxCallback);
    },           
    ShowFrontierReviewRegister : function(eventid) {
        try {/*
            if(!Frontier.Availability) {
                alert('응모기간이 아닙니다.\n응모기간을 확인해주세요.');
                return;
            }*/
        }
        catch(e) { }       
    
        var userid = User.UserUID();
        if(userid == null) {
            User.ShowLogin('Blog.ShowFrontierReviewRegister("' + eventid + '")');
            return;
        }

        this.EventID = eventid;
        $('FrontierReviewRegister').update('');
        $('FrontierReviewRegister').setStyle({top:(Util.Y - 100) + 'px'});
        CtlFrontierReviewRegister.GetRegister(eventid, 'FrontierReviewRegister', Util.AjaxCallback);
    },
    ShowEventReviewRegister : function(eventid) {     
        try {/*
            if(!Frontier.Availability) {
                alert('응모기간이 아닙니다.\n응모기간을 확인해주세요.');
                return;
            }*/
        }
        catch(e) { }       
    
        var userid = User.UserUID();
        if(userid == null) {
            User.ShowLogin('Blog.ShowEventReviewRegister("' + eventid + '")');
            return;
        }

        this.EventID = eventid;
        $('FrontierReviewRegister').update('');
        $('FrontierReviewRegister').setStyle({top:(Util.Y - 100) + 'px'});
        CtlBlogThemeReviewRegister.GetRegister(eventid, 'FrontierReviewRegister', Util.AjaxCallback);
    }    
}
