var sf_err_msg_head_fr = 'Veuillez corriger les problèmes suivantes, puis soumettre le formulaire de nouveau :';
var sf_err_msg_head_en = 'Please fix the following problems, then submit the form again :';

var sf_err_msg_fr =
{
	last_name    : 'Veuillez inscrire votre nom',
	first_name   : 'Veuillez inscrire votre prénom',
	company      : 'Veuillez inscrire le nom de votre compagnie',
	phone        : 'Votre numéro de téléphone n\'est pas valide ou dans un format non valide',
	email        : 'Veuillez inscrire votre adresse courriel',
	language     : 'Veuillez choisir votre langue',
	other_lang   : 'Veuillez préciser votre langue (Autre)',
    job_title    : 'Veuillez inscrire votre emploi',
    name         : 'Veuillez inscrire votre nom',
    phone_no     : 'Veuillez inscrire votre numéro de téléphone',
    invalid_phone: 'Votre numéro de téléphone n\'est pas valide.',
	invalid_email: 'Votre adresse courriel n\'est pas valide. Veuillez utiliser votre adresse d\'entreprise.'
};

var sf_err_msg_en =
{
	last_name     : 'Please provide your last name',
	first_name    : 'Please provide your first name',
	company       : 'Please provide your company name',
	phone         : 'Your phone number is not valid or not in a valid format',
	email         : 'Please provide your email address',
	language      : 'Please choose your language',
	other_lang    : 'Please provide your language (other)',
    job_title     : 'Please provide your job title',
    name          : 'Please provide your name',
    phone_no      : 'Please provide your phone number',
    invalid_phone: 'Please provide a valid phone number',
	invalid_email : 'Your email address is invalid. Please use your business address.'
};

//Mise a jour par : krimos 27 mai 2010 Pour la verification et validation du domaine de l'adresse mail saisi par rapport a une black-list 
//fonction pour chercher un élément dans un tableau
	Array.prototype.in_array = function(p_val) 
	{
		for(var i = 0, l = this.length; i < l; i++) 
		{
			if(this[i] == p_val) 
				{
					rowid = i;
					return true;
				}
		}
		return false;
	}

// fonction pour la verification de l'adresse email par rapport a un ensemble de domaine refusés.
function check_email(email)
{
	//Liste des nom de domaines bloqués
	var bounced_domain = new Array
	(
		"gmail", 
		"yahoo",
		"hotmail", 
		"msn", 
		"live",
		"videotron", 
		"sympatico", 
		"total", 
		"gmx", 
		"shaw", 
		"aol", 
		"yopmail", 
		"jetable", 
		"kasmail", 
		"trashmail", 
		"spamgourmet", 
		"yuurok", 
		"email", 
		"mailexcite", 
		"mailexcite", 
		"icqmail", 
		"netcourrier", 
		"voila", 
		"webmails", 
		"bell"
	);
	
	
	// Vérifier la validité du format d'une adresse email  
	var reg =/^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,3}$/
	
	//Si l'adresse a le bon format
	if (reg.exec(email)!=null)
	{
		//Extraction du nom du domaine de l'adresse email 
		var from = email.lastIndexOf("@");
		var to = email.lastIndexOf(".");
		domain = email.substring((from+1), to);
		
		//Verification si le domaine est dans la blacklist
		return bounced_domain.in_array(domain);
		
	}
	//Si l'adresse email n'a pas le bon format
	else
	{
		return true;
	}
}
// fin fonction de la validation --------------------------------------


