var editor_field_name = "";
var allFormElemWasLoad = -1;

// show & hide quick search div
function show_qsearch_div(what){
	var show_div = document.getElementById("fmListQsearchShowDiv");
	var hide_div = document.getElementById("fmListQsearchHideDiv");
	var qsearch_div = document.getElementById("fmListQsearchDiv");		
	if (what){
		show_div.style.display = "none";
		hide_div.style.display = "block";
		qsearch_div.style.display = "block";				
	}
	else{
		show_div.style.display = "block";
		hide_div.style.display = "none";
		qsearch_div.style.display = "none";					
	}
}

// in case of multi delete/insert and other multi actions
function submit_multi_form(type1,type2){
	// set multi action
   	form_sys.form_sys_multi_action.value = type1;
   	form_sys.form_sys_multi_action_sub.value = type2;
   	// check if user check at list one element
   	for (i=0, flag=false; i<form_sys.elements.length&&!flag; i++){
      	elem = eval("form_sys.elements["+i+"]");
      	if ((elem.name.indexOf("multi[")==0)){
         	if (elem.checked == true)
            	return true;
      	}
   	}
   	alert("Please select record/s");
   	return flag;
}

function submit_multi_check_form(){
	var argv = submit_multi_check_form.arguments;
	var confirm_msg = multi_check_confirm_msg;
	action_val = argv[0];
	msg_type = argv[1]==undefined? "" : argv[1] ;

	var form = document.getElementById("form_sys_id");
	var form_check = document.getElementById("form_sys_multi_check");		
	var buffer = Array(), flag=false, j;
	form_check.multi_check_action.value = action_val;
	for (i=0, j=0; i<form.elements.length; i++){
		elem = eval("form.elements["+i+"]");
		if ((elem.name.indexOf("multi_check[")==0)){			
    	   	if (elem.checked==true){
	      		flag=true;
	       		buffer[j++] = elem.value;
    	   	}
		}
  	}
  	
	switch(msg_type){
		case "delete":
				confirm_msg = multi_check_confirm_msg_delete;
			break;
		case "block":
				confirm_msg = multi_check_confirm_msg_block;
			break;
		case "cancel":
				confirm_msg = multi_check_confirm_msg_cancel;
			break;			
	}
	if (msg_type=="none" && flag){
		form_check.multi_check_data.value = buffer.join(" ");		
		form_check.submit();				
	}
	else{
		if (flag && confirm(confirm_msg)){				
			form_check.multi_check_data.value = buffer.join(" ");		
			form_check.submit();		
		}	
		else{
			if (!flag){
				alert(multi_check_noselected_msg);
			}
		}
	}
}

function set_multi_check_all(flag){
	var form = document.getElementById("form_sys_id");
	for (i=0; i<form.elements.length; i++){
		elem = eval("form.elements["+i+"]");
		if ((elem.name.indexOf("multi_check[")==0)){
	   	elem.checked = flag;
		}
  	}	
	return false;
}

function count_textarea_words(me, span, max){
	var span_elem = document.getElementById("count_word_"+span);

	if (me.value.length > max)
		me.value = me.value.substring(0, max);	
	else
		span_elem.innerHTML = max - me.value.length;
}

// this function run when user click submit
function submit_form(){
	if (allFormElemWasLoad==0){
		alert("Page is loading.\nplease wait...");
		return false;
	}

   	var field_list = form_sys.form_sys_field_list.value;
   	var field_list_arr = field_list.split(" ");
   	var str = "";
   	var editor_field_name_arr = new Array(); 

	// case i want to send form without all checks
	if (form_sys.form_submit_type!=undefined){
		if (form_sys.form_submit_type.value==1){
			return true;
		}
	}
   	
   // set the path elemnet for file element which in file_type=link
   for (i=0, j=0, n=0; i<field_list_arr.length; i++){
      elem = eval("form_sys.elements[\"form["+field_list_arr[i]+"]\"]");
      if (elem!=undefined){
         if (elem.path!=undefined){
            elem_path = eval("form_sys.elements[\"form["+field_list_arr[i]+"_path]\"]");
            elem_path.value = elem.value;
            str += "\n" + elem_path.value;
         }
      }
      else{ // maybe its multi
         elem = eval("form_sys.elements[\"form["+field_list_arr[i]+"][]\"]");
         if (elem!=undefined){
            if (elem.ext_select){
               for (j = 0; j < elem.options.length; j++){
                  elem.options[j].selected = true;
               }
            }
         }
      }

		// handle editor field to get the content from editor 
		if(editor_field_name!=undefined){
			if(field_list_arr[i]==editor_field_name)
				editor_field_name_arr[n++] = field_list_arr[i];
		}
   	}

	for(i=0; i<editor_field_name_arr.length; i++){
		if (trim(editor_field_name_arr[i]))
	   		getArticle(editor_field_name_arr[i]);
	}

	return true;
}

