$(document).ready(function() {

  /* focus event on text-areas in week and day view */
  $(".day_text").focus(function () {
    // remove disaable attr if a text area gets focus
    if($("#save_changes_day").length > 0){
      $("#save_changes_day").removeAttr("disabled");
    }
   if($(".save_changes_week").length > 0){
      $(".save_changes_week").removeAttr("disabled");
    }
    $(".confirmSave").html("Ändringar gjorda men <b>ej sparade</b>.");
    $(".confirmSave").removeClass("saved");
    $(".confirmSave").addClass("not-saved");
  });
  
  $(".day_title").focus(function () {
    // remove disaable attr if a text area gets focus
    if($("#save_changes_day").length > 0){
      $("#save_changes_day").removeAttr("disabled");
    }
    if($(".save_changes_week").length > 0){
      $(".save_changes_week").removeAttr("disabled");
    }
    $(".confirmSave").html("Ändringar gjorda men <b>ej sparade</b>.");
    $(".confirmSave").removeClass("saved");
    $(".confirmSave").addClass("not-saved");    
  });
  
    $(".day_archived_programs").focus(function () {
    // remove disaable attr if a text area gets focus
    if($("#save_changes_day").length > 0){
      $("#save_changes_day").removeAttr("disabled");
    }
    if($(".save_changes_week").length > 0){
      $(".save_changes_week").removeAttr("disabled");
    }
    $(".confirmSave").html("Ändringar gjorda men <b>ej sparade</b>.");
    $(".confirmSave").removeClass("saved");
    $(".confirmSave").addClass("not-saved");    
  });
  
  $(".week_title").focus(function () {
    if($(".save_changes_week").length > 0){
      $(".save_changes_week").removeAttr("disabled");
      $(".confirmSave").html("Ändringar gjorda men <b>ej sparade</b>.");
      $(".confirmSave").removeClass("saved");
      $(".confirmSave").addClass("not-saved");
    }
  });
  
  $(".week_text").focus(function () {
    if($(".save_changes_week").length > 0){
      $(".save_changes_week").removeAttr("disabled");
      $(".confirmSave").html("Ändringar gjorda men <b>ej sparade</b>.");
      $(".confirmSave").removeClass("saved");
      $(".confirmSave").addClass("not-saved");
    }
  });

  // add program to a date in day view
    $("#add_program_calendar").click(function(){    
      return addProgramToDay();
    });
    
    // remove program from a day
    $(".remove_program_calendar").click(function(){    
      return removeProgramFromDay($(this).parent().attr("id"));
    })  
      
   // save day
    $("#save_changes_day").click(function(){    
      return saveDay();
    });
    
    // save week
    $(".save_changes_week").click(function(){    
      saveWeek();
      return saveWeekInfo();
    });
    
    
    // add program to a date in week view
    $(".add_program_calendar_week").click(function(){
      
      var input_button_id = $(this).attr("id");
      var date = input_button_id.substr(21);
      var form_elem = $(this).parent();
      var program_id = $(form_elem).children("select").children("option:selected").val();
      
      return addProgramToDayWeek(program_id, date);
    });
    
    
    // COPY AND PASTE IN CALENDAR
    $("#cancel_button").click(function(){
      cancelCopy();
    })

    // select days in week on week checkbox click
    $(".week input").click(function(){    
      selectDaysInWeek( $(this).attr('id') );
    });
    
    // copy checked days
    $("#copy_button").click(function(){    
      copyDays();
    });
    
    // paste button
    $("#paste_button").click(function(){
    	saveDaysSelectedForPaste();
    });
    
    
    // $("#copy_options").hide();
    $("#start_copy").click( function(){
      setFunctionMode("enable_copy");
      $("#copy_options").show();
      $("#copyfunction").addClass("active"); 
    });
    
     $(".paste_weekday").click( function(){
			 date = $(this).children("td.check").children("input").val();
			 var nr_of_paste_days = $("#nr_of_paste_days").val();
			 // console.debug(nr_of_paste_days);
		   pasteDays(date, nr_of_paste_days);
 		});
    
});



function reloadPage()
{
  window.location.reload();
}



