/**
Symfony 1.0 changed the element ids from module[object_id] to
module_object_id
*/
function rewrite_service_select(element)
{
    customer_type_id = element.options[element.selectedIndex].value;
	var url = '/index.php/job_process_line_item/serviceSelect';
    var job_process_id = $F('job_process_id');
	var pars = 'customer_type_id=' + customer_type_id + '&job_process_id=' + job_process_id;
	
       var myAjax = new Ajax.Updater('service_select_div', 
                                      url, 
                                      { method: 'get', parameters: pars });
}

function rewrite_status_select(element)
{
    job_process_id = element.options[element.selectedIndex].value;
	var url = '/index.php/job_process_status_change_event/statusSelect';
	var pars = 'job_process_id=' + job_process_id;
	
       var myAjax = new Ajax.Updater('status_select_div', 
                                      url, 
                                      { method: 'get', parameters: pars });
}

   var calling_document;
   var current_dialog;
   
	function add_option_to_select(new_option, select_element_id)
	{
	  var option_elements = new_option.split(":");
	  original_select = calling_document.getElementById(select_element_id);
	  original_select.options[original_select.options.length] = new Option(option_elements[1], option_elements[0], false, true);
	}
	
	/**
* Function : dump()
* Arguments: The data - array,hash(associative array),object
*    The level - OPTIONAL
* Returns  : The textual representation of the array.
* This function was inspired by the print_r function of PHP.
* This will accept some data as the argument and return a
* text that will be a more readable version of the
* array/hash/object that is given.
*/
function dump(arr,level) {
var dumped_text = "";
if(!level) level = 0;

//The padding given at the beginning of the line.
var level_padding = "";
for(var j=0;j<level+1;j++) level_padding += "    ";

if(typeof(arr) == 'object') { //Array/Hashes/Objects
 for(var item in arr) {
  var value = arr[item];
 
  if(typeof(value) == 'object') { //If it is an array,
   dumped_text += level_padding + "'" + item + "' ...\n";
   dumped_text += dump(value,level+1);
  } else {
   dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
  }
 }
} else { //Stings/Chars/Numbers etc.
 dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
}
return dumped_text;
} 
   function post_named_response()
   {
       var win = Windows.focusedWindow;
       var data = Form.serialize(win.getId());
       var select_id = Dialog.getModule() + "_" + Dialog.getRelatedName() + "_id";
       //alert("select_id: " + select_id);
	   var opt = {
	      method: 'post',
	      postBody: data,
	      onSuccess: function(originalRequest) {
	        add_option_to_select(originalRequest.responseText, select_id);
	        Dialog.closeInfo();
	      }
	   }
	
	   var url_text = "/index.php/" + Dialog.getRelatedModule() + "/create?pwc=1";
	   new Ajax.Request(url_text, opt);
   }
    
   function add_related_named_object(module_p, related_module_p, related_name_p)
   {
       calling_document = document;
   
	   var opt = {
		    method: 'get',
		    on404: function(t) {
		        alert('Error 404: location "' + t.statusText + '" was not found.');
		    },
		    // Handle other errors
		    onFailure: function(t) {
		        alert('Error ' + t.status + ' -- ' + t.statusText);
		    }
	    }
	    
	    var url_text = "/index.php/" + related_module_p + "/create?pwc=1";
	    
	   	Dialog.confirm({url: url_text, options: opt}, 
	   	               {windowParameters: {resizable: true, className: "dialog", width: 600, closable: true },
	   	               okLabel: "Save",
	   	               ok: post_named_response,
	   	               module: module_p,
	   	               related_module: related_module_p,
	   	               related_name: related_name_p});
   }
   
   function post_response_update_select()
   {
       var win = Windows.focusedWindow;
       var data = Form.serialize(win.getId());
       var select_id = Dialog.getModule() + "_" + Dialog.getRelatedModule() + "_id";
	   var opt = {
	      method: 'post',
	      postBody: data,
	      onSuccess: function(originalRequest) {
	        add_option_to_select(originalRequest.responseText, select_id);
	        Dialog.closeInfo();
	      }
	   }
	
	   var url_text = "/index.php/" + Dialog.getRelatedModule() + "/create?pwc=1";
	   new Ajax.Request(url_text, opt);
   }
    
   function add_related_object(module_p, related_module_p)
   {
       calling_document = document;
   
	   var opt = {
		    method: 'get',
		    on404: function(t) {
		        alert('Error 404: location "' + t.statusText + '" was not found.');
		    },
		    // Handle other errors
		    onFailure: function(t) {
		        alert('Error ' + t.status + ' -- ' + t.statusText);
		    }
	    }
	    
	    var url_text = "/index.php/" + related_module_p + "/create?pwc=1";
	    
	   	Dialog.confirm({url: url_text, options: opt}, 
	   	               {windowParameters: {resizable: true, className: "dialog", width: 600, closable: true },
	   	               okLabel: "Save",
	   	               ok: post_response_update_select,
	   	               module: module_p,
	   	               related_module: related_module_p});
   }
   
   function post_response_refresh()
   {
       var win = Windows.focusedWindow;
       var data = Form.serialize(win.getId());
       var sURL = unescape(window.location.pathname);
	   var opt = {
	      method: 'post',
	      postBody: data,
	      onSuccess: function(originalRequest) {
            window.location.replace( sURL );
	        Dialog.closeInfo();
	      }
	   }
	
	   var url_text = "/index.php/calendar_event/create?pwc=1";
	   new Ajax.Request(url_text, opt);
   }
    
   function add_event()
   {
       calling_document = document;
   
	   var opt = {
		    method: 'get',
		    on404: function(t) {
		        alert('Error 404: location "' + t.statusText + '" was not found.');
		    },
		    // Handle other errors
		    onFailure: function(t) {
		        alert('Error ' + t.status + ' -- ' + t.statusText);
		    }
	    }
	    
	    var url_text = "/index.php/calendar_event/create?pwc=1";
	    
	   	Dialog.confirm({url: url_text, options: opt}, 
	   	               {windowParameters: {resizable: true, className: "dialog", width: 600, closable: true },
	   	               okLabel: "Save",
	   	               ok: post_response_refresh});
   }
    
   function add_related_object_contact(module_p, related_module_p)
   {
       calling_document = document;
   
	   var opt = {
		    method: 'get',
		    on404: function(t) {
		        alert('Error 404: location "' + t.statusText + '" was not found.');
		    },
		    // Handle other errors
		    onFailure: function(t) {
		        alert('Error ' + t.status + ' -- ' + t.statusText);
		    }
	    }
	    
        var customer_select = document.getElementById('customer_communication_customer_id');
        var customer_id = customer_select.options[customer_select.options.selectedIndex].value;
	    var url_text = "/index.php/" + related_module_p + "/create?pwc=1&customer_id=" + customer_id;
	    
	   	Dialog.confirm({url: url_text, options: opt}, 
	   	               {windowParameters: {className: "dialog", width: 518, height: 660, closable: true },
	   	               okLabel: "Save",
	   	               ok: post_response,
	   	               module: module_p,
	   	               related_module: related_module_p});
   }
   
   function process_clock_out()
   {
	   var opt = {
	      method: 'post',
	      //postBody: data,
	      onSuccess: function(originalRequest) { 
	        $('status_msg').innerHTML=originalRequest.responseText; 
	        $('status_msg').show(); 
	        Windows.focusedWindow.updateHeight();
	        setTimeout('Dialog.closeInfo()', 500);
	      }
	   }
	
	   var url_text = "/index.php/time_clock_event/clockOut";
	   new Ajax.Request(url_text, opt);
   }
   
   function process_clock_in()
   {
	   var opt = {
	      method: 'post',
	      //postBody: data,
	      onSuccess: function(originalRequest) {
	        $('status_msg').innerHTML=originalRequest.responseText; 
	        $('status_msg').show(); 
	        Windows.focusedWindow.updateHeight();
	        setTimeout('Dialog.closeInfo()', 500);
	      }
	   }
	
	   var url_text = "/index.php/time_clock_event/clockIn";
	   new Ajax.Request(url_text, opt);
   }
   
   function get_clock_status()
   {
	   var opt = {
	      method: 'post',
	      onSuccess: function(originalRequest) {
	        var str = new String(originalRequest.responseText);
	        $('status_msg').innerHTML = str;  
	        $('status_msg').show(); 
	        Windows.focusedWindow.updateHeight();
	        if(str.search(/not logged in/i) != -1){
	          setTimeout('Dialog.closeInfo()', 750);
	          document.location.href='/index.php/employee/login'
	        }
	        else if(str.search(/out/i) == -1){
	          $('clock_out').disabled = false;
	          $('more_options').disabled = false;
	        }
	        else {
	          $('clock_in').disabled = false;
	          $('more_options').disabled = false;
	        }
	      }
	   }
	
	   var url_text = "/index.php/time_clock_event/getStatusHeader";
	   new Ajax.Request(url_text, opt);
   }
    
   function show_time_clock()
   {   
       Dialog.info($('login').innerHTML, 
                      {windowParameters: {className:"dialog", width:258, closable: true}}
       );
       get_clock_status();
   }
    
   function display_filter_win()
   {   
       var filter_div = document.getElementById('sf_admin_bar');
       if(filter_div.childNodes.length > 1) {
	       contentWin = new Window('content_win', {hideEffect:Element.hide, showEffect:Element.show, minWidth: 395, maximizable: false, closable: false}) 
	       contentWin.setContentAdminContainer('sf_admin_bar', true, true) 
	       contentWin.toFront(); 
	       contentWin.setDestroyOnClose(); 
	       contentWin.setLocation(225, 855);
	       contentWin.show();
       }
   }
    
   function add_customer_old()
   {
   
   var opt = {
    // Use POST
    method: 'get',
    // Handle 404
    on404: function(t) {
        alert('Error 404: location "' + t.statusText + '" was not found.');
    },
    // Handle 299
    on299: function(t) {
        alert('Success 299: ' + t.statusText);
    },
    // Handle other errors
    onFailure: function(t) {
        alert('Error ' + t.status + ' -- ' + t.statusText);
    }
}
       var currentTime = new Date();
	   var id = "window_id_" + currentTime.getTime();
	   win = new Window(id, {className: "dialog", width:490, height:750, zIndex: 100, resizable: true, title: "Add Customer", draggable:true});
	   win.setAjaxContent("/index.php/customer/createJSW", opt, true, true);
	   //win.setDestroyOnClose();
	   //it appears that an embedded form, submitted, will close the window, but not generate any events that would be reported to the observer.
/*   	var myObserver = {
   		onDestroy: function(eventName, win1) { 
   			    alert(eventName + " on " + win1.getId());
   				debug(eventName + " on " + win1.getId());
   				if (win1 == win) {
   				    win.submitForm();
   					reload_parent();
   					Windows.removeObserver(this); 
   					}
   				debug(eventName + " on " + win1.getId());
   				},
   		onClose: function(eventName, win1) { 
   			    alert(eventName + " on " + win1.getId());
   				debug(eventName + " on " + win1.getId());
   				if (win1 == win) {
   				    win.submitForm();
   					reload_parent();
   					Windows.removeObserver(this); 
   					}
   				debug(eventName + " on " + win1.getId());
   				},
   		onHide: function(eventName, win1) { 
   			    alert(eventName + " on " + win1.getId());
   				debug(eventName + " on " + win1.getId());
   				if (win1 == win) {
   				    win.submitForm();
   					reload_parent();
   					Windows.removeObserver(this); 
   					}
   				debug(eventName + " on " + win1.getId());
   				},
   		onShow: function(eventName, win1) { 
   			    alert("onShow:" + eventName + " on " + win1.getId());
   				debug(eventName + " on " + win1.getId());
   				if (win1 == win) {
   				    win.submitForm();
   					reload_parent();
   					Windows.removeObserver(this); 
   					}
   				debug(eventName + " on " + win1.getId());
   				},
   		onFocus: function(eventName, win1) { 
   			    alert("onFocus:" + eventName + " on " + win1.getId());
   				debug(eventName + " on " + win1.getId());
   				if (win1 == win) {
   				    win.submitForm();
   					reload_parent();
   					Windows.removeObserver(this); 
   					}
   				debug(eventName + " on " + win1.getId());
   				} ,
   		onSubmit: function(eventName, win1) { 
   			    alert(eventName + " on " + win1.getId());
   				debug(eventName + " on " + win1.getId());
   				if (win1 == win) {
   				    win.submitForm();
   					reload_parent();
   					Windows.removeObserver(this); 
   					}
   				debug(eventName + " on " + win1.getId());
   				} 
   			};
   	Windows.addObserver(myObserver);
   	*/
   }

