// 拍手ボタン初期化

var cgiurl = "http://sionsiva.sakura.ne.jp/cgi/blogClap.cgi";
var myUid = "";
var myUid2 = "";
var clapRef = "";

function init_blogClap(name, jsonp)
{
    if(name == "") {
        name = "Good";
    }

    // input Tag
    {
        var btns = document.getElementsByTagName('input');
        for(var i=0; i<btns.length; i++)(function(btn){
            if(btn.className == 'blogClapBtn') {
//                btn.value = name;
                blogClap(btn, 0, jsonp);
            }
            else if(btn.className == 'blogCounter') {
                blogClap(btn, 1, jsonp);
            }
        })(btns[i]);
    }

    // span Tag
    {
        var btns = document.getElementsByTagName('span');
        for(var i=0; i<btns.length; i++)(function(btn){
            if(btn.className == 'blogCounter') {
                blogClap(btn, 1, jsonp);
            }
        })(btns[i]);
    }
}

// 拍手!!
function blogClap(obj, score, jsonp)
{

//    alert("blogClap(" + obj.id + ", " + score + ", " + jsonp + ");");

    var idstr = obj.id;
    var id = idstr.split("/");
    var blog = id[0];
    var year = id[1];
    var month = id[2];
    var entry = id[3];
    if(jsonp) {
        // Cookie 取得
        myUid = coco_getid();
        myUid2 = cookie_get("blogCntUid");
        if(myUid=="") {
            myUid = myUid2;
        }
//        {
//            var url = cgiurl + "?blog="+blog+"&year="+year+"&month="+month+"&entry="+entry+"&score="+score+"&callback=onClapped&id="+idstr+"&uid=get_uid";
//            var sc = document.createElement("script");
//            sc.setAttribute("type","text/javascript");
//            sc.setAttribute("src", url );
//            document.getElementsByTagName("body").item(0).appendChild(sc);
//        }

        // 送信
        {
            var ref;
            if(clapRef!="") {
              ref = clapRef;
            } else {
              ref = parent.document.referrer;
            }
            if(ref==undefined) {ref="";}
            ref = encodeURIComponent(ref);
            var url = cgiurl + "?blog="+blog+"&year="+year+"&month="+month+"&entry="+entry+"&score="+score+"&callback=onClapped&id="+idstr+"&uid="+myUid+"&uid2="+myUid2+"&refs="+ref+"&url="+blogurl;
//alert("uid: " + myUid + ", uid2: " + myUid2);
            var sc = document.createElement("script");
            sc.setAttribute("type","text/javascript");
            sc.setAttribute("src", url );
            document.getElementsByTagName("body").item(0).appendChild(sc);
        }
    } else {
        // ajax : もはや、サポートしない

alert("bad use : ajax (webClap)");

        var args="blog="+blog +"&year="+year +"&month="+month +"&entry="+entry +"&score="+score;
        var req = createHttpRequest();
        req.onreadystatechange = function() {
            //readyState値は4で受信完了
            if (req.readyState==4) {
                // ボタンに書き戻し
                var str = req.responseText;
                if(str.match(/[^0-9]/)) {
                  alert(str);
                } else {
                  var str = "";
                  if(obj.value == undefined) {
                      str = obj.innerHTML;
                  } else {
                      str = obj.value;
                  }
                  str = str.replace(/[ ]*\([^)]*\)$/,"").replace(/^[0-9]+$/,"");
                  if(str == "") {
                     str += req.responseText;
                  } else {
                     str += " ( " + req.responseText + " )";
                  }
                  if(obj.value == undefined) {
                      obj.innerHTML = str;
                  } else {
                      obj.value = str;
                  }
                }
            }
        }
        //open メソッド
        var async=true;
        req.open("post", cgiurl, async);
        //send メソッド
        req.send(encodeURI(args));
    }
}

// JSONP callback
function onClapped(dt)
{
    if(dt.uid == "get_uid") {
//        myUid = cookie_get("blogCntUid");
        myUid = coco_getid();
        myUid2 = cookie_get("blogCntUid");
        if(myUid=="") {
            myUid = myUid2;
        }
    } else {
        var obj = document.getElementById(dt.id);
        var str = "";

        // cookie
        if(dt.uid != undefined && dt.uid != "") {
            cookie_save("blogCntUid", dt.uid);
        }
        if(dt.uid2 != undefined && dt.uid2 != "") {
            cookie_save("blogCntUid2", dt.uid2);
        }

        // input
        if(obj.value != undefined) {
            str = obj.value;
//str += "[val]";
        }
        else if(obj.innerHTML != undefined) {
            str = obj.innerHTML;
//str += "[htm]";
        }

        // setup
        str = str.replace(/[ ]*\([^)]*\)$/,"").replace(/^[0-9]+$/,"");
        if(str == "") {
            str += dt.cnt;
        } else {
            str += " ( " + dt.cnt + " )";
        }

        // output
        if(obj.value != undefined) {
            obj.value = str;
        }
        else if(obj.innerHTML != undefined) {
            obj.innerHTML = str;
        }
    }
    // for debug
    if(dt.msg!=undefined && dt.msg!="") {
        var msg = decodeURIComponent(dt.msg);
//        alert(msg);
    }
}

//XMLHttpRequestオブジェクト生成
function createHttpRequest()
{
	//Win ie用
	if(window.ActiveXObject)
	{
		try 
		{
		  //MSXML2以降用
		  return new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e) 
		{
		  try 
		  {
		    //旧MSXML用
		    return new ActiveXObject("Microsoft.XMLHTTP");
		  } 
		  catch (e2) 
		  {
		      return null;
		  }
		}
	} 
	else if(window.XMLHttpRequest)
	{
		//Win ie以外のXMLHttpRequestオブジェクト実装ブラウザ用
		return new XMLHttpRequest();
	} 
	else 
	{
		return null;
	}
}

function cookie_get(name)
{
    var value = "";
    var theCookie = document.cookie+";";
    var st = theCookie.indexOf(name+"=");
    var ed;
    if(st >= 0) {
        ed = theCookie.indexOf(";", st);
        value = unescape(theCookie.substring(st+name.length+1,ed));
    }

//    if(value == "201012241721470180") {
//        alert(theCookie);
//    }


    return value;
}

function cookie_save(name, value)
{
    var expire_time = 24*365;   // 1年
    setDay = new Date();
    setDay.setTime(setDay.getTime()+(expire_time*1000*60*60));
    // path=/ として、ドメイン全体で利用できるようにする
    document.cookie = name + "=" + escape(value) + ";path=/" + ";expires=" + setDay.toGMTString(); // + ";domain=" + domain;
}

