google.load("feeds", "1");

var mode = 1;
var selectedNum = 0;
var mode2_disparea = '';

function getLink(category, subcategory){
	var category_url = category_url_param[category];
    var p = links[category][subcategory];
    var s = (p) ? p + '/' : '';
    var url =  messages.RSS_URL_BASE + category_url + "/" + s + "ref=pd_ts_rss_link?num=100&tag="+messages.ATAG;
	return url;
    
}
//For mode 2
function showBlock(){
    if (selectedNum < 25 && mode2_disparea != 'a') {
        $('#feed img').hide();
        $('#feed img:lt(25)').show();
        mode2_disparea = 'a';
    }else if (25 <= selectedNum && selectedNum < 50 && mode2_disparea != 'b') {
        $('#feed img').hide();
        $('#feed img:gt(24)').show();
        $('#feed img:gt(49)').hide();
        mode2_disparea = 'b';
    }else if (50 <= selectedNum && selectedNum < 75 && mode2_disparea != 'c') {
        $('#feed img').hide();
        $('#feed img:gt(49)').show();
        $('#feed img:gt(74)').hide();
        mode2_disparea = 'c';
    }else if (75 <= selectedNum && selectedNum && mode2_disparea != 'd') {
	    $('#feed img').hide();
	    $('#feed img:gt(74)').show();
	    mode2_disparea = 'd';
    }
}



