package com.androidbegin.buttonclicktutorial;

import java.text.Format;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;















import android.net.Uri;
import android.os.Bundle;
import android.text.Editable;
import android.text.InputFilter;
import android.text.InputType;
import android.text.TextWatcher;
import android.text.method.ScrollingMovementMethod;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnFocusChangeListener;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.view.inputmethod.EditorInfo;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.ScrollView;
import android.widget.Scroller;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.graphics.Color;
import android.app.ActionBar.LayoutParams;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;

public class infos_appointment extends Activity 
{
		CheckBox checkBox;

	
		TimeWidgetSlider start_timeSliderHour = null;
		TimeWidgetSlider start_timeSliderMinutes = null;
		TimeWidgetSlider end_timeSliderHour = null;
		TimeWidgetSlider end_timeSliderMinutes = null;
		
		private Button btnStartTime = null;
		private Calendar dateStart = null;
		
		private String date_event;
	    
	    LinearLayout layout1;
	    private static int viewsCount = 0;
	    private List<View> allViews = new ArrayList<View>();
	    LinearLayout.LayoutParams params;
	    
    
		private static String sStrSelect = "Select time";
		private static String sStrSet = "set";
		private static String sStrNone = "none";
		
		public static final int SELECT_TIME_REQUEST = 112;
		public static final int iSliderViewWidth = 276;
		private static final int iSmallButtonWidth = 100;	
		
		private LinearLayout layContent = null;
		private LinearLayout layContent2 = null;
		
		private Button btnNone = null;
		private Button btnOK = null;
		
		//fields
		private boolean bNoneButton = true;
		private boolean b24HourMode = false;
		private int start_hour = -1;
		private int start_minutes = -1;
		private int end_hour = -1;
		private int end_minutes = -1;
		
		private RelativeLayout mLayout;
		 
		String display_date = "";
		 
		int starthour;
		int startminute;
		int endhour; 
		int endminute;
		
		String date_selection;
		int index;
		
		DB_alarm db;
		appointment class_id = new appointment();
		
		String sid , titre,  start_timestamp , end_timestamp , phone , notes , status ,	 creation,  modification; 
		
		TextView tv_set_time_start;
		TextView tv_set_time_end;
		
	    static final int TIME_DIALOG_START = 1200;
	    static final int TIME_DIALOG_END = 1300;
	    	 
		int hour;
		int minute;
		
		int global_start_hour = 0; 
		int global_start_min = 0;

		int global_end_hour = 0; 
		int global_end_min = 0;

		String option_alarm;
		

	
	@Override
	public void onCreate(Bundle savedInstanceState) 
	{
		super.onCreate(savedInstanceState);
		  
		db = new DB_alarm(getApplicationContext());
		
		Bundle extras = getIntent().getExtras();
		index = extras.getInt("index");
		date_selection = extras.getString("date_selection");
		
		//cal_display
		String[]tmp = date_selection.split(" ");
	    int jour = Integer.parseInt(tmp[0]);
	    int mois = Integer.parseInt(tmp[1]);
	    int annee = Integer.parseInt(tmp[2]);
	    mois = mois - 1;
	    Calendar cal = Calendar.getInstance();
	    cal.set(annee, mois, jour, 0, 0, 0); 
	    cal.set(Calendar.MILLISECOND, 0);
		
	    SimpleDateFormat formatter = new SimpleDateFormat("d MMMM, yyyy", Locale.ENGLISH);
        date_event = formatter.format(cal.getTime());

        /* lecture de la database*/
        
    	String id = String.valueOf(index);
		String requete = "SELECT * FROM table_appointment WHERE _id = " + id ;
 	
		Cursor Cursor = db.DB_query(requete);
		int val = Cursor.getCount();
		
		if(val != 0)
		{
				if (Cursor.moveToFirst()) 
				{
 					do 
 					{
							sid = Cursor.getString(Cursor.getColumnIndex(DB_alarm.KEY_ID ));
	 						titre = Cursor.getString(Cursor.getColumnIndex(DB_alarm.COL_TITRE ));
	 						start_timestamp = Cursor.getString(Cursor.getColumnIndex(DB_alarm.COL_START_TIME ));
	 						end_timestamp = Cursor.getString(Cursor.getColumnIndex(DB_alarm.COL_END_TIME ));
	 						phone = Cursor.getString(Cursor.getColumnIndex(DB_alarm.COL_PHONE ));
	 						notes = Cursor.getString(Cursor.getColumnIndex(DB_alarm.COL_NOTES ));
	 						status = Cursor.getString(Cursor.getColumnIndex(DB_alarm.COL_STATUS ));
	 						creation = Cursor.getString(Cursor.getColumnIndex(DB_alarm.COL_CREATEDTIME ));
	 						modification = Cursor.getString(Cursor.getColumnIndex(DB_alarm.COL_MODIFIEDTIME ));
 					} while (Cursor.moveToNext());
 					
				}
		}
	
        
        /**/
        
		//class_id = MainActivity.appointment_DB.get(index-1);
		//titre = class_id.getTitre();
		//Date start_time = class_id.getStart_time(); 
		//Date end_time = class_id.getEnd_time(); 
		//phone =  class_id.getPhone(); 
		//notes = class_id.getNotes(); 
		
		
		//class_id = agenda02.appointment_liste.get(index-1);
		//titre = class_id.getTitre();
		//Date start_time = class_id.getStart_time(); 
		//Date end_time = class_id.getEnd_time(); 
		//phone =  class_id.getPhone(); 
		//notes = class_id.getNotes(); 
		
		Date start_time = new Date(Long.parseLong(start_timestamp));
		Date end_time = new Date(Long.parseLong(end_timestamp));

		
        //
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(start_time);
		starthour = calendar.get(Calendar.HOUR_OF_DAY); // 24 hour clock
		startminute = calendar.get(Calendar.MINUTE);
		calendar.setTime(end_time);
		endhour = calendar.get(Calendar.HOUR_OF_DAY); // 24 hour clock
		endminute = calendar.get(Calendar.MINUTE);
		
		
		layout();
	   //setContentView(widget());
			
	}
	
	
	
