//jquery extends fn
jQuery.fn.extend({
   check: function() {
     return this.each(function() { this.checked = true; });
   },
   uncheck: function() {
     return this.each(function() { this.checked = false; });
   },
   emptyCheck: function(value) {
        var val = jQuery.trim($(this).val());
        if(val.length < 1) {
            alert(value);
            $(this).focus();
            return false;
        }
        return true;
    },
    numberCheck: function(value, cnt) {
        var num = jQuery.trim($(this).val()).replace(/\,/gi, "");
        
        if(!cnt) {
            if(isNaN(num) || !num ) {
                alert(value);
                $(this).focus();
                return false;            
            }
        } else {
            if(isNaN(num) || !num || num.length != cnt) {
                alert(value);
                $(this).focus();
                return false;            
            }
        }
        return true;
    }, trim: function() {
        return jQuery.trim($(this).val());
    },
    checkPeriod: function(value, start, end) {
        var num = jQuery.trim($(this).val()).replace(/\,/gi, "");
        if(isNaN(num) || !num || num < start || num > end ) {
            alert(value);
            $(this).focus();
            return false;            
        }
        return true;
    },
    observe: function(func, time) {
        $(this).focus(function(event){
            tid=setInterval(func, time);
        });
        
        $(this).blur(function(event){
            clearInterval(tid);
        });
    },
    currency: function() {
        $(this).keyup(function(e) {
            var num = jQuery.trim($(this).val()).replace(/[^0-9]/gi, "");
            if(!num) {
                return false;
            }
            
            num = parseInt(num) + "";
            var length = num.length;
            var per = parseInt(length/3);
            var other = parseInt(length%3);
            
            var temp2 = "";
            (other > 0 && per > 0) ? temp2 = num.substr(0,other)+"," : temp2 = num.substr(0,other);
            for(i=0;i<per;i++) {
                temp2 = temp2+num.substr(other,3);
                if(i != per-1) temp2 = temp2 + ",";
                other += 3;
            }
            
            $(this).val(temp2);
        });
        $(this).focus(function(e) {
            if($(this).val() == 0) $(this).val('');
        });
        $(this).blur(function(e) {
            if($(this).val() == "") $(this).val(0);
        });
    }
});

//검색창 값 체크
function checkSearchForm(form) {
    if (form.game.value == 0 && form.keyword.value == "") {
            alert("게임이나 검색어중 하나는 입력해주세요");
            form.game.focus();
            return false;
    }
}

//검색시에 키워드값 넣어주기
function keywordSetting() {
    $("#keyword").val($("#hiddenKeyword").val());
}

//숫자에 콤마 찍어주기
function comma(num) {
    if(!num) {
        return 0;
    }
    
    num = parseInt(num) + "";
    var length = num.length;
    var per = parseInt(length/3);
    var other = parseInt(length%3);
    
    var temp2 = "";
    (other > 0 && per > 0) ? temp2 = num.substr(0,other)+"," : temp2 = num.substr(0,other);
    for(i=0;i<per;i++) {
        temp2 = temp2+num.substr(other,3);
        if(i != per-1) temp2 = temp2 + ",";
        other += 3;
    }
    
    return temp2;
}

//flash 이미지
function flash_show(width, height, src) {
    var temp = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="'+width+'" height="'+height+'" name="topNaviFlash">\
                <param name="movie" value="'+src+'">\
                <param name="wmode" value="transparent">\
                <param name="allowScriptAccess" value="always"/>\
                <param name="quality" value="high">\
                <param name="menu" value="false">\
                <embed src="'+src+'" quality="high" menu="false" allowScriptAccess="always" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"  wmode="transparent" width="'+width+'" height="'+height+'"></embed></object>';
    document.write(temp);
}

/******************************     game목록 불러오는 부분     *************************/
function gameChange(game, world, characterClass) {
    if(game > 0) {
        $('#game').val(game);
        $.getJSON("/game/gameSetting", { gameId: game }, function(json) {
            var listWorld = json['listWorld'];
            var listClass = json['listClass'];
                
            var selectBox = '<select id="world" name="world"><option value="">서버를 선택하세요</option>';
            for(key in listWorld) {
                selectBox += '<option value="'+listWorld[key]['worldId']+'">'+listWorld[key]['name']+'</option>';
            }
            selectBox += '</select>';
            $("#worldWrap").html(selectBox);
            
            $("#world").val(world);
            
            selectBox = '<select id="characterClass" name="characterClass"><option value="">클래스를 선택하세요</option>';
            for(key in listClass) {
                selectBox += '<option value="'+listClass[key]['characterClassId']+'">'+listClass[key]['name']+'</option>';
            }
            selectBox += '</select>';
            $("#characterClassWrap").html(selectBox);
            
            $("#characterClass").val(characterClass);
        });
    }
}

