﻿// JScript File

var AddDate;



function ShowLoading()
{
    //$get("imgLoading").style.display = "block";
}

function HideLoading()
{
    $get("imgLoading").style.display = "none";
}



function LoadCalendarEvents(CategoryID)
{
    var Year = document.getElementById("CalendarYear").value;
    var Month = document.getElementById("CalendarMonth").value;
    
    ShowLoading();
    ClearCalendar();
    CalendarWebServices.GetCalendarEvents(Year,Month, CategoryID, ReceiveCalendarEventNews);
}

function AddNewItem(Month, Day, Year)
{
    AddDate = Month + "/" + Day + "/" + Year;
    ShowLoading();
    showPopWin("<div style='margin: 250px 0px 0px 315px;'><img alt='loading' src='/images/loading.gif' /></div>", 620, 450, true);
    CalendarWebServices.GetCalendarItemControl("", ReceiveEditItemControl);
}

function ReceiveEditItemControl(controlStr)
{
    controlStr = controlStr.replace("[$AddDate$]", AddDate);
    controlStr = controlStr.replace("[$AddDate$]", AddDate);
    
    UpdatePopWinContent(controlStr);
    HideLoading();
}

function SaveCalendarItem()
{
    ShowLoading();
    var btnSave = $get("btnSave")
    var btnCancel =  $get("btnCancel")    

    btnSave.disabled = true;
    btnCancel.disabled = true;
    
    var ClientID = $get("CalendarEventClientID").value;
    var CalendarEventID = $get(ClientID + "CalendarEventID").value;
    var StartDate = $get(ClientID + "txtStartDate").value;
    var EndDate = $get(ClientID + "txtEndDate").value;
    var StartTime = $get(ClientID + "txtStartTime").value;
    var EndTime = $get(ClientID + "txtEndTime").value;
    var CategoryID = $get(ClientID + "ddlCategory").value;
    var Title= $get(ClientID + "txtTitle").value;
    var Description = $get(ClientID + "txtDescription").value;
    var Location = $get(ClientID + "txtLocation").value;
                                                   
    if (StartTime != "")
    {
        if (isValidTime(StartTime))
        {
            StartDate += " " + StartTime;
        }
        else
        {
            alert("Start Time is not a valid time");
            return;
        }
    }          
    
    if (EndTime != "")
    {
        if (isValidTime(EndTime))
        {
            EndDate += " " + EndTime;
        }
        else
        {
            alert("End Time is not a valid time");
            return;
        }
    }                                                         
                                                                                                                        
    CalendarWebServices.SaveCalendarItem(CalendarEventID, StartDate, EndDate, CategoryID, Title, Description, Location, ReceiveSaveResults);
}

function ReceiveSaveResults(results)
{
   if (results.substring(0,2) == "-1")
   {
        alert("An Error Occured: " + results.substring(2));
        var btnSave = $get("btnSave")
        var btnCancel =  $get("btnCancel")    

        btnSave.disabled = false;
        btnCancel.disabled = false;        
        return;
   }
   
   ClearCalendar();
   LoadCalendarEvents("");
   //alert("Save Successful")
   hidePopWin(false);
   
   HideLoading();
}

function ClearCalendar()
{
    var items = document.getElementsByName("eventitem");
    //alert(items.length);
    var i;
    for (i = 0; i < items.length; i++)
    {
        items[i].style.display = "none";
    }
}

function DeleteCalendarItem(CalendarEventID)
{
    var Year = document.getElementById("CalendarYear").value;
    var Month = document.getElementById("CalendarMonth").value;
    var CategoryID = "";
    if (confirm("Are you sure you wish you delete this item?"))
    {CalendarWebServices.DeleteCalendarItem(CalendarEventID, Year, Month, CategoryID, ReceiveSaveResults);}
}

function OpenCalendarEventItem(CalendarEventID)
{
    ShowLoading();
    showPopWin("<div style='margin: 250px 0px 0px 315px;'><img alt='loading' src='/images/loading.gif' /></div>", 620, 450, true);
    CalendarWebServices.GetCalendarItemControl(CalendarEventID, ReceiveEditItemControl);
}

