/*

		function clientSideChecks(fieldsToCheckList){
		
			var msg='';
			var lengthList = fieldsToCheckList.length;
			
			for(i=0; i<lengthList; i++){
				
				var obj = document.getElementById(fieldsToCheckList[i]);
				var objID = obj.id;
				if(obj.type=="select-one") var value = obj.options[obj.selectedIndex].value;
				else if(obj.type=="text") var value = obj.value;
				if(value==''){
					if(objID=='Name' || objID=='ConcessionName' || objID=='FirmName' || objID=='PaName'){
						msg += '- Nom manquant<br />';
					}	
					if(objID=="CountryID" || objID=='FirmCountryID'){
						msg += '- Pays manquant<br />';
					}			
					if(objID=="FirmID") msg += '- Société manquant<br />';
					if(objID=="role_OFAC") msg += '- "Rôle dans OFAC" manquant<br />';
				}
			}
			return '<br />Il ya des erreurs dans la page: <br />'+msg;
		}	

*/















	/* ###################   MAIL ANTI-SPAM    ################### */
	function mail_no_spam(user,domain){ 
		document.location.href = "mailto:" + user + "@" + domain; 
	}
	
	
	/*   ################################################################################  */
	/*   ######################  get http GET variabels by name   #######################  */
	/*   ################################################################################  */

		function getURLVar(urlVarName) {
			
			//divide the URL in half at the '?' 
			var urlHalves = String(document.location).split('?');
			var urlVarValue = '';
			
			if(urlHalves[1]){
				//load all the name/value pairs into an array 
				var urlVars = urlHalves[1].split('&');
				//loop over the list, and find the specified url variable 
				for(i=0; i<=(urlVars.length); i++){
					if(urlVars[i]){
						//load the name/value pair into an array 
						var urlVarPair = urlVars[i].split('=');
						if (urlVarPair[0] && urlVarPair[0] == urlVarName) {
							//I found a variable that matches, load it's value into the return variable 
							urlVarValue = urlVarPair[1];
						}
					}
				}
			}
			return urlVarValue;   
		
		}
	
	
	
	/*   ################################################################################  */
	/*   ###################  fill DropDownList with AJAX response   ####################  */
	/*   ################################################################################  */
	
		function fill_DropdownList(response, identifier){
					
			var dropdown_list = document.getElementById(identifier);
				
			dropdown_list.innerHTML = '';
			
			var items = response.split('###');
			for(i=0;i<items.length-1;i++){
				if (items[i] != '') {
					var item_array = items[i].split(',');
					var new_option = document.createElement('option');
					new_option.value = item_array[0];
					new_option.text = item_array[1];
					try {
						dropdown_list.add(new_option, null); // standards compliant
					} 
					catch (ex) {
						dropdown_list.add(new_option); // IE only
					}
				}
			}
			
		}
		
		function fill_DropdownList_JSON(response, identifier){
					
			var dropdown_list = document.getElementById(identifier);
			dropdown_list.innerHTML = '';
			
			var items = JSON.parse(response);
			
			for(var item_key in items){
				var new_option = document.createElement('option');
				new_option.value = items[item_key];
				new_option.text = item_key;
				try {
					dropdown_list.add(new_option, null); // standards compliant
				} 
				catch (ex) {
					dropdown_list.add(new_option); // IE only
				}
			}
		}
		
	
	
	/*  ################################################################  */
	/*  #######################  numeric FIELDS  #######################  */
	/*  ################################################################  */

			function check_digits(e, obj){
				
				var key_code;
				
				if(window.event) {			// IE
				  key_code = e.keyCode;
				} else if(e.which){		 	// Netscape/Firefox/Opera
				  key_code = e.which;
				}
				 
				var key_char = String.fromCharCode(key_code);
				
				var pattern = new RegExp(/[\d\u002C\u002D\u0008]/);
				var test_pattern = pattern.test(key_char);
				
				if(test_pattern){ return true;
				} else { return false;}
				
			}
			
			function numeric_field(obj){
				var old = obj.value;
				old = old.replace(/\s/g, '');
				var new_num = FormatNumber(old);
				obj.value = new_num;
			}
			
			
			function unFormatNumber(num){
				num = num.replace(/\s/g, '');
				num = num.replace(/\,/g, '.');
				return num;
			}
			
			
			function FormatNumber(num) {
				
				var decpoint = ',';
				var sep = ' '
				
				  num = num.toString();
				  
				  // separate the whole number and the fraction if possible
				  a = num.split(decpoint);
				  x = a[0]; // decimal
				  y = a[1]; // fraction
				  z = "";
				
				  if (typeof(x) != "undefined") {
				    // reverse the digits. regexp works from left to right.
				    for (i=x.length-1;i>=0;i--)
				      z += x.charAt(i);
				    // add seperators. but undo the trailing one, if there
				    z = z.replace(/(\d{3})/g, "$1" + sep);
				    if (z.slice(-sep.length) == sep)
				      z = z.slice(0, -sep.length);
				    x = "";
				    // reverse again to get back the number
				    for (i=z.length-1;i>=0;i--)
				      x += z.charAt(i);
				    // add the fraction back in, if it was there
				    if (typeof(y) != "undefined" && y.length > 0){
						  x += decpoint + y;
					}
					
					var last = num.charAt(num.length-1);
					if(last==decpoint){
						x += decpoint;
					}
					
				  }
				  return x;
				}
	
	
		
		
		
		
		
	/*   ######################################################################################################  */
	/*   ##############  html_entity_decode  (reverse of PHP htmlentities and htmlspecialchars)   #############  */
	/*   ####################   Convert all HTML entities to their applicable characters    ###################  */
	/*   ######################################################################################################  */	
		
		
		function get_html_translation_table (table, quote_style) {
		    // Returns the internal translation table used by htmlspecialchars and htmlentities  
		    // 
		    // version: 909.322
		    // discuss at: http://phpjs.org/functions/get_html_translation_table
		    // +   original by: Philip Peterson
		    // +    revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
		    // +   bugfixed by: noname
		    // +   bugfixed by: Alex
		    // +   bugfixed by: Marco
		    // +   bugfixed by: madipta
		    // +   improved by: KELAN
		    // +   improved by: Brett Zamir (http://brett-zamir.me)
		    // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
		    // +      input by: Frank Forte
		    // +   bugfixed by: T.Wild
		    // +      input by: Ratheous
		    // %          note: It has been decided that we're not going to add global
		    // %          note: dependencies to php.js, meaning the constants are not
		    // %          note: real constants, but strings instead. Integers are also supported if someone
		    // %          note: chooses to create the constants themselves.
		    // *     example 1: get_html_translation_table('HTML_SPECIALCHARS');
		    // *     returns 1: {'"': '&quot;', '&': '&amp;', '<': '&lt;', '>': '&gt;'}
		    
		    var entities = {}, hash_map = {}, decimal = 0, symbol = '';
		    var constMappingTable = {}, constMappingQuoteStyle = {};
		    var useTable = {}, useQuoteStyle = {};
		    
		    // Translate arguments
		    constMappingTable[0]      = 'HTML_SPECIALCHARS';
		    constMappingTable[1]      = 'HTML_ENTITIES';
		    constMappingQuoteStyle[0] = 'ENT_NOQUOTES';
		    constMappingQuoteStyle[2] = 'ENT_COMPAT';
		    constMappingQuoteStyle[3] = 'ENT_QUOTES';
		
		    useTable       = !isNaN(table) ? constMappingTable[table] : table ? table.toUpperCase() : 'HTML_SPECIALCHARS';
		    useQuoteStyle = !isNaN(quote_style) ? constMappingQuoteStyle[quote_style] : quote_style ? quote_style.toUpperCase() : 'ENT_COMPAT';
		
		    if (useTable !== 'HTML_SPECIALCHARS' && useTable !== 'HTML_ENTITIES') {
		        throw new Error("Table: "+useTable+' not supported');
		        // return false;
		    }
		
		    entities['38'] = '&amp;';
		    if (useTable === 'HTML_ENTITIES') {
		        entities['160'] = '&nbsp;';
		        entities['161'] = '&iexcl;';
		        entities['162'] = '&cent;';
		        entities['163'] = '&pound;';
		        entities['164'] = '&curren;';
		        entities['165'] = '&yen;';
		        entities['166'] = '&brvbar;';
		        entities['167'] = '&sect;';
		        entities['168'] = '&uml;';
		        entities['169'] = '&copy;';
		        entities['170'] = '&ordf;';
		        entities['171'] = '&laquo;';
		        entities['172'] = '&not;';
		        entities['173'] = '&shy;';
		        entities['174'] = '&reg;';
		        entities['175'] = '&macr;';
		        entities['176'] = '&deg;';
		        entities['177'] = '&plusmn;';
		        entities['178'] = '&sup2;';
		        entities['179'] = '&sup3;';
		        entities['180'] = '&acute;';
		        entities['181'] = '&micro;';
		        entities['182'] = '&para;';
		        entities['183'] = '&middot;';
		        entities['184'] = '&cedil;';
		        entities['185'] = '&sup1;';
		        entities['186'] = '&ordm;';
		        entities['187'] = '&raquo;';
		        entities['188'] = '&frac14;';
		        entities['189'] = '&frac12;';
		        entities['190'] = '&frac34;';
		        entities['191'] = '&iquest;';
		        entities['192'] = '&Agrave;';
		        entities['193'] = '&Aacute;';
		        entities['194'] = '&Acirc;';
		        entities['195'] = '&Atilde;';
		        entities['196'] = '&Auml;';
		        entities['197'] = '&Aring;';
		        entities['198'] = '&AElig;';
		        entities['199'] = '&Ccedil;';
		        entities['200'] = '&Egrave;';
		        entities['201'] = '&Eacute;';
		        entities['202'] = '&Ecirc;';
		        entities['203'] = '&Euml;';
		        entities['204'] = '&Igrave;';
		        entities['205'] = '&Iacute;';
		        entities['206'] = '&Icirc;';
		        entities['207'] = '&Iuml;';
		        entities['208'] = '&ETH;';
		        entities['209'] = '&Ntilde;';
		        entities['210'] = '&Ograve;';
		        entities['211'] = '&Oacute;';
		        entities['212'] = '&Ocirc;';
		        entities['213'] = '&Otilde;';
		        entities['214'] = '&Ouml;';
		        entities['215'] = '&times;';
		        entities['216'] = '&Oslash;';
		        entities['217'] = '&Ugrave;';
		        entities['218'] = '&Uacute;';
		        entities['219'] = '&Ucirc;';
		        entities['220'] = '&Uuml;';
		        entities['221'] = '&Yacute;';
		        entities['222'] = '&THORN;';
		        entities['223'] = '&szlig;';
		        entities['224'] = '&agrave;';
		        entities['225'] = '&aacute;';
		        entities['226'] = '&acirc;';
		        entities['227'] = '&atilde;';
		        entities['228'] = '&auml;';
		        entities['229'] = '&aring;';
		        entities['230'] = '&aelig;';
		        entities['231'] = '&ccedil;';
		        entities['232'] = '&egrave;';
		        entities['233'] = '&eacute;';
		        entities['234'] = '&ecirc;';
		        entities['235'] = '&euml;';
		        entities['236'] = '&igrave;';
		        entities['237'] = '&iacute;';
		        entities['238'] = '&icirc;';
		        entities['239'] = '&iuml;';
		        entities['240'] = '&eth;';
		        entities['241'] = '&ntilde;';
		        entities['242'] = '&ograve;';
		        entities['243'] = '&oacute;';
		        entities['244'] = '&ocirc;';
		        entities['245'] = '&otilde;';
		        entities['246'] = '&ouml;';
		        entities['247'] = '&divide;';
		        entities['248'] = '&oslash;';
		        entities['249'] = '&ugrave;';
		        entities['250'] = '&uacute;';
		        entities['251'] = '&ucirc;';
		        entities['252'] = '&uuml;';
		        entities['253'] = '&yacute;';
		        entities['254'] = '&thorn;';
		        entities['255'] = '&yuml;';
		    }
		
		    if (useQuoteStyle !== 'ENT_NOQUOTES') {
		        entities['34'] = '&quot;';
		    }
		    if (useQuoteStyle === 'ENT_QUOTES') {
		        entities['39'] = '&#39;';
		    }
		    entities['60'] = '&lt;';
		    entities['62'] = '&gt;';
		
		
		    // ascii decimals to real symbols
		    for (decimal in entities) {
		        symbol = String.fromCharCode(decimal);
		        hash_map[symbol] = entities[decimal];
		    }
		    
		    return hash_map;
		}
		
		function html_entity_decode(string, quote_style) {
		    // Convert all HTML entities to their applicable characters  
		    // 
		    // version: 909.322
		    // discuss at: http://phpjs.org/functions/html_entity_decode
		    // +   original by: john (http://www.jd-tech.net)
		    // +      input by: ger
		    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
		    // +    revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
		    // +   bugfixed by: Onno Marsman
		    // +   improved by: marc andreu
		    // +    revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
		    // +    bugfixed by: Brett Zamir (http://brett-zamir.me)
		    // +      input by: Ratheous
		    // -    depends on: get_html_translation_table
		    // *     example 1: html_entity_decode('Kevin &amp; van Zonneveld');
		    // *     returns 1: 'Kevin & van Zonneveld'
		    // *     example 2: html_entity_decode('&amp;lt;');
		    // *     returns 2: '&lt;'
		    var hash_map = {}, symbol = '', tmp_str = '', entity = '';
		    tmp_str = string.toString();
		    
		    if (false === (hash_map = this.get_html_translation_table('HTML_ENTITIES', quote_style))) {
		        return false;
		    }
		
		    for (symbol in hash_map) {
		        entity = hash_map[symbol];
		        tmp_str = tmp_str.split(entity).join(symbol);
		    }
		    tmp_str = tmp_str.split('&#039;').join("'");
		    
		    return tmp_str;
		}
		
		
		
		
		
		
		
		
		
		
		function add_input_field(field){
		
		var container = document.getElementById('container_'+field);
		var record_elems = container.childNodes;
		var num_records = record_elems.length;
		
		/* clone existing record */
		var src_record = record_elems[num_records-1];
		var new_record = src_record.cloneNode(true);
		
			/* empty & update cloned record */
			new_record_count = parseInt(num_records);
			var num_digit = parseInt(new_record_count-1).toString().length
			var str = new_record.id;
			new_record.id =  str.substring(0,str.length-parseInt(num_digit))+new_record_count;
			
			/* input elements */
			input_elems = new_record.childNodes;
			var num_input = input_elems.length;
			for(i=0;i<num_input;i++){
				if(input_elems[i].nodeType==1 && 
					(input_elems[i].nodeName.toUpperCase()=='INPUT' || 
					input_elems[i].nodeName.toUpperCase()=='SELECT' || 
					input_elems[i].nodeName.toUpperCase()=='TEXTAREA')){
					
					input_elems[i].value= '';
					var str = input_elems[i].id
					input_elems[i].id = str.substring(0,str.length-parseInt(num_digit))+new_record_count;
					input_elems[i].name = str.substring(0,str.length-parseInt(num_digit))+new_record_count;
				}
				
			}
			
		/* add new record */
		container.appendChild(new_record);
	}
	
		
		
		
		
		