this.bMultiday		= false;
this.bRecurring		= false;

function pageLoad()
{    
    //pre-fill "today's date" field
    var oDate = new Date();
    var curMonth = oDate.getMonth() + 1;
    var curDay = oDate.getDate();
    var curYear = oDate.getFullYear();
    var curFullDate = curMonth + "/" + curDay + "/" + curYear;
    $get("ctl00_ContentPlaceHolder1_ydate").value = curFullDate;
    $get("pageBody").className="calsuggestevent";
    if(__IsScratch)
        $get("ctl00_ContentPlaceHolder1_SumbitButton").disabled = true;
    Ujc.WebService.CalendarEventWebService.GetEventById(0, GetEvent_OnSuccess, OnWebmethodFailed);
}
function GetEvent_OnSuccess(result)
{
    window.oEvent = result;
}

function SaveEvent()
{ 
    if( !this.ValidateOnSave() ) return;
    	
    //event
    $get('ctl00_ContentPlaceHolder1_SumbitButton').disabled = true;
    oEvent.Id = 0;
    oEvent.FederationId = __FederationId;
    oEvent.CalendarId = __CalendarId;
    oEvent.Status = 3;//public pending     
    // set the event type 
    var sEventType;
    if( this.bMultiday && this.bRecurring )
	    sEventType = "4";
    else if( this.bMultiday )
	    sEventType = "2";
    else if( this.bRecurring )
	    sEventType = "3";
    else
	    sEventType = "1";
    oEvent.EventType = sEventType	;
    oEvent.Title = $get("ctl00_ContentPlaceHolder1_EventTitle").value;
    oEvent.ShortTitle = $get("ctl00_ContentPlaceHolder1_ShortTitle").value;

    if ($get("UserID") && $get("UserID").value != "" && $get("UserID").value != "0")
        oEvent.OwnerId = parseInt($get("UserID").value);
    
    var sStartDate = $get("ctl00_ContentPlaceHolder1_StartDate").value;
    var sEndDate = $get("ctl00_ContentPlaceHolder1_EndDate").value;
    var sStartTime = $get("ctl00_ContentPlaceHolder1_sTime").value;
    var sStartTimeAMPM = $get("ctl00_ContentPlaceHolder1_sTimeAMPM").value;
    var sEndTime = $get("ctl00_ContentPlaceHolder1_eTime").value;
    var sEndTimeAMPM = $get("ctl00_ContentPlaceHolder1_eTimeAMPM").value;    
    //start date and start time are required
    oEvent.StartDate = sStartDate + " " + sStartTime + " " + sStartTimeAMPM;    
	
	var tempEnd = sEndDate;
	//if end date is not set, make same as start date
    if (tempEnd == "")
        tempEnd = sStartDate;
    //if end time is not set, make same as start time
    if (sEndTime == "")
        tempEnd += " " + sStartTime + " " + sStartTimeAMPM;        
    else
        tempEnd += " " + sEndTime + " " + sEndTimeAMPM;
    oEvent.EndDate = tempEnd;
	
	oEvent.Summary = $get("ctl00_ContentPlaceHolder1_EventSummary").value;
    oEvent.Description = $get("ctl00_ContentPlaceHolder1_gdescription").value;
    oEvent.ExpectedAttendance = $get("ctl00_ContentPlaceHolder1_ExpectedAttendance").value;
    //Contact
    oEvent.ContactFirstName = $get("ctl00_ContentPlaceHolder1_cfirstname").value;
    oEvent.ContactLastName = $get("ctl00_ContentPlaceHolder1_clastname").value;
    oEvent.ContactPhone = $get("ctl00_ContentPlaceHolder1_cphone").value;
    oEvent.ContactFax = $get("ctl00_ContentPlaceHolder1_cfax").value;
    oEvent.ContactEmail = $get("ctl00_ContentPlaceHolder1_cemail").value;
    oEvent.ContactWebsite = $get("ctl00_ContentPlaceHolder1_cwebsite").value;
    oEvent.ContactOther = $get("ctl00_ContentPlaceHolder1_cother").value;
    //Location
    oEvent.LocationName = $get("ctl00_ContentPlaceHolder1_location").value;
    oEvent.LocationAddress = $get("ctl00_ContentPlaceHolder1_address").value;
    oEvent.LocationCity = $get("ctl00_ContentPlaceHolder1_city").value;
    oEvent.LocationState = $get("ctl00_ContentPlaceHolder1_ddStates").value;
    oEvent.LocationZip = $get("ctl00_ContentPlaceHolder1_zip").value;
    oEvent.LocationCountry = $get("ctl00_ContentPlaceHolder1_country").value;
    oEvent.LocationPhone = $get("ctl00_ContentPlaceHolder1_lphone").value;
    oEvent.LocationFax = $get("ctl00_ContentPlaceHolder1_lfax").value;
    oEvent.LocationEmail = $get("ctl00_ContentPlaceHolder1_lemail").value;
    oEvent.LocationWebsite = $get("ctl00_ContentPlaceHolder1_website").value;
    oEvent.LocationOther = $get("ctl00_ContentPlaceHolder1_lother").value;
    //your information
    oEvent.SuggestedFName = $get("ctl00_ContentPlaceHolder1_yfirstname").value;
    oEvent.SuggestedLName = $get("ctl00_ContentPlaceHolder1_ylastname").value;
    oEvent.SuggestedEmail = $get("ctl00_ContentPlaceHolder1_yemail").value;
    oEvent.OtherNotes = $get("ctl00_ContentPlaceHolder1_yother").value;
    //save()
    Ujc.WebService.CalendarEventWebService.SaveEvent(oEvent, SaveCalendarEvent_OnSuccess, OnWebmethodFailed);
}