function repopulate_glass_type_select(select)
{
  select4 = document.getElementById('product_item[glass4_id]');
  for(x=0;x<select4.options.length; x++){
      select.options[x] = new Option(select4.options[x].text, select4.options[x].value);
  }
}

function remove_option_from_select(option_value, select)
{
  for(x=0;x<select.options.length; x++){
    if(select.options[x].value == option_value) {
      select.options[x] = null;
      return;
    }
  }
}

function modify_glass_option_selects(select)
{
  repopulate_glass_type_select(select);
  if(select.name == 'product_item[glass1_id]')
  {
    select2 = document.getElementById('product_item[glass2_id]'); 
    option_value = select2.options[select2.options.selectedIndex].value;
    if(option_value != "") {
      remove_option_from_select(option_value, select);
    }
    select3 = document.getElementById('product_item[glass3_id]'); 
    option_value = select3.options[select3.options.selectedIndex].value;
    if(option_value != "") {
      remove_option_from_select(option_value, select);
    }
  }
  else if(select.name == 'product_item[glass2_id]')
  {
    select1 = document.getElementById('product_item[glass1_id]'); 
    option_value = select1.options[select1.options.selectedIndex].value;
    if(option_value != "") {
      remove_option_from_select(option_value, select);
    }
    select3 = document.getElementById('product_item[glass3_id]'); 
    option_value = select3.options[select3.options.selectedIndex].value;
    if(option_value != "") {
      remove_option_from_select(option_value, select);
    }
  }
  else if(select.name == "product_item[glass3_id]")
  {
    select1 = document.getElementById('product_item[glass1_id]'); 
    option_value = select1.options[select1.options.selectedIndex].value;
    if(option_value != "") {
      remove_option_from_select(option_value, select);
    }
    select2 = document.getElementById('product_item[glass2_id]'); 
    option_value = select2.options[select2.options.selectedIndex].value;
    if(option_value != "") {
      remove_option_from_select(option_value, select);
    }
  }
}