function saveDay(){
  
      var parameters = "";
      var title_array = $(".day_title");
      
    // day title
    for(var i = 0; i < title_array.length; i++){    
      var date_long = $(title_array[i]).attr("id");
      var textfield_text = $(title_array[i]).attr("value");
      
      // if titel is empty use first program namne instead
      // if(textfield_text == ""){
      //  if($("#added_program_calendar li:first a:first").length > 0){
      //      var textfield_text = $("#added_program_calendar li:first").text();  
      //  }
      // }
      
      // remove additional text "datetextfield" from date_long
      var date = date_long.substr(13, 9);
      if(i == 0){
        parameters = parameters + "datetitle"+date+"="+encodeURIComponent(textfield_text);
      }
      else{
        parameters = parameters + "&datetitle"+date+"="+encodeURIComponent(textfield_text);  
      }
    }
    
    var day_text_array = $(".day_text");
    // day comments
    // loop through alla text areas and save value in corresponding input elem
    for(var i = 0; i < day_text_array.length; i++){    
      var date_long = $(day_text_array[i]).attr("id");
      var textarea_text = $(day_text_array[i]).attr("value");
      // remove additional text "datetextarea" from date_long
      var date = date_long.substr(12, 9);    
      parameters = parameters + "&datetext"+date+"="+encodeURIComponent(textarea_text);
    }
    
    // Also send programs info if day is archived!!
    var day_archived_programs_array = $(".day_archived_programs");
    // day comments
    // loop through alla text areas and save value in corresponding input elem
    for(var i = 0; i < day_archived_programs_array.length; i++){    
      var date_long = $(day_archived_programs_array[i]).attr("id");
      var textarea_programs_text = $(day_archived_programs_array[i]).attr("value");
      // remove additional text "datetextarea" from date_long
      var date = date_long.substr(12, 9);    
      parameters = parameters + "&dateprogramstext"+date+"="+encodeURIComponent(textarea_programs_text);
    }
    
    
    //alert(parameters);
    $.ajax({
       type: "GET",
       url: "/planering/dag/save_day/",
       cache:false,
       data:parameters,
       success: function (data, textStatus) {
         var data = parseXml(data);
         
         $("#save_changes_day").attr("disabled", "disabled");
         $(".confirmSave").text("Information sparad!");
         $(".confirmSave").removeClass("not-saved");
         $(".confirmSave").addClass("saved");
         //alert(data);
        }
    });
    
    // change to true to submit form
    return false;
}

function removeProgramFromDay(program_calendar_id){
//  var program_id = $(this).parent().attr("id");
// how to get unique id:s and at the same time be ale to get the id
  //console.debug(program_calendar_id);
  var calendar_program_id = program_calendar_id.substr(20);
     $.ajax({
       type: "GET",
       url: "/planering/dag/remove_program_from_day/"+calendar_program_id +"/",
       cache:false,
       success: function (data, textStatus) {
         var data = parseXml(data);
         //alert(data);
     // var new_pid = data;
     //console.debug(data);
         
         // remove program from view
         $("#"+program_calendar_id).remove();
         
         $("#reload_info").replaceWith("<p style=\"padding:5px; color:#000; border: 1px solid #9c9; background-color:#cec;\"><a href=\"#\" onclick=\"window.location.reload(); return false;\">Ladda om sidan</a> för att uppdatera denna vy med senaste programmen</p>");
      }
    });
        
  return false;
}

function addProgramToDay(){
    
    var program_id = $("#program_select option:selected").attr("value");
    //console.debug(program_id);
    
    // FIXA: hämta date från vettigt ställe
    var date = $("#datetemp").text();

         $.ajax({
           type: "GET",
           url: "/planering/dag/add_program_to_day/"+date+"/"+program_id +"/",
           cache:false,
           success: function (data, textStatus) {
             var data = parseXml(data);
             // alert(data);
             var program_id = $("programid", data).text();
             var program_name = $("programname", data).text();
             var program_calendar_id = $("programcalendarid", data).text();
             
             $("#added_program_calendar").append("<li style=\"list-style-type: none; margin: 2px 0; padding: 3px; display: block; background: #eee;\" id=\"program_calendar_id_"+program_calendar_id+"\">"+program_name+"&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#\" style=\"float:right\" class=\"remove_program_calendar\">ta bort</a></li>");
             
             // remove program from a day - activate onclick
            $("#program_calendar_id_"+program_calendar_id+ " .remove_program_calendar").click(function(){    
              return removeProgramFromDay($(this).parent().attr("id"));
            });
             
             $("#reload_info").replaceWith("<p style=\"padding:5px; color:#000; border: 1px solid #9c9; background-color:#cec;\"><a href=\"#\" onclick=\"window.location.reload(); return false;\">Ladda om sidan</a> för att uppdatera denna vy med senaste programmen</p>");

            }
        });
        
}