function gameChange2(game, world, characterClass) {
    if(game > 0) {
        $('#gameSub').val(game);
        $.getJSON("/game/gameSetting", { gameId: game }, function(json) {
            var listWorld = json['listWorld'];
            var listClass = json['listClass'];
                
            var selectBox = '<select id="worldSub" name="world" setColor="#838282,#FFFFFF,#000000,#D5D5D5,#D5D5D5,#FF9000"><option value="">서버를 선택하세요</option>';
            for(key in listWorld) {
                selectBox += '<option value="'+listWorld[key]['worldId']+'">'+listWorld[key]['name']+'</option>';
            }
            selectBox += '</select>';
            $("#worldWrapSub").html(selectBox);
            
            $("#worldSub").val(world);
            
            selectBox = '<select id="characterClassSub" name="characterClass" setColor="#838282,#FFFFFF,#000000,#D5D5D5,#D5D5D5,#FF9000"><option value="">클래스를 선택하세요</option>';
            for(key in listClass) {
                selectBox += '<option value="'+listClass[key]['characterClassId']+'">'+listClass[key]['name']+'</option>';
            }
            selectBox += '</select>';
            $("#characterClassWrapSub").html(selectBox);
            
            $("#characterClassSub").val(characterClass);
        });
    }
}

/******************************     game목록 불러오는 부분  끝    *************************/

function convertPopupDate(value) {
    return value.substr(2,2) + "." + value.substr(5,2) + "." + value.substr(8,2) + "<br />" + value.substr(11,2) + ":" + value.substr(14,2);
}

//마이페이지 경매리스트(본주)에서 입찰내역 보기
function bidList(clickElement, auctionId, columnCount, dialogWidth) {
    $('#dialogContent').empty();
    $('#loadingBar').show();
    var imageHost = $("#imageHost").val();
    
    $.getJSON("/bid/bidList", { auctionId: auctionId }, function (json) {

        var bidList = json['list'];
        $table = $(document.createElement('TABLE')).css('margin', '0 auto').attr('id', 'dialogTable').appendTo($('#dialogContent'));
        $tr = $(document.createElement('TR')).appendTo($table)
            .append($(document.createElement('TH')).html(''))
            .append($(document.createElement('TH')).attr("width", "80").html('입찰일시'))
            .append($(document.createElement('TH')).attr("width", "140").html('입찰가격'))
            .append($(document.createElement('TH')).attr("width", "90").html('희망부주기간'))
            if (columnCount > 3) {
                $(document.createElement('TH')).attr("width", "70").html('입찰자').appendTo($tr);
            }
            if (columnCount > 4) {
                $(document.createElement('TH')).attr("width", "66").html('흥정메시지').appendTo($tr);
            } 
            if (columnCount > 5) {
                $(document.createElement('TH')).attr("width", "80").html('낙찰하기').appendTo($tr);
            }
            $(document.createElement('TH')).html('').appendTo($tr);
            
        for (var i = 0; i < bidList.length; i++) {
            $tr = $(document.createElement('TR')).appendTo($table);

            $(document.createElement('TD')).attr('class', 'td_empty').html('').appendTo($tr);
            $(document.createElement('TD')).attr('class', 'td').html(convertPopupDate(bidList[i].date)).appendTo($tr);
            priceStr = '<span>부주비용 ' + comma(bidList[i].price) + ' 원</span><br /><span>보증금 ' + comma(bidList[i].guarantee) + ' 원</span>'
            $(document.createElement('TD')).attr('class', 'td').css({textAlign : 'right', paddingRight : '20px'}).html(priceStr).appendTo($tr);
            $(document.createElement('TD')).attr('class', 'td').html(bidList[i].period + "일").appendTo($tr);
            if (columnCount > 3) {
                $(document.createElement('TD')).attr('class', 'td').html('<span style="cursor:pointer;" onclick="requestMemberInfo(\''+bidList[i].uid+'\', $(this))">'+bidList[i].uid+'</span>').appendTo($tr);
            } 
            if (columnCount > 4) {
                $(document.createElement('TD')).attr('class', 'td').html('<a href="/message/messageList?type=1&nickname='+bidList[i].uid+'" title=""><img src="'+imageHost+'/doum/images/popup/dealMessage.jpg" alt="흥정메시지" /></a>').appendTo($tr);
            }
            if (columnCount > 5) {
                $(document.createElement('TD')).attr('class', 'td').html(
                    $(document.createElement('a')).attr({ 
                        href: '/doumTrade/createDoumTradeRecord?id=' + auctionId + '&bidId=' + bidList[i].id,
                        onclick: "return confirm('낙찰하시려는 입찰건의 보증금은 " + comma(bidList[i].guarantee) + "원입니다.\\n육성중 사고발생시 보증금 이외의 추가적인 보상을 받으실 수 없습니다.\\n낙찰하시겠습니까?')"})
                    .html('<img src="'+imageHost+'/doum/images/button/bid2_bt.jpg" alt="낙찰하기" /></a>')
                    )
                .appendTo($tr);
            }
            $(document.createElement('TD')).attr('class', 'td_empty').html('').appendTo($tr);
        }
        newWindow.create('입찰자 보기', dialogWidth, clickElement);
        $('#loadingBar').hide();
    });    
}