function display_custom_width_div(element)
{
  option = element.options[element.selectedIndex].text;
  el = document.getElementById('sidelite_custom_width');
  if(option == 'Other') {
      el.style.display = 'block';
  }
  else {
      el.style.display = 'none';
  }
}

function display_unit_type_div(element)
{
  option = element.options[element.selectedIndex].text;
  element_unit_type = document.getElementById('unit_type');
  element_unit_type_select = document.getElementById('product_item[unit_type_id]');
  if(option != 'Single') {
      element_unit_type.style.display = 'block';  
      display_patio_hinge_div(element_unit_type_select);
  }
  else {
      element_unit_type.style.display = 'none';
      hide_patio_hinge_div();
  }
}

function hide_patio_hinge_div()
{
  el = document.getElementById('patio_hinge');
  el.style.display = 'none';
}

function display_patio_hinge_div(element)
{
  option = element.options[element.selectedIndex].text;
  el = document.getElementById('patio_hinge');
  if(option == 'Patio') {
      el.style.display = 'block';
  }
  else {
      el.style.display = 'none';
  }
}

function display_side_to_temper_div(element)
{
  option = element.options[element.selectedIndex].text;
  el = document.getElementById('side_to_temper');
  if(option != 'Single') {
      el.style.display = 'block';
  }
  else {
      el.style.display = 'none';
  }
}