	public void zorro()
	{
		
		//LinearLayout layMain = createLayout(LinearLayout.VERTICAL);  	
 		//layMain.setPadding(8, 8, 8, 8);
 		
 		ScrollView scrollView= new ScrollView(this);
        LinearLayout mainLayout = new LinearLayout(this);
        mainLayout.setOrientation(LinearLayout.VERTICAL);    
        
        for (int i=0; i<30; i++)
        {
	            LinearLayout ll = new LinearLayout(this);
	            ll.setOrientation(LinearLayout.HORIZONTAL);
	            ll.setTag(i);                           
	            TextView tv=new TextView(this);
	            tv.setText("Rowxxx " + i);           
	            ll.addView(tv);
	            Button b = new Button(this);
	            b.setTag(i);
	            b.setText("Button " + i);           
	            ll.addView(b);                   
	            mainLayout.addView(ll);
        }
        
        scrollView.addView(mainLayout);
        setContentView(scrollView);
		
	}
	
	
	public void layout()
	{
		
		LinearLayout layMain = createLayout(LinearLayout.VERTICAL);  	
 		layMain.setPadding(8, 8, 8, 8);
 		
 		ScrollView scrollView= new ScrollView(this);
        LinearLayout mainLayout = new LinearLayout(this);
        mainLayout.setOrientation(LinearLayout.VERTICAL);               
        
    	//LinearLayout layMargin = createLayout(LinearLayout.HORIZONTAL);
 		//LinearLayout layMargin2 = createLayout(LinearLayout.HORIZONTAL);
 		
 		//layContent = createLayout(LinearLayout.VERTICAL);
 		//layContent2 = createLayout(LinearLayout.VERTICAL);

 		//layMargin.getLayoutParams().height = 18;
 		//layMargin2.getLayoutParams().height = 18;
        
/******************** Image *************************/    
        
 		LinearLayout ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.VERTICAL);
        ll.setTag(0); 
 		ImageView imageView = new ImageView(this);
 		imageView.setImageResource(R.drawable.appointment);
 		LayoutParams layoutParams=new LayoutParams(75, 75);
 	    layoutParams.setMargins(10,10,0,0);
 	    imageView.setLayoutParams(layoutParams);
 	    ll.addView(imageView);
        mainLayout.addView(ll);

/******************** Titre *************************/    
        
 		ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.VERTICAL);
        ll.setTag(1); 
        TextView tv = new TextView(this);
        tv.setText("Evenement");
        tv.setPadding(10, 10, 0, 0);
 	    ll.addView(tv);
        mainLayout.addView(ll);
        
 		ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.VERTICAL);
        ll.setTag(2); 
        final EditText editText = new EditText(this);
        editText.setId(150);
        //editText.setText("titre");
        layoutParams=new LayoutParams(450, 75);
        editText.setLayoutParams(layoutParams);
        editText.setSingleLine(true);
        editText.setFilters(new InputFilter[] { new InputFilter.LengthFilter(20) });
 	    ll.addView(editText);
        mainLayout.addView(ll);

/******************** Date *************************/    
        
 		ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.VERTICAL);
        ll.setTag(3); 
 		/**/
        tv = new TextView(this);
        String tmp = "Date : " + date_event;
        tv.setText(tmp);
        tv.setPadding(10, 30, 0, 30);
        /**/
 	    ll.addView(tv);
        mainLayout.addView(ll);
        
        /**/
// 		ll = new LinearLayout(this);
//      ll.setOrientation(LinearLayout.VERTICAL);
//        ll.setTag(4); 
 		/**/
//        tv = new TextView(this);
//        tv.setText("Start Time");
//        tv.setPadding(10, 10, 0, 30);
        /**/
// 	    ll.addView(tv);
//        mainLayout.addView(ll);
        
//       start_timeSliderHour = new TimeWidgetSlider(this, true, TimeWidgetSlider.STYPE_HOURS, iSliderViewWidth); // 24 heures 
//		start_timeSliderMinutes = new TimeWidgetSlider(this, b24HourMode, TimeWidgetSlider.STYPE_MINUTES, iSliderViewWidth);
		
//		start_timeSliderHour.setValue(starthour,true);
//	  	start_timeSliderMinutes.setValue(startminute, true);
	  	
		/**/
//        ll = new LinearLayout(this);
//        ll.setOrientation(LinearLayout.VERTICAL);
//        ll.setTag(5); 
        /**/
//        ll.addView(start_timeSliderHour);
//        ll.addView(layMargin);
//        ll.addView(start_timeSliderMinutes);
//        ll.setPadding(100, 0, 0, 10);
		/**/
//        mainLayout.addView(ll);
		
//    	end_timeSliderHour = new TimeWidgetSlider(this, true, TimeWidgetSlider.STYPE_HOURS, iSliderViewWidth); // 24 heures 
//		end_timeSliderMinutes = new TimeWidgetSlider(this, b24HourMode, TimeWidgetSlider.STYPE_MINUTES, iSliderViewWidth);
		