function saveWeek(){
  
    var parameters = "";
    
    
    var title_array = $(".day_title");
    // day title
    for(var i = 0; i < title_array.length; i++){    
      var date_long = $(title_array[i]).attr("id");
      var textfield_text = $(title_array[i]).attr("value");
      
      // remove additional text "datetextfield" from date_long
      var date = date_long.substr(13, 9);
      
      if(i == 0){
        parameters = parameters + "datetitle"+date+"="+encodeURIComponent(textfield_text);
      }
      else{
        parameters = parameters + "&datetitle"+date+"="+encodeURIComponent(textfield_text);  
      }
    }
    
    var day_text_array = $(".day_text");
    // day comments
    // loop through alla text areas and save value in corresponding input elem
    for(var i = 0; i < day_text_array.length; i++){    
      var date_long = $(day_text_array[i]).attr("id");
      var textarea_text = $(day_text_array[i]).attr("value");
      // remove additional text "datetextarea" from date_long
      var date = date_long.substr(12, 9);    
      parameters = parameters + "&datetext"+date+"="+encodeURIComponent(textarea_text);
    }
    
    //alert(parameters);
    $.ajax({
       type: "GET",
       url: "/planering/vecka/save_week/",
       cache:false,
       data:parameters,
       success: function (data, textStatus) {
         var data = parseXml(data);
         $(".save_changes_week").attr("disabled", "disabled");
         $(".confirmSave").text("Information sparad!");
         $(".confirmSave").removeClass("not-saved");
         $(".confirmSave").addClass("saved");
        }
    });
    
    // change to true to submit form
    return false;
}


function saveWeekInfo(){
  
    var parameters = "";
    
    
    var week_title_array = $(".week_title");
    // week title(s)
    for(var i = 0; i < week_title_array.length; i++){    
      var date_long = $(week_title_array[i]).attr("id");
      var textfield_text = $(week_title_array[i]).attr("value");
      
      // remove additional text "weekdatetextfield" from date_long
      var date = date_long.substr(17, 9);

      if(i == 0){
        parameters = parameters + "dateweektitle"+date+"="+encodeURIComponent(textfield_text);
      }
      else{
        parameters = parameters + "&dateweektitle"+date+"="+encodeURIComponent(textfield_text);  
      }
    }
    
    var week_text_array = $(".week_text");

    // loop through alla text areas and save value in corresponding input elem
    for(var i = 0; i < week_text_array.length; i++){    
      var date_long = $(week_text_array[i]).attr("id");
      var textarea_text = $(week_text_array[i]).attr("value");
      // remove additional text "weekdatetextarea" from date_long
      var date = date_long.substr(16, 9);    
      parameters = parameters + "&dateweektext"+date+"="+encodeURIComponent(textarea_text);
    }
    
    //alert(parameters);
    $.ajax({
       type: "GET",
       url: "/planering/vecka/save_week_info/",
       cache:false,
       data:parameters,
       success: function (data, textStatus) {
         var data = parseXml(data);
         
         $(".save_changes_week").attr("disabled", "disabled");
        }
    });
    
    // change to true to submit form
    return false;
}


// add program to day in week view
function addProgramToDayWeek(program_id, date){
    
    // console.debug("id:"+program_id+" date:"+date);

         $.ajax({
           type: "GET",
           url: "/planering/dag/add_program_to_day/"+date+"/"+program_id +"/",
           cache:false,
           success: function (data, textStatus) {
             var data = parseXml(data);
             //alert(data);
           // var new_pid = data;
           //console.debug(data);
             var program_id = $("programid", data).text();
             var program_name = $("programname", data).text();
             
             var program_calendar_id = $("programcalendarid", data).text();
             
             //console.debug(program_calendar_id);
             //console.debug(program_name);
             
             $("#added_program_calendar"+date).append("<li id=\"program_calendar_id_"+program_calendar_id+"\">"+program_name+" <a href=\"#\" class=\"remove_program_calendar\">ta bort</a></li>");
             
             // remove program from a day - activate onclick
            $("#program_calendar_id_"+program_calendar_id+ " .remove_program_calendar").click(function(){    
              return removeProgramFromDayWeek($(this).parent().attr("id"));
            });
             

            }
        });

}

