/*
* 
* 検索テキストフィールドに説明テキストを入れるスクリプト
*
* Copyright: (c) 2009 dmp.co.jp
**************************************/
var searchTextInputDefault = function( targetClass, activeClass, disactiveClass, preFilltText, sync ){
	var textSync = false;
	var resetClasses = new Array();
	if(sync) textSync = true;
	//
	var targetElements = document.getElementsByClassName(targetClass);
	for(var i = 0 ; i < targetElements.length ; i++ ){
		Event.observe(targetElements[i],"focus",clearSearchText(targetElements[i]));
		Event.observe(targetElements[i],"blur",checkSearchText(targetElements[i]));
		Element.removeClassName(targetElements[i], activeClass);
		Element.removeClassName(targetElements[i], disactiveClass);
		if(targetElements[i].value == '' || targetElements[i].value == preFilltText){
			Element.addClassName(targetElements[i], disactiveClass);
			targetElements[i].value = preFilltText;
			targetElements[i].blankCheck = new Object();
			targetElements[i].blankCheck.value = true;
		}else{
			Element.addClassName(targetElements[i], activeClass);
			targetElements[i].value = targetElements[0].value;
			targetElements[i].blankCheck = new Object();
			targetElements[i].blankCheck.value = false;
			
		}
	}
	
	function clearSearchText(targetElement){
		return function(){
			resetOtherClasses(targetElement);
			if (textSync) {
				//テキストフィールド同期
				for (var i = 0; i < targetElements.length; i++) {
					if (targetElement.blankCheck.value) 
						targetElements[i].value = '';
					Element.removeClassName(targetElements[i], activeClass);
					Element.removeClassName(targetElements[i], disactiveClass);
					Element.addClassName(targetElements[i], activeClass);
				}
			}
			else {
				if (targetElement.blankCheck.value) targetElement.value = '';
				Element.removeClassName(targetElement, activeClass);
				Element.removeClassName(targetElement, disactiveClass);
				Element.addClassName(targetElement, activeClass);
			}
			
			//
		}
	}
	function checkSearchText(targetElement){
		return function(){
			if (targetElement.value == '') {
				if (!textSync) {
					Element.removeClassName(targetElement, activeClass);
					Element.removeClassName(targetElement, disactiveClass);
					Element.addClassName(targetElement, disactiveClass);
					targetElement.value = preFilltText;
					if (!targetElement.blankCheck) {
						targetElement.blankCheck = new Object();
						targetElement.blankCheck.value = true;
					}
					else {
						targetElement.blankCheck.value = true;
					}
				}else{
					//テキストフィールド同期
					for (var i = 0; i < targetElements.length; i++) {
						Element.removeClassName(targetElements[i], activeClass);
						Element.removeClassName(targetElements[i], disactiveClass);
						Element.addClassName(targetElements[i], disactiveClass);
						targetElements[i].value = preFilltText;
						if (!targetElements[i].blankCheck) {
							targetElements[i].blankCheck = new Object();
							targetElements[i].blankCheck.value = true;
						}
						else {
							targetElements[i].blankCheck.value = true;
						}
					}
				}
			}
			else {
				targetElement.blankCheck.value = false;
				//テキストフィールド同期
				if (textSync) {
					var field_text = targetElement.value;
					for (var i = 0; i < targetElements.length; i++) {
						targetElements[i].value = field_text;
						if (!targetElements[i].blankCheck) targetElements[i].blankCheck = new Object();
						targetElements[i].blankCheck.value = false;
					}
				}
			}
		}
	}
	function resetOtherClasses( targetElement ){
		for(var i = 0;i < resetClasses.length;i++){
			Element.removeClassName(targetElement, resetClasses[i]);
		}
	}
	var functions = {
		addResetClass:function( targetClass ){
			resetClasses.push(targetClass);
		}
	};
	return functions;
}
