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 );
}
}
]]>