/* $Id: forms.js,v 1.2 2008-05-07 15:50:16 tkepski Exp $ */

function checkContactForm(form) {
	return checkInput("form_name","Please enter your name.") &&
		checkInput("form_company","Please enter Company.") &&
		checkEmail("form_email","Please enter a valid email address.");
}

function checkSendToFriendForm(form) {
	return checkInput("form_name","Please enter your name.") &&
		checkEmail("form_email","Please enter a valid email address.");
}

function checkFormLoginTop()
{
	return checkEmail("form_top_username","Please enter your email address.") &&
		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 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 getFObject(input)
{
	if (typeof(input)=='string') return document.getElementById(input);
	return input;
}

function checkInput(inputId, errorMessage)
{
	var input = getFObject(inputId);
	if(!input)
	{
		alert( "Input " + inputId + " not found!");
		return false;
	}
	if( input.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 = getFObject(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 clearError()
{
	var labels = document.getElementsByTagName("label");

	for(var i = 0; i < labels.length; i++ )
	{
		var label = labels[i];
		label.className = label.className.replace("error", "");
	}

	if (this)
		this.className = this.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; }
	}

	var element = getFObject(inputId);
	if (element)
		element.className += " error";

	if(errorMessage)
		alert(errorMessage);

	if(element)
	{
		element.onkeypress = clearError;
		element.onclick = 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;
}

function checkRadioOld(input, errorMessage)
{
	var i = 0;
	for( i ; i < input.length; i++ )
		if(input[i].checked) return true;

	return focusFailedInput(input[0],errorMessage);
}
function checkCheckboxes(input,message)
{
    if (input.length)
    {
        var i;
        for (i=0; i<input.length; i++)
        {
            if (input[i].checked)
            {
                return true;
            }
        }
        alert(message);
        input[0].focus();
        return false;
    }
    return true;
}

function checkSelect(inputId,message)
{
	var input = getFObject(inputId);
    if (input.selectedIndex==0 && input.value=='')
    {
        focusFailedInput(input,message);
        return false;
    }
    return true;
}

function checkout_shippingAddress(checkbox)
{
	var tmpDiv = document.getElementById('shipAddress');
	var tmpDivParent = tmpDiv.parentNode;

	checkbox.parentNode.style.position = "relative";
	checkbox.parentNode.style.left = "0";

	if (!checkbox.checked) {
		tmpDiv.style.left="0";
		//tmpDiv.style.position = "relative";
		tmpDivParent.style.height=(tmpDiv.offsetHeight + 10) + "px";

	} else {
		tmpDiv.style.position="absolute";
		tmpDiv.style.left="-3000px";
		tmpDivParent.style.height=checkbox.parentNode.offsetHeight + "px";
	}
}

function checkDate(inputId,errorMessage)
{
	var input = getFObject(inputId);
	if(!input)
	{
		alert( "Input " + inputId + " not found!");
		return false;
	}

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

    return true;
}

function isValidDate(date)
{
 	var template = /^[0-1][0-9]\/[0-3][0-9]\/[1-2][0-9]{3,}$/;
 	if(date.match(template)==null) return false;

	return true;
}
