// JavaScript Document

(function($){
    
    // メッセージ
    var pop_message = {
        bg_color : 'blue',
        text_color : 'white',
        init : function() {
            var div='<div id="message" style="position:absolute;background-color:' + $.pop_message.bg_color + ';padding:2px;"><p><span style="color:' + $.pop_message.text_color + ';" /></p></div>';
            $('#container').append(div);
            $('#message').hide();
        },
        display : function(elm, msg) {
            if(this.timeout){
                clearTimeout(this.timeout)
            }
            $('#message p span').html(msg);
                        
            var position = elm.position();
            var elm_width = elm.attr('offsetWidth') + 5;
            var left = position.left + elm_width;
            var top = position.top;
            $('#message').css({'left':left+'px','top':top+'px','zIndex':500});

            $('#message').show();
            this.timeout=setTimeout($.pop_message.remove,3000);
        },
        remove : function() {
            $('#message').hide();
        }
    }
    
    $.pop_message = pop_message;
    
    var mylist = {
        top_setting : 'cjs_article',
        period : 7,
        set_image : '',
        del_image : '',
        setTopSetting : function(str) {
            $.mylist.top_setting = str;
        },
        setPeriod : function(period) {
            $.mylist.period = period;
        },
        // 初期化
        init : function() {
            // お気に入り物件取得
            var article_data = $.mylist.getMyList();
        
            $(".MyList").each(function(){
                var elm = $(this);
                var elm_id = elm.attr('id');
                var article = elm_id.split('_');
                var seq = article[1];
                
                for(var i=0; i < article_data.length; i++) {
                    if(article_data[i] == seq) {
                        elm.addClass('in_mylist');
                        if($.mylist.del_image != '') {
                            elm.attr('src', $.mylist.del_image);
                        } else {
                            elm.val('マイリスト削除');
                        }
                        break;
                    }
                }
            });
            
            if(!article_data) {
                $('#mylist_count').text('0');
            } else {
                $('#mylist_count').text('' + article_data.length);
            }
        },
        // クリック
        clickButton : function(elm,seq) {
            if(elm.hasClass('in_mylist')) {
                $.mylist.removeMyList(elm,seq);
                elm.removeClass('in_mylist');
                if($.mylist.set_image != '') {
                    elm.attr('src', $.mylist.set_image);
                } else {
                    elm.val('マイリスト登録');
                }
                var count = parseInt($('#mylist_count').text()) - 1;
                $('#mylist_count').text('' + count);
                
            } else {
                $.mylist.addMyList(elm,seq);
                elm.addClass('in_mylist');
                if($.mylist.del_image != '') {
                    elm.attr('src', $.mylist.del_image);
                } else {
                    elm.val('マイリスト削除');
                }
                var count = parseInt($('#mylist_count').text()) + 1;
                $('#mylist_count').text('' + count);
                
            }
        },
        // お気に入り登録
        addMyList : function(elm,seq) {

            // 今日の日付取得
            var dt = new Date();
            var y = dt.getFullYear();
            var m = dt.getMonth() + 1;
            var d = dt.getDate();
            if(m < 10){ m = '0' + m; }
            if(d < 10){ d = '0' + d; }
            var cur_date = '' + y + m + d;
            
            // 保存期間
            exp = new Date();
            exp.setTime(exp.getTime()+1000*60*60*24*$.mylist.period);
            
            // 保存文字列
            var save_name = $.mylist.top_setting + seq + '=' + cur_date + '_' + seq + '; expires=' + exp.toGMTString();
            
            // クッキーに保存
            document.cookie = save_name;
            
            // 完了メッセージ
            $.pop_message.display(elm,'マイリストに登録しました');
        },
        // お気に入り削除
        removeMyList : function(elm,seq) {
            // 過去の日付に設定
            exp = new Date();
            exp.setFullYear(exp.getFullYear() - 1);
            
            // 保存文字列
            var save_name = $.mylist.top_setting + seq + '=; expires=' + exp.toGMTString();
            
            // クッキーに保存
            document.cookie = save_name;
            
            // 完了メッセージ
            $.pop_message.display(elm,'マイリストから削除しました');
        },
        // お気に入りデータを取得
        getMyList : function() {

            // クッキーから取得
            var cookie_data = document.cookie + ';';
            var cookie_array = cookie_data.split(';');
            
            var i = 0;
            var cnt = 0;
            var article_data = new Array();
            while(cookie_array[i]) {
                var line = cookie_array[i];
                if(line.indexOf($.mylist.top_setting) != -1) {
                
                    var data = line.substring(line.indexOf('=')+1, line.length);
                    var tmp = data.split('_');
                    // 登録日
                    var regist_day = tmp[0];
                    // 物件SEQ
                    var seq = tmp[1];
                    
                    // 有効期限チェック
                    if($.mylist.checkExpireDate(regist_day, $.mylist.period)) {
                        // 値を埋め込む
                        article_data[cnt] = seq;
                        cnt++;
                    }
                }
                if (++i >= cookie_array.length) break;
            }
            if(cnt > 0) {
                return article_data;
            } else {
                return false;
            }
        },
        // 期限切れかチェック
        checkExpireDate : function(datestr, diff) {

            // 現在の日付＆時刻を取得
            var today = new Date();
            // 時間を0:00にする
            today.setHours(0);
            today.setMinutes(0);
            today.setSeconds(0);
            today.setMilliseconds(0);

            // 文字列から年月日を抜き出し、数値型に変換
            var y = parseInt(datestr.substr(0,4), 10);
            var m = parseInt(datestr.substr(4,2), 10) -1;
            var d = parseInt(datestr.substr(6,2), 10);
            var exp_day = new Date(y, m, d + diff);

            if( exp_day.getTime() < today.getTime() ){
                return false;
            }else{
                return true;
            }
        },
        // フォームにお気に入りデータを埋め込む
        makeMyListInForm : function(form_name, article_data) {

            for(var i=0; i<article_data.length; i++) {
                var seq = article_data[i];
                $.mylist.make_hidden('mylist_article_seq[' + seq + ']', seq, form_name);
            }
        },
        // フォームにhidden値を埋め込む
        make_hidden : function (name, value, formname){
            var q = document.createElement('input');
            q.type = 'hidden';
            q.name = name;
            q.value = value;
            document.forms[formname].appendChild(q);
        },
        // マイリスト設定画像登録
        setImage : function (set_image, del_image) {
            $.mylist.set_image = set_image;
            $.mylist.del_image = del_image;
        }
    }

    $.pop_message.init();
    
    $.mylist = mylist;

})(jQuery);
