
Ext.namespace('appObjects.note');Ext.namespace('app.note');appObjects.note=Ext.extend(Ext.util.Observable,{offsetX:0,offsetY:0,notes:[],constructor:function(config){Ext.apply(this,config||{});appObjects.note.superclass.constructor.apply(this,arguments);Ext.onReady(this.start,this);},start:function(){Ext.select('.newnote').on('click',this.newNote,this);Ext.select('.note.edit').on('click',this.editMeetingNote,this);Ext.select('.editable_note').on('blur',this.saveMeetingNote,this);},editMeetingNote:function(event,element){event.stopEvent();var element=Ext.get(element);if(element.is('span')){element=element.findParent('a',5,true);}
if(element.is('a')){meeting_id=element.getAttributeNS('meeting','id');var notedisplay=Ext.get('notebox_static_'+meeting_id);if(notedisplay){var width=notedisplay.getWidth();var height=notedisplay.getHeight();notedisplay.setStyle('display','none');var noteeditor=Ext.get('notebox_editable_'+meeting_id);noteeditor.setStyle('display','block');noteeditor.setWidth(width);if(height<300){noteeditor.setHeight(300);}else{noteeditor.setHeight(height);}
noteeditor.focus();}
Ext.select('.notebox_instructions').hide();}},saveMeetingNote:function(event,element){meeting_id=Ext.fly(element).getAttributeNS('note','meeting_id');model_id=Ext.fly(element).getAttributeNS('note','model_id');model=Ext.fly(element).getAttributeNS('note','model');content=Ext.fly(element).getValue();var parameters={'data[Note][payload]':content,'data[Note][foreign_key]':model_id,'data[Note][meeting_id]':meeting_id}
Ext.Ajax.request({url:'/'+model+'/savenote',showFlashSuccess:true,params:parameters,success:function(response,options){response=Ext.decode(response.responseText);if(response.success){Ext.fly('notebox_static_'+meeting_id).setStyle('display','block');Ext.fly('notebox_editable_'+meeting_id).setStyle('display','none');Ext.fly('notebox_static_'+meeting_id).dom.innerHTML=content;}},scope:this});},newNote:function(event,element){event.browserEvent.cancelBubble=true;element=Ext.get(element);if(this.noteBox){var ta=Ext.DomQuery.selectNode('textarea',this.noteBox.dom);ta.value='';}
if(!element.is('.newnote')){element=element.findParent('.newnote',10,true);if(!element){return;}}
var id_model=element.id.split("_");if(this.noteBox)
var meeting_id=this.noteBox.child('select').getValue();if(!isUserLoggedIn()){flashError('You need to be logged in to perform that action');showLoginInterstitial();return false;}
if(id_model.length>1){var noteData=this.checkNote(id_model[0],meeting_id);this.makeNote(element,id_model[1],id_model[0],noteData);}},checkMeeting:function(){var id_model=this.noteBox.relatedId;var meeting_id=this.noteBox.child('select').getValue();var noteData=this.checkNote(id_model,meeting_id);if(noteData)
this.setNoteInfo(this.noteBox,noteData);else
Ext.DomQuery.selectNode('textarea',this.noteBox.dom).value='';},checkNote:function(id,meeting_id){for(var i=0;i<this.notes.length;i++){if(this.notes[i].model_id==id&&this.notes[i].meeting_id==meeting_id){return this.notes[i];}}
return null;},addNote:function(noteData){for(var i=0;i<this.notes.length;i++){if(this.notes[i].model_id==noteData.model_id&&this.notes[i].meeting_id==noteData.meeting_id){this.notes[i].content=noteData.content;return this.notes[i];}}
this.notes.push(noteData);},removeNote:function(noteData){new_notes=new Array();for(var i=0;i<this.notes.length;i++){if(this.notes[i].model_id!=noteData.model_id||this.notes[i].meeting_id!=noteData.meeting_id){new_notes[new_notes.length]=this.notes[i];}}
this.notes=new_notes;},updateNoteText:function(){notetext='';var noteData=this.getNoteInfo(this.noteBox);for(var i=0;i<this.notes.length;i++){if(this.notes[i].model_id==noteData.model_id){notetext+='&nbsp;&nbsp;&nbsp;&nbsp;<strong>NOTE: </strong>'+this.notes[i].content;}}
if(this.noteBox.element){var notearea=this.noteBox.element.child('.notes');if(notearea){notearea.dom.innerHTML=notetext;}}},makeNote:function(el,model,id,data){pos=this.getAbsolutePosition(el.dom);this.noteBox=Ext.get('notebox');this.noteBox.relatedId=id;this.noteBox.model=model;this.noteBox.element=el.findParent('.listing',null,true);if(this.noteBox.element==null){notes=Ext.query('.notes');this.noteBox.element=Ext.fly(notes[0]).parent();}
this.noteBox.meeting_id=this.noteBox.child('select').getValue();this.noteBox.setStyle('top',(pos.y+this.offsetY)+'px');this.noteBox.setStyle('left',(pos.x+this.offsetX)+'px');this.noteBox.setStyle('display','block');if(data){this.setNoteInfo(this.noteBox,data);}
this.noteBox.select('span.savenote').removeAllListeners();this.noteBox.select('span.savenote').on('click',this.saveNote,this);this.noteBox.select('span.clearnote').removeAllListeners();this.noteBox.select('span.clearnote').on('click',this.clearNote,this);this.noteBox.select('select').removeAllListeners();this.noteBox.select('select').on('change',this.checkMeeting,this);this.checkMeeting();},saveNote:function(){if(this.noteBox){var noteData=this.getNoteInfo(this.noteBox);var parameters={'data[Note][payload]':noteData.content,'data[Note][foreign_key]':noteData.model_id,'data[Note][meeting_id]':noteData.meeting_id}
Ext.Ajax.request({url:'/'+noteData.model+'/savenote',showFlashSuccess:true,params:parameters,success:function(response,options){response=Ext.decode(response.responseText);if(response.success){this.noteBox.setStyle('display','none');this.addNote(this.getNoteInfo(this.noteBox));this.updateNoteText();}},scope:this});}},clearNote:function(){if(this.noteBox){var noteData=this.getNoteInfo(this.noteBox);var parameters={'data[Note][payload]':noteData.content,'data[Note][foreign_key]':noteData.model_id,'data[Note][meeting_id]':noteData.meeting_id}
Ext.Ajax.request({url:'/'+noteData.model+'/clearnote',showFlashSuccess:true,params:parameters,success:function(response,options){response=Ext.decode(response.responseText);if(response.success){this.noteBox.setStyle('display','none');this.removeNote(this.getNoteInfo(this.noteBox));this.updateNoteText();}},scope:this});}},setNoteInfo:function(nbelement,data){var ta=Ext.DomQuery.selectNode('textarea',nbelement.dom);ta.value=data.content;},getNoteInfo:function(nbelement){var text=Ext.DomQuery.selectNode('textarea',nbelement.dom);if(text){text=text.value;}
var relid=nbelement.relatedId;var model=nbelement.model;var meeting_id=nbelement.child('select').getValue();var cnote={'model_id':relid,'model':model,'content':text,'meeting_id':meeting_id}
if(nbelement.noteId){cnote.id=nbelement.noteId;}
return cnote;},note:function(model,id,event,offset){document.getElementById('notebox_model').value=model;document.getElementById('notebox_id').value=id;if(!offset)offset=new point(0,0);if(event.srcElement)
target_element=event.srcElement;else
target_element=event.target;while(!Ext.fly(target_element).hasClass('action')){target_element=target_element.parentNode;}
pos=getAbsolutePosition(target_element);Ext.fly('notebox').setStyle('top',(pos.y+this.offsetY)+'px');Ext.fly('notebox').setStyle('left',(pos.x+this.offsetX)+'px');Ext.fly('notebox').setStyle('display','block');},point:function(x,y){if(!x)x=0;if(!y)y=0;this.x=x;this.y=y;},getAbsolutePosition:function(domEl,targetEl){elPos=new this.point(0,0);if(domEl.tagName=='BODY'||domEl.offsetParent==null){return elPos;}
parentPos=this.getAbsolutePosition(domEl.offsetParent,targetEl);elPos.x=domEl.offsetLeft+parentPos.x;elPos.y=domEl.offsetTop+parentPos.y;if(targetEl&&domEl.id==targetEl)
return elPos;return elPos;}});appObjects.listingNote=Ext.extend(Ext.util.Observable,{editNoteText:"Edit Note",saveNoteText:"Save Note",saveButtonClass:"",constructor:function(config){Ext.apply(this,config||{});appObjects.listingNote.superclass.constructor.apply(this,arguments);Ext.onReady(this.start,this);},start:function(){Ext.select('.item_notes').each(this.attachActions,this);},attachActions:function(el){el.select('.edit_note_button').on('click',this.saveNote,this);el.select(".notes").on('click',this.editNote,this);},getNotesContainer:function(element){var elm=Ext.get(element);var parent=elm.findParent('.item_notes',10,true);if(parent){var meetingId=parent.child('.meeting_id');var listingId=parent.child('.listing_id');if(meetingId){this.meetingId=meetingId.dom.innerHTML;this.listingId=false;}else if(listingId){this.listingId=listingId.dom.innerHTML;this.meetingId=false;}else{this.listingId=false;this.meetingId=false;}
return parent;}else{return false;}},editNote:function(evt,element){if(this.editing)return;var parentElement=this.getNotesContainer(element);element=Ext.get(element);parentElement.select('.edit_note_button').setStyle('display','block');if(!element.is('.notes')){element=element.findParent('.notes',10,true);if(!element){return false;}}
var content=element.dom.innerHTML;var notecontent=element.child(".note_content");if(notecontent&&notecontent.dom.innerHTML){content=notecontent.dom.innerHTML;}
var taNode={'cls':'noteEditor','tag':'textarea','html':content}
if(element.is('.existing')){taNode.cls="noteEditor existing";taNode.id=element.id;}
if(element.is('.newnote')){taNode.html='';}
element.replaceWith(taNode);element.setHeight(200);this.editing=true;},saveNote:function(evt,element){if(!this.editing)return;var parentElement=this.getNotesContainer(element);element=Ext.get(element);parentElement.select('.edit_note_button').setStyle('display','none');var noteBox=parentElement.child('.noteEditor');if(!noteBox){this.editing=false;return false;}
var data=noteBox.dom.value;var id=noteBox.dom.id;var newnode={'tag':'div','cls':'notes','html':data}
var fkey,mid,model;if(this.listingId){fkey=this.listingId;mid='';model='Listing';}else if(this.meetingId){fkey=this.meetingId;mid=this.meetingId;model='UserMeeting'}else{return false;}
var parameters={'data[Note][payload]':data,'data[Note][foreign_key]':fkey,'data[Note][meeting_id]':mid}
if(noteBox.is('.existing')){newnode.cls='notes existing';newnode.id=id;parameters['data[Note][id]']=id;}
noteBox.replaceWith(newnode);noteBox.on('click',this.editNote,this);Ext.Ajax.request({url:'/'+model+'/savenote',showFlashSuccess:true,params:parameters,success:function(response,options){response=Ext.decode(response.responseText);if(response.success){}},scope:this});this.editing=false;}});app.listingNote=new appObjects.listingNote();app.note=new appObjects.note();
