// ----------------------------------------------------
// くりっくかうんた (ajax + perl)
// clickCounter.js
// Ver 1.15
// 02.26.2006
//
// author: てんてす@赤いほう (http://www.akaiho.com)
// 利用、改変自由
// 転載は勘弁してクダサイ
// ----------------------------------------------------

// +++ 設定項目 +++

var maxWidth = 500;    // 棒グラフの横幅の最大値。
// クリック数が最大値以上の場合、棒グラフは最大値を超えない


var isScaled = true;  // スケーリングしないなら false
var scaleNum = 2;     // 何分の一にスケールするか(上でfalseだったら無視


var cgiFile = './clicks.cgi';             // clicks.cgiのファイル名（変えてなければそのまま）
var barGraphFile = "./bargraph1y.gif";  // 棒グラフの表示に使う画像

// +++ 項目終了 +++

// あとはコード読みたい人ダケドウゾ
// ---------------------------------------------------------------------

// -- generating a request to read a file fName

var useimg = true;

function loadTextFile(fName)
{
  httpObj = createXMLHttpRequest(displayData);

  if (httpObj)
    {
      httpObj.open("GET",fName,true);
      httpObj.send(null);
    }
}

// -- generating a request, and send it to the server
function countClick(thehref){
  httpObj = createXMLHttpRequest(displayData);
  if(httpObj){
    var query;
    query = "name="+encodeURIComponent(thehref);
//    query = "name="+encodeURIComponent(document.getElementById(theid).value);
//    var query = "name=" + document.ajaxForm.test.value;
    httpObj.open('POST', cgiFile);
    httpObj.setRequestHeader("Content-Type" , "application/x-www-form-urlencoded");
    httpObj.send(query);
    document.getElementById("resultData").innerText = "Sent\n";
  }
}


// -- asynchronously recieved from server
function displayData(){
  if ((httpObj.readyState == 4) && (httpObj.status == 200)){
//    document.getElementById("resultData").innerText = "Succeed\n" + httpObj.responseText;
    if(document.getElementById("resultData") != null){
      document.getElementById("resultData").innerText = "";
    }
    parseData(httpObj.responseText);
  } else {
    if(document.getElementById("resultData") != null){
      document.getElementById("resultData").innerText = "Loading...";
    }
  }
}


// -- parsing the chunk of data, and output the result
function parseData(receivedText){
  var width;
//  var startPos = "" + getElementPosition("origin") + "px";
//  document.getElementById(elemID).style.left = startX + "px";

  var Lines = receivedText.split("\n");
  for( var i=0; i<Lines.length; i++){
    var keys = Lines[i].split("<>");
//    alert("keys[0] = " + keys[0]);
//    alert("keys[1] = " + keys[1]);
    if(document.getElementById(keys[0]) != null){
      document.getElementById(keys[0]).innerHTML = "" + keys[1] + "clicks";
    }
    if(document.getElementById(keys[0] + "_bar") != null){
      if(isScaled){
        width = Math.round( keys[1] / scaleNum );
      }
      else { width = keys[1]; }

      if(width > maxWidth){ width = maxWidth; }

      if(useimg){
        document.getElementById(keys[0] + "_bar").style.width = "" + width + "px";
//        document.getElementById(keys[0] + "_bar").innerHTML =
//          "<img src=\"" + barGraphFile + "\" height=\"10\" width=\"" + width + "\" />";
      }
      else {
        document.getElementById(keys[0] + "_bar").style.width  = "" + width + "px";
        document.getElementById(keys[0] + "_bar").innerHTML = "&nbsp\;";
//        document.getElementById(keys[0] + "_bar").style.backgroundPosition = "0% 50%";
        document.getElementById(keys[0] + "_bar").style.backgroundColor = "#CC3333";
        
      }
    }
  }
}

function getElementPosition(elemID){
  var offsetTrail = document.getElementById(elemID);
  var offsetLeft = 0;
  var offsetTop = 0;
  while(offsetTrail){
    offsetLeft += offsetTrail.offsetLeft;
    offsetTop  += offsetTrail.offsetTop;
    offsetTrail = offsetTrail.offsetParent;
  }
  if(navigator.userAgent.indexOf("Mac") != -1 &&
     typeof document.body.leftMargin != "undefined"){
    offsetLeft += document.body.leftMargin;
    offsetTop +=  document.body.topMargin;
  }
  alert(offsetLeft);
  return offsetLeft;
}

