// ==UserScript==
// @name           YahooAuctionS
// @namespace      http://www.nikep.net/yahooauctions/
// @description    Yahoo!オークションUIカスタマイズ設定
// @include        http://*.auctions.yahoo.co.jp/*
// ==/UserScript==
//
// $Id$
// auther: Shigeki Kaneko <http://www.nikep.net/>
// version: 0.1.0
// Copyright(c): 2009 Shigeki Kaneko, all right reserved.
//
// Released under the GPL license
// http://www.gnu.org/copyleft/gpl.html
//

(function(){

    //-- 設定パラメータ Configuration parameters of the script
    //-- 商品リスト画面の表示を強制的に「残り時間が短い」順にする。
    //-- sort by remaining time on list or search result. [true/false]
    var SORT_BY_REMAINING_TIME = true;

    //-- ウォッチリストからの削除を行った後に表示される確認画面から自動的に戻る
    //-- back from confirmation window of deleting watchlist automatically.[true/false]
    var AUTO_BACK_AFTER_DELETING_WATCHLIST = true;

    //-- ウォッチリストに登録を行った後に表示される確認画面から自動的に戻る
    //-- back from confirmation window of adding watchlist automatically.[true/false]
    var AUTO_BACK_AFTER_ADDING_WATCHLIST = true;

    //-- 業者の公告とヤフーの[PR]を非表示にする
    //-- Hide advertisement from shops.[true/false]
    var REMOVE_SHOP_ADVERTISEMENT = true;

    //-- ヤフーの[PR]を非表示にする
    //-- Hide advertisement from yahoo.[true/false]
    var REMOVE_YAHOO_ADVERTISEMENT = true;

    //-- 現在価格を 1円〜4999円にする。[true/false], 最低価格(MIN)/最高価格(MAX) は円
    //-- Current price must be limitted upto 4999 Yen for non-premium membership.
    var LIMITTED_PRICE_FOR_NON_PREMIUM = false;
    var LIMITTED_PRICE_FOR_NON_PREMIUM_MIN_PRICE = 1;
    var LIMITTED_PRICE_FOR_NON_PREMIUM_MAX_PRICE = 4999;

    //-- 出品者のブラックリスト。商品リスト上で非表示にする[true/false]
    //-- Black list of user id. Add one into comma separated list in backList.
    var REMOVE_UESR_IN_BLACK_LIST = true;
    var blackList = [];
    //--samples-- var blackList = [ "advan2007jp", "akitamu28", "alphajapancorp", "andway48", "asaro375", "bananabeach1991", "bigbird_7jp", "bihaiyan63", "bonbom2007jp", "buchikin", "chly86", "clickers3000", "color7560jp", "csintl2010", "dangan_s", "den_toiya", "diehardlock", "discoverphoto", "foxd2008", "fujigroup_2000", "fumi_fumi2846", "gyhgx269", "hannyahara710", "hayao_suzuki", "hb_ark", "hot_collection66", "ichienshop55", "inckmc0511", "k3onlinejapan", "k_s_market", "ken55nek", "kenken3kk", "kojijp402", "kox0403", "kurayashiki_jp", "lisawu617", "m_matsu4ta", "man1zoku", "marume2381", "mc6809mc68000", "med_1210", "michi_maru", "mignonberry", "neon_ya", "netmirakuru", "news_pc_res", "norio36", "number_one_company", "okinawawa114", "pbnyc130", "pluscom88", "rabbitcrew", "raoki_2007", "renbulant", "rgbbt990", "roromio_roman", "sakuraya_ac", "sariastore2009", "sen1267", "skwhhw", "sofuto09090", "squamish2005", "stoauction", "strategy_co_ltd", "syouai9843", "tenkaipc", "tkpcmem", "tokusenkan55", "top_mart1992", "tw_p_glass_dream88", "umaibouboubou", "urankoubo2000", "vantannn1234", "vapsauction", "widely_shop" ];

    var currentURL = document.URL;
    var nextURL = null;

    if (currentURL.match("http://search.auctions.yahoo.co.jp/search?") ||
	currentURL.match(/^http:\/\/search.*\.auctions\.yahoo\.co\.jp\/jp\/search?/) ||
	currentURL.match(/^http:\/\/search.*\.auctions\.yahoo\.co\.jp\/jp\/search\/auc?/) ||
	currentURL.match(/^http:\/\/list.*\.auctions\.yahoo\.co\.jp\/jp\//)) {
	var chkURL;
	//-- List windows. Sort the list by remaining time to finish.
	if (SORT_BY_REMAINING_TIME && !currentURL.match("s1=end")) {
	    var urlad = (currentURL.match(/.html$/) ? "?" : "&") + "s1=end";
	    nextURL = currentURL + urlad;
	}
	chkURL = nextURL ? nextURL : currentURL;
	if (LIMITTED_PRICE_FOR_NON_PREMIUM && !chkURL.match("price_type=currentprice") &&
	    !(chkURL.match("aucminprice=") || chkURL.match("aucmaxprice="))) {
	    var prce = 'price_type=currentprice&min=' + LIMITTED_PRICE_FOR_NON_PREMIUM_MIN_PRICE.toString() + '&max=' + LIMITTED_PRICE_FOR_NON_PREMIUM_MAX_PRICE.toString();
	    var urlad = (chkURL.match(/.html$/) ? "?" : "&") + prce;
	    nextURL = chkURL + urlad;
	}
	//-- If the nextURL is set, it should be reloaded.
	if (nextURL) {
	    location.href = nextURL;
	}

	//-- hide the row entries on the table contained in the blacklist.
	if (REMOVE_UESR_IN_BLACK_LIST) {
	    var trs = document.getElementsByTagName("tr");
	    var cnt = 0;
	    for (var i = 0; i < trs.length; i++) {
		var tr = trs[i];
		if (cnt > 0) {
		    tr.style.display = "none";
		    cnt--;
		    continue;
		} else {
		    var bgc = tr.getAttribute("BGCOLOR");
		    if (bgc != "#ffffff" && bgc != "#ffff99") {
			continue;
		    }
		}
		// 出品者（評価）：<a href="http://openuser.auctions.yahoo.co.jp/jp/user/{blkid}">{blkid}</a>
		if (tr.innerHTML.match(/出品者（評価）：<a href=\"http:\/\/openuser\.auctions\.yahoo\.co\.jp\/jp\/user\/([^\"]*)\">([^<]*)<\/a>/)) {
		    var uid = RegExp.$1;
		    for (var j = 0; j < blackList.length; j++) {
			var blkid = blackList[j];
			if (uid == blkid) {
			    tr.style.display = "none";
			    cnt = 2;	// 2 lines: watch-list, space line.
			}
		    }		    
		}
	    }
	}
    } else if (AUTO_BACK_AFTER_ADDING_WATCHLIST &&
	       currentURL.match(/^http:\/\/navi.*\.auctions\.yahoo\.co\.jp\/jp\/config\/remember?/) ||
	       currentURL.match(/^http:\/\/navi.*\.auctions\.yahoo\.co\.jp\/jp\/show\/complete?/)) {
	//-- Useless confirmation pages, so go back to the previous page.
	setTimeout("history.back()", 2000);
    } else if (AUTO_BACK_AFTER_DELETING_WATCHLIST &&
	       currentURL.match(/^http:\/\/user\.auctions\.yahoo\.co\.jp\/jp\/show\/ucomplete/)) {
	//-- Useless confirmation pages, go forward.
	var elems = document.getElementsByTagName("a");
	for (var i = 0; i < elems.length; i++) {
	    var elem = elems[i];
	    if (elem.innerHTML.match("開催中")) {
		nextURL = elem.getAttribute("href");
		break;
	    }
	}
	if (nextURL) {
	    location.href = nextURL;
	}
    } else if (REMOVE_SHOP_ADVERTISEMENT && 
	       currentURL.match(/http:\/\/page[0-9]*\.auctions\.yahoo\.co\.jp\/jp\/auction\//)) {
	var trs = document.getElementsByTagName("div");
	var modUsrPrvs = [];
	for (var i = 0; i < trs.length; i++) {
	    var tr = trs[i];
	    if (tr.getAttribute("class") == "modUsrPrv") {
		modUsrPrvs.push(tr);
	    }
	    if (tr.getAttribute("id") == "modAdCt") {
		tr.style.display = "none";
	    }
	}
	//-- I don't know exactly which div to hide, but the following setting may be good for most pages.
	if (modUsrPrvs.length >= 4) {
	    modUsrPrvs[0].style.display = "none";
	    modUsrPrvs[1].style.display = "none";
	} else if (modUsrPrvs.length > 1) {
	    modUsrPrvs[0].style.display = "none";
	}
    } else if (REMOVE_YAHOO_ADVERTISEMENT) {
	//-- Hide advertisement from Yahoo!.
	var trs = document.getElementsByTagName("div");
	for (var i = 0; i < trs.length; i++) {
	    var tr = trs[i];
	    if (tr.getAttribute("id") == "modAdCt") {
		tr.style.display = "none";
		break;
	    }
	}
    }    
})();
