// for editor field to save editor content in update action
var editor_field = new Array(); 


// other option foe select checkbox & radio
function choose_other_option(this_field, other_field, type){
	var other_val = this_field.value;
	var other_elem_tr = document.getElementById(other_field + "_other");
	var other_elem = document.getElementById(other_field + "_id");
	var show_hide = (navigator.userAgent.toLowerCase().indexOf("msie") != -1 ? "block" : "table-row");
	var show_hide_val=empty_other=0;
	
	switch(type){
		case 'radio':
				empty_other	= 1;
				show_hide_val = (other_val==-2 ? 1 : 0);;
			break;
		case 'check':	
				show_hide_val = (document.getElementById(other_field + "_other_id").checked ? 1 : 0);
			break;
		case 'select':
				empty_other = 1;
				show_hide_val = (other_val==-2 ? 1 : 0);
			break;
		case 'multi-select':
			   	for (var i=0; i < this_field.options.length; i++){
			   		if (this_field.options[i].selected && this_field.options[i].value == -2){
		   				show_hide_val = 1
		   				break;
			   		}
			   	}
			break;
	}			
	
	if(show_hide_val){
		other_elem_tr.style.display = show_hide;
	}
	else{
		if(1||empty_other)
			other_elem.value = "";
		other_elem_tr.style.display = "none";
	}
}

// in case of multi actions delete/insert ...
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
   	var answer = confirm((type1=="multi_delete" ? "Are you sure to delete these items?" : "Are you sure ?"))
	if (answer){
		
	   	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 choose items");
   		return flag;
	}
	
	else{
   		//alert("Please choose items");
   		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;
}

// check the file size before send him in post to not get a error message
function CheckFileSize()
{
   	var objSize = new ActiveXObject("Scripting.FileSystemObject");
  		elem = eval("form_sys.elements[\"form[mb_file]\"]");
   	var strFileName = objSize.getFile(elem.value);
   	var SizeOfFile = strFileName.size;
   	return SizeOfFile > 8300000 ? true : false;
}

// this function run when user click submit
function submit_form(){	
	var field_list = document.form_sys.form_sys_field_list.value;
	var field_list_arr = field_list.split(" ");
	var str = "", text="";
	
	if (!editors_was_loaded && editor_exist && has_iframe_editor){
	   alert("Please wait while editor is loaded");
       return false;
    }
    
	// in the feutere suport in this checking when we have in the form file field
	if(0 && CheckFileSize())
	{
		alert("file too large")
		return false;
	}

	// case i want to send form without all checks
	if (document.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; i<field_list_arr.length; i++)
	{
		elem = eval("document.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("document.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;
				}
			}
		}
	}

	for(i=0;i<editor_field.length;i++)
	{
		// editor element (either iframe or popup)
		editor_elem_type = eval("editor_iframe_" + editor_field[i]+"_type");		

        if (editor_elem_type=="iframe")
    		editor_elem = eval(document.getElementById("editor_iframe_" + editor_field[i]));
        else // is a popup
			editor_elem = eval("editor_iframe_" + editor_field[i]);

		// check if the popup window is open
		if (editor_elem_type=="popup"){
		    // open 
            if (typeof(editor_elem)=="object"){
                
            }
            else{ // never opened
                if (editor_elem==undefined){
                    drop_keys_from_field_list(editor_field[i]);
                    continue;
                }
            }
		}

		text = "";
		// if it's an iframe
		if (editor_elem.contentWindow){
			//editor_elem.contentWindow.editSave();
			text = editor_elem.contentWindow.own_set_editor_value(editor_field[i]);
			elem_e = eval("form_sys.elements[\"form["+editor_field[i]+"]\"]");
			elem_e.value = text;
		}
		else // popup editor
		{
			//editor_elem.editSave();
			text = editor_elem.own_set_editor_value(editor_field[i]);
			elem_e = eval("form_sys.elements[\"form["+editor_field[i]+"]\"]");
			elem_e.value = text;
			// close the popup window			
			editor_elem.close();
		}
	}

	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;
}

// delete record
function delete_record(id, name, link, label){
   var str = label ? label : "האם אתה בטוח שברצונך למחוק את הרשומה ?";
   if (confirm(str)){
      location = link+'&REC_ID['+name+']='+id;
   }
}