// remove program from day in week view - different feedback
function removeProgramFromDayWeek(program_calendar_id){
//  var program_id = $(this).parent().attr("id");
// how to get unique id:s and at the same time be ale to get the id
  //console.debug(program_calendar_id);
  var calendar_program_id = program_calendar_id.substr(20);
     $.ajax({
       type: "GET",
       url: "/planering/dag/remove_program_from_day/"+calendar_program_id +"/",
       cache:false,
       success: function (data, textStatus) {
         var data = parseXml(data);

         // remove program from view
         $("#"+program_calendar_id).remove();
    
      }
    });
        
  return false;
}



// selct days in week
function selectDaysInWeek(week) {
  if ($("#"+week+":checked").length > 0) {
    $("."+week+" input").attr("checked", "checked");
  } else {
    $("."+week+" input").attr("checked", "");
  }
}


function copyDays(){
	// disable copy_button so you can't initialize function more than once
	$("#copy_button").attr("disabled", "disabled");
  // get array of checked days
  var checked_days_array = $("td.check input:checked");
  if(checked_days_array.length > 0){
	  var dates = "dates="
	  for(var i = 0; i < checked_days_array.length; i++) {
	    if (i > 0) {
	      dates += ",";
	    }
	    dates += $(checked_days_array[i]).val();
	  }
	  
	   $.ajax({
	     type: "POST",
	     data: dates,
	     url: "/planering/ar/copy_days/",
	     cache:false,
	     success: function (data, textStatus) {
	       var data = parseXml(data);
	       var nr_of_days = $("nr_of_days", data).text();
	       if(nr_of_days > 0){
		       $("#copy_button").attr("disabled", "disabled");
		       $("#paste_button").removeAttr("disabled");
		       $("#cancel_button").removeAttr("disabled");
		       
		       $("td.check input:checked").parent("td").parent("tr").addClass("selected_for_copy");//children("td").addClass("highlight");
		       // hide check-boxes
		       //$("td.check input").css("visibility", "hidden");
		       $("td.check input").addClass("hidden");
		       //$("td.week input").css("visibility", "hidden");
		       $("td.week input").addClass("hidden");
		       
		       // add paste icon instead of checkbox
		       $("td.check").prepend("<img src=\"/images/icons/convert_16.png\" alt=\"\" style=\"cursor: pointer;\" title=\"Klistra in\" />");
		       
		       // set paste event for each row which is a day
		       /*
		       $("td.check").parent("tr").children("td").click( function(){
		         date = $(this).parent("tr").children("td.check").children("input").val();
		         pasteDays(date, nr_of_days);
		       });
		       */
		       
		       // add paste class to weekdays to make them clickable for paste
		       $(".weekday").addClass("paste_weekday");
		       
		       $(".paste_weekday").click( function(){
		         date = $(this).children("td.check").children("input").val();
		         //console.debug(date);
		         //console.debug(nr_of_days);
		         pasteDays(date, nr_of_days);
		     		});
	       }
	       else{
	       		alert("Du har inte markerat några dagar för kopiering. Klicka på avbryt och försök igen.");
       			// enable copy_button for new copy
       			$("#copy_button").removeAttr("disabled");
							
	       }
	     }
  	});
  }
  else{
  		alert("Du har inte markerat några dagar för kopiering. Markera dagar i kalendern innan du klickar på knappen 'kopiera valda dagar'");
  		// enable copy_button for new copy
	    $("#copy_button").removeAttr("disabled");
  }
        
  return false;
}

