 // JavaScript Document
/*
-- Subject : Script form.js - Fonctions de formulaire
-- Historique : Création le 20 mars 2008
-- Author : Cynthia Roy
-- Praxis stratégie communicationn
*/

var xmlHttp_validations = '';
var sendform = true;
var file_validate = 'validate.php';
var a_fieldstovalidate = new Array();
var a_fieldstosetvalue = new Array();

var a_valid_emptyfields = new Array();
var a_valid_emptyradiofields = new Array();
var a_valid_emptycheckboxfields = new Array()
var a_valid_formatfields = new Array();
var a_valid_confirmfields = new Array();
var a_selectall = new Array();

function setFocus(obj)    
{
	if(document.getElementById(obj.id)) {
		obj.focus();
	} else {
		document.location.hash = 'formtop';	
	}
}

function iniValidations()
{
	try {
	// Firefox, Opera 8.0+, Safari
		xmlHttp_validations = new XMLHttpRequest();
	} catch (e) {
	// Internet Explorer
		try {
			xmlHttp_validations = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xmlHttp_validations = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {
				return false;
			}
		}
	}
	
	xmlHttp_validations.onreadystatechange = function() {
		if(xmlHttp_validations.readyState==4) {
			if (xmlHttp_validations.status == 200) {
				try {
 					
				} catch (e) {
					return false;
				}
			}
		}
    }
}

function validateField(obj,type,errorid)
{
	result = true;
	a_types = type.split(';');
	a_errorids = errorid.split(';');
	for(var i=0; i<a_types.length; i++) {
		switch(a_types[i]){
			case 'required':
				result = valid_emptyfields(obj);
				showValidationMsgs(result,obj,a_errorids[i]);
				break;
			case 'requiredradio':
				result = valid_emptyradiofields(obj)
				showValidationMsgs(result,obj,errorid,a_errorids[i]);
				break;
			case 'requiredcheckbox':
				result = valid_emptycheckboxfields(obj)
				showValidationMsgs(result,obj,errorid,a_errorids[i]);
				break;
			case 'email':
			case 'postalcode':
			case 'zipcode':
			case 'zippostalcode':
			case 'phone':
			case 'birthday':
				if(result == true) {
					if(obj.value != '') {
						result = valid_format(obj.value,a_types[i]);	
					}
					showValidationMsgs(result,obj,a_errorids[i]);
				}
				break;
			case 'confirm':
				//show_validationmsgs(valid_confirmfields(obj1, obj2),obj,errorid);
				break;
			default:
				if(xmlHttp_validations) {
					if(obj.value != '') {
						xmlHttp_validations.open("POST",file_validate,true);
						xmlHttp_validations.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
						xmlHttp_validations.send('id='+obj.id+'&value='+obj.value+'&type='+a_types[i]+'&errorid='+a_errorids[i]);
					}
				}
				break;
			
		}
	}
	return result;
}

function validateAllFields(obj_form) {
	send = true;
	focus_field = '';
	for(var i=0; i<a_fieldstovalidate.length; i++) {
		if(a_fieldstovalidate[i].formid == obj_form.id) {
			for(var ii=0; ii<a_fieldstovalidate[i].fields.length; ii++) {
				if(!validateField(a_fieldstovalidate[i].fields[ii][0],a_fieldstovalidate[i].fields[ii][1],a_fieldstovalidate[i].fields[ii][2])) {
					if(send) {
						focus_field = a_fieldstovalidate[i].fields[ii][0];
					}
					send = false;
				}
			}
		}
	}
	
	if(focus_field != '') {
		setFocus(focus_field);
	}

	return send;
}

function showValidationMsgs(result,obj,errorid)
{
	if(result) {
		if(document.getElementById(errorid)) {
			document.getElementById(errorid).style.display = 'none';
		}
		obj.className = 'fieldOk';
	} else {
		if(document.getElementById(errorid)) {
			document.getElementById(errorid).style.display = 'block';
		}
		obj.className = 'fieldError';
	}
}

function frm_selectall(id)
{
	/*for(var i=0; i<a_selectall.length; i++) {
		if(a_selectall[i][0] == id) {
			for(var ii=0; ii<a_selectall[i][1].length; ii++) {
				a_selectall[i][1][ii].checked = true;
			}
		}
	}*/
}

function toggle_format(obj,status)
{
	/*if(status == 'focus' && this.value == this.format) {
		this.value = '';
		this.class = '';
	} else if(status == 'blur' && this.value == '') {
		this.value = this.format;
		this.class = 'format';
	} else if(status == 'blur') {
		this.class = '';
	}*/
}

function valid_emptyfields(obj)
{
	if(obj.value == "") {
		return false;
	}
	return true;
}

function valid_emptyradiofields(obj)
{
	for(var i=0; i<obj.length; i++) {
		if(obj[i].checked == true) {
			return true;
		}
	}
	return false;
}

function valid_emptycheckboxfields(a_obj)
{
	if(a_obj.length) {
		for(var i=0; i<a_obj.length; i++) {
			if(a_obj[i].checked == true) {
				return true;
			}
		}
	} else {
		if(a_obj.checked == true) {
			return true;
		}
	}
	return false;
}

function valid_confirmfields(obj1, obj2) 
{
	if(obj1.value != obj2.value) {
		return false;
	}
	return true;
}

function valid_format(string,type)
{
	switch(type){
		case 'email':
			format = new RegExp("^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,3}","i");
			break;
		case 'postalcode':
			format = new RegExp("^[a-zA-Z][0-9][a-zA-Z] [0-9][A-Z][0-9]|[A-Z][0-9][A-Z][0-9][A-Z][0-9]$","i");
			break;
		case 'zipcode':
			format = new RegExp("^[0-9]{5}-[0-9]{4}|[0-9]{5}$","i");
			break;
		case 'zippostalcode':
			format = new RegExp("^[0-9]{5}-[0-9]{4}|[0-9]{5}|[a-zA-Z][0-9][a-zA-Z] [0-9][a-zA-Z][0-9]|[a-zA-Z][0-9][a-zA-Z][0-9][a-zA-Z][0-9]$","i");
			break;
		case 'phone':
			format = '';
			break;
		case 'birthday':
			format = new RegExp("^[0-9]{2}/[0-9]{2}$","i");
			break;
	}
	
	if(format.test(string)) {
		return true;	
	} else {
		return false;
	}
}