function SaveCalendarEvent_OnSuccess(result)
{ 
    //recurrence
    oRecuEvent = new Ujc.Calendar.CalendarEventRecurrence();
    var receventlist = document.getElementsByName('RecurType');
    oRecuEvent.Id = 0;
    oRecuEvent.EventId = result;
    oRecuEvent.Date = oEvent.StartDate;
    oRecuEvent.Duration = $get("ctl00_ContentPlaceHolder1_RecurDurationUntil").value + " 11:59:00 PM";
  
    if(Number(getChecked(receventlist))==1)
    {
        oRecuEvent.Interval = $get("ctl00_ContentPlaceHolder1_RecurInterval1").value;
        oRecuEvent.IntervalType = $get("ctl00_ContentPlaceHolder1_RecurIntervalType1").value;
        oRecuEvent.Type = 1;
        Ujc.WebService.CalendarEventWebService.SaveRecurrence(oRecuEvent, SaveRecurrence_OnSuccess, OnWebmethodFailed);   
    }
    else if(Number(getChecked(receventlist))==2)
    {
        oRecuEvent.Interval = $get("ctl00_ContentPlaceHolder1_RecurInterval2").value;
        oRecuEvent.IntervalType = $get("ctl00_ContentPlaceHolder1_RecurIntervalType2").value;
        oRecuEvent.Month = $get("ctl00_ContentPlaceHolder1_RecurMonth").value;
        oRecuEvent.Type = 2;
        Ujc.WebService.CalendarEventWebService.SaveRecurrence(oRecuEvent, SaveRecurrence_OnSuccess, OnWebmethodFailed);   
    }
    else
    {
        //public pending, send email to admin
        Ujc.WebService.CalendarEventWebService.SendAdminEmail(oEvent, SendAdminEmail_OnSuccess, OnWebmethodFailed);   
    }
}

function SaveRecurrence_OnSuccess(result)
{ 
    oEvent.RecurrenceId = result;
    oRecuEvent.Id = result;
    Ujc.WebService.CalendarEventWebService.SaveRecurrenceEvents(oEvent, oRecuEvent, SaveRecurrenceEvents_OnSuccess, OnWebmethodFailed);   
}

function SaveRecurrenceEvents_OnSuccess(result)
{
    Ujc.WebService.CalendarEventWebService.SendAdminEmail(oEvent, SendAdminEmail_OnSuccess, OnWebmethodFailed);   
}

function SendAdminEmail_OnSuccess(result)
{ 
    document.location.href = "/calendar/confirmation.aspx?id=" + $get('FilteredCalendarID').value; 
}

function OnWebmethodFailed(error)
{
    alert('OnWebmethodFailed(): ' + error.get_message() + '\n\n' + error.get_stackTrace());
}


