/*
	General form handling for ICenter WebDev Panel
	Copyright (c) 2005 Patryk Zawadzki <patrys at icenter pl>
*/

var formRequired = new Array();

function handleFormFieldCheck(tested, format)
{
	//alert(format);
	switch (format)
	{
	case 'any':
		return (tested != '');
	case 'date':
		return /[1-2][0-9]{3}\-[0-1][0-9]\-[0-3][0-9]{1}/.test(tested);
	case 'email':
		return /^[_.a-zA-Z0-9-]+@[.a-zA-Z0-9-]+\.[a-zA-Z]+$/.test(tested);
	case 'integer':
		return /[0-9]+/.test(tested);
	case 'pass':
		return /.{6,}/.test(tested);
	}
	return true;
}

function handleFieldChanged(e)
{
	var event = e ? e : window.event;
	var target = event.target ? event.target : event.srcElement;

	target.className = target.className.replace(' inputError', '');
}


function handleForm(formId)
{
	
	var form = document.getElementById(formId);
	var missing;
	var errorAlert;
	var password;
	
	var controls = form.getElementsByTagName("INPUT");
	for (var i = 0; i < controls.length; i++)
	{
		var control = controls[i];
		var req = formRequired[formId][control.name];
		if (req)
		{
			control.className = control.className.replace(' inputError', '');
			switch (control.type)
			{
			case 'text':
				if (!handleFormFieldCheck(control.value, req))
				{
					if (!missing)
						missing = control;
					control.className += ' inputError';
					addEvent(control, "keyup", handleFieldChanged);
				}
				break;
			case 'password':
				if (!handleFormFieldCheck(control.value, req))
				{
					if (!missing)
					{
						missing = control;
						errorAlert = 'For security reasons we require at least 6 characters long password';
					}
					control.className += ' inputError';
					addEvent(control, "keyup", handleFieldChanged);
				}

				if (control.name == 'password' && !missing)
				{
					password = control.value;
				}
				if (control.name == 'password_confirm' && !missing && control.value != password)
				{
					//alert('password: '+password);
					missing = control;
					control.className += ' inputError';
					addEvent(control, "keyup", handleFieldChanged);
					errorAlert = 'Password do not match';						
				}

				break;
			case 'checkbox':
				if (!control.checked)
				{
					if (!missing)
					{
						missing = control;
						errorAlert = 'To proceed, the Terms and Conditions need to be accepted';
					}
				}
				break;
			}
		}
	}

	controls = form.getElementsByTagName("SELECT");
	for (var i = 0; i < controls.length; i++)
	{
		var control = controls[i];
		var req = formRequired[formId][control.name];
		if (req)
		{
			control.className = control.className.replace(' inputError', '');
			if (!control.value)
			{
				if (!missing)
					missing = control;
				control.className += ' inputError';
				addEvent(control, "focus", handleFieldChanged);
			}
		}
	}

	controls = form.getElementsByTagName("TEXTAREA");
	for (var i = 0; i < controls.length; i++)
	{
		var control = controls[i];
		var req = formRequired[formId][control.name];
		if (req)
		{
			control.className = control.className.replace(' inputError', '');
			if (!handleFormFieldCheck(control.value, req))
			{
				if (!missing)
					missing = control;
				control.className += ' inputError';
				addEvent(control, "keyup", handleFieldChanged);
			}
		}
	}

	if (missing)
	{
		missing.focus();
		if(!errorAlert)
			alert('You have to fill all the required fields.');
		else
			alert(errorAlert);
		return false;
	}

	var elems = form.getElementsByTagName("DIV");
	for (var i = 0; i < elems.length; i++)
	{
		var elem = elems[i];
		if (elem.className == "progressBar")
		{
			elem.className = "progressBarOn";
		}
	}

	var submitbutton = document.getElementById("submit");
	if(submitbutton)
	{
		submitbutton.disabled=true;
		submitbutton.style.color="#A9A9A9";
		submitbutton.value="Sending...";
	}
	
	return true;
}

function formSelectAll(form, name)
{
	var frm = document.getElementById(form);
	var elems = frm.getElementsByTagName("INPUT");
	for (var i = 0; i < elems.length; i++)
	{
		var elem = elems[i];
		if (elem.type == "checkbox")
		if (elem.name == name)
		{
			elem.checked = true;
		}
	}
	return false;
}

function formDeselectAll(form, name)
{
	var frm = document.getElementById(form);
	var elems = frm.getElementsByTagName("INPUT");
	for (var i = 0; i < elems.length; i++)
	{
		var elem = elems[i];
		if (elem.type == "checkbox")
		if (elem.name == name)
		{
			elem.checked = false;
		}
	}
	return false;
}

function removeRepetitive(elem)
{
	new Effect.Fade(elem,
		{ duration: 1.0 },
		{ afterFinish: function()
			{
				element.innerHTML = "";
				element.parentNode.removeChild(element);
			}
		});
	return false;
}






function doublesubmitstop()
{
	document.getElementById('continue').className='please_wait';
	document.getElementById('continue').disabled=true;
	var do_field = document.createElement("input");
	do_field.name="do";
	do_field.type="hidden";
	do_field.value="c";
	var parentform = document.getElementById('registerForm');
	parentform.appendChild(do_field);
	return true;
}






//####### AJAX ########\\
function createRequestObject() {
    var ro;
    var browser = navigator.appName;
    if(browser == "Microsoft Internet Explorer"){
        ro = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
        ro = new XMLHttpRequest();
    }
    return ro;
}

var http = createRequestObject();



function passwordReminder(location)
{
	http.open('get', location);
	http.onreadystatechange = handleResponse;
	http.send(null);
}

function handleResponse() {

	startAnim = true;
	counter = 0;
	waitingmessage = 'sending your password ';

	dotsAnimation = function()
	{
		if(this.startAnim == true)
		{
			if(this.counter >= 3)
			{
				document.getElementById('passreminder').innerHTML = waitingmessage;
				this.counter = 0;
			}
			else
			{
				document.getElementById('passreminder').innerHTML += ".";
				this.counter++;
			}
			setTimeout("dotsAnimation()", 200);
		}
	}

	if(http.readyState == 1)
	{
		document.getElementById('passreminder').innerHTML = waitingmessage;
		dotsAnimation();
	}
	
	if(http.readyState == 4)
	{
		startAnim = false;
		var response = http.responseText;
		document.getElementById('passreminder').innerHTML = response;
		/*
		if(response.indexOf('send') != -1)
		{
			document.getElementById('passreminder').innerHTML = donemessage;
		}
		else
		{
			document.getElementById('passreminder').innerHTML = failmessage;
		}
		*/
	}


}