function pasteDays(date, nr_of_days) {
  
  // remove all currently selected days.
  $("*").removeClass("selected_for_paste");
  
  //var day = $("#date" + date);
  
  // selected day
  //$(day).addClass("selected_for_paste");
  
  var weekday_array = $(".weekday");
  var j = 0;
  var start_mark = false;
  for (var i = 0; j < nr_of_days && i < weekday_array.length; i++) {
  			if(("date" + date == $(weekday_array[i]).attr("id")) || start_mark){
	      	$(weekday_array[i]).addClass("selected_for_paste");
	      	start_mark = true;
  				j++;
  			}
  }
  
  if(j != nr_of_days){
	    // FIXA: nu blir det även såhär när månaden tar slut. if we are here the year has ended and no more days can be pasted in this view.
    	alert("Obs! Endast " +j+ " av dina "+nr_of_days+" kopierade dagar klistras in då året är slut.");  	
  }
  
  /*
  var day = $("#date" + date);
  
  // selected day
  $(day).addClass("selected_for_paste");
  
  // rest of days
  for (var i=1; i < nr_of_days;) {
    
    if ( $(day).next().length > 0 ) {
    	if(!($(day).next().hasClass("weeknumber"))){
	      var next = $(day).next();
	      $(next).addClass("selected_for_paste");
	      day = next;
	      i++;
    	}
    	else{
    		day = $(day).next();
    	}
    }
    else{
    	// FIXA: nu blir det även såhär när månaden tar slut. if we are here the year has ended and no more days can be pasted in this view.
    	alert("Obs! Endast " +i+ " av dina "+nr_of_days+" kopierade dagar klistras in då året är slut.");
    	i = nr_of_days;

    }
  }
  */
  
  // set session var function to be in enable paste mode
  // setFunctionMode("enable_paste");
  // console.debug(date);
  // console.debug(nr_of_days);
  setSelectedPasteDate(date, nr_of_days);

}

function saveDaysSelectedForPaste(){
	// disable paste button
	$("#paste_button").attr("disabled", "disabled");
	
	// get days with class "selected_for_paste"
	var selected_days_array = $(".selected_for_paste");
	
	if(selected_days_array.length > 0){
		var dates = "dates=";
		for(var i = 0; i < selected_days_array.length; i++){
				var date_long = $(selected_days_array[i]).attr("id");
				var date = date_long.substr(4);
				if(i == 0){
					dates += date;	
				}
				else{
					dates += "," + date;
				}
		}
		 $.ajax({
		   type: "POST",
	     data: dates,
	     url: "/planering/ar/paste_days/",
	     cache:false,
	     success: function (data, textStatus) {
	       var data = parseXml(data);
	       $("#copy_button").removeAttr("disabled");
	       $("#paste_button").attr("disabled", "disabled");
	       $("#cancel_button").attr("disabled", "disabled");
	       window.location.reload();       
	     }
	  });
	}
	else{
		alert("Klicka på en dag i kalendern där du vill klistra in dina kopierade dagar. Klicka sedan på knappen 'klistra in kopierade dagar'.");
		$("#paste_button").removeAttr("disabled");
	}
  
}

// maybe reload page on cancel ???
function cancelCopy() {
   $.ajax({
     type: "POST",
     url: "/planering/ar/cancel_copy/",
     cache:false,
     success: function (data, textStatus) {
       var data = parseXml(data);
       $("input:checked").attr("checked", "");
       $("#copy_button").removeAttr("disabled");
       $("#paste_button").attr("disabled", "disabled");
       $("#cancel_button").attr("disabled", "disabled");
       window.location.reload();
     }
  });
        
  return false;

}


function setSelectedPasteDate(date, nr_of_days_selected){
	
	   $.ajax({
     type: "POST",
     data: "paste_date="+date+"&nr_of_days="+nr_of_days_selected,
     url: "/planering/ar/set_selected_paste_date/",
     cache:false,
     success: function (data, textStatus) {
       //$("td.check input").removeClass("hidden");
       //$("td.week input").removeClass("hidden");
     }
  });
  
}

function setFunctionMode(mode) {
   $.ajax({
     type: "POST",
     data: "function="+mode,
     url: "/planering/ar/set_function_session/",
     cache:false,
     success: function (data, textStatus) {
       $("td.check input").removeClass("hidden");
       $("td.week input").removeClass("hidden");
       $("td.check input").attr("checked", "");
       $("td.week input").attr("checked", "");
       $("#copy_button").removeAttr("disabled");
       $("#cancel_button").removeAttr("disabled");
     }
  });
}

