/* $Id: forms.js,v 1.20 2009-11-19 21:33:55 bfitrzyk Exp $ */

function checkFormLoginTop()
{
	return checkEmail("form_top_username","Please enter your email") &&
		checkInput("form_top_password", "Please enter a password");
}


function checkSendMsg()
{
	return checkInput("form_message_subject","Please enter a subject") &&
		checkInput("form_message_message", "Please enter a message");
}

function checkReqMsg()
{
	return checkSendMsg() &&
		checkReqTimes("meet_start_time", "meet_end_time", 
		"Start Time has to bo set eariler than End Time");
}

function checkReqTimes(startId,endId, msg)
{
	var startSelect = document.getElementById(startId);
	var endSelect = document.getElementById(endId);
	
	var startTime = startSelect.options[startSelect.selectedIndex].value;
	var endTime = endSelect.options[endSelect.selectedIndex].value;
		
	if(startTime >= endTime)
	{
		focusFailedInput(startId,msg);
		return false;
	}
	return true;
}

function onChangeSector(e)
{
	if(e.options[0].selected==true)
	{
		for(i=1; i<e.length; i++)
			e.options[i].selected = false;
	}
	return true;
} 

function checkMessages(formId, messageErr, messageConf)
{
	var form = document.getElementById(formId);
	if(!form)
		return false;
	var inputs = form.getElementsByTagName("input");
	for( var i = 0; i < inputs.length; i++ )
	{
		if( inputs[i].getAttribute("type").toLowerCase() == "checkbox" && inputs[i].checked )
			break;
	}
	if(i == inputs.length)
	{
		alert(messageErr);
		return false;
	}
	else
		return confirm(messageConf);
}


/* ----------------------------------------------------------------------
	DEFAULT VALIDATION FORMS
---------------------------------------------------------------------- */
function _checkInput(inputId)
{
	var input = document.getElementById(inputId);
	if(!input)
	{
		alert( "Input " + inputId + " not found!");
		return false;
	}

	if( input.value == "" )
		return false;

	return true;
}

function _checkNumberInput(inputId, required)
{
	var input = document.getElementById(inputId);
	if(!input)
	{
		alert( "Input " + inputId + " not found!");
		return false;
	}

	var s = input.value;
	if( required && s == "" )
		return false;

	if(s != "")
	{
		for(var i=0; i<s.length;i++)
			if(!isDigit(s.charAt(i))) return false;
	}

	return true;
}

function isDigit(num)
{
	if (num.length>1){return false;}
	var string="1234567890";
	if (string.indexOf(num)!=-1){return true;}
	return false;
}

function checkInput(inputId, errorMessage)
{
	if(!_checkInput(inputId))
	   	return focusFailedInput(inputId,errorMessage);

    return true;
}

function checkInputNotEqual(inputId, errorMessage,value)
{
	var input = document.getElementById(inputId);
	if(!input)
	{
		alert( "Input " + inputId + " not found!");
		return false;
	}

	if( input.value == value)
    	return focusFailedInput(inputId,errorMessage);
     
    return true;
}


function compareFields(fieldId1, fieldId2, errorMessage)
{
	var field1 = document.getElementById(fieldId1);
	if(!field1)
	{
		alert( "Element " + fieldId1 + " not found!");		
		return false;
	}

	var field2 = document.getElementById(fieldId2);
	if(!field2)
	{
		alert( "Element " + fieldId2 + " not found!");		
		return false;
	}

	if( field1.value != field2.value )
    	return focusFailedInput(fieldId2,errorMessage);
     
    return true;
}

function checkTextarea(inputId, errorMessage)
{
	var input = document.getElementById(inputId);
	if(!input)
	{
		alert( "Textarea " + inputId + " not found!");		
		return false;
	}

	if( input.value.length <= 3 )
    	return focusFailedInput(inputId,errorMessage);
     
    return true;
}

function checkEmail(inputId,errorMessage)
{
	var input = document.getElementById(inputId);
	if(!input)
	{
		alert( "Input " + inputId + " not found!");
		return false;
	}

    if (!isValidEmail(input.value)) 
    {
        focusFailedInput(inputId,errorMessage);
        return false;
    }

    return true;
}

function isValidEmail(email)
{
 	var template = /^[0-9a-z]+[0-9a-z._-]*\@[0-9a-z]+[0-9a-z._-]*\.[0-9a-z]{2,}$/i;
  	if (template.test(email) == false) return false;
	return true;
}

function checkColleagues(formId, fieldName, fieldEmail, messages) {
	var form = document.getElementById(formId);
	if (!form) {
		return false;
	}
	
	var names = form.elements[fieldName];
	var emails = form.elements[fieldEmail];
	if (names != null && emails != null) {
		if (names.value && emails.value) {
			if (names.value == '' || !isValidEmail(emails.value)) {
				alert('Please enter colleague name and email address');
				return false;
			}
		}
		else {
			var isEntered = false, isValid = true;
			for (var i = 0; i < names.length; i++) {
				var name = trim(names[i].value);
				var email = trim(emails[i].value);
				isEntered |= (name != '' && email != '');
				isValid &= ((name == '' && email == '') || (name != '' && email != '' && isValidEmail(email)));
			}
			if (!isEntered) {
				alert(messages['enter']);
				return false;
			}
			if (!isValid) {
				alert(messages['valid']);
				return false;
			}
		}
		return true;
	}
	return false;
}

function trim(text) {
	return (text || "").replace(/^\s+|\s+$/g, "");
}

function clearError()
{
	var labels = document.getElementsByTagName("label");
	
	for(var i = 0; i < labels.length; i++ )
	{
		var label = labels[i];
		label.className = label.className.replace("error", "");
	}
	return true;
}

function focusFailedInput(inputId, errorMessage)
{
	var labels = document.getElementsByTagName("label");

	var tmplabel;
	// set error class to correct label and remove error class from others
	for(var i = 0; i < labels.length; i++ )
	{
		var label = labels[i];
		label.className = label.className.replace("error", "");
		// if anything will be wrong, remove break statement
		if( label.htmlFor == inputId ) { label.className += " error"; break; }
	}
	
	if(errorMessage)
		alert(errorMessage);
		
	var element = document.getElementById(inputId);
	if(element)
	{
		element.onkeypress = clearError;
		element.focus();
	}
	
	return false;
}
function checkRadio(form, input, errorMessage, inputId)
{
	var tmpForm = document.getElementById(form);
	if(tmpForm)
		form = tmpForm;
	if(!form[input])
		alert( "Element " + input + " not found!");		

	var i = 0;
	for( i ; i < form[input].length; i++ )
		if(form[input][i].checked == true) break;

	var tmp = inputId ? inputId : tmp;
	if( i == form[input].length )
    	return focusFailedInput(tmp,errorMessage);

    return true;
}