//		end_timeSliderHour.setValue(endhour, true);
//	  	end_timeSliderMinutes.setValue(endminute, true);
		
		  
        /**/
//        ll = new LinearLayout(this);
//        ll.setOrientation(LinearLayout.VERTICAL);
//        ll.setTag(6); 
        /**/
 //       tv = new TextView(this);
 //       tv.setText("End Time");
 //       tv.setPadding(10, 10, 0, 10);
        /**/
// 	    ll.addView(tv);
//        mainLayout.addView(ll);
		
        /**/
//        ll = new LinearLayout(this);
 //       ll.setOrientation(LinearLayout.VERTICAL);
 //       ll.setTag(7); 
        /**/
//        ll.addView(end_timeSliderHour);
//        ll.addView(layMargin2);
//        ll.addView(end_timeSliderMinutes);
//        ll.setPadding(100, 0, 0, 10);
		/**/
//		mainLayout.addView(ll);
        
/******************** Heure *************************/    
        
        String str_starthour = pad(starthour); 
        String str_startminute = pad(startminute);
        
        String str_endhour = pad(endhour); 
        String str_endminute = pad(endminute);
        
        String start = str_starthour + ":" + str_startminute;
        String end = str_endhour + ":" + str_endminute;
        
 		ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.VERTICAL);
        ll.setTag(4); 
        tv = new TextView(this);
        tv.setText("Start Time");
        tv.setPadding(10, 10, 0, 30);
 	    ll.addView(tv);
        mainLayout.addView(ll);
        
        ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.HORIZONTAL);
        tv_set_time_start = new TextView(this);
        tv_set_time_start.setText(start); 
        tv_set_time_start.setPadding(10, 10, 50, 30);
 	    ll.addView(tv_set_time_start);
 	    Button btn_start_time = new Button(this);
 	    btn_start_time.setId(144);
 	    btn_start_time.setText("Set");   
 	    ll.addView(btn_start_time);
        mainLayout.addView(ll);

 		ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.VERTICAL);
        ll.setTag(4); 
        tv = new TextView(this);
        tv.setText("End Time");
        tv.setPadding(10, 10, 0, 30);
 	    ll.addView(tv);
        mainLayout.addView(ll);
        
        ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.HORIZONTAL);
        tv_set_time_end = new TextView(this);
        tv_set_time_end.setText(end);
        tv_set_time_end.setPadding(10, 10, 50, 30);
 	    ll.addView(tv_set_time_end);
 	    Button btn_end_time = new Button(this);
 	    btn_end_time.setId(244);
 	    btn_end_time.setText("Set");   
 	    ll.addView(btn_end_time);
        mainLayout.addView(ll);
       
/******************** Alarme *************************/        
        
        ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.HORIZONTAL);
        ll.setTag(8); 
        checkBox = new CheckBox(this);
        checkBox.setId(800);
        checkBox.setText("Alarm");
        checkBox.setPadding(10, 10, 50, 10);
 	    ll.addView(checkBox);

 	    final Spinner Spinner_alarm = new Spinner(this);  
        Spinner_alarm.setId(900);
        Spinner_alarm.setPadding(10, 10, 0, 10);
        layoutParams=new LayoutParams(125, 75);
        Spinner_alarm.setLayoutParams(layoutParams);
        List<String> myArraySpinner = new ArrayList<String>();
        myArraySpinner.add("15mn");
        myArraySpinner.add("1H");
        myArraySpinner.add("Boom");     
        ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, myArraySpinner);
        spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
        Spinner_alarm.setAdapter(spinnerArrayAdapter);
        Spinner_alarm.setVisibility(View.INVISIBLE); // hide
 	    ll.addView(Spinner_alarm);
        mainLayout.addView(ll);
        
        
/******************** Phone *************************/        
        
        ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.VERTICAL);
        ll.setTag(9); 
        tv = new TextView(this);
        tv.setText("Phone");
        tv.setTag(50);
        tv.setPadding(10, 10, 0, 10);
 	    ll.addView(tv);
        mainLayout.addView(ll);
        
        ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.HORIZONTAL);
        ll.setTag(10); 
        EditText editText_phone = new EditText(this);
        editText_phone.setId(100);
        //editText.setText(phone);
        layoutParams=new LayoutParams(300, 75);
        editText_phone.setLayoutParams(layoutParams);
        editText_phone.setSingleLine(true);
        editText_phone.setFilters(new InputFilter[] { new InputFilter.LengthFilter(10) });
        editText_phone.setInputType(InputType.TYPE_CLASS_PHONE);
 	    ll.addView(editText_phone);
 	    mainLayout.addView(ll);

/******************** Note *************************/        
        
        ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.VERTICAL);
        ll.setTag(8); 
        tv = new TextView(this);
        tv.setText("Notes");
        tv.setPadding(10, 10, 0, 10);
 	    ll.addView(tv);
        mainLayout.addView(ll);
		
        ll = new LinearLayout(this);
       	ll.setOrientation(LinearLayout.VERTICAL);
       	ll.setTag(9); 
       	final View childView = getLayoutInflater().inflate(R.layout.notes_view, null);
        ll.addView(childView);
        mainLayout.addView(ll);
 
