
function get_confirm_window () {
  if (document.planyo_is_cofirm_action_with_drop_down == true)
    return $('planyo_confirm_action_drop_down_window');
  else if (document.planyo_is_cofirm_action_with_input == true)
    return $('planyo_confirm_action_with_input_window');
  else
    return $('planyo_confirm_action_window');
}

function planyo_confirm_action_window_close () {
  if (document.planyo_is_cofirm_action_with_input == 'undefined') return;
     
  var confirm_window = get_confirm_window ();
  var confirm_bg_hider = $('planyo_confirm_action_bg_hider');  
  if (confirm_window && confirm_bg_hider) {
    confirm_window.style.display='none';    
    confirm_bg_hider.style.display='none';    
    if (document.planyo_is_cofirm_action_with_input == true) {
      var user_input = $('planyo_confirmation_user_text');        
      if (user_input)
        user_input.value = '';
        if (user_input.removeEvent)
          user_input.removeEvent ('keypress', user_input_keydown);    
    }
  }
  if (window.removeEvent) {
    window.removeEvent('resize', planyo_confirm_action_window_resize);
    window.removeEvent('keydown', planyo_confirm_action_window_keydown);
  }
}

function planyo_confirm_action_window_resize () {
  if (document.planyo_is_cofirm_action_with_input == 'undefined') return;
    
  var confirm_window = get_confirm_window ();
  var confirm_bg_hider = $('planyo_confirm_action_bg_hider');
  if (confirm_window && confirm_bg_hider && confirm_window.style.display != 'none') {
    var window_size = $(window).getSize ();
    confirm_bg_hider.style.left='0px';
    confirm_bg_hider.style.top='0px';
    confirm_bg_hider.style.width=window_size.x + 'px';
    confirm_bg_hider.style.height=window_size.y + 'px';    
    var box_size = confirm_window.getSize ();
	  confirm_window.style.left = ((window_size.x - box_size.x) / 2) + 'px';
	  confirm_window.style.top = ((window_size.y - box_size.y) / 2) + 'px';
	}
}

function planyo_confirm_action_window_keydown (e) {
  if (document.planyo_is_cofirm_action_with_input == 'undefined') return;
    
  var confirm_window = get_confirm_window ();
  if (confirm_window && confirm_window.style.display != 'none' && e) {
    if (e.key == 'esc' || e.keyCode == 27)
      planyo_confirm_action_window_close ();
  }
}

function planyo_confirm_action_with_input_window_onOK () {  
  var text = null;
  var user_input = $('planyo_confirmation_user_text');
  if (user_input) 
    text = user_input.value;
  if (text)
    text = text.trim ();
  if (!text) {
    if (document.planyo_confirm_action_with_input_field_empty_warning_msg)
      alert (document.planyo_confirm_action_with_input_field_empty_warning_msg);
    else
      alert ('The text field cannot be empty.');
    return;
  }
  if (document.planyo_confirm_action_with_input_value_verification_handler != null) {
    var res = document.planyo_confirm_action_with_input_value_verification_handler (text);
    if (res) {
      alert (res);
      return;
    }
  }
  
  planyo_confirm_action_window_close ();
  if (document.planyo_confirm_action_with_input_handler) {
    document.planyo_confirm_action_with_input_handler (text);
  }
}


function user_input_keydown (e)
{  
  if (e.key == 'enter' || e.keyCode == 13) {
    if ($('planyo_confirm_action_ok')) {
      planyo_confirm_action_with_input_window_onOK ();
    }
  }
}

