this.requestrunning = false; localdatacontroller.mergeInsert( this ); this.doNextRequest(); this.requestrunning = false; this.doNextRequest(); Debug.write("loaddata", this, mo, yr); if( !datatester.hasNode( mo , yr ) ){ var r = "calendardata/vcal_" + yr + "-" + mo + "-01.xml"; this.enqueueRequest( r ); } if ( !this.reqq.length ) return; var nr = this.reqq.shift(); Debug.write( "make request " + nr ); this.requestrunning = true; http.serverdata.setAttribute( "src", nr ); http.serverdata.doRequest(); this.reqq.push( r ); if ( ! this.requestrunning ){ this.doNextRequest(); } this.setXPath( "eventdata:/vcalendar/year" + yr + "/month" + mo ); //this is unfortunate, but there's no easy way to see if this //succeeded as v1 return this.getNodeName() == "month"+mo; Debug.write("mergeinsert begin", this, optr); var ptr = optr.dupePointer(); Debug.write("ptr", ptr); this.setXPath( "eventdata:/" ); // [bshine 9.22.06] what is this loop trying to do? while ( ptr.getNodeCount() == 1 ){ Debug.write("mergeinsert", this); var op = this.p; this.setXPath( ptr.getNodeName() ); if ( this.getNodeName() != ptr.getNodeName() ){ this.setPointer ( op ); break; } ptr.selectChild() } this.addNodeFromPointer( ptr ); // Add event is called by the "Add Event" button to //create a new event alleventsDP.setXPath('eventdata:/vcalendar[1]'); // Set the blank event pointer to the top of the event blankeventDP.setXPath('blankEvent:/event[1]'); // Set the right current cal day for new events var selDay = calgrid.daySelectionMgr.getSelection()[0]; if ( selDay ){ blankeventDP.setNodeAttribute('selected',true); blankeventDP.setXPath('start[1]'); blankeventDP.setNodeAttribute('year', selDay.startdate.getFullYear()); blankeventDP.setNodeAttribute('month', selDay.startdate.getMonth()+1); blankeventDP.setNodeAttribute('day', selDay.startdate.getDate()); blankeventDP.setNodeAttribute('hour', 9 ); blankeventDP.setNodeAttribute('minute', 0 ); blankeventDP.setXPath('../end[1]'); blankeventDP.setNodeAttribute('year', selDay.startdate.getFullYear()); blankeventDP.setNodeAttribute('month', selDay.startdate.getMonth()+1); blankeventDP.setNodeAttribute('day', selDay.startdate.getDate()); blankeventDP.setNodeAttribute('hour', 10 ); blankeventDP.setNodeAttribute('minute', 0 ); blankeventDP.setXPath('../summary[1]'); blankeventDP.setNodeAttribute('value', "New Event" ); blankeventDP.selectParent(); } // Move to OR create the node tree for this event // Each event should be in the right part of the // tree of data (yearXXXX/monthX/dayX/) // The location in the tree is derived from the new // events start data var year = blankeventDP.xpathQuery('start/@year'); var month = blankeventDP.xpathQuery('start/@month'); var day = blankeventDP.xpathQuery('start/@day'); getNewNode(alleventsDP,'year'+year); getNewNode(alleventsDP,'month'+month); getNewNode(alleventsDP,'day'+day); // Add the event currenteventDP.setNodeAttribute( "selected" , false ); var newPoint = alleventsDP.addNodeFromPointer(blankeventDP); // Set the event data pointer to the top of the event data alleventsDP.setXPath('eventdata:/vcalendar[1]'); updateEventDate(currenteventDP,year,month,day); //Make node attributes match dataset location alleventsDP.setXPath('eventdata:/vcalendar[1]'); // Create the node tree for this event getNewNode(alleventsDP,'year'+year); getNewNode(alleventsDP,'month'+month); getNewNode(alleventsDP,'day'+day); tempDP.setFromPointer( currenteventDP ); // Copy current data to new location // If the record being moved is selected (usually the case, // currenteventDP changes after this call var newPoint = alleventsDP.addNodeFromPointer(currenteventDP); //Delete the original node tempDP.deleteNode(); // Set the event data pointer to the top of the event data alleventsDP.setXPath('eventdata:/vcalendar[1]'); // Deletes the current node currenteventDP.deleteNode(); //currenteventDP.setXPath('blankEvent:/event[1]'); eventselector.hide(); currenteventDP.setPointer( noEvent.getFirstChild() ); // Changes the current event's time tempDP.setFromPointer( currenteventDP ); var emintmp = tempDP.xpathQuery( "end[1]/@min" ); var smintmp = tempDP.xpathQuery( "start[1]/@min" ); if (typeof(emintmp) == 'undefined') emintmp = 0; if (typeof(smintmp) == 'undefined') smintmp = 0; var evlen = tempDP.xpathQuery( "end[1]/@hour" ) * 60 + emintmp - ( tempDP.xpathQuery( "start[1]/@hour" ) * 60 - smintmp ); var evlenhour = Math.floor( evlen / 60 ); var evlenmin = evlen - ( evlenhour * 60 ); tempDP.setXPath('start[1]'); tempDP.setNodeAttribute('hour', shour); tempDP.setNodeAttribute('minute', smin); tempDP.setXPath('../end[1]'); tempDP.setNodeAttribute('hour', shour + evlenhour); tempDP.setNodeAttribute('minute', smin + evlenmin ); //This changes the attributes of the event's //data to the right year,month,day //debug.write("updateEventDate"); //debug.write("Year: "+year+" month: "+month+" day: "+day); tempDP.setFromPointer( dp ); tempDP.setXPath('start[1]'); tempDP.setNodeAttribute('year',year); tempDP.setNodeAttribute('month',month); tempDP.setNodeAttribute('day',day); tempDP.selectParent(); tempDP.setXPath('end[1]'); tempDP.setNodeAttribute('year',year); tempDP.setNodeAttribute('month',month); tempDP.setNodeAttribute('day',day); //Pass this a datapointer of Start or End node //returns H[a/p] example: 1p var h = DP.getNodeAttribute('hour'); if (h=="")return; var ap='a'; if (h > 11) ap='p'; if (h > 12) h-=12; if (h==0) h='12'; return h+ap; //Pass this a datapointer of Start or End node //returns HH:MM [a/p] example: 1:45p var h = DP.getNodeAttribute('hour'); if (h=="")return; var m = DP.getNodeAttribute('minute') if (Number(m)==0 || m==null) m='0'; if (Number(m)<10) m='0'+m; var ap='a'; if (h > 11) ap='p'; if (h > 12) h-=12; return h+':'+m+ap; //Pass this a datapointer of Start or End node //returns MONTH DD,YYYY example: April 28, 2003 if (DP.getNodeAttribute('month')=="") return (""); return canvas.calMonths[(DP.getNodeAttribute('month')-1)] + " " + DP.getNodeAttribute('day') + ", " + DP.getNodeAttribute('year'); // Moves the current event to the next or previous day // Assumes updateEventDate has fixed any incorrect start tag data // Get current date info var year = Number(currenteventDP.xpathQuery('start[1]/@year')); var month = Number(currenteventDP.xpathQuery('start[1]/@month')); var day = Number(currenteventDP.xpathQuery('start[1]/@day')); var tempDate = new Date(); tempDate.setFullYear(year); tempDate.setMonth(month-1); tempDate.setDate(day); //Change day tempDate=new Date(tempDate.valueOf() + whichWay * 86400000); year = tempDate.getFullYear(); month = Number(tempDate.getMonth())+1; day = tempDate.getDate(); moveEvent(year,month,day); 59 ) { sMinute -= 60; sHour += 1; } this.changeEventTime( sHour, sMinute ); }else{ var eHour = Number(currenteventDP.xpathQuery('end[1]/@hour')); var eMinute = Number(currenteventDP.xpathQuery('end[1]/@minute')); if ( eHour * 60 + eMinute + whichWay * 15 > sHour * 60 + sMinute ) { eMinute += 15 * whichWay; if ( eMinute < 0 ) { eMinute += 60; eHour -= 1; } else if ( eMinute > 59 ) { eMinute -= 60; eHour += 1; } tempDP.setFromPointer( currenteventDP ); tempDP.setXPath('end[1]'); tempDP.setNodeAttribute( 'hour' , eHour ); tempDP.setNodeAttribute( 'minute' , eMinute ); } } ]]>