function ReceiveCalendarEventNews(itemStr)
{
    //alert(itemStr);
    eval("var ceObj = " + itemStr);
    //alert(ceObj.eventdata[0].Title);
    
    //parse schedule and put event in day cell
    var Year = document.getElementById("CalendarYear").value;
    var Month = document.getElementById("CalendarMonth").value;
    var i = 0;
    for (i = 0; i < ceObj.schedule.length; i++)
    {
        var DayCell = $get(ceObj.schedule[i].d + Month + Year)
        DayCell.innerHTML += "<div name='eventitem' id='eventitem' title='" + ceObj.eventdata[ceObj.schedule[i].p].Title + " " + ceObj.eventdata[ceObj.schedule[i].p].TimeDisplay + "' onclick='OpenCalendarEventItem(" + ceObj.eventdata[ceObj.schedule[i].p].CalendarEventID + ")' class='CalendarDayItem'>" + ceObj.eventdata[ceObj.schedule[i].p].Title + "</div>";
    } 
    
    HideLoading();
//    var items = itemStr.split("$$?");
//    var Year = document.getElementById("CalendarYear").value;
//    var Month = document.getElementById("CalendarMonth").value;
//    
//    
//    
//    for (var j = 0; j < items.length; j++)
//    {
//        var item = items[j].split(",");


//        for (var DayOffset = 0; DayOffset < item[10]; DayOffset++)
//        {
//            
//            var DateObjName = (Number(item[3]) + DayOffset)  + Month + Year;
//            
//            var cell = document.getElementById(DateObjName);
//            cell.onmouseover = function(ev) {
//                var cell_view = document.getElementById(this.id + "_view");
//                if (cell_view.style.display != "block")
//                {
//                    ev = ev || window.event;
//                    var mousePos = mouseCoords(ev);
//                    //cell_view.style.left = event.clientX - 100 + document.body.scrollLeft;
//                    //cell_view.style.top = event.clientY - 20 + document.body.scrollTop;
//                    cell_view.style.left = mousePos.x - 100;
//                    cell_view.style.top = mousePos.y - 20;
//                    
//                    //***cell_view.style.display = "block";
//                    
//                    //alert(document.body.scrollTop);
//                    //alert(document.documentElement.scrollTop);
//                    
//                    if (CurrentOpenCalendarView != "") 
//                    {
//                    //alert(CurrentOpenCalendarView);
//                        document.getElementById(CurrentOpenCalendarView).style.display = "none";
//                       
//                    }
//                     CurrentOpenCalendarView = cell_view.id;
//                     
//                    //clearTimeout(this.timeout);
//                    //this.timeout = setTimeout(function(){new Effect.BlindDown('rollit', {duration:.3, fps:40})},400);                             
//                    
//                }
//             cell.onmouseout = function() {
//                    if (CurrentOpenCalendarView != "") 
//                    {
//                        document.getElementById(CurrentOpenCalendarView).style.display = "none";  
//                        CurrentOpenCalendarView = "";
//                    }
//             }
//                //cell_view.innerHTML += event
//            }
//            cell.innerHTML += "<div id='CalendarDayItem' onclick='GetCalendarEvent(" + item[9] + ")' >" + item[1] + "<div id='CalendarDayItemSite'>" + item[7] + "</div>" + "</div>";
//            //id='" + item[0] + "'
//            
//            var cell_view = document.getElementById(DateObjName + "_view");
//            
//                //timeout : null;
//                cell_view.onmouseout = function() {
//                this.style.display = "none";
//                CurrentOpenCalendarView = "";
//                }    
//                cell_view.onmouseover = function() {
//                this.style.display = "block";
//                CurrentOpenCalendarView = this.id;
//                }
//                          
//            cell_view.innerHTML += "<div class='CalendarDayViewItem' onclick='GetCalendarEvent(" + item[9] + ")'>" + item[1] + "<div class='CalendarDayViewSite'>" + item[7] + "</div></div>";
//        }
//    }
}

function isValidTime(value) {
   var hasMeridian = false;
   var re = /^\d{1,2}[:]\d{2}([:]\d{2})?( [aApP][mM]?)?$/;
   if (!re.test(value)) { return false; }
   if (value.toLowerCase().indexOf("p") != -1) { hasMeridian = true; }
   if (value.toLowerCase().indexOf("a") != -1) { hasMeridian = true; }
   var values = value.split(":");
   if ( (parseFloat(values[0]) < 0) || (parseFloat(values[0]) > 23) ) { return false; }
   if (hasMeridian) {
      if ( (parseFloat(values[0]) < 1) || (parseFloat(values[0]) > 12) ) { return false; }
   }
   if ( (parseFloat(values[1]) < 0) || (parseFloat(values[1]) > 59) ) { return false; }
   if (values.length > 2) {
      if ( (parseFloat(values[2]) < 0) || (parseFloat(values[2]) > 59) ) { return false; }
   }
   return true;
}


function mouseMove(){
	var ev       = ev || window.event;
	var mousePos = mouseCoords(ev);
}

function mouseCoords(ev){
	if(ev.pageX || ev.pageY){
		return {x:ev.pageX, y:ev.pageY};
	}
//	
	    if (document.documentElement && !document.documentElement.scrollTop)
	    {		
	        return {
		    x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
		    y:ev.clientY + document.body.scrollTop  - document.body.clientTop		    
		    };

		}
		else
		{
	        return {
		    x:ev.clientX + document.documentElement.scrollLeft - document.documentElement.clientLeft,
		    y:ev.clientY + document.documentElement.scrollTop  - document.documentElement.clientTop
		    };
		}
	
}

function GetCalendarEvent(EventId)
{
    CoastalWebServices.GetCalendarEventByEventId(EventId, ReceiveSiteEventNews);
}

function GetNewsSightingPopOver(EventId)
{
    CoastalWebServices.GetNewsSightingBySugestionId(EventId, ReceiveSiteEventNews);
}

function GetEvent()
{
    //showPopWin("test test test", 600, 500, null);
    GetSiteDetailItems(1,"News");
}

function GetSiteDetailItems(nSiteId, Type)
{
    CoastalWebServices.GetCalendarEventNewsBySiteAndType(nSiteId, Type, ReceiveSiteEventNews);
}

function ReceiveSiteEventNews(control)
{
    //showPopWin(control, 600, 600, null);
    showPopWin(control, 600, 600);
}


