
(function($){var converter=new Showdown.converter();function tagToMarkdown(str){var i;var lines=str.split("\n");for(i=0;i<lines.length;i++){if(lines[i].substring(0,4)!='    '){lines[i]=lines[i].replace(/\B@([a-zA-Z0-9_]+)/g,function(match,group1){return'@['+group1+'](/User/'+group1+')';}).replace(/\B\!([a-zA-Z0-9_]+)/g,function(match,group1){return'\\!['+group1+'](/Dashboard/Project/'+group1+')';}).replace(/\B#([a-zA-Z0-9_]+)/g,function(match,group1){return'[#'+group1+'](/Search?query='+group1+')';});}}
return lines.join("\n");};function setHtml(jQ,markdown){jQ.data('markdown.original',markdown);jQ.html(converter.makeHtml(tagToMarkdown(markdown)));};$.fn.markdown=function(markdown){if(typeof markdown!=="object"&&markdown!=null){var $this=$(this[0]);setHtml($(this[0]),markdown);return $this;}
this.each(function(){var $this=$(this);var text=$this.data('markdown.original');if(text!=''){text=$this.text();}
setHtml($this,text);});return this;};})(jQuery);function linkTagString(str){return str.replace(/\B@([a-zA-Z0-9_]+)/g,function(match,group1){return'@<a href="/User/'+group1+'">'+group1+'</a>';}).replace(/\B\!([a-zA-Z0-9_]+)/g,function(match,group1){return'!<a href="/Dashboard/Project/'+group1+'">'+group1+'</a>';}).replace(/\B#([a-zA-Z0-9_]+)/g,function(match,group1){return'<a href="/Search?query='+group1+'">#'+group1+'</a>';});};function _toggleOverdueClass(time,el){var $this=$(el);var date=$.timeago.parse($this.find('.duedate .timeago').attr('title'));if(!isNaN(date.getTime())&&date<=time){$this.addClass('overdue');}else{$this.removeClass('overdue');}}
function toggleOverdueClass(el){_toggleOverdueClass(new Date(),el);}
function overdueTimerEvent(){var now=new Date();$('.taskLine:not(.completed):not(.cancelled)').each(function(){_toggleOverdueClass(now,this);});};$(document).ready(function(){var dialog=$('#task_edit_dialog');if(dialog.length==0)
return;var idtag=$('#task_id');var summary=$('#task_summary');var description=$('#task_description');var duedate=$('#task_duedate');var duetime=$('#task_duetime');var priority=$('#task_priority');var assignee=$('#task_assignee');var editFields=$([]).add(idtag).add(summary).add(description).add(duedate).add(duetime).add(priority).add(assignee);summary.limit('255','#task_edit_counter');duedate.datepicker({onSelect:function(){duetime.focus();}});duetime.kmTimepicker({onClose:function(){$.kmTimepicker._getInst(this).tpDiv.css('z-index','');}}).focus(function(){$.kmTimepicker._getInst(this).tpDiv.css('z-index',1003);});dialog.dialog({bgiframe:true,autoOpen:false,modal:true,width:600,buttons:{'Delete Task':function(){var doit=confirm("Are you sure you want to delete this task?");if(doit){$.ajax({type:'GET',url:'/Tasks/'+idtag.val()+'/Delete',success:function(result){var ops=JSON.parse(result);for(var i=0;i<ops.length;i++){var obj=$(ops[i].Id);if(ops[i].Operation=='remove'){obj.remove();}}
dialog.dialog('close');},error:function(XMLHttpRequest,textStatus,errorThrown){var errObj=JSON.parse(XMLHttpRequest.responseText);alert("There was a problem deleting your task: "+errObj.Error);}});}},'OK':function(){var valid=true;var sumtxt=summary.val();if(sumtxt.length==0){alert("Oops, you forgot to name your task!");return false;}
if(sumtxt.search(/^\\s$/g)!=-1){alert("You can't have a whitespace-only summary!");return false;}
if(valid){var due;try{due=(new Date(duedate.val()+' '+duetime.val())).toUTCString();if(due=="Invalid Date"){throw due;}}catch(e){due=duedate.val()+' '+duetime.val();}
if(due==' '){due='';}
$.ajax({type:'POST',url:'/Tasks/'+idtag.val()+'/Edit',data:({summary:sumtxt,description:description.val(),assignee:assignee.val(),duedate:due!=''?due:undefined,priority:priority.val()}),success:function(result){var task=JSON.parse(result);if(task.Error!==undefined){alert("There was a problem updating your task: "+task.Error);return;}else{var taskLine=$('#t'+task.Id);taskLine.find('.summary').html(linkTagString(task.Summary));taskLine.find('.description').markdown(task.Description);var type=taskLine.find('input[type="hidden"].type');if(type.length>0&&type.val()=="page"){document.title=task.Summary+" - Taskerrific!";var dateline,time;dateline=taskLine.find('.duedate');if(task.DueDate!=''){time=dateline.find('.timeago');time.attr('title',task.DueDate);time.text(task.DueDate);dateline.show();}else{dateline.find('.timeago').attr('title','');dateline.hide();}
dateline=taskLine.find('.compdate');if(task.Completed!=''){time=dateline.find('.timeago');time.attr('title',task.Completed);time.text(task.Completed);dateline.show();}else{dateline.find('.timeago').attr('title','');dateline.hide();}
dateline.parent().find('.timeago').timeago();var assigneeLink=taskLine.find('a.assignee');assigneeLink.attr('href','/User/'+task.CurrentAssignee.Id);assigneeLink.text(task.CurrentAssignee.Name);}else{var dateline=taskLine.find('.date');if(!dateline.hasClass('compdate')){if(task.DueDate!=''){dateline.addClass('duedate');dateline.html('due <abbr class="timeago" title="'+task.DueDate+'">'+task.DueDate+'</abbr>');dateline.find('.timeago').timeago();}else{dateline.empty().removeClass('duedate');}}
if(task.Priority>4){taskLine.removeClass('priority-low');taskLine.addClass('priority-high');}else if(task.Priority<-4){taskLine.removeClass('priority-high');taskLine.addClass('priority-low');}else{taskLine.removeClass('priority-low');taskLine.removeClass('priority-high');}
toggleOverdueClass(taskLine[0]);}
dialog.dialog('close');}},error:function(XMLHttpRequest,textStatus,errorThrown){var errObj=JSON.parse(XMLHttpRequest.responseText);alert("There was a problem updating your task: "+errObj.Error);}});}},Cancel:function(){$(this).dialog('close');}},close:function(){editFields.val('').removeClass('ui-state-error');assignee.empty();}});$('#task_dueclear').click(function(){duedate.datepicker('setDate','');duedate.val('');duetime.val('');});$(document).everyTime("60s",overdueTimerEvent);});function tlShowButtonClick(btn){btn.toggleClass('hidden');btn.siblings('.hideButton').toggleClass('hidden');btn.parents('.taskLine').find('.details').toggleClass('hidden');}
function tlHideButtonClick(btn){btn.toggleClass('hidden');btn.siblings('.showButton').toggleClass('hidden');btn.parents('.taskLine').find('.details').toggleClass('hidden');}
function tlEditButtonClick(btn){var id=btn.parent().siblings('input[type="hidden"].id').attr('value');btn.attr('src','/Content/icons/progress.gif');$.ajax({type:'GET',url:'/Tasks/'+id,data:'editor=true',success:function(result){var task=JSON.parse(result);if(task.Error!==undefined){alert("There was a problem getting your task: "+task.Error);return false;}
var dialog=$('#task_edit_dialog');$('#task_id').val(task.Id);$('#task_summary').val(task.Summary);$('#task_description').val(task.Description);if(task.Priority>4){$('#task_priority').val(10);}else if(task.Priority<-4){$('#task_priority').val(-10);}else{$('#task_priority').val(0);}
if(''!=task.DueDate){$('#task_duedate').datepicker('setDate',new Date(task.DueDate));var time=new Date(task.DueDate);var ampm='';var hours=time.getHours();if(hours<12){ampm="am";}else{hours=hours-12;ampm="pm";}
if(hours==0)hours=12;var mins=time.getMinutes();if(mins<10){mins='0'+new String(mins);}
$('#task_duetime').val(hours+':'+mins+ampm);}
assignee=$('#task_assignee');assignee.empty();$.each(task.Assignees,function(){var option=$('<option value="'+this.Id+'">'+this.Name+'</option>');if(this.Group!==undefined&&this.Group!=''){var group=assignee.find('optgroup[label="'+this.Group+'"]');if(group.length==0){group=$('<optgroup label="'+this.Group+'"></optgroup>');group.appendTo(assignee);}
option.appendTo(group);}else{option.appendTo(assignee);}});assignee.val(task.CurrentAssignee.Id);dialog.dialog('option','title','Editing "'+task.Summary+'"');dialog.dialog('open');btn.attr('src','/Content/icons/edit.png');},error:function(XMLHttpRequest,textStatus,errorThrown){var errObj=JSON.parse(XMLHttpRequest.responseText);alert("There was a problem getting your task: "+errObj.Error);btn.attr('src','/Content/icons/edit.png');}});}
function tlCheckboxClick(chk){var id=chk.parent().siblings('input[type="hidden"].id').attr('value');var checked=chk[0].checked;$.ajax({type:'POST',url:'/Tasks/'+id+'/Complete',data:!checked?'reopen=true':'',success:function(result){try{var domElement=$(result);if(domElement.length>0){var liElement=$('<li>');liElement.append(domElement);$('#actions > ul').prepend(liElement);domElement.find('abbr[class*=timeago]').timeago();}}
catch(e){var errObj=JSON.parse(result);if(errObj.Error!==undefined){alert("Could not complete task: "+errObj.Error);}else{$(errObj.Id).remove();}}
var taskLine=$('#t'+id);if(checked){taskLine.addClass('completed').removeClass('overdue');var dashType=$('#dash_type');if(dashType.length>0){dashType=dashType.val().toLowerCase();if(dashType=='project'){if(prefs.ShowCompletedOnProjectDashboard==false){taskLine.fadeOut(2000);}}else if(dashType!='completed'){taskLine.fadeOut(2000);}}}else{taskLine.removeClass('completed').show();toggleOverdueClass(taskLine[0]);}},error:function(XMLHttpRequest,textStatus,errorThrown){var errObj=JSON.parse(XMLHttpRequest.responseText);alert("There was a problem posting your task: "+errObj.Error);}});}
function tlAddNoteTo(btn,id,taskName){btn.attr('src','/Content/icons/progress.gif');var dialog=$('#note_edit_dialog');$('#note_id').val('');$('#note_title').val('Re: '+taskName);$('#note_body').val('');$('#note_task').val(id);dialog.dialog('option','title','Write a new note for "'+taskName+'"');dialog.dialog('open');btn.attr('src','/Content/icons/note_add.png');}
function tlAddNoteButtonClick(btn){var id=btn.parent().siblings('input[type="hidden"].id').attr('value');var taskName=btn.parent().siblings('.body').children('.summary').text();tlAddNoteTo(btn,id,taskName);}
function tlGetNoteCounter(taskLine){var value=Number(taskLine.children('input[type=hidden].noteCount').val());if(isNaN(value)){value=0;}
return value;}
function tlSetNoteCounter(taskLine,count){var value=Number(count);if(isNaN(value)){return false;}
if(value<0){return false;}
var counter=taskLine.children('input[type=hidden].noteCount');counter.val(count);var title=count+(count==1?" note":" notes");var icon=taskLine.find('.noteIcon').attr('title',title);if(counter.val()==0){icon.hide();}else{icon.show();}
return true;}
$(document).ready(function(){$('.taskLine').each(function(){tlSetNoteCounter($(this),tlGetNoteCounter($(this)));});$('.taskLine .showButton').click(function(){tlShowButtonClick($(this));});$('.taskLine .hideButton').click(function(){tlHideButtonClick($(this));});$('.taskLine .editTask').click(function(){tlEditButtonClick($(this));});$('.taskLine .addNote').click(function(){tlAddNoteButtonClick($(this));});$('.taskLine .checkbox').click(function(){tlCheckboxClick($(this));});});function hookupTaskLine(taskLine){taskLine.find('abbr[class*=timeago]').timeago();taskLine.find('.markdown').markdown();tlSetNoteCounter(taskLine,tlGetNoteCounter(taskLine));taskLine.find('.showButton').click(function(){tlShowButtonClick($(this));});taskLine.find('.hideButton').click(function(){tlHideButtonClick($(this));});taskLine.find('.editTask').click(function(){tlEditButtonClick($(this));});taskLine.find('.addNote').click(function(){tlAddNoteButtonClick($(this));});taskLine.find('.checkbox').click(function(){tlCheckboxClick($(this));});};
