function Trim(inputString)
{
  return LTrim(RTrim(inputString));
}

function LTrim(inputString)
{
  return inputString.replace(/^\s+/,'');
}

function RTrim(inputString)
{
  return inputString.replace(/\s+$/,'');
}

function ValidateEmail(inputString)
{
	if (/^[\w][\w\.\-\''\+\&]*\@[\w\-\'']+\.[\w\.\-\'']*[\w]$/.test(inputString))
		return (true)
	else
		return (false);
}

function changeCountry(formName, elementName) 
{ 
		
	try
	{
		var objHidden = document.getElementById(elementName);
		if (objHidden)
		{
			objHidden.value = 'change';
		}
		//get the form using document.getElementBy ID 
		//document.forms[formName].submit(); not working on firefox
		//var objForm = document.getElementById(formName);
		//if (objForm)
		//{
		//	objForm.submit();
		//}
	}
	finally
	{
		document.forms[0].submit();
	}
}

function GetInputValue(form, fieldName) 
{
	var value = '';
	switch(fieldName.type)
	{
		case 'radio': case 'checkbox': 
			for(var i=0; i < form.elements.length; i++)
			{
				if (form.elements[i].name == fieldName.name)
				{
					if (form.elements[i].checked)
						value += form.elements[i].value;
				}
			}
			break;
		case 'text': case 'hidden': case 'textarea':  case 'password': case 'select-one':
			value = fieldName.value;
			break;
		default:
			value = '';		
			break;
	}
 	return Trim(value);
}

function RequiredFieldCheck(prefix) 
{
	
	var reqFieldPlaceHolderField = '_RequiredFieldErrMsg';
	var reqFieldPlaceServerHolderField ='_RequiredFieldServerErrMsg';
	var errImgFieldPrefix = '_errimg_';
	var emailField = 'email';
	var errTRFieldSuffix = '_tr_';
	var errPlaceHolder = '<~*~ERROR_PLACE_HOLDER~*~>';
	var errClassName = 'calloutB3_back';
	var replaceRegExp = /_/g; 
	
	var errImage = '<img src="/images/checkout/error-arrow.gif" alt="required" width="28" height="7" border="0" align="middle">';
	
	var errHTML = '<!--Error Message -->' + 
				'<table width="100%" cellspacing="0" cellpadding="0" border="0" class="boxborder">' +
				'<tr class="calloutB3"><td>Error!</td></tr>' +
				'<tr class="calloutB3_back">' +
				'<td>' +
				'<strong>A required field was not filled in.</strong><br>' +
				'	Please find the field(s) with an arrow (' + errImage + ') marked next to it and enter your information.' +
				errPlaceHolder + 
				'</td>' +
				'</tr>' +
				'</table><br>' +
				'<!--end Error Message-->';
	
	var noOfForms = document.forms.length;
	var errMsg='';
	var fieldName;
	var errField;
	var fieldValue;
	var noOfFields;
	var blnValid;
	var placeHolder;
	var errTRTag;
	var fieldsProcessed = '~';
	var childFieldPrefix;
	var childFieldName;
	var childValid;
	var childFieldValue;				

	try
	{
		//Clear the previous error from client side and server side
		placeHolder = document.getElementById(reqFieldPlaceHolderField);
		if (placeHolder)
			placeHolder.innerHTML = '';
			
		placeHolder = document.getElementById(reqFieldPlaceServerHolderField);
		if (placeHolder)
			placeHolder.innerHTML = '';

		for (var i = 0; i < noOfForms; i++) 
		{
			noOfFields = document.forms[i].elements.length;
		
			for (var j = 0; j < noOfFields; j++) 
			{
				fieldName = document.forms[i].elements[j].name;
				//alert(fieldsProcessed.index(fieldName));
				if (fieldsProcessed.indexOf(fieldName) == -1)
				{
					fieldsProcessed += fieldName + '~';
					blnValid = true;
				
					if (fieldName.indexOf(prefix) == 0) //Required field 
					{
						fieldValue = GetInputValue(document.forms[i], document.forms[i].elements[j]); 
						if (fieldValue.length == 0) 
						{
							blnValid = false;
	
							errField = fieldName.replace(prefix, '').replace(replaceRegExp, ' ');
							errField = '<LI>' + errField + '</LI>'
							errMsg = errMsg + errField;
						}
						else 
						{
							childFieldPrefix = prefix.replace(replaceRegExp, '') + 'c_' + fieldValue;
							childFieldName = document.getElementById(childFieldPrefix);

							if (childFieldName)
							{
								for (var k = 0; k < noOfFields; k++)
								{
									childValid = true;
									childFieldName = document.forms[i].elements[k].name;
									childFieldValue = GetInputValue(document.forms[i], document.forms[i].elements[k]);
		
									if (childFieldName.indexOf(childFieldPrefix) == 0) //Required child field
									{
										if (childFieldValue.length == 0)
										{
											childValid = false;
											errField = childFieldName.replace(childFieldPrefix, '').replace(replaceRegExp, ' ');
											errField = '<LI>' + errField + '</LI>'
											errMsg = errMsg + errField;
										}
									}
									placeHolder = document.getElementById(errImgFieldPrefix + childFieldName);
									errTRTag = document.getElementById(childFieldName + errTRFieldSuffix);
									if (placeHolder)
									{
										if (!childValid) 
										{
											//show the error image for the field where validation failed
											placeHolder.innerHTML = errImage;
											if (errTRTag)
												errTRTag.className= errClassName;
										}
										else
										{
											//Clear the previous error image of the field
											placeHolder.innerHTML = '';
											if (errTRTag)
												errTRTag.className= '';
										}
									}							
								}
							}
						
							//check it is email field
						 	if (fieldName.toLowerCase().indexOf(emailField) > 0)
							{
								if (!ValidateEmail(fieldValue))
								{
									blnValid = false;
									errMsg = errMsg + '<LI>' + 'The e-mail address you entered is invalid.' + '</LI>';
								}
							}
						}
						placeHolder = document.getElementById(errImgFieldPrefix + fieldName);
						errTRTag = document.getElementById(fieldName + errTRFieldSuffix);
						if (placeHolder)
						{
							if (!blnValid) 
							{
								//show the error image for the field where validation failed
								placeHolder.innerHTML = errImage;
								if (errTRTag)
									errTRTag.className= errClassName;
							}
							else
							{
								//Clear the previous error image of the field
								placeHolder.innerHTML = '';
								if (errTRTag)
									errTRTag.className= '';
							}
						}
					}
				}
			}
		}
		if (errMsg.length > 0)
		{
			placeHolder = document.getElementById(reqFieldPlaceHolderField);
			if (placeHolder)
			{
				errMsg = '<BLOCKQUOTE>' + errMsg + '</BLOCKQUOTE>';
				placeHolder.innerHTML = errHTML.replace(errPlaceHolder, errMsg);
				location.href='#Error';
			}
			return false;
		}
		else
		{
			return true;
		}
	}
	catch (ex)
	{
		//in case of exception return true and let the server do the validation.
		return true;
	}
}