function display_admin_menu_div()
{
  el = document.getElementById('admin_menu');
  if(el.style.display == 'none') {
      el.style.display = 'block';
  }
  else {
      el.style.display = 'none';
  }
}

function display_custom_ht_div(element)
{
  option = element.options[element.selectedIndex].text;
  el = document.getElementById('transom_custom_ht');
  if(option == 'Other') {
      el.style.display = 'block';
  }
  else {
      el.style.display = 'none';
  }
}

function display_replacement_dims_div(box)
{
  e2 = document.getElementById('replacement_dims'); 
  if(box.checked == true) {
      e2.style.display = 'block';
  }
  else {
      e2.style.display = 'none';
  }
}

function hideAllMaterialDescriptions(){
tag = document.getElementsByTagName("div");
   for(x=0;x<tag.length; x++){
      div_id = tag[x].getAttribute('id');
      if(div_id && div_id.indexOf("material_description_") != -1){
         tag[x].style.display = "none";
      }
   }
}

function display_material_description_div(element)
{
  option_value = element.options[element.selectedIndex].value;
  el = document.getElementById('material_description_' + option_value);
  hideAllMaterialDescriptions();
  el.style.display = 'block';
}

function hideAllColorSets(){
tag = document.getElementsByTagName("div");
   for(x=0;x<tag.length; x++){
      div_id = tag[x].getAttribute('id');
      if(div_id && div_id.indexOf("color_") != -1){
         tag[x].style.display = "none";
      }
   }
}

