var menu=function(){
	var t=15,z=50,s=6,a;
	function dd(n){this.n=n; this.h=[]; this.c=[]}
	dd.prototype.init=function(p,c){
		a=c; var w=document.getElementById(p), s=w.getElementsByTagName('ul'), l=s.length, i=0;
		for(i;i<l;i++){
			var h=s[i].parentNode; this.h[i]=h; this.c[i]=s[i];
			h.onmouseover=new Function(this.n+'.st('+i+',true)');
			h.onmouseout=new Function(this.n+'.st('+i+')');
		}
	}
	dd.prototype.st=function(x,f){
		var c=this.c[x], h=this.h[x], p=h.getElementsByTagName('a')[0];
		clearInterval(c.t); c.style.overflow='hidden';
		if(f){
			p.className+=' '+a;
			if(!c.mh){c.style.display='block'; c.style.height=''; c.mh=c.offsetHeight; c.style.height=0}
			if(c.mh==c.offsetHeight){c.style.overflow='visible'}
			else{c.style.zIndex=z; z++; c.t=setInterval(function(){sl(c,1)},t)}
		}else{p.className=p.className.replace(a,''); c.t=setInterval(function(){sl(c,-1)},t)}
	}
	function sl(c,f){
		var h=c.offsetHeight;
		if((h<=0&&f!=1)||(h>=c.mh&&f==1)){
			if(f==1){c.style.filter=''; c.style.opacity=1; c.style.overflow='visible'}
			clearInterval(c.t); return
		}
		var d=(f==1)?Math.ceil((c.mh-h)/s):Math.ceil(h/s), o=h/c.mh;
		c.style.opacity=o; c.style.filter='alpha(opacity='+(o*100)+')';
		c.style.height=h+(d*f)+'px'
	}
	return{dd:dd}
}();

function doConfirmDelete(msg, thisLink) {
  var is_confirmed = confirm(msg);
  if (is_confirmed) {
		if(thisLink) {
			window.open(thisLink,'popup','width=1,height=1,top=1,left=1');
		}
		return true;
  } else {
		return false;
	}
}

function getfileextension(fileName) {
	if(!fileName || fileName.length == 0) return "";
	var dot = fileName.lastIndexOf(".");
	if(dot == -1) return "";
  var extension = fileName.substr(dot + 1,fileName.length);
	extension = extension.toLowerCase();
	return extension;
} 