function initialize(){
    if (!window.console) {
        window.console = {};
        console.log = function(str){
        };
    }
    
	getURLParams();
	
    function changeSelected(before, after){
        $('#miniimg_' + before).removeClass('selected');
        $('#miniimg_' + after).addClass('selected');
        selectedNum = after - 0;
    }
    var feedmove = {};
    feedmove.up = function(){
        if (checkmode() != 'item') 
            return;
        var now_num = selectedNum;
        var after = 90;
        if (now_num != 0) {
            var shift = (mode == 1) ? 10 : 5;
            after = now_num - shift;
            after = (after < 0) ? after + 100 : after;
        }
        showDetail(after);
        changeSelected(now_num, after);
        if (mode == 2) 
            showBlock();
    }
    feedmove.down = function(){
        if (checkmode() != 'item') 
            return;
        var now_num = selectedNum;
        var after = 10
        if (now_num != 99) {
            var shift = (mode == 1) ? 10 : 5;
            after = now_num + shift;
            after = (after > 99) ? after - 100 : after;
        }
        showDetail(after);
        changeSelected(now_num, after);
        if (mode == 2) 
            showBlock();
    }
    feedmove.right = function(){
        if (checkmode() != 'item') 
            return;
        var now_num = selectedNum;
        var after = 0;
        if (now_num != 99) {
            after = now_num + 1;
        }
        showDetail(after);
        changeSelected(now_num, after);
        if (mode == 2) 
            showBlock();
    }
    feedmove.left = function(){
        if (checkmode() != 'item') 
            return;
        var now_num = selectedNum;
        var after = 99;
        if (now_num != 0) {
            after = now_num - 1;
        }
        showDetail(after);
        changeSelected(now_num, after);
        if (mode == 2) 
            showBlock();
    }
    var clipmove = {};
    clipmove.left = function(){
        if ($('#clip img.selected').parent().prev().eq(0).attr('id') != 'clip_title') {
            $('#clip img.selected').removeClass('selected').parent().prev().children('img').addClass('selected');
        }
        else {
            $('#clip img.selected').removeClass('selected');
            $('#clip img:last').addClass('selected');
        }
    }
    clipmove.right = function(){
        if ($('#clip img.selected').parent().next().length) {
            $('#clip img.selected').removeClass('selected').parent().next().children('img').addClass('selected');
        }
        else {
            $('#clip img.selected').removeClass('selected');
            $('#clip img:first').addClass('selected');
        }
    }
    var categorymove = {};
    categorymove.up = function(){
        if ($('#category li.selected').prev().length) {
            $('#category li.selected').removeClass('selected').prev().addClass('selected');
        }
        else {
            $('#category li.selected').removeClass('selected');
            $('#category li:last').addClass('selected');
        }
    }
    categorymove.down = function(){
        if ($('#category li.selected').next().length) {
            $('#category li.selected').removeClass('selected').next().addClass('selected');
        }
        else {
            $('#category li.selected').removeClass('selected');
            $('#category li:first').addClass('selected');
        }
    }
    var subcategorymove = {};
    subcategorymove.up = function(){
        if ($('#subcategory li.selected').prev().length) {
            $('#subcategory li.selected').removeClass('selected').prev().addClass('selected');
        }
        else {
            $('#subcategory li.selected').removeClass('selected');
            $('#subcategory li:last').addClass('selected');
        }
    }
    subcategorymove.down = function(){
        if ($('#subcategory li.selected').next().length) {
            $('#subcategory li.selected').removeClass('selected').next().addClass('selected');
        }
        else {
            $('#subcategory li.selected').removeClass('selected');
            $('#subcategory li:first').addClass('selected');
        }
    }
    
    //Key bind
    $.hotkeys.add('up', function(){
        if (checkmode() == 'subcategory') {
            subcategorymove.up();
        }
        else 
            if (checkmode() == 'category') {
                categorymove.up();
            }
            else {
                feedmove.up();
            }
    });
    $.hotkeys.add('down', function(){
        if (checkmode() == 'subcategory') {
            subcategorymove.down();
        }
        else 
            if (checkmode() == 'category') {
                categorymove.down();
            }
            else {
                feedmove.down();
            }
    });
    $.hotkeys.add('right', feedmove.right);
    $.hotkeys.add('left', feedmove.left);
    
    $.hotkeys.add('c', showCategory);
    $.hotkeys.add('x', showSubcategory);
    
    $.hotkeys.add('j', function(){
        if (checkmode() == 'subcategory') {
            subcategorymove.down();
        }
        else 
            if (checkmode() == 'category') {
                categorymove.down();
            }
            else {
                feedmove.down();
            }
    });
    $.hotkeys.add('k', function(){
        if (checkmode() == 'subcategory') {
            subcategorymove.up();
        }
        else 
            if (checkmode() == 'category') {
                categorymove.up();
            }
            else {
                feedmove.up();
            }
    });
    $.hotkeys.add('h', function(){
        if (checkmode() == 'item') {
            feedmove.left();
        }
    });
    $.hotkeys.add('l', function(){
        if (checkmode() == 'item') {
            feedmove.right();
        }
    });
    
    $.hotkeys.add('s', clipItem);
    $.hotkeys.add('v', openItemPage);
    $.hotkeys.add('u', openClipItemPage);
    $.hotkeys.add('i', function(){
        clipmove.left();
    });
    $.hotkeys.add('o', function(){
        clipmove.right();
    });
    $.hotkeys.add('b', function(){
        if (checkmode() == 'item') {
            var a = $('#detail_' + selectedNum + ' a[href*=offer-listing]');
            if (a.length != 0) {
                var url = a.get(0).href;
                window.open(url, '_blank', 'status=1,scrollbars=1,menubar=1,location=1,toolbar=1,resizable=1');
            }
        }
    });
    $.hotkeys.add('w', function(){
        var as = $('#clip a');
        if (as.length != 0 && confirm(messages.CONFIRM_OPEN_WINDOW_BEFORE + as.length + messages.CONFIRM_OPEN_WINDOW_AFTER)) {
            for (var i = 0, len = as.length; i < len; i++) {
                var url = as.get(i).href;
                window.open(url, '_blank', 'status=1,scrollbars=1,menubar=1,location=1,toolbar=1,resizable=1');
            }
        }
    });
    $.hotkeys.add('9', function(){
        var img = $('#clip img.selected');
        if (img.length && window.confirm(messages.CONFIRM_DELETE_ONE_ITEM_BEFORE + img.attr('alt') + messages.CONFIRM_DELETE_ONE_ITEM_AFTER)) {
            img.parent().remove();
            img.remove();
            var new_selected = $('#clip img:first');
            if (new_selected.length) {
                new_selected.addClass('selected');
            }
        }
    });
    $.hotkeys.add('0', function(){
        var clips = $('#clip a,#clip img');
        if (clips.length && window.confirm(messages.CONFIRM_DELETE_ALL_ITEMS)) {
            $('#clip a,#clip img').remove();
        }
    });
    
    $.hotkeys.add('1', function(){
        if (checkmode() == 'item') {
            mode = 1;
            $('#feed img').removeClass('mode_2').addClass('mode_1').show();
			setURLParams();
        }
    });
    $.hotkeys.add('2', function(){
        if (checkmode() == 'item') {
            mode = 2;
            mode2_disparea = '';
            $('#feed img').removeClass('mode_1').addClass('mode_2');
			setURLParams();
            showBlock();
        }
    });
    
    $.hotkeys.add('return', function(){
        if ($('#subcategory').children().length) {
			selectSubcategory();
        }
        else if ($('#category').children().length) {
			selectCategory();
        }else if(checkmode() == 'item'){
			openItemPage();
		}
    });
	
	//add events
1
    var categoryCancel = function(){
        if (checkmode() != 'item') {
            clearCategories();
            $('#feed,#detail').show();
            $('#category_help').hide();
            showItems();
        }
    }
    $.hotkeys.add('esc', categoryCancel);
    $.hotkeys.add('z', categoryCancel);
    
    setCategoriesOnMainMessage(category, subcategory);
    show(category, subcategory);
    
}
function selectCategory(){
    category = $('#category li.selected').text();
    subcategory = 'すべて';
    $('#category').html('').hide();
	setCategoriesOnMainMessage(category);
    showSubcategory();
}
function selectSubcategory(){
    loading();
    subcategory = $('#subcategory li.selected').text();
    $('#subcategory').html('').hide();
    $('#category_help').hide();
    show(category, subcategory);
	setCategoriesOnMainMessage(category,subcategory);
}
function setCategoriesOnMainMessage(category,subcategory){
	var main_message=$('#main_message').html('');
	if(category){
		var html_category = $('<span class="linkable">'+category+'</span>').click(showCategory);
		main_message.append(html_category)
	}
	if(subcategory){
		var html_subcategory = $('<span class="linkable">'+subcategory+'</span>').click(showSubcategory);
		main_message.append('<span> > </span>').append(html_subcategory);
	}
	$('main_message span.linkable').hover(function(){
		$(this).addClass('selected');
	},function(){
		$(this).removeClass('selected');
	}
	);
}

