
/**************************************************************************************
* Copyright (C) 2006-2009 on-situ, Chalon sur Saône - France.  All rights reserved.
*
* Permission is hereby granted to the \"Comité Colbert\", Paris - France, to use 
* this software in association with SINA.cn only and exlusively during the time of 
* the cColbert project.
*
* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
**************************************************************************************/


function setLg(str) {
	alert(str);
}


//VERIFIER QUE LE PARAMETRE EST UN NOM DE FICHIER VALIDE
function check_valid_file_name(p_file_name)
{
	var l_is_valid=true;
	if(p_file_name.indexOf('\\')!= -1) l_is_valid= false;
	if(p_file_name.indexOf('/')!= -1)  l_is_valid= false;
	if(p_file_name.indexOf(':')!= -1)  l_is_valid= false;
	if(p_file_name.indexOf('*')!= -1)  l_is_valid= false;
	if(p_file_name.indexOf('?')!= -1)  l_is_valid= false;
	if(p_file_name.indexOf('"')!= -1)  l_is_valid= false;
	if(p_file_name.indexOf('<')!= -1)  l_is_valid= false;
	if(p_file_name.indexOf('>')!= -1)  l_is_valid= false;
	if(p_file_name.indexOf('|')!= -1)  l_is_valid= false;
//	alert(p_file_name+" "+l_is_valid);
	return l_is_valid;
}

//vérifier qu'un email est valide
function validateEmail(pMail)
{
	var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
	return emailPattern.test(pMail);
} 

//detecter google chrome
function is_chrome()
{
	var l_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
	return l_chrome;
}

//Retourner les variables get
function getVar(name)
{
	 get_string = document.location.search;         
	 return_value = '';
	 
	 do { //This loop is made to catch all instances of any get variable.
		name_index = get_string.indexOf(name + '=');
		
		if(name_index != -1)
		  {
		  get_string = get_string.substr(name_index + name.length + 1, get_string.length - name_index);
		  
		  end_of_value = get_string.indexOf('&');
		  if(end_of_value != -1)                
			value = get_string.substr(0, end_of_value);                
		  else                
			value = get_string;                
			
		  if(return_value == '' || value == '')
			 return_value += value;
		  else
			 return_value += ', ' + value;
		  }
		} while(name_index != -1)
		
	 //Restores all the blank spaces.
	 space = return_value.indexOf('+');
	 while(space != -1)
		  { 
		  return_value = return_value.substr(0, space) + ' ' + 
		  return_value.substr(space + 1, return_value.length);
						 
		  space = return_value.indexOf('+');
		  }
	  
	 return(return_value);        
}


//VERIFIER QUE TOUTS LES CHAMPS REQUIS D'UN FORMULAIRE SONT REMPLIS
//UN CHAMP EST REQUI QUAND UN AUTRE CHAMP (DE TYPE HIDDEN PAR EXEMPLE) PORTE LE NOM REQUIRED ET EN VALEUR LE NOM DU CHAMP REQUI
function form_verify(form) //form_verify_array
{
	var l_alert_needed = false;
	for (var l_field_index1=0; l_field_index1<form.elements.length; l_field_index1++ )
	{
		if( form.elements[l_field_index1].name == "REQUIRED" )
		{
			//alert(form.elements[l_field_index1].value);
			for (var l_field_index2=0; l_field_index2<form.elements.length; l_field_index2++)
			{
				if(form.elements[l_field_index1].value == form.elements[l_field_index2].name)
				{
					if(form.elements[l_field_index2].value =="")
					{
						alert("Complete all required fields!");
						form.elements[l_field_index2].focus();
						return false;
					}
					break;
				}
			}
			if(l_alert_needed)
			{
				alert("Complete all required fields!-");
				return false;
			}
		}
	}	
	return true;
}

//Ouvrir une page web dans une fenêtre séparée

function URLopen(pUrl)
{
	winRef = window.open(pUrl);
}