this.ValidateOnSave = function()
{
    ///////////////////////////////
    // Check the required fields //
    var sDelimiter = sReqList = "";    
    
    if ((String( $get("ctl00_ContentPlaceHolder1_EventTitle").value).length) < 1)
    {
        sReqList = "Event Title";
	    sDelimiter = ", ";
    }
    if ((String( $get("ctl00_ContentPlaceHolder1_ShortTitle").value).length) < 1)
    {
	    sReqList += sDelimiter + "Short Title";
	    sDelimiter = ", ";
    }
    
    var sStartDate	= $get("ctl00_ContentPlaceHolder1_StartDate").value;
    var sEndDate	= $get("ctl00_ContentPlaceHolder1_EndDate").value;
    var sStartTime	= $get("ctl00_ContentPlaceHolder1_sTime").value;
    var sEndTime	= $get("ctl00_ContentPlaceHolder1_eTime").value;
    if (this.GetDateFromDateTime(sStartDate) == "")
    {
	    sReqList = sReqList + sDelimiter + "Start Date";
	    sDelimiter = ", ";
    }
    if ((sEndDate.length > 0) && (this.GetDateFromDateTime(sEndDate) == ""))
    {
	    sReqList = sReqList + sDelimiter + "End Date";
	    sDelimiter = ", ";
    }
    if (this.GetTimeFromDateTime(sStartTime) == "")
    {
	    sReqList = sReqList + sDelimiter + "Start Time";
	    sDelimiter = ", ";
    }	
    if ((sEndTime.length > 0) && (this.GetTimeFromDateTime(sEndTime) == ""))
    {
	    sReqList = sReqList + sDelimiter + "End Time";
	    sDelimiter = ", ";
    }	

    var sFirstName	= $get("ctl00_ContentPlaceHolder1_yfirstname").value;
    var sLastName	= $get("ctl00_ContentPlaceHolder1_ylastname").value;
    var sEmail		= $get("ctl00_ContentPlaceHolder1_yemail").value;
    var sCEmail     = $get("ctl00_ContentPlaceHolder1_cemail").value;
    var sToday		= $get("ctl00_ContentPlaceHolder1_ydate").value;	
    if (sFirstName.length < 1)
    {
	    sReqList += sDelimiter + "First Name";
	    sDelimiter = ", ";	
    }
    if (sLastName.length < 1)
    {
	    sReqList += sDelimiter + "Last Name";
	    sDelimiter = ", ";	
    }

    if (sEmail.length < 1)
    {
	    sReqList += sDelimiter + "Email Address";
	    sDelimiter = ", ";	
    }

    if (sToday.length < 1)
    {
	    sReqList += sDelimiter + "Today's Date";
	    sDelimiter = ", ";	
    }
	
    // begin location information validation
    var sZip	= String($get("ctl00_ContentPlaceHolder1_zip").value);
    var sPhone	= String($get("ctl00_ContentPlaceHolder1_lphone").value );
    var sFax	= String($get("ctl00_ContentPlaceHolder1_lfax").value );
    if (!this.ValidateZip(sZip))
    {
	    sReqList += sDelimiter + "Location Zip/Postal Code";
	    sDelimiter = ", ";	
    }		
    if (!this.ValidatePhone(sPhone))
    {
	    sReqList += sDelimiter + "Location Phone";
	    sDelimiter = ", ";	
    }
    if (!this.ValidatePhone(sFax))
    {
	    sReqList += sDelimiter + "Location Fax";
	    sDelimiter = ", ";	
    }
		
    // begin contact information validation
    var cPhone = String($get("ctl00_ContentPlaceHolder1_cphone").value);
    var cFax = String($get("ctl00_ContentPlaceHolder1_cfax").value);
    var cEmail = String($get("ctl00_ContentPlaceHolder1_cemail").value);
    if (!this.ValidatePhone(cPhone))
    {
	    sReqList += sDelimiter + "Contact Phone";
	    sDelimiter = ", ";	
    }
    if (!this.ValidatePhone(cFax))
    {
	    sReqList += sDelimiter + "Contact Fax";
	    sDelimiter = ", ";	
    }
    if ((sCEmail.length < 1 && __requirecontactEmail == 1) || (!EmailChk(sCEmail) && __requirecontactEmail == 1))//check calendar preference if contact emial is mandatory
    {
	    sReqList += sDelimiter + "Contact E-Mail";
	    sDelimiter = ", ";	
    }
    if( sReqList.length > 0 )
    {
	    this.HandleErrorMsg("The following fields are missing or not properly formatted: " + sReqList);
	    return false;
    }		
		
    //////////////////////////////////////////////////
    //if End Date is empty, set it to the start date// //sofira
    if (this.GetDateFromDateTime(sEndDate) == "" || this.GetDateFromDateTime(sEndDate) == "12/31/1969")
    {
	    var sTempDate = this.GetDateFromDateTime(sStartDate);
	    var sTempTime = this.GetTimeFromDateTime(sEndDate);
    	
	    if (sTempTime.length == 0)
		    sEndDate = sTempDate;
	    else
		    sEndDate = sTempDate + " " + sTempTime;
    }

    // make sure dates are proper dates
    var dStartDate = new Date(sStartDate);
    var dEndDate = new Date(sEndDate);
    if (isNaN(dStartDate) || isNaN(dEndDate))
    {
	    this.HandleErrorMsg("A date or time you have entered is not valid.");
	    return false;
    }
    		
    // Make sure end date is after start date
    if (dEndDate < dStartDate)
    {
	    this.HandleErrorMsg("You have entered an end date or time that is before the start date or time.");
	    return false;
    }				
			
    // if a recurring event, check if the duration date is valid
    var receventlist = document.getElementsByName('RecurType');
    if (Number(getChecked(receventlist)) > 0)
    {
	    var sRecurUntilDate = String($get("ctl00_ContentPlaceHolder1_RecurDurationUntil").value);			
	    if (this.GetDateFromDateTime(sRecurUntilDate) == "")
	    {
		    this.HandleErrorMsg( "You must assign a valid Recurrence Duration date for your recurring event in order for it to be saved properly." );			
		    return false;
	    }
    }		
   	
    // is this a multiday event?
    if( (dEndDate.getDay() - dStartDate.getDay() > 0) && (dEndDate.getMonth() - dStartDate.getMonth() >= 0) && (dEndDate.getFullYear() - dStartDate.getFullYear() >= 0)  )
    {
	     this.bMultiday = true;
    }
    
    var receventlist = document.getElementsByName('RecurType');
    if (Number(getChecked(receventlist)) > 0)
        this.bRecurring = true;

    return true;		
} // ValidateOnSave()

