/**
 * 「GJ!」インターフェイススクリプト改（jQuery版）
 *
 * @author	HisatoS.
 * @version 12/01/10 last update
 * @copyright http://www.nono150.com/
 */

// 設定項目
// スクリプトの設置位置
var SCRIPT = "http://www.nono150.com/cgi/clap/gj.php";
// スターモードのボタン画像
var IMG = "http://www.nono150.com/cgi/clap/img/panda/clap.gif";
// スターモードの一桁画像
var IMG1 = "http://www.nono150.com/cgi/clap/img/panda/star1.gif";
// スターモードの二桁画像
var IMG10 = "http://www.nono150.com/cgi/clap/img/panda/star10.gif";
// スターモードの三桁画像
var IMG100 = "http://www.nono150.com/cgi/clap/img/panda/star100.gif";
// class設定
var CLASS = "clap";

/**
 * 設置例
 *
 * # class=設定項目で設定したclass
 * # data-url=記事URL
 * # data-text=記事タイトル
 * # data-type=表示方法
 * # 			0：フォームだけにしたいとかなんかの時
 * # 			1：多分元の出力方法
 * # 			2：[拍手画像] ☆☆☆
 * # 			3：☆☆☆☆☆（1件も拍手されてない時だけ代理で[拍手画像]
 * 
 * # スターモードでの出力例
 * <div class="clap" data-url="http://記事URL" data-text="記事タイトル" data-type="3"></div>
 * # フォームモードでの出力例（フォームのidとdata-idの値をあわせる
 * <div>
 * 	<textarea id="Gj0" class="text" rows="3" cols="20" placeholder="@itigoppo"></textarea><br />
 * 	<button class="clap" data-id="Gj0" data-url="http://記事URL" data-text="記事タイトル" data-type="0">PanT!</button>
 * </div>
 * 
 */

/**
 * PHPリクエスト
 */
$(document).ready(function(){
	// ボタン描画
	showButton();

	// 拍手実行
	sendClap();
});

/**
 * 拍手ボタン描画
 */
function showButton(){
	$("."+CLASS).each(function(){
		showButtonOne($(this),false);
	});
}

/**
 * 拍手ボタン描画（個別）
 * @param object	cobj			オブジェクト
 * @param bool		send			拍手済みフラグ
 */
function showButtonOne(obj,send){
	var $clap = obj;
	var clap_data = $clap.data();
	if(clap_data.type == "0"){
		if(send) alert("送信完了っ！とぅ！");
		return false;
	}else if(clap_data.type == "1"){
		var imgfile = SCRIPT+"?mode=button"
					+"&pageurl="+clap_data.url
					+"&pagename="+clap_data.text
					+"&button=0"
					+"&cache=" + (new Date()).getTime();
		$clap.html("<img src='"+imgfile+"' class='clapimg' />");
	}else if(clap_data.type == "2" || clap_data.type == "3"){
		getCount($clap);
	}
}

/**
 * 拍手数取得、描画
 * @param object	cobj			オブジェクト
 */
function getCount(obj){
	var $clap = obj;
	var clap_data = $clap.data();

	if(clap_data.img){
		IMG = IMG.replace("panda", clap_data.img);
		IMG1 = IMG1.replace("panda", clap_data.img);
		IMG10 = IMG10.replace("panda", clap_data.img);
		IMG100 = IMG100.replace("panda", clap_data.img);
	}
	$.get(SCRIPT,{
		"mode" : "xml",
		"pageurl" : clap_data.url,
		"cache" : (new Date()).getTime()
	},function(data,status){
		var count = $(data).find("count").text();
		var mark_html = "<img src='"+IMG+"' class='add' alt='拍手する' />";
		if(clap_data.type == "3" && count > 0) mark_html = "";
		var num100 = Math.floor(count / 100);
		for(var cnt=0;cnt<num100;cnt++){
			mark_html += "<img src='"+IMG100+"' class='star' alt='"+count+"' />";
		}
		var num10 = Math.floor(Math.floor(count-num100*100)/10);
		for(var cnt=0;cnt<num10;cnt++){
			mark_html += "<img src='"+IMG10+"' class='star' alt='"+count+"' />";
		}
		var num1 = (count%10);
		for(var cnt=0;cnt<num1;cnt++){
			mark_html += "<img src='"+IMG1+"' class='star' alt='"+count+"' />";
		}
		$clap.html(mark_html);
	});
}

/**
 * 拍手実行
 */
function sendClap(){
	$("."+CLASS).click(function(){
		var $clap = $(this);
		var clap_data = $clap.data();

		var msg = "";
		if($("#"+clap_data.id).size() > 0){
			msg = $("#"+clap_data.id).val();
		}
		$.get(SCRIPT,
		{
			"mode" : "gj",
			"pageurl" : clap_data.url,
			"pagename" : clap_data.text,
			"gj_message" : msg,
			"cache" : (new Date()).getTime()
		},
		function(data, status){
			$("#"+clap_data.id).val("");
			$("#"+clap_data.id).show();
			showButtonOne($clap,true);
		});
	});
}


function jquery_dump($obj) {
	var dumphtml = [];
	if($.browser.msie) {
		for(var i = 0; i < $obj.length; i++) {
			dumphtml.push('[' + i + '] ');
			dumphtml.push($obj[i].outerHTML.replace(/^[\r\n\t]+/, ''));
			dumphtml.push("\n");
		}
	} else {
		for(var i = 0; i < $obj.length; i++) {
			dumphtml.push('[' + i + '] '
				+ '<' + $obj[i].nodeName.toLowerCase());
			for(var j = 0; j < $obj[i].attributes.length; j++) {
				dumphtml.push(' ' + $obj[i].attributes[j].nodeName + '="' 
					+ $obj[i].attributes[j].nodeValue + '"');
			}
			dumphtml.push('>' + $obj[i].innerHTML);
			dumphtml.push('<\/' + $obj[i].nodeName.toLowerCase() + '>');
			dumphtml.push("\n");
		}
	}
	alert(dumphtml.join(''));
}