function sf_cs_form_onsubmit(theForm)
{
    var errors = new Array();

    //var selected_products = 0;
    /*var selected_language = false;
    var other_language = '';*/

    for(var element_index = 0; element_index < theForm.elements.length; ++element_index)
    {
        var elem = theForm.elements[element_index];

        if(elem.name == 'last_name' && elem.value == '')  errors.push('last_name');
        if(elem.name == 'first_name' && elem.value == '') errors.push('first_name');
        if(elem.name == 'company' && elem.value == '')    errors.push('company');
        if(elem.name == 'title' && elem.value == '')    errors.push('job_title');
		if(elem.name == 'phone' && elem.value == '') errors.push('phone_no');
		if(elem.name == 'phone' && !isPhoneNumber(elem.value)) errors.push('invalid_phone');
        if(elem.name == 'email' && elem.value == '')      errors.push('email');
		if(elem.name == 'email' && check_email(elem.value)) errors.push('invalid_email');

        /*// no product selected
        if(elem.name == '00N300000011KJT' && elem.checked)
        {
            ++selected_products;
        }
        if(elem.name == '00N300000014UNM' && elem.checked)
        {
            ++selected_products;
        }*/

        // language
        /*if(elem.name == '00N30000000mitQ' && elem.checked)
        {
            if(elem.checked)
            {
                selected_language = elem.value;
            }
        }

        if(elem.name == '00N30000000mitQ_txt') // other language
        {
            other_language = elem.value;
        }*/
    }

    /*if(selected_products == 0)
    {
        errors.push('product');
    }*/

    /*if(!selected_language)
    {
        errors.push('language');
    }
    else if(selected_language == 'Autre' && other_language == '')
    {
        errors.push('other_lang');
    }*/

    var is_ok = errors.length == 0;
    if(!is_ok)
    {
        var err_msg = '';
        var err_obj;
        if(sf_err_msg_lang == '_fr')
        {
            err_msg += sf_err_msg_head_fr;
            err_obj = sf_err_msg_fr;
        }
        else
        {
            err_msg += sf_err_msg_head_en;
            err_obj = sf_err_msg_en;
        }
        err_msg += '\n';
        for(var index = 0; index < errors.length; ++index)
        {
            err_msg += '\n    ' + err_obj[errors[index]];
        }
        alert(err_msg);
    }

    return is_ok;
}

function sf_form_onsubmit()
{
	var errors = new Array();

	var theForm = false;

	for(var index = 0; index < document.forms.length; ++index)
	{
		if(document.forms[index].attributes.action.value.indexOf('salesforce.com') >= 0)
		{
			theForm = document.forms[index];
			break;
		}
	}

	// could not find the form, nothing to check
	if(!theForm) return true;

	//var selected_products = 0;
	var selected_language = false;
	var other_language = '';

	for(var element_index = 0; element_index < theForm.elements.length; ++element_index)
	{
		var elem = theForm.elements[element_index];

		if(elem.name == 'last_name' && elem.value == '')  errors.push('last_name');
		if(elem.name == 'first_name' && elem.value == '') errors.push('first_name');
		if(elem.name == 'company' && elem.value == '')    errors.push('company');
		if(elem.name == 'title' && elem.value == '')    errors.push('job_title');
		if(elem.name == 'phone' && elem.value == '') errors.push('phone_no');
		if(elem.name == 'phone' && !isPhoneNumber(elem.value)) errors.push('invalid_phone');
		if(elem.name == 'email' && elem.value == '')      errors.push('email');
		if(elem.name == 'email' && check_email(elem.value)) errors.push('invalid_email');

		/*// no product selected
		if(elem.name == '00N300000011KJT' && elem.checked)
		{
			++selected_products;
		}
		if(elem.name == '00N300000014UNM' && elem.checked)
		{
			++selected_products;
		}*/

		// language
		if(elem.name == '00N30000000mitQ' && elem.checked)
		{
			if(elem.checked)
			{
				selected_language = elem.value;
			}
		}

		if(elem.name == '00N30000000mitQ_txt') // other language
		{
			other_language = elem.value;
		}
	}

	/*if(selected_products == 0)
	{
		errors.push('product');
	}*/

	if(!selected_language)
	{
		errors.push('language');
	}
	else if(selected_language == 'Autre' && other_language == '')
	{
		errors.push('other_lang');
	}

	var is_ok = errors.length == 0;
	if(!is_ok)
	{
		var err_msg = '';
		var err_obj;
		if(sf_err_msg_lang == '_fr')
		{
			err_msg += sf_err_msg_head_fr;
			err_obj = sf_err_msg_fr;
		}
		else
		{
			err_msg += sf_err_msg_head_en;
			err_obj = sf_err_msg_en;
		}
		err_msg += '\n';
		for(var index = 0; index < errors.length; ++index)
		{
			err_msg += '\n    ' + err_obj[errors[index]];
		}
		alert(err_msg);
	}

	return is_ok;
}

