﻿// JScript File//
//for handling AJAX works & front end changes for the calendar
//by Palash Acharjya
//palash.ach@gmail.com

     var newid; 
     var xmlHttp;
     
     function delete_event()
       {
         var evdate;
         evdate=formatDate(new Date(getDateFromFormat(document.getElementById("txtpopcurrentdate").value,"MM/dd/y")),"MMM d, y");
         var ans=confirm("Are you sure you want to delete event "+document.getElementById("txtdescription").value+" on "+evdate);
         if (ans)
           {
             var url="createnewevent.aspx?eventid=";
             url+=document.getElementById("txteventid").value;
             url+="&mode=DELETE";
             xmlHttp=null;
             xmlHttp = CreateXmlHttpObject(deleteEvent);
             xmlHttp_Get(xmlHttp, url);
            }  
       }
       
       
     function ShowAddNew(val,i,j,uid)
	   {	  
	     document.getElementById("divaddnewpopup").style.display="block";
	     document.getElementById("divaddnewpopup").style.left="300px";
	     document.getElementById("divaddnewpopup").style.top="320px";
	     document.getElementById("imgopen").style.display="none";
	     document.getElementById("txtpopcurrentdate").value=val;
	     document.getElementById("txtdivmode").value="ADD";
	     document.getElementById("txtdescription").value="";
	     document.getElementById("txti").value=i;
	     document.getElementById("txtj").value=j;
	     document.getElementById("txtuid").value=uid;	
	     var evdate;
         evdate=formatDate(new Date(getDateFromFormat(val,"MM/dd/y")),"MMM d, y"); 
	     document.getElementById("txtpopeventdisplaydate").value=evdate
	   }
	   
	   
	 function ShowEdit(eventid,i,j)
	   {
         var url="createnewevent.aspx?eventid=";
         url+=eventid;
         url+="&mode=view"
         url+="&random=";
         var ran_number= Math.random()*5; 
         url+=ran_number;
         document.getElementById("divaddnewpopup").style.display="block";
	     document.getElementById("divaddnewpopup").style.left="300px";
	     document.getElementById("divaddnewpopup").style.top="320px";
	     document.getElementById("imgopen").style.display="block";
	     document.getElementById("txti").value=i;
	     document.getElementById("txtj").value=j;
	     document.getElementById("txteventid").value=eventid; 
	     document.getElementById("txtdivmode").value="EDIT";
	     xmlHttp=null;
         xmlHttp = CreateXmlHttpObject(viewEvent);
         xmlHttp_Get(xmlHttp, url);
	   }
	 function save_edit()
       {
         var evdate;
         evdate=formatDate(new Date(getDateFromFormat(document.getElementById("txtpopeventdisplaydate").value,"MMM d, y")),"MM/dd/y"); 
	     var url="createnewevent.aspx?desc=";
         url+=document.getElementById("txtdescription").value;
         url+="&evdate=";
         url+=evdate;
         url+="&mode=";
         url+=document.getElementById("txtdivmode").value; 
         if(document.getElementById("txtdivmode").value=="EDIT")
           {
             xmlHttp=CreateXmlHttpObject(updateEvent);
             url+="&eventid=";
             url+=document.getElementById("txteventid").value;
           } 
         else 
             xmlHttp = CreateXmlHttpObject(addEvent);
         xmlHttp_Get(xmlHttp, url);
       }
       
     function CreateXmlHttpObject(functionToCall) 
       { 
	     var xmlHttp1=null;
         try
           {    // Firefox, Opera 8.0+, Safari   
              xmlHttp1=new XMLHttpRequest();    
           }
         catch (e)
           {    // Internet Explorer  
             try
               {
                  xmlHttp1=new ActiveXObject("Msxml2.XMLHTTP");      
               }
             catch (e)
               {
                 try
                   {
                      xmlHttp1=new ActiveXObject("Microsoft.XMLHTTP");        
                   }
                 catch (e)
                   { 
                     alert("Your browser does not support AJAX!");
                     return false;
                   }
               }
           }

	     xmlHttp1.onreadystatechange = functionToCall; 
	 	 return xmlHttp1 ;
	   }

     function addEvent() 
	   { 
		//readyState of 4 or 'complete' represents that data has been returned 
		if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete')
		   {
		      var str = xmlHttp.responseText; 
		      newid=str;
	          var table = document.getElementById("tbleventdisplay");
              var innercode;
              var i=document.getElementById("txti").value;
              var j=document.getElementById("txtj").value;
              // var uid=document.getElementById("txtuid").value;
              var desc=document.getElementById("txtdescription").value;
              if (desc.length>9 )
                 {
                   desc=desc.substring(0,7);
                   desc+="...";
                 } 
              innercode=table.rows[i].cells[j].innerHTML;
              innercode=innercode+"<A href=\"javascript:ShowEdit('"+newid+"','"+i+"','"+j+"');\">"+ desc+"</A><BR>";
              table.rows[i].cells[j].innerHTML=innercode;
              document.getElementById('divaddnewpopup').style.display='none';	   
		   } 
	   } 
	
	 function updateEvent() 
	   { 
		//readyState of 4 or 'complete' represents that data has been returned 
		if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete')
		   {
		     var str = xmlHttp.responseText; 
		     if(str=="success")
		       {
		          var varpopcurrentdate=document.getElementById("txtpopcurrentdate").value;
		          var evdate;
		          //alert(varpopcurrentdate);
                  evdate=formatDate(new Date(getDateFromFormat(document.getElementById("txtpopeventdisplaydate").value,"MMM d, y")),"MM/dd/y"); 
                  //alert("evdate->"+evdate);
                  var table = document.getElementById("tbleventdisplay");
                  var innercode;
                  var i=document.getElementById("txti").value;
                  var j=document.getElementById("txtj").value;
                  // var uid=document.getElementById("txtuid").value;
                  var desc=document.getElementById("txtdescription").value;
                  if (desc.length>9 )
                    {
                      desc=desc.substring(0,7);
                      desc+="...";
                    } 
                  newid=document.getElementById("txteventid").value;
                  innercode=table.rows[i].cells[j].innerHTML;
                  var strnew="javascript:ShowEdit('"+newid;//+"','"+i+"','"+j+"');\">";
                  //alert("strnew->"+strnew)
                  //alert("evdate->"+evdate);
                  //alert("varpopcurrentdate->"+varpopcurrentdate);
                  //alert("complare->"+compareDates(evdate,"MM/dd/y",varpopcurrentdate,"MM/dd/y"));
                  if (evdate==varpopcurrentdate)//date is unchanged
                    {
                       //alert("samedate");
		               var current=innercode.indexOf(strnew);
                       //alert("full->"+innercode);
                       //alert("current "+current);
                       var part1=innercode.substring(0,current);
                       //alert("part1->"+part1);
                       var part2=innercode.substring(current,innercode.length);
                       //alert("part2->"+part2);
                       current=part2.indexOf("</A><BR>");
                       if (current==-1 )
                         current=part2.indexOf("</A><br>");
                       if (current==-1 )
                         current=part2.indexOf("</a><br>");
                       //alert("current "+current);
                       var newpart2=part2.substring(current,part2.length);
                       //alert("New Part2->"+newpart2);
                       innercode=part1+"javascript:ShowEdit('"+newid+"','"+i+"','"+j+"');\">"+ desc+newpart2;
                       //alert("innercode->"+innercode)
                       //innercode=innercode+"<A href=\"javascript:ShowEdit( '"+newid+"','"+i+"','"+j+"');\">"+ desc+"</a><br>";
                       table.rows[i].cells[j].innerHTML=innercode;
                       document.getElementById('divaddnewpopup').style.display='none';
                    }
                  else //date has been changed
                    {
                       //atfirst delete the old event from cell[i][j]......because it is edited in date part also
                       var current=innercode.indexOf(strnew);                                      
                       //alert("full->"+innercode);
                       //alert("current "+current);
                       var part1=innercode.substring(0,current-9)
                       //alert("part1->"+part1);
                       var part2=innercode.substring(current,innercode.length);
                       //alert("part2->"+part2);
                       current=part2.indexOf("</A><BR>");
                       if (current==-1 )
                          current=part2.indexOf("</A><br>");
                       if (current==-1 )
                          current=part2.indexOf("</a><br>");
                       //alert("current "+current);
                       var newpart2=part2.substring(current+8,part2.length);
                       //alert("New Part2->"+newpart2);
                       //innercode=part1+"javascript:ShowEdit( '"+newid+"','"+i+"','"+j+"');\">"+ desc+newpart2;
                       innercode=part1+newpart2;
                       //alert("innercode->"+innercode)
                       //innercode=innercode+"<A href=\"javascript:ShowEdit( '"+newid+"','"+i+"','"+j+"');\">"+ desc+"</a><br>";
                       table.rows[i].cells[j].innerHTML=innercode;
                       
                       //the old event is deleted
                      
                       //now add the new one if it is in the same month
                      
                       var month_old=varpopcurrentdate.substring(0,2)
                       var month_new=evdate.substring(0,2);
                       month_old=(month_old.substring(0,1)==0)? month_old.substring(1,2):month_old;
                       month_new=(month_new.substring(0,1)==0)? month_new.substring(1,2):month_new;
                       //alert("yrhold->"+varpopcurrentdate.substring(6,10));
                       //alert("yrnew->"+evdate.substring(6,10));
                       if(month_old==month_new && varpopcurrentdate.substring(6,10)==evdate.substring(6,10))//if month =same 
                         {
                           //the dates are in same month so add the new one
                           var day_old=varpopcurrentdate.substring(3,5);
                           var day_new=evdate.substring(3,5);
                           day_old=(day_old.substring(0,1)==0)? day_old.substring(1,2):day_old;
                           day_new=(day_new.substring(0,1)==0)? day_new.substring(1,2):day_new;
                           //alert("day_old->"+day_old+" day_new->"+day_new)
                           if(parseInt(day_old,10) < parseInt(day_new,10))
                             {
                               //alert("i->"+i+" j->"+j);
                               for(;j<7 && day_old!=day_new;j++)
                                 day_old++;//alert("i->"+i+" j->"+j+" day_old->"+day_old+" day_new->"+day_new);}
                               for(i=i;day_old!=day_new;i=parseInt(i,10)+2)
                                  for(j=0;j<7 && day_old!=day_new;j++)
                                     day_old++;//alert("i->"+i+" j->"+j+" day_old->"+day_old+" day_new->"+day_new);} 
                              }
                           else
                              {
                                for(j=j;j>=0 && day_old!=day_new;j--)
                                  day_old--;
                                for(i=i;day_old!=day_new;i=parseInt(i,10)-2)
                                   for(j=6;j>=0 && day_old!=day_new;j--)
                                     day_old--;                          
                              } 
                           //new i,j is calculated
                           //now create that event in that new i,j cell
                           innercode=table.rows[i].cells[j].innerHTML;
                           innercode=innercode+"<A href=\"javascript:ShowEdit('"+newid+"','"+i+"','"+j+"');\">"+ desc+"</A><BR>";
                           table.rows[i].cells[j].innerHTML=innercode;
                           
                         }
                       document.getElementById('divaddnewpopup').style.display='none';
                    }  
               }
             else
               {
                 //say try again
                 alert("Sorry, Your event has not been updated, Please try later.");
               
               }     
		   } 
	   } 
	
	 function viewEvent()
	   {
	     if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete')
		    {
		       //var str_get=xmlHttp.responseText; 
               //alert(str_get);
               var recievedxml=xmlHttp.responseXML.documentElement;
	           document.getElementById("txtpopcurrentdate").value=recievedxml.getElementsByTagName("EventDate")[0].childNodes[0].nodeValue;
	           document.getElementById("txtdescription").value=recievedxml.getElementsByTagName("EventDesc")[0].childNodes[0].nodeValue;
	           document.getElementById("txtuid").value=recievedxml.getElementsByTagName("UserId")[0].childNodes[0].nodeValue;
	           var evdate;
               evdate=formatDate(new Date(getDateFromFormat(document.getElementById("txtpopcurrentdate").value,"MM/dd/y")),"MMM d, y"); 
	           document.getElementById("txtpopeventdisplaydate").value=evdate
		    }
	   }
	
     function deleteEvent()
       {
         if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete')
		   {
		      var str_get=xmlHttp.responseText; 
              if(str_get=="deleted")
                {
                   var table = document.getElementById("tbleventdisplay");
                   var innercode;
                   var i=document.getElementById("txti").value;
                   var j=document.getElementById("txtj").value;
                   newid=document.getElementById("txteventid").value;
                   innercode=table.rows[i].cells[j].innerHTML;
                   var strnew="javascript:ShowEdit('"+newid;//+"','"+i+"','"+j+"');\">";
                   //alert("strnew->"+strnew)
                   var current=innercode.indexOf(strnew);         
                   //current=current-9;
                                
                   // alert("full->"+innercode);
                   //alert("current "+current);
                   var part1=innercode.substring(0,current-9);
                  
                   //alert("part1->"+part1);
                   var part2=innercode.substring(current,innercode.length);
                   //alert("part2->"+part2);
                   current=part2.indexOf("</A><BR>");
                   if (current==-1 )
                     current=part2.indexOf("</A><br>");
                   if (current==-1 )
                     current=part2.indexOf("</a><br>");
                   //alert("current "+current);
                   var newpart2=part2.substring(current+8,part2.length);
                   //alert("New Part2->"+newpart2);
                   //innercode=part1+"javascript:ShowEdit( '"+newid+"','"+i+"','"+j+"');\">"+ desc+newpart2;
                   innercode=part1+newpart2;
                   //alert("innercode->"+innercode)
                   //innercode=innercode+"<A href=\"javascript:ShowEdit( '"+newid+"','"+i+"','"+j+"');\">"+ desc+"</a><br>";
                   table.rows[i].cells[j].innerHTML=innercode;
                   document.getElementById('divaddnewpopup').style.display='none';
               
                }
              else
                {
                  alert("Event Not deleted. Please try Again.");
                }  
		   } 
       }	
	//making the request as GET
     function xmlHttp_Get(httpObj, url) 
	   { 	
	
	     httpObj.open('GET', url, true); 
	     httpObj.send(null); 
	   } 

