reise = {};
reise.selectBox = {};
reise.cssErrorClass = "errorMessage";

reise.unvalidate = function(/*id or field*/field) {
	if(typeof field == "String")
		var id = field;
	else
		var id = field.id;
	
	if(field.type == "radio") {
		id = field.id.slice(0,field.id.length-2);
	}
	var element = dojo.byId(id+"_message");
	if(element) {
		element.innerHTML = "";
		element.removeAttribute("class");
	}

};

reise.checkPlaceHolders = function() {
	var placeholders = dojo.query(".placeholder");
	for (var int = 0; int < placeholders.length; int++) {
		var placeh = placeholders[int];
		var input = placeh.nextSibling;
		var both = {input:input, placeholder: placeh};
		dojo.connect(placeh, "onclick", reise.onPlaceholderClick);
		dojo.connect(input, "onfocus", reise.onPlaceholderInputFocus);
		dojo.connect(input, "onblur", reise.onPlaceholderInputBlur);
		dojo.hitch(input, reise.onPlaceholderInputBlur)();
	}
};


reise.checkInfoMessages = function() {
	var messages = dojo.query(".infoMessage");
	for (var int = 0; int < messages.length; int++) {
		var info = messages[int];
		iWidth = info.offsetWidth;
		var text = info.innerHTML;
		var inner = dojo.create("div");
		inner.className = "text";
		inner.innerHTML = text;
		inner.style.width = iWidth - 60 +"px";
		info.innerHTML = "";
		var btn = dojo.create("div");
		btn.className = "button";
		info.appendChild(inner);
		info.appendChild(btn);
		dojo.connect(btn,"onclick", info, function(){this.parentNode.removeChild(this);});
	}
};

reise.onPlaceholderClick = function() {
	var nodes = reise.getPlaceHolderAndInput(this);
	nodes.input.focus();
};

reise.onPlaceholderInputFocus = function() {
	var nodes = reise.getPlaceHolderAndInput(this);
	nodes.placeholder.style.display = "none";
};

reise.onPlaceholderInputBlur = function() {
	var nodes = reise.getPlaceHolderAndInput(this);
	nodes.input.value = reise.utils.trim(nodes.input.value);
	if(nodes.input.value == "")
		nodes.placeholder.style.display = "inline";
};

reise.getPlaceHolderAndInput = function(element) {
	var result = {};
	if(element.nodeName == "INPUT") {
		var placeH = element.previousSibling;
		if(placeH.nodeName != "SPAN" || placeH.className != "placeholder") 
			throw "unknown placeholder element";
		result.input = element;
		result.placeholder = placeH;
	}
	else if(element.nodeName == "SPAN" && element.className == "placeholder") {
		var input = element.nextSibling;
		if(input.nodeName != "INPUT")
			throw "unknown placeholder input element";
		result.input = input;
		result.placeholder = element;
	}
	else throw "unknown element";
	return result;
};

reise.selectBox.clicked = function(id) {
	if (reise.selectBox.activeMenu) {
		if(reise.selectBox.activeMenu.style.display == "none") {
			reise.selectBox.open(id);
		} else {
			reise.selectBox.close();
		}
	} else {
		reise.selectBox.open(id);
	}
};
reise.selectBox.open = function(id) {
	console.log("open");
	reise.selectBox.activeMenu = dojo.byId(id);
	reise.selectBox.activeMenu.style.display = "block";
	window.setTimeout(function() { // avoid initial click to bubble through
		reise.selectBox.activeMenuClickEvent = dojo.connect(dojo.body(), "onclick", 
				function(event) {
			console.log(id);
			reise.selectBox.close();

		});
	},0);

};

reise.selectBox.close = function() {
	console.log("close");
	if (reise.selectBox.activeMenu) {
		reise.selectBox.activeMenu.style.display = "none";
		dojo.disconnect(reise.selectBox.activeMenuClickEvent);
		delete reise.selectBox.activeMenu;
	}
	
};
reise.costFieldClick = function(input) {
	if(input.value=="0,00")
		input.value="";
	input.onblur = function() { // Caution this will overwrite other onblur
		if(input.value=="")
			input.value="0,00";
	};
};

reise.setFocusOnStoredActiveElement = function() {
	if(reise.activeElementFocusListeners) {
		for (var i in reise.activeElementFocusListeners) {
			dojo.disconnect(reise.activeElementFocusListeners[i]);
		}
	}
	reise.activeElementFocusListeners = [];
	var els = dojo.query("input");
	var texts = dojo.query("textarea");
	for ( var int = 0; int < texts.length; int++) {
		els.push(texts[int]);
	}
	var selects = dojo.query("select");
	for ( var int = 0; int < selects.length; int++) {
		els.push(selects[int]);
	}
	for (var int = 0; int < els.length; int++) {
		reise.activeElementFocusListeners.push(dojo.connect(els[int], "onfocus", els[int], function() {reise.activeElement = dojo.byId(this.id);}));
		reise.activeElementFocusListeners.push(dojo.connect(els[int], "onblur", els[int], function() {
			if(reise.activeElement && reise.activeElement.id && reise.activeElement.id == this.id)
			delete reise.activeElement;
		}));
		
	}
	if(reise.activeElement && reise.activeElement.id) {
		window.setTimeout(function() {
			if(reise.activeElement.id != "reiseForm:journeyStartDateInput" && reise.activeElement.id != "reiseForm:journeyEndDateInput") {
				try {
					dojo.byId(reise.activeElement.id).focus();
					//dojo.byId(reise.activeElement.id).select();
				} catch(e){}
			}
		}, 5);
	}
};
