# usage:
## update_alarm_clock_window = yes
update_alarm_clock_window = {
	if = {
		limit = {
			has_variable = show_alarm_clock_window
		}
		add_to_variable = { show_alarm_clock_window = 1 }
	}
}

# usage:
## update_create_new_alarm_clock_window = yes
update_create_new_alarm_clock_window = {
	if = {
		limit = {
			has_variable = create_new_alarm_clock
		}
		add_to_variable = { create_new_alarm_clock = 1 }
	}
}

# usage:
## set_temp_variable = { alarm_clock_id = 1 }
## remove_active_alarm_clock = yes
remove_active_alarm_clock = {
	remove_from_array = { alarm_clock_array = alarm_clock_id }
	meta_effect = {
		text = {
			clear_array = alarm_clock_array_[ID]
			clear_array = alarm_clock_custom_type_array_[ID]
		}
		ID = "[?alarm_clock_id]"
	}
	update_alarm_clock_window = yes
}

# usage:
## set_temp_variable = { alarm_clock_id = 1 }
## go_to_alarm_clock_target = yes
go_to_alarm_clock_target = {
	meta_effect = {
		text = {
			if = {
				limit = {
					set_temp_variable = { alarm_clock_type_other_context = alarm_clock_array_[ID]^0 }
					has_alarm_clock_type_with_country_target = yes
				}
				var:alarm_clock_array_[ID]^1 = {
					capital_scope = {
						ROOT = { goto_state = PREV }
					}
				}
			}
			else = {
				var:alarm_clock_array_[ID]^1 = {
					ROOT = { goto_state = PREV }
				}
			}
		}
		ID = "[?alarm_clock_id]"
	}
	update_alarm_clock_window = yes
}

# usage:
## clear_flags_and_variables_for_new_alarm_clock = yes
clear_flags_and_variables_for_new_alarm_clock = {
	clear_variable = create_new_alarm_clock_type
	clear_variable = create_new_alarm_clock_target
	clear_variable = create_new_alarm_clock_date
	close_new_alarm_clock_type_selection_list = yes
	close_new_alarm_clock_target_selection_list = yes
	clear_variable = create_new_alarm_clock
	clr_country_flag = create_new_alarm_clock_without_target
	clear_variable = create_new_alarm_clock_to_replace
	clear_array = create_new_alarm_clock_custom_type
	update_alarm_clock_window = yes
}

# usage:
## open_new_alarm_clock_type_selection_list = yes
open_new_alarm_clock_type_selection_list = {
	close_new_alarm_clock_target_selection_list = yes
	set_variable = { show_create_new_alarm_clock_type_list = 1 }
	# Country Targets:
	add_to_array = { create_new_alarm_clock_type_list_array = 1 }
	add_to_array = { create_new_alarm_clock_type_list_array = 2 }
	add_to_array = { create_new_alarm_clock_type_list_array = 3 }
	add_to_array = { create_new_alarm_clock_type_list_array = 16 }
	add_to_array = { create_new_alarm_clock_type_list_array = 18 }
	add_to_array = { create_new_alarm_clock_type_list_array = 19 }
	add_to_array = { create_new_alarm_clock_type_list_array = 21 }
	add_to_array = { create_new_alarm_clock_type_list_array = 4 }
	# State Targets:
	add_to_array = { create_new_alarm_clock_type_list_array = 5 }
	add_to_array = { create_new_alarm_clock_type_list_array = 6 }
	add_to_array = { create_new_alarm_clock_type_list_array = 7 }
	add_to_array = { create_new_alarm_clock_type_list_array = 8 }
	add_to_array = { create_new_alarm_clock_type_list_array = 9 }
	add_to_array = { create_new_alarm_clock_type_list_array = 17 }
	add_to_array = { create_new_alarm_clock_type_list_array = 22 }
	add_to_array = { create_new_alarm_clock_type_list_array = 10 }
	# No Targets:
	add_to_array = { create_new_alarm_clock_type_list_array = 11 }
	add_to_array = { create_new_alarm_clock_type_list_array = 12 }
	add_to_array = { create_new_alarm_clock_type_list_array = 13 }
	add_to_array = { create_new_alarm_clock_type_list_array = 14 }
	add_to_array = { create_new_alarm_clock_type_list_array = 20 }
	add_to_array = { create_new_alarm_clock_type_list_array = 23 }
	add_to_array = { create_new_alarm_clock_type_list_array = 15 }
	update_create_new_alarm_clock_window = yes
}

# usage:
## close_new_alarm_clock_type_selection_list = yes
close_new_alarm_clock_type_selection_list = {
	clear_array = create_new_alarm_clock_type_list_array
	clear_variable = show_create_new_alarm_clock_type_list
	update_create_new_alarm_clock_window = yes
}