//SOUMISSION D'UN FORMULAIRE AVEC VERIFICATION DES CHAMPS REQUIS
//AJOUT DE CHAMPS CACHES INDIQUANT LES CHAMPS QUI ON ETE MODIFIES (MEME NOM PREFIXE AVEC "CHANGE_"
//ATTENTION: LES MODIFICATIONS NE SONT DETECTEES QUE SI UNE VALEUR INITIALE A ETE DEFINIE (MEME "", OU SELECTION DE L'OPTION 0)
//PAR DEFAUT LES CASES A COCHER PRENNENT COMME VALEUR "TRUE" OU "FLASE"
function form_submit(form)
{

	if(! form_verify(form))
	{
		return false;
	}

	var form_length = form.elements.length;
	for (l_field_index1=0; l_field_index1<form_length; l_field_index1++)
	{
		var l_changed = false;
		var l_value = "undefined";
		var l_name = "undefined";

		if(form.elements[l_field_index1].type == "text" || form.elements[l_field_index1].type == "textarea")
		{
			if( form.elements[l_field_index1].value != form.elements[l_field_index1].defaultValue )
			{
				l_changed=true;
				l_value = form.elements[l_field_index1].value;
				l_name = form.elements[l_field_index1].name;
			}			
		}
		else if(form.elements[l_field_index1].type == 'select-one')
		{
			var option_length = form.elements[l_field_index1].options.length
			for (var l_option_index=0; l_option_index<option_length; l_option_index++)
			{
				if(form.elements[l_field_index1].options[l_option_index].selected != form.elements[l_field_index1].options[l_option_index].defaultSelected)
				{
					l_changed=true;
					l_value = form.elements[l_field_index1].value;
					l_name = form.elements[l_field_index1].name;
					break;
				}
			}
		}
		else if(form.elements[l_field_index1].type == "checkbox" && form.elements[l_field_index1].checked != form.elements[l_field_index1].defaultChecked)
		{
			l_changed=true;
			if(form.elements[l_field_index1].checked)
			{
				l_value = "true";
			}
			else
			{
				l_value = "false";
			}
			l_name = form.elements[l_field_index1].name;
		}
		if(l_changed)
		{
			var l_change_field = document.createElement('input');
			var l_change_post_name;
			if(l_name.indexOf("[") != -1)
			{

				var l_basse_name;
				var l_index_name;
				l_basse_name = l_name.substring(0,l_name.indexOf("["));
				l_index_name = l_name.substring(l_name.indexOf("["),l_name.length);
				l_change_post_name = l_basse_name+"[change]"+l_index_name;
			}
			//else
			//{
			//	l_change_post_name="update["+l_name+"][change]";
			//}
			l_change_field.setAttribute('type','hidden');
			l_change_field.setAttribute('name',l_change_post_name);
			l_change_field.setAttribute('value',l_value);
			form.appendChild(l_change_field); 
		}
	}
	form.submit();
	return true;
}

//LA FONCTION SPRINTF QUI N'EST PAS DEFINIE PAR DEFAUT EN JAVA SCRIPT
//VOIR DOC DE LA FONCTION SPRINTF DE PHP
//http://jan.moesen.nu/code/javascript/sprintf-and-printf-in-javascript/
function sprintf()
{
	if (!arguments || arguments.length < 1 || !RegExp)
	{
		return;
	}
	var str = arguments[0];
	var re = /([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X)(.*)/;
	var a = b = [], numSubstitutions = 0, numMatches = 0;
	while (a = re.exec(str))
	{
		var leftpart = a[1], pPad = a[2], pJustify = a[3], pMinLength = a[4];
		var pPrecision = a[5], pType = a[6], rightPart = a[7];
		
		//alert(a + '\n' + [a[0], leftpart, pPad, pJustify, pMinLength, pPrecision);

		numMatches++;
		if (pType == '%')
		{
			subst = '%';
		}
		else
		{
			numSubstitutions++;
			if (numSubstitutions >= arguments.length)
			{
				alert('Error! Not enough function arguments (' + (arguments.length - 1) + ', excluding the string)\nfor the number of substitution parameters in string (' + numSubstitutions + ' so far).');
			}
			var param = arguments[numSubstitutions];
			var pad = '';
			if (pPad && pPad.substr(0,1) == "'") pad = leftpart.substr(1,1);
			else if (pPad) pad = pPad;
			var justifyRight = true;
			if (pJustify && pJustify === "-") justifyRight = false;
			var minLength = -1;
			if (pMinLength) minLength = parseInt(pMinLength);
			var precision = -1;
			if (pPrecision && pType == 'f') precision = parseInt(pPrecision.substring(1));
			var subst = param;
			if (pType == 'b') subst = parseInt(param).toString(2);
			else if (pType == 'c') subst = String.fromCharCode(parseInt(param));
			else if (pType == 'd') subst = parseInt(param) ? parseInt(param) : 0;
			else if (pType == 'u') subst = Math.abs(param);
			else if (pType == 'f') subst = (precision > -1) ? Math.round(parseFloat(param) * Math.pow(10, precision)) / Math.pow(10, precision): parseFloat(param);
			else if (pType == 'o') subst = parseInt(param).toString(8);
			else if (pType == 's') subst = param;
			else if (pType == 'x') subst = ('' + parseInt(param).toString(16)).toLowerCase();
			else if (pType == 'X') subst = ('' + parseInt(param).toString(16)).toUpperCase();
		}
		str = leftpart + subst + rightPart;
	}
	return str;
}