/*----------------------------------------------------------------
--------------------- depands select functions -------------------
----------------------------------------------------------------*/

// 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;
      }
   }
}

/*----------------------------------------------------------------
-------------------- external select functions -------------------
----------------------------------------------------------------*/

// 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+"][]']");
   if (obj.type=="select-one"){
      while (obj.options[0] != null){
         obj.options[0] = null;
      }
      obj.options[0] = new Option(text, 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, value);
      }
   }
}

/*----------------------------------------------------------------
-------------------- dialog box functions ------------------------
----------------------------------------------------------------*/

// 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;

   }
   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;
}

/*----------------------------------------------------------------
----------------------- Chcek Box Convert ------------------------
----------------------------------------------------------------*/
// Convert check box to image. Support tri-stats.
// stat = 2 or 3 stats. Values of checkbox 0/1/2.

function Checkboxes(stat){
	function img_onclick(){
		input = this.nextSibling;
		input.checked = 1;
		tmp = parseInt(input.value) + parseInt(stat);

		if(tmp==2 || tmp==4) tmp='C' ; 
		else if(tmp==5 || (tmp==3 && stat==2 )) tmp='U'; 
		else tmp='N';

		if (tmp=='U'){
			this.title = 'Unchecked';
			this.src = '/admin/_media/global/unchecked.gif';
			input.checked = 0;
		}else
		if (tmp=='C'){
			this.title = 'Checked';
			this.src = '/admin/_media/global/checked.gif';
			input.checked = 1;
		}else{
			this.title = 'NoneChecked';
			this.src = '/admin/_media/global/nonechecked.gif';
			input.checked = 1;
		}
		
		if (input.value == 0 || !input.value){
			input.value = 1;
		}else
		if (input.value == 1){
			input.value = stat==2 ? 0 : 2;
		}else
		if (input.value == 2){
			input.value = 0;
		}
	}

	function input_onclick(){
		this.previousSibling.onclick();
	}
	
	var img, input,	inputs = document.getElementsByTagName('input'), i = inputs.length,tmp;
	do{
		if (/checkbox/.test((input = inputs[--i]).type)){
			input.style.position = 'absolute';
			input.style.left = '-3000px';
			input.parentNode.insertBefore((img = document.createElement('img')), input);
			img.title = input.checked ? 'Checked' : 'Unchecked';
			img.src = input.checked ? '/admin/_media/global/checked.gif' : '/admin/_media/global/unchecked.gif'
			input.value = input.checked ? (stat==3 ? 2 :1) : 0;
			img.onclick = img_onclick;
			input.onclick = input_onclick;
		}
	}while (i);
}

/*----------------------------------------------------------------
----------------------- select Box Convert ------------------------
----------------------------------------------------------------*/

function selectbox_open_div(id)
{
	var options_div = document.getElementById("options_div"+id);
	if (options_div.style.visibility == "visible")
		options_div.style.visibility = "hidden";
	else
		options_div.style.visibility = "visible";
}

function item_selected (id, item_number, opts)
{
	document.getElementById('item').value=opts[item_number];
	selectbox_open_div(id);
}

function add_selectbox (id, opts)
{
	buff = '<table cellspacing="0" cellpadding="0" border="0" style="border:1px solid #000000;">\
				<tr>\
					<td>\
						<input type="text" id="item" style="height:' + selectbox_height + ';width:' + input_width + ';border-width:0px" readonly /><br />\
						<table cellspacing="0" cellpadding="0" border="0" id="options_div'+id+'" class="options_tbl" style="width:' + (selectbox_width) + '">';
	for (count in opts){
	//for(count=0; opts[count]; count++)
		buff +=				'<tr><td class="option_unselected" onmouseout="this.className=\'option_unselected\'" onmouseover="this.className=\'option_selected\'" onmouseup="item_selected(\"'+id+'\", ' + count + ', '+opts+')"><nobr>' + opts[count] + '</nobr></td></tr>';
	}
	buff +=				'</table>\
					</td>\
					<td><input type="button" class="selectbox_button" style="height:' + (selectbox_height) + ';width:' + (button_width) + '" onclick="selectbox_open_div(\"'+id+'\")" /></td>\
				</tr>\
			</table>';
	document.write( buff );
}


/*----------------------------------------------------------------
------------------ Multi External Select Order -------------------
----------------------------------------------------------------*/

// 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){

		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