# usage:
## open_new_alarm_clock_target_selection_list = yes
open_new_alarm_clock_target_selection_list = {
	close_new_alarm_clock_type_selection_list = yes
	set_variable = { show_create_new_alarm_clock_target_list = 1 }
	set_temp_variable = { alarm_clock_type_other_context = create_new_alarm_clock_type }
	if = {
		limit = {
			has_alarm_clock_type_with_country_target = yes
		}
		for_each_scope_loop = {
			array = global.countries
			if = {
				limit = {
					exists = yes
					NOT = { tag = ROOT }
					num_of_controlled_states > 0
					if = {
						limit = {
							check_variable = { alarm_clock_type_other_context = 1 }
						}
						ROOT = {
							NOT = { is_subject_of = PREV }
						}
						NOT = { is_subject_of = ROOT }
						NOT = { is_in_faction_with = ROOT }
						NOT = { has_war_with = ROOT }
					}
					else_if = {
						limit = {
							check_variable = { alarm_clock_type_other_context = 2 }
						}
						OR = {
							ROOT = {
								is_subject_of = PREV
							}
							is_subject_of = ROOT
							is_in_faction_with = ROOT
						}
					}
				}
				ROOT = {
					add_to_array = { create_new_alarm_clock_target_list_array = PREV.id }
				}
			}
		}
	}
	else = {
		for_each_scope_loop = {
			array = global.states
			if = {
				limit = {
					if = {
						limit = {
							check_variable = { alarm_clock_type_other_context = 8 }
						}
						is_coastal = yes
					}
					else_if = {
						limit = {
							check_variable = { alarm_clock_type_other_context = 9 }
						}
						OR = {
							is_controlled_by = ROOT
							CONTROLLER = {
								is_subject_of = ROOT
							}
						}
					}
				}
				ROOT = {
					add_to_array = { create_new_alarm_clock_target_list_array = PREV.id }
				}
			}
		}
	}
	update_create_new_alarm_clock_window = yes
}

# usage:
## close_new_alarm_clock_target_selection_list = yes
close_new_alarm_clock_target_selection_list = {
	clear_array = create_new_alarm_clock_target_list_array
	clear_variable = show_create_new_alarm_clock_target_list
	update_create_new_alarm_clock_window = yes
}

# usage:
## populate_new_alarm_setup_window_with_current_alarm_clock_settings = yes
populate_new_alarm_setup_window_with_current_alarm_clock_settings = {
	meta_effect = {
		text = {
			set_variable = { create_new_alarm_clock = 1 }
			set_variable = { create_new_alarm_clock_type = alarm_clock_array_[ID]^0 }
			set_variable = { create_new_alarm_clock_target = alarm_clock_array_[ID]^1 }
			set_variable = { create_new_alarm_clock_date = alarm_clock_array_[ID]^2 }
			if = {
				limit = {
					set_temp_variable = { alarm_clock_type_other_context = create_new_alarm_clock_type }
					has_alarm_clock_type_with_custom_title = yes
				}
				clear_array = create_new_alarm_clock_custom_type
				for_each_loop = {
					array = alarm_clock_custom_type_array_[ID]
					value = value_temp
					index = index_temp
					add_to_array = { create_new_alarm_clock_custom_type = value_temp }
				}
			}
		}
		ID = "[?v]"
	}
}

# usage:
## create_new_alarm_clock = yes
create_new_alarm_clock = {
	remove_from_array = { alarm_clock_array = 0 }
	if = {
		limit = {
			has_variable = create_new_alarm_clock_to_replace
		}
		set_temp_variable = { temp = alarm_clock_array^create_new_alarm_clock_to_replace }
	}
	else = {
		for_loop_effect = {
			start = 1
			end = 1000000
			value = j
			break = break_temp
			set_temp_variable = { temp = j }
			if = {
				limit = {
					NOT = { is_in_array = { alarm_clock_array = temp } }
				}
				set_temp_variable = { break_temp = 1 }
			}
		}
		add_to_array = { alarm_clock_array = temp }
	}
	meta_effect = {
		text = {
			clear_array = alarm_clock_array_[ID]
			clear_array = alarm_clock_custom_type_array_[ID]
			add_to_array = { alarm_clock_array_[ID] = create_new_alarm_clock_type }
			add_to_array = { alarm_clock_array_[ID] = create_new_alarm_clock_target }
			add_to_array = { alarm_clock_array_[ID] = create_new_alarm_clock_date }
		}
		ID = "[?temp]"
	}
	if = {
		limit = {
			set_temp_variable = { alarm_clock_type_other_context = create_new_alarm_clock_type }
			has_alarm_clock_type_with_custom_title = yes
			check_variable = { create_new_alarm_clock_custom_type^num > 0 }
		}
		for_each_loop = {
			array = create_new_alarm_clock_custom_type
			meta_effect = {
				text = {
					add_to_array = { alarm_clock_custom_type_array_[ID] = v }
				}
				ID = "[?temp]"
			}
		}
	}
	for_loop_effect = {
		start = 1
		end = alarm_clock_array^num
		value = value_temp
		set_temp_variable = { var = j value = value_temp }
		set_temp_variable = { var = j_minus value = j }
		subtract_from_temp_variable = { var = j_minus value = 1 }
		while_loop_effect = {
			limit = {
				meta_trigger = {
					text = {
						set_temp_variable = { j_minus_date = alarm_clock_array_[J_MINUS]^2 }
						set_temp_variable = { j_date = alarm_clock_array_[J]^2 }
					}
					J_MINUS = "[?alarm_clock_array^j_minus]"
					J = "[?alarm_clock_array^j]"
				}
				check_variable = { j > 0 }
				check_variable = { j_minus_date > j_date }
			}
			# swap j-1 with j if value of j-1 > j
			set_temp_variable = { var = temp_value value = alarm_clock_array^j }
			set_variable = { var = alarm_clock_array^j value = alarm_clock_array^j_minus }
			set_variable = { var = alarm_clock_array^j_minus value = temp_value }
			subtract_from_temp_variable = { var = j value = 1 }
			subtract_from_temp_variable = { var = j_minus value = 1 }
		}
	}
	if = {
		limit = {
			NOT = { is_in_array = { alarm_clock_array = 0 } }
		}
		add_to_array = { alarm_clock_array = 0 }
	}
	clear_flags_and_variables_for_new_alarm_clock = yes
}