function sf_form_small_free_trial_onsubmit()
{
    var errors = new Array();

    var theForm = false;

    for(var index = 0; index < document.forms.length; ++index)
    {
        if(document.forms[index].attributes.action.value.indexOf('salesforce.com') >= 0)
        {
            theForm = document.forms[index];
            break;
        }
    }

    // could not find the form, nothing to check
    if(!theForm) return true;
	
	var selected_language = false;
	var other_language = '';
	
	

    for(var element_index = 0; element_index < theForm.elements.length; ++element_index)
    {
        var elem = theForm.elements[element_index];

        if(elem.name == 'email' && (elem.value == '' || elem.value == 'Email address' || elem.value == 'Adresse courriel')) errors.push('email');

        //if(elem.name == 'Phone' && !isPhoneNumber(elem.value))      errors.push('phone');
        // language
        if(elem.name == '00N30000000mitQ')
        {
            if(elem.options[elem.selectedIndex].value == '')
            {
                errors.push('language');
            }
        }
    }
	


    var is_ok = errors.length == 0;
    if(!is_ok)
    {
        var err_msg = '';
        var err_obj;
        if(sf_err_msg_lang == '_fr')
        {
            err_msg += sf_err_msg_head_fr;
            err_obj = sf_err_msg_fr;
        }
        else
        {
            err_msg += sf_err_msg_head_en;
            err_obj = sf_err_msg_en;
        }
        err_msg += '\n';
        for(var index = 0; index < errors.length; ++index)
        {
            err_msg += '\n    ' + err_obj[errors[index]];
        }
        alert(err_msg);
    }

    return is_ok;
}

function sf_form_contact_onsubmit()
{
    var errors = new Array();

    var theForm = false;

    for(var index = 0; index < document.forms.length; ++index)
    {
        if(document.forms[index].attributes.action.value.indexOf('salesforce.com') >= 0)
        {
            theForm = document.forms[index];
            break;
        }
    }

    // could not find the form, nothing to check
    if(!theForm) return true;
	
	var selected_language = false;
	var other_language = '';
	

    for(var element_index = 0; element_index < theForm.elements.length; ++element_index)
    {
        var elem = theForm.elements[element_index];

        if(elem.name == 'last_name' && elem.value == '')  errors.push('name');
        if(elem.name == 'company' && elem.value == '')    errors.push('company');
        if(elem.name == 'title' && elem.value == '')      errors.push('job_title');
        if(elem.name == 'email' && elem.value == '')      errors.push('email');
		if(elem.name == 'phone' && elem.value == '') errors.push('phone_no');
		if(elem.name == 'phone' && !isPhoneNumber(elem.value)) errors.push('invalid_phone');
		if(elem.name == 'email' && check_email(elem.value)) errors.push('invalid_email');
		
				// language
		if(elem.name == '00N30000000mitQ' && elem.checked)
		{
			if(elem.checked)
			{
				selected_language = elem.value;
			}
		}

		if(elem.name == '00N30000000mitQ_txt') // other language
		{
			other_language = elem.value;
		}
    }
	
	if(!selected_language)
	{
		errors.push('language');
	}
	else if(selected_language == 'Autre' && other_language == '')
	{
		errors.push('other_lang');
	}


    var is_ok = errors.length == 0;
    if(!is_ok)
    {
        var err_msg = '';
        var err_obj;
        if(sf_err_msg_lang == '_fr')
        {
            err_msg += sf_err_msg_head_fr;
            err_obj = sf_err_msg_fr;
        }
        else
        {
            err_msg += sf_err_msg_head_en;
            err_obj = sf_err_msg_en;
        }
        err_msg += '\n';
        for(var index = 0; index < errors.length; ++index)
        {
            err_msg += '\n    ' + err_obj[errors[index]];
        }
        alert(err_msg);
    }

    return is_ok;
}

function isPhoneNumber(str){
  var str = str.replace(/-/g,'');
  str = str.replace(/\(/g,'');
  str = str.replace(/\)/g,'');
  str = str.replace(/\s/g,'');
  str = str.replace(/\+/g,'');
  str = str.replace(/\./g,'');
  str = str.replace(/[0-9]/g,'');
                          
  if(str.length == 0)
  {
      return true;
  }
  else
  {
      return false;
  }
}