(function () {

addEventListener(window, "load", init);

function init() {
	addEventListener(document.getElementById("encrypt-btn"), "click", encrypt_password);
}

function encrypt_password(evt) {
	preventDefault(evt);
	document.getElementById("encrypt-btn").disabled = true;
	var pass = document.getElementById("pass").value;
	if( ! pass ) {
		alert("パスワードを入力してください。");
		document.getElementById("encrypt-btn").disabled = false;
		return;
	}
	var url = "http://www.futomi.com/cgi-bin/htaccess/encrypt.cgi?pass=";
	url += encodeURIComponent(pass);
	url += "&t=";
	url += new Date();
	var oHttp = httpGetRequest(url, show_encrypted_password, null);
	if( ! oHttp) {
		alert("error!");
	}
}

function show_encrypted_password(oHttp) {
	var span = document.getElementById("encrypted-pass");
	var text = "";
	if(oHttp.status == 200) {
		/* 受信したデータ */
		text = oHttp.responseText;
		/* データを表示 */
		span.innerHTML = text;
		document.getElementById("encrypt-btn").disabled = false;
	} else {
		var msg = "エラー";
		msg += "[" + oHttp.status + ":" + oHttp.statusText + "]";
		span.innerHTML = msg;
	}
}

function addEventListener(elm, type, func, useCapture) {
  if(! elm) { return false; }
  if(! useCapture) {
    useCapture = false;
  }
  if(elm.addEventListener) {
    elm.addEventListener(type, func, false);
  } else if(elm.attachEvent) {
    elm.attachEvent('on'+type, func);
  } else {
    return false;
  }
  return true;
}

function preventDefault(evt) {
  /* W3C DOM準拠ブラウザー */
  if(evt && evt.preventDefault) {
    evt.preventDefault();
    /* Safari 1.3対策 */
    evt.currentTarget['on'+evt.type] = function() {return false;};
  /* Internet Explorer */
  } else if(window.event) {
    window.event.returnValue = false;
  }
}

function httpGetRequest(url, callback, headers) {
  /* XMLHttpRequestオブジェクトを生成 */
  var oHttp = null;
  if(window.XMLHttpRequest) {
    oHttp = new XMLHttpRequest();
  } else if(window.ActiveXObject) {
    try {
      oHttp = new window.ActiveXObject("Msxml2.XMLHTTP.3.0");
    } catch(e) {
      return null;
    }
  }
  if( oHttp != null ) {
    /* HTTP GETリクエスト */
    oHttp.open('GET', url, true);
    /* リクエストヘッダーをセット */
    if( typeof(headers) == 'object' ) {
      for(var name in headers) {
        oHttp.setRequestHeader(name, headers[name]);
      }
    }
    /* 状態変化イベントのコールバック関数を定義 */
    oHttp.onreadystatechange = function() {
      if (oHttp.readyState == 4) {
        callback(oHttp);
      }
    };
    /* HTTP GETリクエスト送出 */
    oHttp.send(null);
  }
  /* oHttpを返す */
  return oHttp;
}

})();
