var LH = {};

LH.CommentForm = {
	
	fields: new Array(),
	
	validate: function() {
		var isValid = true;
		for(var i = 0; i < this.fields.length; i++) {
			if(!this.fields[i]['validator'](this.fields[i].element.value)) {
				this.fields[i].label.style.color = '#C00';
				this.fields[i].element.style.border = '1px solid #C00';
				this.fields[i].element.style.backgroundColor = '#FAE5E5';
				isValid = false;
			} else {
				this.fields[i].label.style.color = 'rgb(64,64,64)';
				this.fields[i].element.style.border = '1px solid rgb(51,51,51)';
				this.fields[i].element.style.backgroundColor = '#FFF';
			}
		}
		return isValid;
	},
	
	addField: function(field, type) {
		var l = LH.CommentForm.getLabelForElement(document.getElementById(field));
		this.fields.push({label: l, element: document.getElementById(field), validator: LH.CommentForm[type + 'Validator']});
	},
	
	emailValidator: function(value) {
		var expr = /^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,6})$/i;
		return expr.test(value);
	},
	
	notemptyValidator: function(value) {
		var expr = /\S/
		return expr.test(value);
	},
	
	getLabelForElement: function(element) {
		var l = document.getElementsByTagName('label');
		for(var i = 0; i < l.length; i++) {
			if(l[i].getAttributeNode('for').value == element.id) {
				return l[i];
			}
		}
		return null;
	}
}

LH.SubMenu = {
	init: function() {
		if((document.getElementById) && (!((navigator.userAgent.indexOf('Mac') > -1) && (navigator.userAgent.indexOf('MSIE') > -1)))) {
			var menu = LH.SubMenu.getMenuElement();
			var subMenu = LH.SubMenu.getSubMenuElement();
			var act = LH.SubMenu.getActiveMenuElement();
			if((menu != null) && (subMenu != null) && (act != null)) {
				subMenu.style.position = 'relative';
				subMenu.style.left = ((act.offsetLeft) - menu.offsetLeft) + 'px';
			}
		}
	},
	
	getActiveMenuElement: function() {
		var items = LH.SubMenu.getMenuItems();
		for(var i = 0; i < items.length; i++) {
			var a = items[i].getElementsByTagName('a')[0];
			if((a != null) && (a.className) && (a.className == 'active')) {
				return items[i];
			}
		}
		return null;
	},
	
	getMenuElement: function() {
		var element = document.getElementById('main-navi');
		return (element != null) ? element: null;
	},
	
	getMenuItems: function() {
		var menu = LH.SubMenu.getMenuElement();
		if(menu != null) {
			return menu.getElementsByTagName('div');
		} else {
			return new Array();
		}
	},
	
	getSubMenuElement: function() {
		var element = document.getElementById('sub-navi');
		return (element != null) ? element: null;
	},
	
	getSubMenuItems: function() {
		var element = LH.SubMenu.getMenuElement();
		if(element != null) {
			return element.getElementsByTagName('div');
		} else {
			return new Array();
		}
	}
}

if(!Array.prototype.push) {
	Array.prototype.push = function() {
		for(i=0;i<arguments.length;i++){
			this[this.length] = arguments[i];
		}
		return this.length;
	}
}
if(!Array.prototype.inArray) {
	Array.prototype.inArray = function (value) {
		for (var i = 0; i < this.length; i++) {
			if (this[i] === value) {
				return true;
			}
		}
		return false;
	}
}

getCurrentStyle = function(element, style) {
	if (document.defaultView && document.defaultView.getComputedStyle) {
		var css = document.defaultView.getComputedStyle(element, null);
		return css ? css.getPropertyValue(style) : null;
	} else if (element.currentStyle) {
		value = element.currentStyle[style];
	}
}

var camelize = function() {
    var oStringList = this.split('-');
    if (oStringList.length == 1) return oStringList[0];

    var camelizedString = this.indexOf('-') == 0
      ? oStringList[0].charAt(0).toUpperCase() + oStringList[0].substring(1)
      : oStringList[0];

    for (var i = 1, len = oStringList.length; i < len; i++) {
      var s = oStringList[i];
      camelizedString += s.charAt(0).toUpperCase() + s.substring(1);
    }

    return camelizedString;
  }