var isIE = (document.all ? true : false); // Is IE browser?
function getIEVersionNumber() {
    var ua = navigator.userAgent;
    var MSIEOffset = ua.indexOf("MSIE ");
    
    if (MSIEOffset == -1) {
        return 0;
    } else {
        return parseFloat(ua.substring(MSIEOffset + 5, ua.indexOf(";", MSIEOffset)));
    }
}
function isUrl(s) {
	var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
	return regexp.test(s);
}

function isEmail(s) {
	var regexp = /^[_+a-z0-9-]+(\.[_+a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]{1,})*\.([a-z]{2,}){1}$/
	return regexp.test(s);
}

function isAlphaNum(s) {
	var regexp = /^([0-9a-z])+$/
	return regexp.test(s);
}

function isNull(val) {
	if(!val)
		return 0;
	else
		return val;
}

function modal() {
	//System Variables
	this.element;
	this.layover;
	this.form;
	this.req;
	//Function declarations
	this.panel = showPanel;
	this.close = closePanel;
	///////////////////////////
	this.popup = 0;
	
	this.menu = 0;
	this.New = 1;
	this.Edit = 2;
	this.Delete = 3;
	this.Join = 4;
	this.Login = 5;
	this.Pref = 6;
	
	function showPanel(action) 
	{
		var body=document.body;
		//window.scrollTo(0, 0)
		// Set popup attributes.
		if(!this.layover) {
			this.layover=document.createElement('div');
			this.layover.id="popup";
			this.layover.className="popup";
			this.layover.style.left = "0px";
			this.layover.style.top = "0px";
			this.layover.style.width = ( body.scrollWidth > body.offsetWidth ? body.scrollWidth : body.offsetWidth) + "px";
			this.layover.style.height = ( body.scrollHeight > body.offsetHeight ? body.scrollHeight : body.offsetHeight) + "px";
			if(this.layover.style.display!='block') body.insertBefore(this.layover,document.getElementById('wrapper'));
			this.layover.style.display='block';
		}
		// Get form that is used to read new bookmark details.
		switch(action) {
			case this.Join:
				var theForm = document.getElementById("join");
			break;
			case this.Login:
				var theForm = document.getElementById("login");
			break;
			case this.Pref:
				var theForm = document.getElementById("prefs");
			break;
		}
		if(theForm) {
			this.form = theForm;
			this.form.style.zIndex=3;
			this.form.style.display = 'block';
			var isIE7Min = getIEVersionNumber() < 8; //(isIE&&isIE7Min)
			this.form.style.left = body.offsetLeft + ((body.offsetWidth-this.form.offsetWidth) / 2) + "px"; 
		    //this.form.style.position = (navigator.userAgent.indexOf('MSIE 6') > -1) ? 'absolute' : 'fixed';
		}
		return false;
	}
	
	function closePanel(action) {
		switch(action) {
			default:
				this.layover.style.display="none";
				this.form.style.display="none";
				if(this.layover) this.layover=null;
			break;
			case this.Join:
				var id = this.form.getAttribute('element');
				this.element = document.getElementById(id);
				var name = document.getElementById('jo_name');
				var email = document.getElementById('jo_email');
				var pass = document.getElementById('jo_pass');
				var repass = document.getElementById('jo_repass');
				if(name.value=="" || name.value.length<4 || name.value.length>20 || !isAlphaNum(name.value) )
				{
					name.focus();
					alert("Desired user name is empty or invalid.\nPlease enter a user name.");
					return false;
				}
				if(email.value=="" || !isEmail(email.value))//
				{
					email.focus();
					alert("E-Mail address is empty or invalid.\nPlease enter a valid e-mail address.");
					return false;
				}
				if(pass.value=="" || pass.value.length<4 || !isAlphaNum(pass.value))//
				{
					pass.focus();
					alert("Password is empty or short.\nPlease enter a valid password.");
					return false;
				}
				if(repass.value=="" || repass.value!=pass.value)
				{
					repass.focus();
					alert("Passwords not matching.\nPlease re-enter password.");
					return false;
				}
			break;
			case this.Login:
				var id = this.form.getAttribute('element');
				this.element = document.getElementById(id);
				var name = document.getElementById('lo_name');
				var pass = document.getElementById('lo_pass');
				if(name.value=="" || name.value.length<4 || name.value.length>20 || !isAlphaNum(name.value) )//
				{
					name.focus();
					alert("User name is empty or invalid. Please enter a valid user name.");
					return false;
				}
				if(pass.value=="" || pass.value.length<4 || !isAlphaNum(pass.value))//
				{
					pass.focus();
					alert("Password is empty or short. Please enter a valid password.");
					return false;
				}
			break;
			case this.Pref:
				document.getElementById('savepref').style.backgroundImage = "none";
				document.getElementById('savepref').value = "Saving...";
				document.getElementById('savepref').disabled = true;
			break;
		}
	}
}

var modal = new modal();
