// input、textareaが空のとき文字列を表示させます
// 2009.12.14
// keisuke aizawa@kan
// Version 1.0

// 名前空間
placeholder = {};

// 実行させます
placeholder.run = function(ID,ATTRIBUTE,EMPTYCLASS){

	// 第二引数あればplaceholder.attributeに、第三引数あればplaceholder.emptyClassに代入
	var emptyString = ATTRIBUTE  || "placeholderjs";
	var emptyClass  = EMPTYCLASS || "empty";

	var ini = function(){
	
		//要素を取得
		var form      = document.getElementById(ID);
		var inputs    = form.getElementsByTagName("input");
		var textareas = form.getElementsByTagName("textarea");

		// input type="text"とtextareaでemptyString属性があるものを取得
		var targets   = (function(){
			var array = [];
			for(var i=0;i<inputs.length;i++){
				if(inputs[i].getAttribute("type")=="text" && inputs[i].getAttribute(emptyString) ){
					array.push(inputs[i]);
				}
			}
			for(var i=0;i<textareas.length;i++){
				if(textareas[i].getAttribute(emptyString)){
					array.push(textareas[i]);
				}
			}
			return array;
		})();

		// 対象要素に対して
		for(var i=0;i<targets.length;i++){

			// onloadでvalueが空かemptyString属性の文字列と同じならemptyString属性の文字列を表示して、emptyClassを追加
			if(targets[i].value=="" || targets[i].value==targets[i].getAttribute(emptyString)){
				targets[i].value = targets[i].getAttribute(emptyString);
				targets[i].className += " " + emptyClass;
			}

			// focusとblurのイベントハンドラを追加
			if(targets[i].addEventListener){
				targets[i].addEventListener("focus", function(){focusFunc(this);}, false);
				targets[i].addEventListener("blur", function(){blurFunc(this);}, false);
			}else if(targets[i].attachEvent){
				targets[i].attachEvent("onfocus", function(){focusFunc(event.srcElement);});
				targets[i].attachEvent("onblur", function(){blurFunc(event.srcElement);});
			}
		}

		// フォーカスしたらvalueを空にしてemptyClassを削除する関数
		var focusFunc = function(ELEMENT){
			if(ELEMENT.className.indexOf(emptyClass)>=0){
				ELEMENT.value = "";
				ELEMENT.className = ELEMENT.className.replace(emptyClass,"");
			}
		}

		// フォーカスはずしたてvalueが空ならemptyString属性の文字列を表示してemptyClassを追加する関数
		var blurFunc = function(ELEMENT){
			if(ELEMENT.value == ""){
				ELEMENT.value = ELEMENT.getAttribute(emptyString);
				ELEMENT.className += " " + emptyClass;
			}
		}

		// formにsubmit時のemptyClassが付いた要素のvalueを空にして実行する関数をonsubmit要素で加える
		form.setAttribute("onsubmit","return placeholder.submit(this,'" + emptyClass + "')");

	}

	// オンロードで実行
	if(window.addEventListener){
		window.addEventListener("load", function(){ini();}, false);
	}else if(window.attachEvent){
		window.attachEvent("onload", function(){ini();});
	}

}



// submit時にクラスemptyが付いてるinput、textarea要素のvalueを空にする関数
placeholder.submit = function(ELEMENT,EMPTYCLASS){
	var inputs    = ELEMENT.getElementsByTagName("input");
	var textareas = ELEMENT.getElementsByTagName("textarea");
	for(var i=0;i<inputs.length;i++){
		if(inputs[i].className.indexOf(EMPTYCLASS)>=0){
			inputs[i].value = "";
		}
	}
	for(var i=0;i<textareas.length;i++){
		if(textareas[i].className.indexOf(EMPTYCLASS)>=0){
			textareas[i].value = "";
		}
	}
	return true;
}
