String.prototype.trim = function () {
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
}

var flag_callfunction=false;

function getParamObject() {
	var param_obj=new Object();
	var params=document.getElementsByName("params")[0];
	var reg=new RegExp(",", "g");
	var param_list=params.value.split(reg);
	for (var i=0; i<param_list.length; i++) {
		reg=new RegExp("=", "g");
		var param_item=param_list[i].split(reg);
		param_obj[param_item[0]]=param_item[1];
	}
	return param_obj;
}

function callfunction(obj,extension,action,close,checkparam) {
	if (flag_callfunction) 
		return;
	flag_callfunction=true;
	if ((obj==null) || (obj.getAttribute('class')!='ACTIONDISABLED')) {
		var ext=document.getElementsByName("extension")[0];
		var act=document.getElementsByName("action")[0];
		var cls=document.getElementsByName("close")[0];
		var stack=document.getElementsByName("STACK")[0];
		var params=document.getElementsByName("params")[0];
		if ((extension=='') || (action=='')) {
			stack_text="";
			for(var stack_i=0;stack_i<(ACTION_STACK.length-1);stack_i++) {
				stack_text+=ACTION_STACK[stack_i][0]+'#%%#'+ACTION_STACK[stack_i][1]+'#%%#'+ACTION_STACK[stack_i][2]+'#%%#'+ACTION_STACK[stack_i][3]+"#$$#";
			}
			stack.value=stack_text;
			var view=document.getElementsByName("view")[0];
		    if (ACTION_STACK.length>1) {
				ext.value=ACTION_STACK[ACTION_STACK.length-2][0];
				act.value=ACTION_STACK[ACTION_STACK.length-2][1];
				params.value=ACTION_STACK[ACTION_STACK.length-2][2];
				view.value=ACTION_STACK[ACTION_STACK.length-2][3];
				cls.value=1;
    		}
			else {
				ext.value="";
				act.value="";
				params.value="";
				view.value="generic";
			}
			document.custom.submit();
			return;
		}
		var stack_text="";
		for(var stack_i=0;stack_i<ACTION_STACK.length;stack_i++) {
		    stack_text+=ACTION_STACK[stack_i][0]+'#%%#'+ACTION_STACK[stack_i][1]+'#%%#'+ACTION_STACK[stack_i][2]+'#%%#'+ACTION_STACK[stack_i][3]+"#$$#";
		}
		stack.value=stack_text;
		ext.value=extension;
		act.value=action;
		cls.value=close;

		var param_obj=getParamObject()	
		var error="";
		var fielddesc="";
		var files_params="";
		for (custom_i = 0;(error=='') && (custom_i < document.custom.elements.length); custom_i++) {
			var add_or_new=0; // 0:no - 1:add - 2:new - 3 clear - 4 remove
			var current_item=document.custom.elements[custom_i];
			var field_value=current_item.value.trim();
			switch(current_item.type)
			{
			case "text":
			case "password":
			case "textarea":
				if (!checkparam || (field_value!="") || (current_item.getAttribute('needed')!='1'))
					add_or_new=2
				if (add_or_new!=2)
					error="ne doit pas etre vide";
				else {
				     var comp=current_item.getAttribute('comp');
				     switch (comp) {
					  /*case "date":
					      var reg = new RegExp ("^[0-9]{4}[-]{1}[0-9]{2}[-]{1}[0-9]{2}$" , "g" ); 
					      if (reg.test(field_value))
						error="doit etre une date sous la forme 'AAAA-MM-JJ'";
					      break;
					  case "time":
					      var reg = new RegExp ("^[0-9]{2}[:]{1}[0-9]{2}[:]{1}[0-9]{2}$" , "g" ); 
					      if (reg.test(field_value))
						error="doit etre une heure sous la forme 'HH:MM:SS'";
					      break;
					  case "datetime":
					      var reg = new RegExp ("^[0-9]{4}[-]{1}[0-9]{2}[-]{1}[0-9]{2}[ ]{1}[0-9]{2}[:]{1}[0-9]{2}[:]{1}[0-9]{2}$" , "g" ); 
					      if (reg.test(field_value))
						error="doit etre une date sous la forme AAAA-MM-JJ 'HH:MM:SS'";
					      break;*/
					  case "float":
					      var min=parseFloat(current_item.getAttribute('min'));
					      var max=parseFloat(current_item.getAttribute('max'));
					      var prec=parseInt(current_item.getAttribute('prec'));
					      if ((prec==0) && isNaN(parseInt(field_value)))
						error="doit etre un entier";
					      else if ((prec!=0) && isNaN(parseFloat(field_value)))
						error="doit etre un reel";
					      else {
						 var val_reel=parseFloat(field_value);
						 if  ((val_reel<min) || (val_reel>max))
						    error="doit etre compris entre "+min+" et "+max;
					      }
					      break;
				     }
				     if (error!="")
					add_or_new=0
				}
				if (error!="") {
				  fielddesc=urldecode(current_item.getAttribute('description'));
				  if (fielddesc=="")
				    fielddesc=urldecode(current_item.getAttribute('name'));
				}
				break;
			case "checkbox":
				if (current_item.checked) {
					if (current_item.getAttribute('mode')=='add')
						add_or_new=1;
					else
						add_or_new=2;
				}
				else if (current_item.getAttribute('mode')!='add')
						add_or_new=3;
				else if (current_item.getAttribute('mode')=='add')
						add_or_new=4;
				break;
			case "file":
				var type=0;
				if (current_item.getAttribute('Compress')=='1')
				    type+=1;
				if (current_item.getAttribute('HttpFile')=='1')
				    type+=2;
				files_params+=";"+type+":"+current_item.name;
				break;
			default :
				switch(current_item.nodeName) {
					case "SELECT":
					case "select":
						add_or_new=2;
						break;
					default :
						break;
				}
				break;
			} 

      var param_items;
			switch(add_or_new) {
			  case 1: // new checklist
			      if (param_obj[current_item.name] && (current_item.getAttribute('simple')!='1')) {
				      param_items=split(";",param_obj[current_item.name]);
				      if (!in_array(field_value,param_items))
					param_obj[current_item.name]+=';'+field_value;
			      }
			      else
				      param_obj[current_item.name]=field_value;
			      break;
			  case 2: // add checkbox
			      param_obj[current_item.name]=field_value;
			      break;
			  case 3: // clear add checkbox
			      param_obj[current_item.name]="n";
			      break;
			  case 4: // remove new checklist
				if (param_obj[current_item.name]) {
				        param_items=split(";",param_obj[current_item.name]);
					param_obj[current_item.name]='';
					for (var param_i=0; param_i<param_items.length; param_i++)
					    if (field_value!=param_items[param_i]) {	
						if (param_obj[current_item.name]!='')
						    param_obj[current_item.name]+=';';
						param_obj[current_item.name]+=param_items[param_i];
					}
				}
			      break;
			}
		}
		if (error=='') {
			var param_values="";
			for (var key in param_obj)
				if (key!="")
					param_values+=key+'='+param_obj[key]+',';
			if (files_params!="")
				param_values+='#FILES#='+files_params+'';
			params.value=param_values;
			document.custom.submit();
		}
		else
			alert("Le champ '"+fielddesc+"' "+error+"!");
	}
	flag_callfunction=false;
}