function requestMemberInfo(nickname, clickElement) {
    $.getJSON("/member/askMember", { nickname: nickname }, function (json) {
        var imageHost = $("#imageHost").val();
        $("#subNickname").html(nickname);
        $("#completed").html(json['countCompleted']);
        $("#canceled").html(json['countCanceled']);
        
        
        //실명인증부분
        var isAccount = "Not";
        if (json['account'] == 1 || json['account'] == 2) isAccount = "OK";
        $("#auth").html('실명 : <img src="'+imageHost+'/doum/images/button/authOK.jpg" alt="실명" style="margin-bottom:-3px;" /> &nbsp; 계좌 : <img src="'+imageHost+'/doum/images/button/auth'+isAccount+'.jpg" style="margin-bottom:-3px;" alt="계좌" />');
        
        //별 붙여주기
        
        var starCount = json['avg'] * 10;
        $("#avg2").css("width", starCount + "px");
        $("#avg3").html('<a href="/information/appreciateList?key=supporter&keyword='+ encodeURI(nickname) +'" title="상세보기"><img src="'+imageHost+'/doum/images/button/detail_bt.png" alt="상세보기"/></a>');
        
        newWindow2.create('회원정보보기', 340, clickElement, 'dialogContent2');
    }); 
}

function requestMemberInfoOnlyS(nickname, clickElement) {
    $.getJSON("/member/askMember", { nickname: nickname }, function (json) {
        var imageHost = $("#imageHost").val();
        $("#subNickname").html(nickname);
        $("#completed").html(json['countCompletedS']);
        $("#canceled").html(json['countCanceledS']);
        
        
        //실명인증부분
        var isAccount = "Not";
        if (json['account'] == 1 || json['account'] == 2) isAccount = "OK";
        $("#auth").html('실명 : <img src="'+imageHost+'/doum/images/button/authOK.jpg" alt="실명" style="margin-bottom:-3px;" /> &nbsp; 계좌 : <img src="'+imageHost+'/doum/images/button/auth'+isAccount+'.jpg" style="margin-bottom:-3px;" alt="계좌" />');
        
        //별 붙여주기
        
        var starCount = json['avg'] * 10;
        $("#avg2").css("width", starCount + "px");
        $("#avg3").html('<a href="/information/appreciateList?key=supporter&keyword='+ encodeURI(nickname) +'" title="상세보기"><img src="'+imageHost+'/doum/images/button/detail_bt.png" alt="상세보기"/></a>');
        
        newWindow2.create('회원정보보기', 340, clickElement, 'dialogContent2');
    }); 
}

//부주확인하기(리스트에서)
function doumCheckForm(auctionId, clickElement, dialogWidth, dialogTitle, dialogId) {
    $('#auctionId').val(auctionId);
    newWindow2.create(dialogTitle, dialogWidth, clickElement, dialogId);
}