function checkmode(){
    if ($('#category').children().length) {
        return 'category';
    }
    else 
        if ($('#subcategory').children().length) {
            return 'subcategory';
        }
        else {
            return 'item';
        }
}

function clearCategories(){
    $('#category,#subcategory').children().remove();
}

function clearDetail(){
    $('#detail').hide();
}

function hideItems(){
    $('#feed,#feed_help').hide();
}

function showItems(){
    $('#feed,#feed_help').show();
}

function showCategory(){
    clearCategories();
    hideItems();
	$('#subcategory').hide();
    clearDetail();
    //load category
    var obj = links;
    for (p in obj) {
        var t = $('<li class="category"/>').text(p).mouseover(function(){
			$('#category li.selected').removeClass('selected');
			$(this).addClass('selected');
		}).click(selectCategory);
        if (p == category) 
            t.addClass('selected');
        $('#category').append(t);
    }
	$('#category').show();
    $('#category_help').show();
}

function showSubcategory(){
    clearCategories();
    hideItems();
	$('#category').hide();
    clearDetail();
    //load subcategory
    var obj = links[category];
    for (p in obj) {
        var t = $('<li class="subcategory"/>').text(p).mouseover(function(){
			$('#subcategory li.selected').removeClass('selected');
			$(this).addClass('selected');
		}).click(selectSubcategory);
        if (p == subcategory) 
            t.addClass('selected');
        $('#subcategory').append(t);
    }
	$('#subcategory').show();
    $('#category_help').show();
}

function openItemPage(){
    if (checkmode() == 'item') {
        var url = $('#detail_' + selectedNum + ' a').get(0).href;
        window.open(url, '_blank', 'status=1,scrollbars=1,menubar=1,location=1,toolbar=1,resizable=1');
    }
}
function openClipItemPage(){
    var a = $('#clip img.selected').parent();
    if (a.length) {
        var url = a.get(0).href;
        window.open(url, '_blank', 'status=1,scrollbars=1,menubar=1,location=1,toolbar=1,resizable=1');
    }
}