function setButtonCursor(obj) {
	if (obj.getAttribute('class')=='ACTION')
		obj.style.cursor='pointer';
	else
		obj.style.cursor='default';
}
 
function changeSelectLine(obj,gridname,record_id,selectionType) {
	var records=document.getElementsByName(gridname);
	if (selectionType==1) {
		for (i = 0; i < records.length; i++) 
			if ((records[i].tagName=='INPUT') && (records[i].value!=record_id)) {
				records[i].checked=false;
				records[i].parentNode.parentNode.setAttribute('class', 'gridRecord');
			}
	}
	var nb_selected=0;
	for (i = 0; i < records.length; i++) 
		if ((records[i].tagName=='INPUT') && ((records[i].value==record_id) || records[i].checked)) {
			records[i].checked=true;
			nb_selected++;
			records[i].parentNode.parentNode.setAttribute('class', 'gridRecord selected');
		}
	var button_table=document.getElementsByName("BUTTON_"+gridname)[0];
	if (button_table!=null) {
	      var button_tbody=button_table.firstChild;
	      var button_lines=button_tbody.childNodes;
	      for (i = 0; i < button_lines.length; i++) {
		      var button_item=button_lines[i].firstChild.firstChild;
		      if ((button_item!=null) && (button_item.getAttribute('unique')=='0')) {
			      if (nb_selected==1)
				      button_item.setAttribute('class','ACTION');
			      else
				      button_item.setAttribute('class','ACTIONDISABLED');
		      }
		      if ((button_item!=null) && (button_item.getAttribute('unique')=='2')) {
			      if (nb_selected>1)
				      button_item.setAttribute('class','ACTION');
			      else
				      button_item.setAttribute('class','ACTIONDISABLED');
		      }
	      }
	}	
}

function testIfCorrectExt(obj,filters) {
	var reg=new RegExp(";", "g");
	var filter_list=filters.split(reg);
	if (filter_list.length==0)
		return true;
	var file_ext="."+obj.value.split('.').reverse()[0];
	var result=false;
	for(i=0;i<filter_list.length;i++) {
		if (file_ext == filter_list[i])
			result=true;
	}
	return result;
}

function changeVisibility(numDisplay)
{
	var index=1;
	var loop=true;
    while (loop) {
        header_name = 'tabheader' + index;
        body_name = 'tabbody' + index;
        if (numDisplay==index) {
            var new_style = 'table-row';
            var new_class = 'TAB_SELECT';
        } else {
            var new_style = 'none';
            var new_class = 'TAB_UNSELECT';
        }
        var header_element = document.getElementById(header_name);
		if (header_element!=null)
		{
			var div_element=header_element.firstChild;
			div_element.setAttribute('class',new_class);

			var body_name_list = document.getElementsByName(body_name);
			for (var i = 0; i < body_name_list.length; i++) 
				body_name_list[i].style.display = new_style;
			index++;
		}
		else
			loop=false;
    }
}