// 입찰 수정
function showBidEditForm(clickElement, auctionId, bidId) {
    $('#auctionId').val(auctionId);        
    $('#bidId').val(bidId);  
          
    $.getJSON("/bid/edit", { auctionId: auctionId, bidId: bidId }, function (json) {
        var price = '';
        var guarantee = '';
        
        var tmpNo = 1;
        for(var i=json.price.length; i > 0; i--) {
            price = json.price.substring(i,i-1) + price; 
            if ((tmpNo%3 == 0) && (tmpNo != json.price.length)) {
                price = ',' + price;
            }
            tmpNo += 1;                
        }
        var tmpNo = 1;
        for(var i=json.guarantee.length; i > 0; i--) {
            guarantee = json.guarantee.substring(i,i-1) + guarantee; 
            if ((tmpNo%3 == 0) && (tmpNo != json.guarantee.length)) {
                guarantee = ',' + guarantee;
            }
            tmpNo += 1;                
        }
        var period = json.period;
        
        $('#price').text(price);
        $('#guarantee').text(guarantee);
        $('#period').text(period);
        newWindow2.create('입찰 수정', 500, clickElement, "dialogContent2")
    });
}

function checkBoxSelectAll() {
    $('.deleteCheckBox').each(function() {
        $(this).attr('checked', 'checked');
    });
}

var newWindow = {
    id : null,
    flag : false,
    dialogBox : null,
    dialogContent : null,
    createDialogBox : function(title, width, element) {
        this.dialogBox = $('<table cellspacing="0" cellpadding="0" class="dialogBox"><tr><td colspan="2"><table cellspacing="0" cellpadding="0" border="0" width="100%"><tr><td class="dialogBox-tl dialogPng"></td><td class="dialogBox-tr dialogPng"></td></tr></table></td></tr><tr><td class="dialogBox-cl dialogPng"></td><td class="dialogBox-cr dialogPng"></td></tr><tr><td class="dialogBox-bl dialogPng"></td><td class="dialogBox-br dialogPng"></td></tr></table>');
        $('body').append(this.dialogBox);
    },
    create : function(title, width, element, id) {
        if(this.flag) {
            return false;
        }
        
        if(!id) {
            var id = "dialogContent";
        }
        this.id = "#" + id;
        this.dialogContent = $(this.id).html();

        //다이알로그 박스 생성하기
        if(this.dialogBox) this.dialogBox.remove();
        newWindow.createDialogBox();      
                
        //윈도우 가운데로 위치 조절하기.
        finLeft = (window.document.body.clientWidth/2) - (width / 2);
        finTop = element.offset().top - $(this.id).height() / 2;
        (finTop < 100) ? finTop = 100 : "" ;
        
        if (finTop > 700) {
            finTop -= 200; 
        }
        
        $('.dialogBox').css("left", finLeft);
        $(".dialogBox").css("top", finTop);
        
        //타이틀 넣어주기.
        $(".dialogBox-tl").html(title);
        
        //컨텐츠 넣어주기
        $(".dialogBox-cl").html(this.dialogContent);
        
        //드래그 걸어주기
        this.dialogBox.draggable({handle: $(".dialogBox-tl")});
        
        //창떠있는 유무 판단.
        this.flag = true;
        
        //바인드걸기
        $(".dialogBox-tr").bind("click", function(id) {
            newWindow.hide();
        });
        
        $(this.id).empty();
        currencyComma();
        this.dialogBox.show();
        $(".dialogPng").ifixpng();        
    },
    hide: function() {
        this.dialogBox.hide();
        $(this.id).html(newWindow.dialogContent);
        this.flag =false;
    }
};