function clipItem(){
    if (checkmode() == 'item') {
        var img = $('#detail_' + selectedNum + ' img').get(0);
        var img_src = img.src;
        var img_alt = (img.alt) ? img.alt : '';
        if ($('#clip img[src="' + img_src + '"]').length == 0) {
            var link = $('#detail_' + selectedNum + ' a').get(0).href;
            var cn = ($('#clip img').length) ? '' : 'selected';
			var apendElem = $('<a href="' + link + '" target="_blank"><img src="' + img_src + '" alt="' + img_alt + '" width="30" height="30" border="0" class="' + cn + '"></a>');
			apendElem.mouseover(function(){
				$('#clip img.selected').removeClass('selected');
				$('img',this).addClass('selected');
			});
            $('#clip').append(apendElem);
        }
    }
}

//show loadhing image
function loading(){
    $("#feed").html('<img class="loader" src="../img/ajax-loader.gif"/>');
    clearDetail();
}

function setURLParams(){
	var url_cate = category_url_param[category];
	var url_subcate = links[category][subcategory];
    url_subcate = (url_subcate) ? url_subcate : 'all';
	window.location.href = '#'+url_cate+'/'+url_subcate+'/'+mode+'/';
}

function getURLParams(){
	var data = window.location.hash.split('/');
	if(data[0]){
		for(p in category_url_param){
			if(category_url_param[p] == data[0].substr(1)){
				category = p;
				break;
			}
		}
	}
	if(data[1]){
		var subs = links[category];
		for(p in subs){
			if(subs[p] == data[1]){
				subcategory = p;
				break;
			}
		}
	}
	if(data[2]){
		if(data[2].match(/[12]/)) mode = data[2]-0;
	}
}

var feeddata;

function show(category, subcategory){
	
	setURLParams();
    $('#feed').html('');
	
    showItems();
    var feed = new google.feeds.Feed(getLink(category, subcategory));
    feed.setNumEntries(100);
    loading();
    feed.load(function(result){
        if (!result.error) {
            selectedNum = 0;
            mode2_disparea = '';
            feeddata = result;
            var container = $("#feed").html('');
            
            for (var i = 0; i < result.feed.entries.length; i++) {
                var entry = result.feed.entries[i];
                var content = $(entry.content);
                var img = content.eq(0).children().children();
                var l;
                if (img.length) {
                    l = img.attr('hspace', 0);
                }
                else {
                    l = $('<img src="../img/no_image.png" alt="' + $('a', content).text() + '"/>');
                }
                l.attr('id', 'miniimg_' + i).addClass('mode_' + mode);
                if (i == 0){
                    l.addClass('selected');
				}
                container.append(l);
                if (mode == 2 && i > 24){
                    l.hide();
				}
            }
            
            var imgs = $('#feed img').mouseover(function(){
                var t = $(this);
                $('#miniimg_' + selectedNum).removeClass('selected');
                t.addClass('selected');
                selectedNum = t.attr('id').split('_')[1] - 0;
                showDetail(selectedNum);
            }).click(clipItem).dblclick(openItemPage);
            //for IE
			if($.browser.msie) imgs.css('marginBottom','4px');
            showDetail(0);
        }
        else {
            $('#feed').html('<div class="error_message">'+messages.AJAX_ERROR+'</div>')
        }
    });
}
//show item detail
function showDetail(num){
    var rank = $('<div class="ranking"/>').text(num + 1);
    
    var d = feeddata.feed.entries[num].content;
    d = $(d)
    if (d.get(0).tagName == 'DIV') {
        d.eq(0).css('float', 'none').addClass('detail_img');
    }
    else 
        if (d.get(0).tagName == 'SPAN') {
            d.children(':first').before('<div class="detail_img"><img alt="' + $('a', d).text() + '" src="../img/no_image.png"></div>');
        }
    var exp = $('<div id="detail_' + num + '" class="exp"/>').append(rank).append(d);
    exp.html(exp.html().replace(regex_mess.DELETE_RANK, ''));
    var detail = $('#detail').html('').hide().append(exp).show();
//    $('#detail a').each(function(){
//        var url = this.href.replace(/(ref=.+?$)|(ref=.+?\?)/, '');
//		if(jQuery.browser.msie && (jQuery.browser.version+'').indexOf('6') == 0) url = url.replace(regex_mess.IE6_LINK,regex_mess.IE6_LINK_TO);
//        this.href = messages.REDIRECT_URL + encodeURIComponent(url);
//        this.target = '_blank';
//    });
    
}

google.setOnLoadCallback(initialize);