this.HandleErrorMsg = function( sErrMsg )
{	
    $get('ErrorMessage').innerHTML = "* " + sErrMsg;
	$get('ErrorMessageEnd').innerHTML = "* " + sErrMsg;
}

function ToggleCheckBoxes(doCheck)
{
    var i = 0;
    while ( $get('ctl00_ContentPlaceHolder1_CategoryList_' + i) != null )
    {        
        $get('ctl00_ContentPlaceHolder1_CategoryList_' + i).checked = doCheck;
        i++;
    }
}

function CategoryOkClick()
{
    var checkedCats = $get("ctl00_ContentPlaceHolder1_CategoryList").getElementsByTagName("input");
    var Categories = new Array();
    var catList = "", catNames = "";
    
    for (var i = 0; i < checkedCats.length; i++)
    {
        var item = checkedCats[i];
        if(item.checked)
        {
            var cat = new Ujc.Dto.CalendarCategory();
            if (item.parentNode.catId)
                cat.Id = item.parentNode.catId;
            else
                cat.Id = item.parentNode.getAttribute("catId");
            if (item.parentNode.catName)
                cat.Name = item.parentNode.catName;
            else
                cat.Name = item.parentNode.getAttribute("catName");
            Categories.push(cat);
            catList += cat.Id + ",";
            catNames += cat.Name + ", ";
        }
    }
    catList = catList.substring(0, catList.lastIndexOf(","));
    catNames = catNames.substring(0, catNames.lastIndexOf(","));
    $get("SelectedCategoryNames").innerHTML = " [" + catNames + "] ";
    $get("SelectedCategories").value = catList;
    
    window.oEvent.Categories = Categories;
    window.isHardClose = true;
}