function drop_keys_from_field_list(word){
    var fields_list = eval("form_sys.elements[\"form_sys_field_list\"]");  
    var total = fields_list.value;
    var arr = total.split(" ");
    var new_arr = new Array();
    for(i=0,j=0;i<arr.length;i++){
        if (arr[i]!=word)
            new_arr[j++] = arr[i];
    }
    total = new_arr.join(" ");
    fields_list.value = total;
}


// run in onchange action in two selects depends
function change_son_select(field, my_value, form){
   field_init_val = eval("depand_"+field+"_init");
   arr_id = eval("depand_"+field+"_id");
   arr_name = eval("depand_"+field+"_name");
   son_obj =  eval("form.elements[\"form["+field+"]\"]");

   while (son_obj.options[0] != null)
      son_obj.options[0] = null;
   if (!my_value || arr_id[my_value]==undefined)
      return;
   for (var i = 0; i < arr_id[my_value].length; i++){
      son_obj.options[i] = new Option(arr_name[my_value][i], arr_id[my_value][i]);
      if (field_init_val==arr_id[my_value][i]){
         son_obj.options[i].selected = true;
      }
   }
}

//////////////////////////////////////////
// in ext-select when remove items
function ext_remove(form, me_name){
   obj = eval ("form.elements[\"form["+me_name+"][]\"]");
   var check_arr_id = new Array;
   var check_arr_text = new Array;
   for (i=0; i<obj.length; i++){
      if (obj[i].value){
         if(obj[i].selected==false){
            check_arr_id.push(obj[i].value);
            check_arr_text.push(obj[i].text);
         }
      }
   }
   while (obj.options[0] != null)
      obj.options[0] = null;
   for (var i = 0; i < check_arr_id.length; i++){
      obj.options[i] = new Option(check_arr_text[i], check_arr_id[i]);
   }
   return false;
}

function ext_add_option(name, value, text){// ,form_name){
   var i;
   //obj = eval(form_name+".elements['form["+name+"][]']");
   obj = eval("form_sys.elements['form["+name+"][]']");
  	if(obj==undefined){
     	return;
  	}

   if (obj.type=="select-one"){
      while (obj.options[0] != null){
         obj.options[0] = null;
      }
      obj.options[0] = new Option(text.replace(/@@/ig, "'"), value);
   }
   else{
      // check there is not exists already
      for (i = 0, flag=0; i < obj.options.length; i++){
         if (obj.options[i].value==value){
            flag=1;
            break;
         }
      }
      if (!flag){
         max = obj.options.length;
         obj.options[max] = new Option(text.replace(/@@/ig, "'"), value);
      }
   }
}

// delete record
function delete_record(id, name, link, label){
   var str = label ? label : "��� ��� ���� ������� ����� �� ������ ?";
   if (confirm(str)){
      location = link+'&REC_ID['+name+']='+id;
   }
}

// delete record via dialog box
function delete_record_via_dialog(id, name, link){
	var callerWindowObj = dialogArguments;
  	callerWindowObj.location = link+'&REC_ID['+name+']='+id;
  	window.close();
}

// for dialog box in case of confirm
function confirm_dialog_box(act, arr){
   var callerWindowObj = dialogArguments;
   switch(act){
      case "restore_project":
            callerWindowObj.restore(arr[1]);
         break;
      case "duplicate_pro":
      case "duplicate_mt":
      case "duplicate_of":
      case "duplicate_qu":
      case "duplicate_bud":
            callerWindowObj.duplicated(arr[1]);
         break;
		default:
			callerWindowObj.location = arr[3]+'&REC_ID['+arr[2]+']='+arr[1];
   }
   window.close();
}