/******************** Boutons *************************/        
           
       ll = new LinearLayout(this);
       ll.setOrientation(LinearLayout.HORIZONTAL);
       ll.setGravity(Gravity.CENTER);
       Button b1 = new Button(this);
       b1.setId(1);
       b1.setText("Sauver");
       ll.addView(b1);
       Button b2 = new Button(this);
       b2.setId(2);
       b2.setText("Delete");
       ll.addView(b2);
       Button b3 = new Button(this);
       b3.setId(3);
       b3.setText("Exit");
       ll.addView(b3);
       mainLayout.addView(ll);

/******************** Insert  la vue layout *************************/        
        
        scrollView.addView(mainLayout);
        layMain.addView(scrollView);
        setContentView(layMain);

/******************** Listeners: checkbox alarme et les 2 boutons pour setter l'horaire *************************/        
        
        CheckBox_AlarmListener(Spinner_alarm);
        ButtonListener();

/******************** Remplir les champs *************************/        
        
        // remplir les champs
        EditText idtitre = (EditText)findViewById(150);  
        idtitre.setText(titre);
        
        
        final EditText idphone = (EditText)findViewById(100);  
        idphone.setText(phone);
        
        EditText idnotes = (EditText)findViewById(R.id.notes);  
        idnotes.setText(notes);
        