var newWindow2 = {
    id : null,
    flag : false,
    dialogBox : null,
    dialogContent : null,
    createDialogBox : function(title, width, element) {
        this.dialogBox = $('<table cellspacing="0" cellpadding="0" class="dialogBox2"><tr><td colspan="2"><table cellspacing="0" cellpadding="0" border="0" width="100%"><tr><td class="dialogBox-tl2 dialogPng"></td><td class="dialogBox-tr2 dialogPng"></td></tr></table></td></tr><tr><td class="dialogBox-cl2 dialogPng"></td><td class="dialogBox-cr2 dialogPng"></td></tr><tr><td class="dialogBox-bl2 dialogPng"></td><td class="dialogBox-br2 dialogPng"></td></tr></table>');
        $('body').append(this.dialogBox);
    },
    create : function(title, width, element, id) {
        if(this.flag) {
            return false;
        }
        
        if(!id) {
            var id = "dialogContent";
        }
        this.id = "#" + id;
        this.dialogContent = $(this.id).html();

        //다이알로그 박스 생성하기
        if(this.dialogBox) this.dialogBox.remove();
        newWindow2.createDialogBox();      
        
        //윈도우 가운데로 위치 조절하기.
        finLeft = (window.document.body.clientWidth/2) - (width / 2);
        finTop = element.offset().top - $(this.id).height() / 2;
        (finTop < 100) ? finTop = 100 : "" ;
        
        $('.dialogBox2').css("left", finLeft);
        $(".dialogBox2").css("top", finTop);

        //타이틀 넣어주기.
        $(".dialogBox-tl2").html(title);
        
        //컨텐츠 넣어주기
        $(".dialogBox-cl2").html(this.dialogContent);
        
        //드래그 걸어주기
        this.dialogBox.draggable({handle: $(".dialogBox-tl2")});
        
        //창떠있는 유무 판단.
        this.flag = true;
        
        //바인드걸기
        $(".dialogBox-tr2").bind("click", function(id) {
            newWindow2.hide();
        });
        
        $(this.id).empty();
        $(".dialogPng").ifixpng();
        currencyComma();
        this.dialogBox.show();
        
    },
    hide: function() {
        this.dialogBox.hide();
        $(this.id).html(newWindow2.dialogContent);
        this.flag =false;
    }
};

//콤마찍기
function currencyComma() {
    jQuery.each($(":input[class*='currency']"), function() {
        $(this).keyup(function(e) {
            var num = jQuery.trim($(this).val()).replace(/[^0-9]/gi, "");
            if(!num) {
                $(this).val("");
                return false;
            }
            
            num = parseInt(num) + "";
            var length = num.length;
            var per = parseInt(length/3);
            var other = parseInt(length%3);
            
            var temp2 = "";
            (other > 0 && per > 0) ? temp2 = num.substr(0,other)+"," : temp2 = num.substr(0,other);
            for(i=0;i<per;i++) {
                temp2 = temp2+num.substr(other,3);
                if(i != per-1) temp2 = temp2 + ",";
                other += 3;
            }
            
            $(this).val(temp2);
        });
        $(this).focus(function(e) {
            if($(this).val() == 0) $(this).val('');
        });
        $(this).blur(function(e) {
            if($(this).val() == "") $(this).val(0);
        });
    })
}

//옥션부분 textarea 색깔 바꿔주기.
function change_auction_color() {
    var text = $("#post_text").html();
    text = text.replace(/현재레벨 :/, '<span style="color: #0095DB;">현재레벨 :</span>');
    text = text.replace(/희망레벨 :/, '<span style="color: #0095DB;">희망레벨 :</span>');
    text = text.replace(/보유장비\(착용장비, 창고장비, 게임머니 등\) :/, '<span style="color: #0095DB;">보유장비(착용장비, 창고장비, 게임머니 등) :</span>');
    text = text.replace(/캐릭터상태\(성향, 분쟁여부, 평판 등\) :/, '<span style="color: #0095DB;">캐릭터상태(성향, 분쟁여부, 평판 등) :</span>');
    text = text.replace(/기 타 :/, '<span style="color: #0095DB;">기 타 :</span>');
    text = text.replace(/부주신청내용 :/, '<span style="color: #0095DB;">부주신청내용 :</span>');
    $("#post_text").html(text);
}

//즐겨찾기등록
function addfavorites() {
    var favoriteurl="http://doum.playforum.net/";
    var favoritetitle="도움플포, 빠르고 안전한 육성";  

    if(window.sidebar) {               //IE
        window.sidebar.addPanel(favoritetitle, favoriteurl, "");
    } else if (window.external) {      //Firefox,Netscape
        window.external.AddFavorite(favoriteurl, favoritetitle); 
    }
}

//기본적으로 실행되야 할것들 넣어주기.
$(document).ready(function(){
    //콤마 찍어주기 부분.
    currencyComma();
    try {
        document.execCommand("BackgroundImageCache", false, true);
    } catch(ignored) {}
});