﻿function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

function setQueryDirection(direction, form)
{
	var domain = 'accerta.ca';	
	form = getElement(form);	
	direction = trim(direction);	
	
	switch(direction.toLowerCase())
	{
		case 'partner':
		case 'partners':
			e1 = 'partners' + '@' + domain;
			break;
		case 'claim':
		case 'claims':
			e1 = 'claims' + '@' + domain;
			break;
		case 'sales':
			e1 = 'sales' + '@' + domain;
			break;
		case 'broker':
		case 'brokers':
			e1 = 'broker' + '@' + domain;
			break;
		default:
			e1 = 'info' + '@' + domain;
	}
			
	//alert('Email with by routed to: ' + e1 );
	with(form)
	{
		if(recipient)
		{
			recipient.value = e1;
		}
	}
}

function getElement(elementId)
{
    var element = null;
	
    if(elementId != null)
    {
        if(document.getElementById)
        {
            element = document.getElementById(elementId);
        }        
		else if(document.all)
		{
			element = document.all[elementId];
		}
    }
    
    return element;    
}

function hideAll()
{
	var emailLayer = getElement('form_generalInquiry_by_email');
	var telLayer = getElement('form_generalInquiry_by_telephone');
	
	hideElement(emailLayer);
	hideElement(telLayer);
}

function hideElement(element)
{
	if(element!= null)
	{
		element.style.visibility = 'hidden';
		element.style.display = 'none';
	}
}

function showElement(element)
{
	if(element!= null)
	{
		element.style.visibility = 'visible';
		element.style.display = 'block';
	}
}

function showGeneralInquiryEmailPanel()
{
	var emailLayer = getElement('form_generalInquiry_by_email');
	var telLayer = getElement('form_generalInquiry_by_telephone');

	
	showElement(emailLayer);
	hideElement(telLayer);
	
	try{
		Modalbox.resizeToContent();
	}catch(err){
	}
}

function showGeneralInquiryAddressPanel()
{
	var emailLayer = getElement('form_generalInquiry_by_email');
	var telLayer = getElement('form_generalInquiry_by_telephone');

	
	hideElement(emailLayer);
	showElement(telLayer);
	
	try{
		Modalbox.resizeToContent();
	}catch(err){
	}
}

function hasValue(field)
{
	if(field)
	{
		if(field.value && field.value != '')
		{
			return true;
		}
	}
	
	return false;
}

function isValidEmail(field)
{
	if(field)
	{
		if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(field.value))
		{
			return true;
		}
	}
	
	return false;
}

function validSelectedItem(field, invalidIdx)
{
	if(field)
	{
		try{
			if(field.selectedIndex == invalidIdx)
			{
				return false;
			}
			else
			{
				return true;
			}
		}catch(err)
		{
		}
	}
	
	return false;
}

/******************************************************/
/**
 * DHTML phone number validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
 */

function isInteger(s)
{   
	var i;
	var c;
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function checkInternationalPhone(phoneNum)
{
	var s=stripCharsInBag(phoneNum,"()+- ");
	if(s.length >= 10 && isInteger(s))
	{
		return true;
	}
	
	return false;
}
/******************************************************/

function isValidPhoneNumber(field)
{
	if(field)
	{
		return checkInternationalPhone(field.value);
	}
	
	return false;
}


function generalInquiryFormValidation(form)
{
	if(form == null)
	{
		return true;
	}
	
	var tel = getElement('form_contactMethod_isTelephone');
	var email = getElement('form_contactMethod_isEmail');
	
	try{
		with(form)
		{
			//General
			if(hasValue(form_first_name) == false)
			{
				alert('Please enter in your first name.');
				form_first_name.focus();
				return false;
			}
			
			if(hasValue(form_last_name) == false)
			{
				alert('Please enter in your last name.');
				form_last_name.focus();
				return false;
			}
			
			if(hasValue(form_comments) == false)
			{
				alert('Please enter in your questions/comments.');
				form_comments.focus();
				return false;
			}
			
			//Email contact option selected.
			if(email.checked)
			{
				if(hasValue(form_email) == false)
				{
					alert('Please enter in your email address.');
					form_email.focus();
					return false;
				}
				
				if(isValidEmail(form_email) == false)
				{
					alert('Please enter in a valid email address.');
					form_email.focus();
					return false;
				}
			}
			else if(tel.checked)	//Telephone contact option selected
			{
				if(hasValue(form_phone_number) == false)
				{
					alert('Please enter in your contact phone number.');
					form_phone_number.focus();
					return false;
				}
				
				if(isValidPhoneNumber(form_phone_number) == false)
				{
					alert('Please enter in a valid contact phone number.');
					form_phone_number.focus();
					return false;
				}
				
				if(validSelectedItem(form_time_of_contact, 0) == false)
				{
					alert('Please select a preferred contact time.');
					form_time_of_contact.focus();
					return false;
				}		
			}
		}
	}catch(err){
		alert(err);
		return false;
	}
}