// valueVerificationHandler is called in onOK. If the value is correct, 'null' should be returned by the handler. Otherwise, error message is expected.
function planyo_confirm_action_with_input (text, handler, fieldEmptyWarningMsg, initialValue, valueVerificationHandler) {
  var confirm_window = $('planyo_confirm_action_with_input_window');
  var confirm_bg_hider = $('planyo_confirm_action_bg_hider');
  if (confirm_window && confirm_bg_hider && handler) {
    document.planyo_is_cofirm_action_with_input = true;
    document.planyo_is_cofirm_action_with_drop_down = false;
    document.planyo_confirm_action_with_input_handler = handler;
    document.planyo_confirm_action_with_input_field_empty_warning_msg = fieldEmptyWarningMsg;
    document.planyo_confirm_action_with_input_value_verification_handler = valueVerificationHandler;
    var action_text_element = $('planyo_confirm_action_with_input_text');
    if (action_text_element && text)
      action_text_element.innerHTML = text;    
    confirm_bg_hider.style.display='';   
    confirm_window.style.display='';    
    planyo_confirm_action_window_resize ();    
    if (window.addEvent) {
      window.addEvent('resize', planyo_confirm_action_window_resize);
      window.addEvent('keydown', planyo_confirm_action_window_keydown);     
    }
    var user_input = $('planyo_confirmation_user_text');        
    if (user_input) {
      if (initialValue)
        user_input.value = initialValue;
      user_input.focus ();
      if (user_input.addEvent)
        user_input.addEvent ('keypress', user_input_keydown);
    }
  }  
}

function planyo_confirm_action_window_onOK () {      
  planyo_confirm_action_window_close ();
  if (document.planyo_confirm_action_handler) {
    document.planyo_confirm_action_handler (true);
  }
}

function planyo_confirm_action(text, handler) {
  var confirm_window = $('planyo_confirm_action_window');
  var confirm_bg_hider = $('planyo_confirm_action_bg_hider');
  if (confirm_window && confirm_bg_hider && handler) {
    document.planyo_is_cofirm_action_with_input = false;
    document.planyo_is_cofirm_action_with_drop_down = false;
    document.planyo_confirm_action_handler = handler;
    var action_text_element = $('planyo_confirm_action_text');
    if (action_text_element && text)
      action_text_element.innerHTML = text;
    confirm_bg_hider.style.display='';   
    confirm_window.style.display='';    
    planyo_confirm_action_window_resize ();    
    if (window.addEvent) {
      window.addEvent('resize', planyo_confirm_action_window_resize);
      window.addEvent('keydown', planyo_confirm_action_window_keydown);
    }
  }
}

function planyo_confirm_action_drop_down_window_onOK () {      
  planyo_confirm_action_window_close ();
  var select = $('planyo_confirm_action_drop_down');
  if (select) {
    var val = select.get ("value");
    if (val !== null) {
      if (document.planyo_confirm_action_handler) {
        document.planyo_confirm_action_handler (val);
      }
    }
  }
}

function planyo_confirm_action_with_drop_down (text, values_array, labels_array, handler) {
  var confirm_window = $('planyo_confirm_action_drop_down_window');
  var confirm_bg_hider = $('planyo_confirm_action_bg_hider');
  var select = $('planyo_confirm_action_drop_down');
  if (confirm_window && confirm_bg_hider && select && handler) {
    if (values_array && labels_array && values_array.length == labels_array.length && labels_array.length > 0) {
      document.planyo_is_cofirm_action_with_input = false;
      document.planyo_is_cofirm_action_with_drop_down = true;

      var options = '';
      for (var i=0; i<values_array.length; i++)
        options += "<option value='" + values_array [i] + "'>" + labels_array [i] + "</option>";
      select.set ('html', options);
      
      document.planyo_confirm_action_handler = handler;
      var action_text_element = $('planyo_confirm_action_drop_down_text');
      if (action_text_element && text)
        action_text_element.innerHTML = text;
      confirm_bg_hider.style.display='';   
      confirm_window.style.display='';    
      planyo_confirm_action_window_resize ();    
      if (window.addEvent) {
        window.addEvent('resize', planyo_confirm_action_window_resize);
        window.addEvent('keydown', planyo_confirm_action_window_keydown);
      }
    }
  }
}