function validate_form(formField, validationType, thisError, fieldRequired) {
	if(formField.name) {
		var errorFieldName = formField.name + "_error";
		var errorField1 = document.getElementById(errorFieldName);
	} else {
		var errorFieldName = formField + "_error";
		var errorField1 = document.getElementById(errorFieldName);
	}
	switch(validationType) {
		case 'file':
			errorField1.innerHTML = '';
			errorField1.style.display = 'none';
			break;
		case 'fileimage':
			errorField1.innerHTML = '';
			errorField1.style.display = 'none';
			if(fieldRequired && !formField.value) {
				errorField1.innerHTML = 'ERROR: This field is required.';
				errorField1.style.display = 'block';
			} else {
				if(formField.value) {
					var fileExtension = getfileextension(formField.value);
					if(fileExtension != 'jpg' && fileExtension != 'jpeg' && fileExtension != 'gif' && fileExtension != 'png') {
						errorField1.innerHTML = 'ERROR: Only .jpg, .gif or .png files allowed here.';
						errorField1.style.display = 'block';
					}
				}
			}
			break;
		case 'fileflash':
			errorField1.innerHTML = '';
			errorField1.style.display = 'none';
			if(fieldRequired && !formField.value) {
				errorField1.innerHTML = 'ERROR: This field is required.';
				errorField1.style.display = 'block';
			} else {
				if(formField.value) {
					var fileExtension = getfileextension(formField.value);
					if(fileExtension != 'swf') {
						errorField1.innerHTML = 'ERROR: Only .swf (flash) files allowed here.';
						errorField1.style.display = 'block';
					}
				}
			}
			break;
			break;
		case 'dropdown':
			if(fieldRequired && !formField.value) {
				errorField1.innerHTML = thisError;
				errorField1.style.display = 'block';
			} else {
				errorField1.innerHTML = '';
				errorField1.style.display = 'none';
			}
			break;
		case 'datedropdown':
			if(fieldRequired && (!document.getElementById(formField + '_day').value || !document.getElementById(formField + '_month').value || !document.getElementById(formField + '_year').value)) {
				errorField1.innerHTML = thisError;
				errorField1.style.display = 'block';
			} else {
				errorField1.innerHTML = '';
				errorField1.style.display = 'none';
			}
			break;
		case 'email':
			if(formField.value.length >= fieldRequired) {
				var re = new RegExp(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/);
				if(formField.value.match(re)) {
					errorField1.innerHTML = '';
					errorField1.style.display = 'none';
				} else {
					errorField1.innerHTML = thisError;
					errorField1.style.display = 'block';
				}
			} else if(fieldRequired) {
					errorField1.innerHTML = 'ERROR: This field is required.';
					errorField1.style.display = 'block';
			} else {
					errorField1.innerHTML = '';
					errorField1.style.display = 'none';
			}
			break;
		case 'username':
			if(formField.value.length >= fieldRequired) {
				var re = new RegExp(/^[\w\-]+$/);
				if(formField.value.match(re)) {
					errorField1.innerHTML = '';
					errorField1.style.display = 'none';
				} else {
					errorField1.innerHTML = thisError;
					errorField1.style.display = 'block';
				}
			} else if(fieldRequired) {
					errorField1.innerHTML = 'ERROR: Field length of ' + fieldRequired + ' or more characters required.';
					errorField1.style.display = 'block';
			} else {
					errorField1.innerHTML = '';
					errorField1.style.display = 'none';
			}
			break;
		case 'textfiltered':
			if(formField.value.length >= fieldRequired) {
				var re = new RegExp(/^[a-zA-Z0-9_\.\-\'!, ]+$/);
				if(formField.value.match(re)) {
					errorField1.innerHTML = '';
					errorField1.style.display = 'none';
				} else {
					errorField1.innerHTML = thisError;
					errorField1.style.display = 'block';
				}
			} else if(fieldRequired) {
					errorField1.innerHTML = 'ERROR: Field length of ' + fieldRequired + ' or more characters required.';
					errorField1.style.display = 'block';
			} else {
					errorField1.innerHTML = '';
					errorField1.style.display = 'none';
			}
			break;
		case 'text':
			if(formField.value.length >= fieldRequired) {
				errorField1.innerHTML = '';
				errorField1.style.display = 'none';
			} else if(fieldRequired) {
					errorField1.innerHTML = 'ERROR: Field length of ' + fieldRequired + ' or more characters required.';
					errorField1.style.display = 'block';
			} else {
					errorField1.innerHTML = '';
					errorField1.style.display = 'none';
			}
			break;
		case 'textprice':
			if(formField.value.length >= fieldRequired) {
				var re = new RegExp(/^-?\d+\.?\d{0,2}$/);
				if(formField.value.match(re)) {
					errorField1.innerHTML = '';
					errorField1.style.display = 'none';
				} else {
					errorField1.innerHTML = thisError;
					errorField1.style.display = 'block';
				}
			} else if(fieldRequired) {
					errorField1.innerHTML = 'Required Field';
					errorField1.style.display = 'block';
			} else {
					errorField1.innerHTML = '';
					errorField1.style.display = 'none';
			}
			break;
		case 'password':
			if(formField.value.length >= fieldRequired) {
				errorField1.innerHTML = '';
				errorField1.style.display = 'none';
			} else if(fieldRequired) {
					errorField1.innerHTML = 'ERROR: Field length of ' + fieldRequired + ' or more characters required.';
					errorField1.style.display = 'block';
			} else {
					errorField1.innerHTML = '';
					errorField1.style.display = 'none';
			}
			break;
		case 'passwordtest':
			if(document.getElementById(fieldRequired).value == formField.value) {
				errorField1.innerHTML = '';
				errorField1.style.display = 'none';
			} else {
					errorField1.innerHTML = 'ERROR: Passwords must match.';
					errorField1.style.display = 'block';
			}
			break;
		case 'submit':
			var errorElem = document.getElementsByTagName('div');
			var reError = new RegExp(/_error$/);
			for(var i=0;i<errorElem.length;i++) {
				if(errorElem[i].name) {
					if(errorElem[i].name.match(reError)) {
						if(errorElem[i].style.display == 'block') {
							if(errorElem[i].innerHTML) {
								alert(thisError);
								return false;
							}
						}
					}
				}
			}
			break;
	}

}

function selector_form(formField) {
	var thisName = formField.name;
	var thisElement = thisName + '_' + formField.value;
	// disable all entries
	for (i in arraySelectorGroups) {	
		var contentDiv = document.getElementById(arraySelectorGroups[i]);
		contentDiv.style.display = 'none';
		var containedDivElements = contentDiv.getElementsByTagName("div");
		for (var i = 0; i < containedDivElements.length; i++) {
			var elem = containedDivElements[i];
			elem.style.display = 'none';
		}
	}
	// now display the entries inside the selected element
	var contentDiv = document.getElementById(thisElement);
	if(contentDiv) {
		contentDiv.style.display = '';
		var containedDivElements = contentDiv.getElementsByTagName("div");
		for (var i = 0; i < containedDivElements.length; i++) {
			var elem = containedDivElements[i];
			elem.style.display = 'block';
		}
	}
}