/********************************************************************/
        
        Button btn_valider = (Button) findViewById(1);
        btn_valider.setOnClickListener(new OnClickListener() 
 	    {
 				@Override
 				public void onClick(View arg0) 
 				{
 					//start_hour = start_timeSliderHour.getValue();
				  	//start_minutes = start_timeSliderMinutes.getValue();
				  	//end_hour = end_timeSliderHour.getValue();
				  	//end_minutes = end_timeSliderMinutes.getValue();
				  	
 					CharSequence time_start = tv_set_time_start.getText();
 					CharSequence time_end = tv_set_time_end.getText();
 					
 					String[] items1 = ((String) time_start).split(":");
 					start_hour = Integer.parseInt(items1[0]);
 					start_minutes = Integer.parseInt(items1[1]);
				  	
 					String[] items2 = ((String) time_end).split(":");
 					end_hour = Integer.parseInt(items2[0]);
 					end_minutes = Integer.parseInt(items2[1]);
				  	
				  	//start_hour = global_start_hour;
				  	//start_minutes = global_start_min;
				  	//end_hour = global_end_hour;
				  	//end_minutes = global_end_min;

				  	
				  	// creation des dates
				  	String[] items = date_selection.split(" ");
				  	// jour mois annee
				  	int jour = Integer.parseInt(items[0]);
				  	int mois = Integer.parseInt(items[1]);
				  	int annee = Integer.parseInt(items[2]);
				  	mois = mois - 1;
				  	
					Calendar cal_date = Calendar.getInstance();
					cal_date.set(Calendar.YEAR, annee);
					cal_date.set(Calendar.DAY_OF_MONTH, jour);
					cal_date.set(Calendar.MONTH, mois);
					cal_date.set(Calendar.HOUR_OF_DAY, 0);
					cal_date.set(Calendar.MINUTE, 0);
					cal_date.set(Calendar.SECOND, 0);
					cal_date.set(Calendar.MILLISECOND, 0);
			        Date Date_date =  cal_date.getTime();
			        long date = cal_date.getTimeInMillis();
				  			
				  	Calendar cal_start = Calendar.getInstance();
			        cal_start.set(annee,mois,jour,start_hour, start_minutes);
			        cal_start.set(Calendar.SECOND, 0);
			        cal_start.set(Calendar.MILLISECOND, 0);
			        Date Date_start =  cal_start.getTime();
			        long startTime = cal_start.getTimeInMillis();
			        
			    	Calendar cal_end = Calendar.getInstance();
			        cal_end.set(annee,mois,jour, end_hour, end_minutes);
			        cal_end.set(Calendar.SECOND, 0);
			        cal_end.set(Calendar.MILLISECOND, 0);
			        Date Date_end =  cal_end.getTime();
			        long endTime = cal_end.getTimeInMillis();
			        
			        String titre = editText.getText().toString();

			        EditText phone = (EditText)findViewById(100);  
			        String string_phone = phone.getText().toString();
			        
			        EditText notes = (EditText)findViewById(R.id.notes);  
			        String string_notes = notes.getText().toString();
			        
			        long now = System.currentTimeMillis();
			    	ContentValues contentValues = new ContentValues();
			    	contentValues.put(DB_alarm.COL_TITRE, titre);
			    	contentValues.put(DB_alarm.COL_START_TIME, startTime);
			    	contentValues.put(DB_alarm.COL_END_TIME, endTime);
			    	contentValues.put(DB_alarm.COL_PHONE, string_phone);
			    	contentValues.put(DB_alarm.COL_NOTES, string_notes);
			    	contentValues.put(DB_alarm.COL_MODIFIEDTIME, now);
			    	
			        //boolean check = validation(titre, startTime, endTime);
					
			    	boolean check = true;
			    	
			        if(check == true)
			        {
				        	checkBox = (CheckBox) findViewById(800);
					        Boolean checkBoxState = checkBox.isChecked();
					        if(checkBoxState == true)
					        {
						        option_alarm = Spinner_alarm.getSelectedItem().toString();
					        }
					        else
					        {
					        	option_alarm = "";
					        }
					        
					        
					    	// mise a jour de la database
					    	String position = Integer.toString(index);
					    	db.update_appoitment(position, contentValues);
					    	
					    	mois = mois + 1;
					        String dateInString = jour + "-" + mois +  "-" + annee + " " + start_hour + ":" + start_minutes;
							long  time_millis = Tools.convertir_date_timestamp(dateInString); 

					    	// efface le service en cours
							Intent cancelThis = new Intent(infos_appointment.this, AlarmService.class);
	 						long indice = Long.parseLong(position);   
							cancelThis.putExtra("ALARMID", indice );
							//cancelThis.putExtra("ALARMID", sid);
							cancelThis.putExtra("TITRE", "");
		 					cancelThis.putExtra("startTime", "");
							cancelThis.setAction(AlarmService.CANCEL);
							startService(cancelThis);
							
							// creation d'un nouveau service
				    		Intent service = new Intent(infos_appointment.this, AlarmService.class);
				    		service.putExtra("ALARMID", indice );              
				    		service.putExtra("TITRE", titre);
				    		service.putExtra("TIME", time_millis);
				    		service.setAction(AlarmService.POPULATE);
				    		startService(service);

					    	// mise a jour arraylist -> appointment_liste
					    	//class_id.setTitre(titre);
					    	//class_id.setStart_time(Date_start); 
							//class_id.setEnd_time(Date_end); 
					    	//class_id.setPhone(string_phone);
					    	//class_id.setNotes(string_notes);
					    	
					    	// message post traitement
					    	Toast.makeText(getApplicationContext(), "Modifications enregistrées", Toast.LENGTH_LONG).show();
				        	
			        }
			        
 				}
 	    });
        
        Button btn_supprimer = (Button) findViewById(2);
        btn_supprimer.setOnClickListener(new OnClickListener() 
 	    {
 				@Override
 				public void onClick(View arg0) 
 				{
 					//Toast.makeText(getApplicationContext(), "Supprimer", Toast.LENGTH_LONG).show();
 					
 					delete_appointment();
 				}
 	    });
		
        
        Button btn_quitter = (Button) findViewById(3);
        btn_quitter.setOnClickListener(new OnClickListener() 
 	    {
 				@Override
 				public void onClick(View arg0) 
 				{
 					finish();
 				}
 	    });
        
	}
	
	public void CheckBox_AlarmListener(final Spinner option_alarm)
	{
			checkBox = (CheckBox) findViewById(800);
	
			checkBox.setOnClickListener(new OnClickListener() 
			{
				@Override
				public void onClick(View v)
				{
		                //is chkIos checked?
					if (((CheckBox) v).isChecked())
					{	 
						option_alarm.setVisibility(View.VISIBLE); 

//						Toast.makeText(AddEvent02.this, "Checkbox", Toast.LENGTH_LONG).show();
					}
					else
					{
						option_alarm.setVisibility(View.INVISIBLE); // hide

					}
				}
			});

	}
	

	public void ButtonListener() 
	{
		findViewById(144).setOnClickListener(mGlobal_OnClickListener);
		findViewById(244).setOnClickListener(mGlobal_OnClickListener);
	}
	
	
	//Global On click listener for all views
    OnClickListener mGlobal_OnClickListener = new OnClickListener()
    {
	        public void onClick(final View v)
	        {
	            switch(v.getId())
	            {
	                case 144:
						//Toast.makeText(AddEvent02.this, "un", Toast.LENGTH_LONG).show();
		                //showDialog(TIME_DIALOG_START);
	                	dialog_box_timepicker("Choice start Time", "start");
	                    break;
	                case 244:
	                    //Toast.makeText(AddEvent02.this, "Button2 clicked.", Toast.LENGTH_SHORT).show();
		                //showDialog(TIME_DIALOG_END);
	                	dialog_box_timepicker("Choice end Time", "end");
	                    break;
	            }
	        }
    };
    

	private void dialog_box_timepicker(String titre, final String action)
	{
	
		LayoutInflater inflater = getLayoutInflater();
		View alertLayout = inflater.inflate(R.layout.custom_datepicker_layout, null);
    
		final TimePicker tp = (TimePicker) alertLayout.findViewById(R.id.timePicker1);
		
		tp.setIs24HourView(true); 
		
		if(action.equals("start"))
		{
			tp.setCurrentHour(global_start_hour); 
			tp.setCurrentMinute(global_start_min);
		}
		else
		{
			tp.setCurrentHour(global_end_hour); 
			tp.setCurrentMinute(global_end_min);
		}
		
		AlertDialog.Builder alert = new AlertDialog.Builder(this);
		alert.setTitle(titre);
		// this is set the view from XML inside AlertDialog
		alert.setView(alertLayout);
		// disallow cancel of AlertDialog on click of back button and outside touch
		alert.setCancelable(false);
    
		alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener()
		{
			@Override
			public void onClick(DialogInterface dialog, int which)
			{
			}
		});

		alert.setPositiveButton("Set", new DialogInterface.OnClickListener() 
		{

			@Override
			public void onClick(DialogInterface dialog, int which) 
			{
				if(action.equals("start"))
				{	
					global_start_hour = tp.getCurrentHour();
					global_start_min = tp.getCurrentMinute();
	
					tv_set_time_start.setText(new StringBuilder().append(pad(global_start_hour))	.append(":").append(pad(global_start_min)));
				}
				else
				{
					global_end_hour = tp.getCurrentHour();
					global_end_min = tp.getCurrentMinute();
					tv_set_time_end.setText(new StringBuilder().append(pad(global_end_hour))	.append(":").append(pad(global_end_min)));
				}
			}
		});

		AlertDialog dialog = alert.create();
		dialog.show();
	}

	
	private static String pad(int c)
	{
		if (c >= 10)
		   return String.valueOf(c);
		else
		   return "0" + String.valueOf(c);
	}

	
	public boolean validation(String titre,long startTime, long endTime)
	{
		
		 ArrayList<String> list_error = new ArrayList<String>();
		
		 if(titre.equals("") )
	     {
			 list_error.add("Pas de titre !!!");
	         //Toast.makeText(getApplicationContext(), "Vides ???", Toast.LENGTH_LONG).show();
	     }

	     if (startTime >=  endTime)
	     {
	    	 list_error.add("Incohérence : fin avant le début !!!!");
        	 //Toast.makeText(getApplicationContext(), "Probléme Date !!!!", Toast.LENGTH_LONG).show();
	     }
	        
	        
	     if ( endTime - startTime < 1800000 ) // 30 min : 60 * 1000 * 30  = 1800000
	     {
	    	 list_error.add("Rendez-vous inférieur à 30min !!!");
	         //Toast.makeText(getApplicationContext(), "Rendez-vous inférieur à 30min !!! ", Toast.LENGTH_LONG).show();
	     }
	     
	     
	     boolean overlap = non_recouvrement(startTime, endTime);
	     if(overlap == true)
	     {
	    	 list_error.add("Attention overlap !!!");
	     }
	     
	     
	     if(list_error.size() == 0 )
	     {	 
	     	 return true;
	     }
	     else
	     {
		        String toto = "";	
	    	 
	    	 	for(int x = 0; x <= list_error.size() - 1 ; x++)
	    	 	{
	    	   	 		toto = toto + list_error.get(x);
	    	   	 		toto = toto + System.getProperty("line.separator");
	    	 	}
	    	 	
		    	Toast.makeText(getApplicationContext(), toto, Toast.LENGTH_LONG).show();

		    	return false; 
	     }
	}
	
	/********************************************/
	public boolean non_recouvrement(long borne_startTime, long borne_endTime)
	{
  			// plage qui se chevauche - overlap
		
			SimpleDateFormat sdf = new SimpleDateFormat("dd MM yyyy"); 
 	   	  	Date date = null;
 	   	  	try
 	   	  	{
 	   	  		date = sdf.parse(date_event);
 	   	  	} 
 	   	  	catch (ParseException e)
 	   	  	{
				e.printStackTrace();
 	   	  	}
	      
 	   	  	long timestamp = date.getTime();
		 	String stimestamp = String.valueOf(timestamp);
		         
		    String requete = "SELECT * FROM table_appointment WHERE date = " + stimestamp ;
		     	
		    Cursor Cursor = db.DB_query(requete);
		    int val = Cursor.getCount();
		   
		    boolean overlap = false;
		    		
		    if(val != 0)
		    {
		    			if (Cursor.moveToFirst()) 
		 				{
			 					do 
			 					{
				 						String string_start_timestamp = Cursor.getString(Cursor.getColumnIndex(DB_alarm.COL_START_TIME ));
				 						String string_end_timestamp = Cursor.getString(Cursor.getColumnIndex(DB_alarm.COL_END_TIME ));
				 						
				 						//String s = "ggg " + start_timestamp;
				 						//long ll = Long.parseLong(start_timestamp);   
				 						
				 						long start_timestamp = Long.parseLong(string_start_timestamp);   
				 						long end_timestamp = Long.parseLong(string_end_timestamp);   
				 						
				 						if(  borne_startTime >= start_timestamp && borne_startTime <= end_timestamp  )
				 						{
				 							overlap = true;
				 						}
				 						
				 						
				 						if(  borne_endTime >= start_timestamp && borne_endTime <= end_timestamp  )
				 						{
				 							overlap = true;
				 						}
				 						
				 						
				 						if( borne_startTime <=  start_timestamp && borne_endTime >= end_timestamp)
				 						{
				 							overlap = true;
				 						}
			 						
			 					} while (Cursor.moveToNext());
			 					
		 				}
		    			
		    			
		 		}
		    	
		    
		    	return overlap;
	}

	
	
	public void delete_appointment()
    {
    	
							AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);

							alertDialogBuilder.setTitle("Confirmation");
			
							// set dialog message
							alertDialogBuilder
							.setMessage("Click yes to delete !")
							.setCancelable(false)
							.setPositiveButton("Yes",new DialogInterface.OnClickListener()
							{
								public void onClick(DialogInterface dialog,int id)
								{
									Toast.makeText(getApplicationContext(), "Suppression du rendez-vous OK", Toast.LENGTH_LONG).show();
									//db.delete_appointment(sid); 
//				 					Intent cancelThis = new Intent(infos_appointment.this, AlarmService.class);
//				 					cancelThis.putExtra("ALARMID", String.valueOf(index));
//				 					cancelThis.putExtra("TITRE", "");
//				 					cancelThis.putExtra("startTime", "");
//				 					cancelThis.setAction(AlarmService.CANCEL);
//				 					startService(cancelThis);

									
									
									//db.cancelNotification(sid);
									
									db.delete_appointment(sid);
									Intent cancelThis = new Intent(infos_appointment.this, AlarmService.class);
									
			 						long indice = Long.parseLong(sid);   

									
									cancelThis.putExtra("ALARMID", indice );
									//cancelThis.putExtra("ALARMID", sid);
				 					
									cancelThis.putExtra("TITRE", "");
				 					cancelThis.putExtra("startTime", "");
									cancelThis.setAction(AlarmService.CANCEL);
									startService(cancelThis);
									
									String coco = "5";
									int a = coco.length();
									
									finish();
									
									//refresh = true;

									
								}
							})
							
							.setNegativeButton("No",new DialogInterface.OnClickListener()
							{
								public void onClick(DialogInterface dialog,int id)
								{
									dialog.cancel();
									//Toast.makeText(getApplicationContext(), "No", Toast.LENGTH_LONG).show();
								}
							});

							// create alert dialog
							AlertDialog alertDialog = alertDialogBuilder.create();

							// show it
							alertDialog.show();
    }
	
	
	
	public LinearLayout createLayout(int Orientation)
	  {
			LinearLayout lay = new LinearLayout(this);		
			lay.setLayoutParams(new LayoutParams(android.view.ViewGroup.LayoutParams.FILL_PARENT, android.view.ViewGroup.LayoutParams.WRAP_CONTENT));
			lay.setOrientation(Orientation);
			return lay;
	  }
	
	public View widget()
	{
		
	 		LinearLayout layMain = createLayout(LinearLayout.VERTICAL);  	
	 		layMain.setPadding(8, 8, 8, 8);
	 		
	 		
	 	    View childView2 = getLayoutInflater().inflate(R.layout.custom02, null);
	        layMain.addView(childView2);	
	 		

	 		LinearLayout layMargin = createLayout(LinearLayout.HORIZONTAL);
	 		LinearLayout layMargin2 = createLayout(LinearLayout.HORIZONTAL);
	 		
	 		layContent = createLayout(LinearLayout.VERTICAL);
	 		layContent2 = createLayout(LinearLayout.VERTICAL);

	 		layMargin.getLayoutParams().height = 18;
	 		layMargin2.getLayoutParams().height = 18;
			
	 		
	 	/*	RelativeLayout.LayoutParams imageViewParam = new RelativeLayout.LayoutParams(
	                RelativeLayout.LayoutParams.WRAP_CONTENT,
	                RelativeLayout.LayoutParams.WRAP_CONTENT);
	 	*/	
	 		ImageView imageView = new ImageView(this);
	 		imageView.setImageResource(R.drawable.appointment);
	 		//imageView.setGravity( Gravity.CENTER);  
	 		//imageView.setLeft(left);  
	 		//imageView.setX(10);
	 		//imageViewParam.addRule(RelativeLayout.ALIGN_LEFT);
	 		//imageView.setPadding(20,20,20,20);


	 		//imageView.setX(20);
	 		//imageView.setY(75);
	 		//imageView.setPadding(10, 50, 0, 50);
	 		//layMain.addView(imageView);

	 		// http://stackoverflow.com/questions/12238164/how-to-programmatically-align-an-android-textview-to-the-right-of-another-textvi
	 		
	 		//http://stackoverflow.com/questions/33759256/how-can-i-display-programmatically-a-textview-next-to-a-button-in-a-relativelayo?noredirect=1&lq=1
	 		
	 		//android align view programmatically example
	 		
	 		// https://android--code.blogspot.fr/2015/05/android-relativelayout-leftof.html
	 		
	 		//http://www.mysamplecode.com/2011/10/android-programmatically-generate.html
	 		
	 		// https://android--code.blogspot.fr/2015/05/android-relativelayout-leftof.html
	 		
	 		// android textview align parent right programmatically
	 		
	 		
	 		LayoutParams layoutParams=new LayoutParams(75, 75);
	 	    layoutParams.setMargins(10,10,0,0);
	 	    imageView.setLayoutParams(layoutParams);
	 		layMain.addView(imageView);

	 		// TextView ffff = new TextView(this);
		    // ffff.setText("Zorro");
	 		//ffff.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT));
	        //layMain.addView(ffff);

	 		
	 		 LinearLayout ll = new LinearLayout(this);
	         ll.setOrientation(LinearLayout.HORIZONTAL);
	             
	            // Create TextView
	            TextView product = new TextView(this);
	            product.setText("sdqsddq");
	            product.setPadding(0,0,25,0);
	            ll.addView(product);
	             
	            // Create TextView
	            TextView price = new TextView(this);
	            price.setText("ujujuuuu");
	            ll.addView(price);
	            layMain.addView(ll);
	 		
/*	            
	            LinearLayout la = new LinearLayout(this);
		        la.setOrientation(LinearLayout.VERTICAL);
	            EditText mess = new EditText(this);
	            mess.setWidth(250);
	            mess.setHeight(50);
	            mess.setLines(4);
	            mess.setGravity(Gravity.TOP);
	            mess.setSingleLine(false);
	            mess.setMaxLines(4);
	            mess.setBackgroundColor(0xccc00000);
	            la.addView(mess);
	            layMain.addView(la);
*/	            
	            
	            
	    		EditText et = new EditText(this);
	    		et.setVerticalScrollBarEnabled(true);
	    		et.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
	    		et.setSingleLine(false);
	            et.setMaxLines(4);
	            et.setBackgroundColor(0xccc00000); // #d3d7b6
	            et.setBackgroundColor(Color.parseColor("#e7eecc"));
	    		//layMain.addView(et);
	            
	            //http://www.dreamincode.net/forums/topic/326868-scrollbar-in-a-edittext-dynamicallyprogrammatically-in-android/
	            
	            
	            EditText notes = new EditText(this);
		        notes.setWidth(250);
		        notes.setLines(4);
		        notes.setGravity(Gravity.TOP);
	        	notes.setVerticalScrollBarEnabled(true);
	        	notes.isVerticalScrollBarEnabled();
		        notes.setSingleLine(false);
		        notes.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
	        	notes.setMaxLines(4);
		        notes.setBackgroundColor(Color.parseColor("#e744cc"));  // 0xfff00000
		        //layMain.addView(notes);    
	            
		        /*	        
		        <EditText
	    		android:id="@+id/edit1"
	     		android:background="#d3d7b6"
	    		android:layout_width="250dp"
	    		android:layout_height="100dp"
	    		android:scrollbars="vertical"
	    		android:inputType="textMultiLine" 
	    		android:maxLines="3"
	    		android:gravity="top"
	    		android:layout_marginBottom="10dp"
	            android:layout_marginLeft="20dp"
	            android:layout_marginRight="20dp"
	            android:layout_marginTop="20dp"
	    	/>
		        
	*/	        
		        
		        View childView = getLayoutInflater().inflate(R.layout.custom01, null);
		        layMain.addView(childView);	
		        
		        
		        /***************************/
		        
	 		
	        TextView tv = new TextView(this);
	        tv.setText("Edfqffdvenement");
	        tv.setPadding(10, 10, 0, 0);
	        layMain.addView(tv);
	        
	        final EditText editText = new EditText(this);
	        //editText.setHint("XXXXT85itre");
	        editText.setText(titre);
	        editText.setSingleLine(true);
	        layMain.addView(editText);
	        
	        tv = new TextView(this);
	        String tmp = "Date : " + date_event;
	        tv.setText(tmp);
	        tv.setPadding(10, 30, 0, 30);
	        layMain.addView(tv);
			
	        tv = new TextView(this);
	        tv.setText("Start Time");
	        tv.setPadding(10, 10, 0, 30);
	        layMain.addView(tv);
	        
	        
			start_timeSliderHour = new TimeWidgetSlider(this, true, TimeWidgetSlider.STYPE_HOURS, iSliderViewWidth); // 24 heures 
			start_timeSliderMinutes = new TimeWidgetSlider(this, b24HourMode, TimeWidgetSlider.STYPE_MINUTES, iSliderViewWidth);

			end_timeSliderHour = new TimeWidgetSlider(this, true, TimeWidgetSlider.STYPE_HOURS, iSliderViewWidth); // 24 heures 
			end_timeSliderMinutes = new TimeWidgetSlider(this, b24HourMode, TimeWidgetSlider.STYPE_MINUTES, iSliderViewWidth);

			
			layContent.addView(start_timeSliderHour);
			layContent.addView(layMargin);
			layContent.addView(start_timeSliderMinutes);
	        layContent.setPadding(100, 0, 0, 60);
	        layMain.addView(layContent);
	        
	        tv = new TextView(this);
	        tv.setText("End Time");
	        tv.setPadding(10, 10, 0, 30);
	        layMain.addView(tv);
	        
	        
	        layContent2.addView(end_timeSliderHour);
		 	layContent2.addView(layMargin2);
			layContent2.addView(end_timeSliderMinutes);
	        layContent2.setPadding(100, 0, 0, 60);
	        layMain.addView(layContent2);
		        
         
	        Button btn = new Button(this);
	        btn.setText("Ajouter");
	        layMain.addView(btn);
	        
	/*        
	        ScrollView m_Scroll;
	        m_Scroll = new ScrollView(this);
	        m_Scroll.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
	                                           LayoutParams.FILL_PARENT));
	        m_Scroll.addView( layMain, new
	        LayoutParams(LayoutParams.FILL_PARENT,
	              LayoutParams.FILL_PARENT) );
	 */       
	        
	       
	      	btn.setOnClickListener(new Button.OnClickListener()
		  	{
					public void onClick(View arg0)
					{
						start_hour = start_timeSliderHour.getValue();
					  	start_minutes = start_timeSliderMinutes.getValue();
					  	end_hour = end_timeSliderHour.getValue();
					  	end_minutes = end_timeSliderMinutes.getValue();
					  	
					  	// creation des dates
					  	
					  	String[] items = date_event.split(" ");
					  	// jour mois annee
					  	int jour = Integer.parseInt(items[0]);
					  	int mois = Integer.parseInt(items[1]);
					  	int annee = Integer.parseInt(items[2]);
					  	mois = mois - 1;
					  	
						Calendar cal_date = Calendar.getInstance();
						cal_date.set(Calendar.YEAR, annee);
						cal_date.set(Calendar.DAY_OF_MONTH, jour);
						cal_date.set(Calendar.MONTH, mois);
						cal_date.set(Calendar.HOUR_OF_DAY, 0);
						cal_date.set(Calendar.MINUTE, 0);
						cal_date.set(Calendar.SECOND, 0);
						cal_date.set(Calendar.MILLISECOND, 0);
				        Date Date_date =  cal_date.getTime();
				        long date = cal_date.getTimeInMillis();
					  			
					  	Calendar cal_start = Calendar.getInstance();
				        cal_start.set(annee,mois,jour,start_hour, start_minutes);
				        cal_start.set(Calendar.SECOND, 0);
				        cal_start.set(Calendar.MILLISECOND, 0);
				        Date Date_start =  cal_start.getTime();
				        long startTime = cal_start.getTimeInMillis();
				        
				    	Calendar cal_end = Calendar.getInstance();
				        cal_end.set(annee,mois,jour, end_hour, end_minutes);
				        cal_end.set(Calendar.SECOND, 0);
				        cal_end.set(Calendar.MILLISECOND, 0);
				        Date Date_end =  cal_end.getTime();
				        long endTime = cal_end.getTimeInMillis();
				        
				        String titre = editText.getText().toString();
				        
					  	
						
			}});
		  	
	  	

	  	return layMain;
		
	}
	
	
}