/* 	
open dialog box
---------------
 	disable_bg 		- 1/0, 1-background window will be disabled, 0 - will be enable
	di_is_common 	- 1/0. if 1 then this is common action that build in, otherwise this is spesific script.
	di_what 		- if di_is_common=1 - common action name/mod, otherwise this is the path of spesific script declare by the programer.
	di_action 		- if di_is_common=1 - change label of dialog from default, otherwise action name in switch case in spesific script.
	di_extra 		- extraparams get in array to inner use in script
	di_param 		- in which way the dialog will be open
	
	for debuging use window.open line
*/
function open_dialog_box(disable_bg, di_is_common, di_what, di_action, di_extra, di_param){
  	if (di_extra){
     	var di_extra_str = escape(di_extra);
  	}
  	di_param = di_param ? di_param : "dialogWidth:300px; dialogHeight:300px;center:yes;scroll:off;status:no;";
 	if (disable_bg){
		if(1)
      		d_res = window.showModalDialog("?"+_var_lang_label+"="+_var_lang_+"&"+_var_mod_label+"=_prog&"+_var_act_label+"=dialog_box&di_is_common="+di_is_common+"&di_what="+di_what+"&di_action="+di_action+"&di_extra="+di_extra_str, window, di_param);
		else // open as regular window for debuging
      		d_res = window.open("?"+_var_lang_label+"="+_var_lang_+"&"+_var_mod_label+"=_prog&"+_var_act_label+"=dialog_box&di_is_common="+di_is_common+"&di_what="+di_what+"&di_action="+di_action+"&di_extra="+di_extra_str);
  	}
  	else{
		d_res = window.showModelessDialog("?"+_var_lang_label+"="+_var_lang_+"&"+_var_mod_label+"=_prog&"+_var_act_label+"=dialog_box&di_is_common="+di_is_common+"&di_what="+di_what+"&di_action="+di_action+"&di_extra="+di_extra_str, window, di_param);
   }
   return false;
}

// start sort ext-select functions
function sort_ext_select(what, id){
	var sel = document.getElementById(id);
	var order_list = Array(), str="";
	var choose = sel.selectedIndex;
	if (choose==-1){
		alert('Please select on option first');
		return;
	}
	order_list = get_select_options(id);
	order_list = set_new_order(id, order_list, what, sel.options[choose].value);
	set_select_order_according_arr(id, order_list, sel.options[choose].value);
}

function set_new_order(id, order_list, what, the_one){
	var sel = document.getElementById(id);		
	var first = sel.options[0].value;
	var last = sel.options[sel.options.length-1].value;
	var new_list = new Array();
	
	if  ((the_one==first&&what=="up")||(the_one==last&&what=="down")){
		return order_list;
	}
	var num, tmp, cur_index, i=0;
	var tmp_arr = new Array();

	for (index in order_list){
		if (index==the_one)
			cur_index = i;
		tmp_arr[i++] = index;
		
	}	
	num = what=="up" ? -1 : 1;
		
	tmp = tmp_arr[cur_index+num];
	tmp_arr[cur_index+num] = tmp_arr[cur_index];
	tmp_arr[cur_index] = tmp;

	for (i=0;i<tmp_arr.length;i++){
		new_list[tmp_arr[i]] = order_list[tmp_arr[i]];
	}
	return new_list;
}

function get_select_options(id){
	var sel = document.getElementById(id);
	var order_list = Array(), val, key, i, str="";
	for(i=0;i<sel.options.length;i++){
		key = sel.options[i].value;
		val = sel.options[i].text;	
		order_list[key] = val;
	}
	return order_list;
}

function set_select_order_according_arr(id, order_list, active_option){
	var sort_sel = document.getElementById(id);
	var str = "";
	for(var i=0;i<sort_sel.options.length;i++)
		sort_sel.options[0]= null;
	i = 0;
	for (index in order_list){
		str += index+" : "+order_list[i]+"\n";
		sort_sel.options[i]=new Option(order_list[index], index);
		if (active_option==index)
			sort_sel.options[i].selected = true;			
		i++;
	}		
}
// End sort ext-select functions