function display_available_colors(element)
{
  option_text = element.options[element.selectedIndex].text;
  hidden_input_id = 'series_' + option_text;
  material_supplier = document.getElementById(hidden_input_id).value;
  e2 = document.getElementById('color_' + material_supplier);
  hideAllColorSets();
  e2.style.display = 'block';
}

function custom_trim_div_display(element)
{
  option = element.options[element.selectedIndex].text;
  el = document.getElementById('custom_trim');
  if(option == 'Other') {
      el.style.display = 'block';
  }
  else {
      el.style.display = 'none';
  }
}

function custom_jamb_width_div_display(element)
{
  option = element.options[element.selectedIndex].text;
  el = document.getElementById('custom_jamb_width');
  if(option == 'Other') {
      el.style.display = 'block';
  }
  else {
      el.style.display = 'none';
  }
}

function custom_sash_div_display(id)
{
  e2 = document.getElementById('product_item[sash_id]'); 
  option = e2.options[e2.selectedIndex].text;
  el = document.getElementById('custom_sash_Other');
  if(option == 'Other') {
      el.style.display = 'block';
  }
  else {
      el.style.display = 'none';
  }
}

function hide_div(div_name){
      el = document.getElementById(div_name);
      el.style.display = 'none';
}

function toggle_div(div_name){
      el = document.getElementById(div_name);
      if(el.style.display == "none" || el.className == "hidden"){
        el.style.display = "block";
        el.className = "";
      }
      else {
        el.style.display = "none";
      }
}

function toggle_divs(div1_name, div2_name){
      toggle_div(div1_name);
      toggle_div(div2_name);
}

function toggle_pile_attr_div(div_name){
      el = document.getElementById(div_name);
      if(el.style.display == 'none') {
        el.style.display = 'block';
      }
      else {
        el.style.display = 'none';
      }
}

function display_fax_number_specify_div(id){
      el = document.getElementById('fax_number_specify_div');
      el.style.display = 'block';
}
function hide_fax_number_specify_div(id){
      el = document.getElementById('fax_number_specify_div');
      el.style.display = 'none';
}

function display_contact_select_div(id){
      el = document.getElementById('contact_select_div');
      el.style.display = 'block';
}
function hide_contact_select_div(id){
      el = document.getElementById('contact_select_div');
      el.style.display = 'none';
}

function display_div_p_string(id, object_name, key_value){
      el = document.getElementById('type_' + id);
      hideAll();
      el.style.display = 'block';
      e2 = document.getElementById(object_name + '_class_key');
      e2.value = key_value;
} 

function display_div_p(id, object_name, key_value){
      el = document.getElementById('type_' + id.value);
      hideAll();
      el.style.display = 'block';
      e2 = document.getElementById(object_name + '_class_key');
      e2.value = key_value;
} 

function display_div(id){
      el = document.getElementById('type_' + id.value);
      hideAll();
      el.style.display = 'block';
      e2 = document.getElementById('customer_class_key');
      if(id.value == "Individual") {
        e2.value = "2";
      }
      else {
        e2.value = "1";
      }
} 

function display_named_div(name){
      el = document.getElementById(name);
      hideAll();
      el.style.display = 'block';
} 

function showAll(){
tag = document.getElementsByTagName("div");
   for(x=0;x<tag.length; x++){
      div_id = tag[x].getAttribute('id');
      if(div_id && div_id.indexOf("custom_sash_") != -1){
         tag[x].style.display = "block";
      }
   }
}

function hideAll(){
   tag = document.getElementsByTagName("div");
   for(x=0;x<tag.length; x++){
      div_id = tag[x].getAttribute('id');
      if(div_id && div_id.indexOf("type_") != -1){
         tag[x].style.display = "none";
      }
   }
}

