﻿

var eventXml;
var eventArray;
var dsEvents = new Spry.Data.XMLDataSet("CastoData.asmx/GetEvents?siteId=0", "/events/event", { method: "GET", useCache:false, sortOnLoad: "sortableDate", sortOrderOnLoad: "ascending" });

var promoXml;
var promoArray;
var dsPromos = new Spry.Data.XMLDataSet("CastoData.asmx/GetPromos?siteId=0", "/promos/promo", { method: "GET", useCache:false, sortOnLoad: "name", sortOrderOnLoad: "ascending" });

var curFilter = "all";
var curFilterElement = null;

var today = new Date();
var initYear = today.getFullYear();
var initMonth = today.getMonth();
var initDay = today.getDate();

var mytoday = initMonth + "/" + initDay + "/" + initYear + " 00:00:00";

today = Date.parse(mytoday);

//alert(today);


var eventTableObs = { onPostUpdate: function(notifier, data) {  updateSortColumns(); } };
var promoTableObs = { onPostUpdate: function(notifier, data) {  updateSortColumns(); } };

/*
dsEvents.addObserver({ onPostLoad: function() {
	
	var rows = dsEvents.getData();
	var numRows = rows.length;
    
	// Add some custom columns to our data set.

	for (var i = 0; i < numRows; i++)
	{
		var row = rows[i];

		// Add a 'viewStartIndex' column that indicates what view this row
		// belongs to.
        
        var curDate = new Date.parse(row.date);
        
		row.sortableDate = curDate;
		
		alert(curDate);
	}
}});
*/


function displayEvents(strDate){    
    document.getElementById("events").style.display = "none";
    document.getElementById("promotions").style.display = "none";
    document.getElementById("eventsDetail").style.display = "inline";
    filterEvents(strDate);
    document.getElementById("promotion_header").style.display = "none";
    document.getElementById("no_events").style.display = "none";
    document.getElementById("no_promotions").style.display = "none";   
}

function filterEvents(filter){
   
    curFilter = filter;
    //alert(curFilter);

    dsEvents.filter(eventFilter);   
    var rows = dsEvents.getData();
    var numRows = rows.length;
    if(numRows>0) {
        document.getElementById("no_events").style.display = "none";
    } else {
        document.getElementById("no_events").style.display = "block";
    }
}

function filterPastEvents(filter){
  
    curFilter = filter;
    dsEvents.filter(eventPastFilter);   
    var rows = dsEvents.getData();
    var numRows = rows.length;
    if(numRows>0) {
        document.getElementById("no_events").style.display = "none";
    } else {
        document.getElementById("no_events").style.display = "block";
    }
}


var eventFilter = function(dataSet, row, rowNumber)
{
    if(curFilter == "all"){
        return row;
    }else{    
        //alert(curFilter +" == "+ row["date"])
	    if (row["date"] == curFilter)
		    return row; // Return the row to keep it in the data set.
		else
	        return null; // Return null to remove the row from the data set.
	}
}

var eventPastFilter = function(dataSet, row, rowNumber)
{


    if(curFilter == "all"){

        return row;
    }else{    
        //alert(curFilter +" == "+ row["date"])
	    //alert(row["sortableDate"] + " >= " + curFilter);
		
		
		
	    if ((row["sortableDate"] >= curFilter) && (row["featuredEvent"] == "true"))
		    return row; // Return the row to keep it in the data set.
		else
	        return null; // Return null to remove the row from the data set.
	}
}

var promoFilter = function(dataSet, row, rowNumber)
{
    if(curFilter == "all"){
        return row;
    }else{    
	    if (row["name"].charAt(0).toLowerCase() == curFilter)
		    return row; // Return the row to keep it in the data set.
		else
	        return null; // Return null to remove the row from the data set.
	}
}


function addEvent(link, panel)
{    
    if(panel.isOpen()){
        if(curEvent != ""){
            panel.onTabClick(panel);
        }
    }
    
    populateEventForm(null);
    
    var curPanel = document.getElementById("addEventArea"); 
      
    var referenceLink = link.parentNode.parentNode.parentNode;
        
    insertAfter(referenceLink.parentNode, curPanel.parentNode.parentNode,referenceLink);
        
    
    panel.onTabClick(panel);
}

function addPromo(link, panel)
{
    if(panel.isOpen()){
        if(curEvent != ""){
            panel.onTabClick(panel);
        }
    }
    
    populatePromoForm(null);
    
    var curPanel = document.getElementById("addPromoArea"); 
      
    var referenceLink = link.parentNode.parentNode.parentNode;
    
    insertAfter(referenceLink.parentNode, curPanel.parentNode.parentNode,referenceLink);
        
    
    panel.onTabClick(panel);
}

function insertAfter(parent, node, referenceNode) {
    if(referenceNode.nextSibling) {
        parent.insertBefore(node, referenceNode.nextSibling);
    } else {
        parent.appendChild(node);
    }
}

function editEvent(eventLink, eventId, eventPanel)
{
    var curEvent = document.getElementById("eventId").value;
    if(eventPanel.isOpen()){
        if(curEvent != eventId){
            eventPanel.onTabClick(eventPanel);
        }
    }
    
    
    populateEventForm(eventId);
    
    editEventPanel = document.getElementById("addEventArea");       
    
    var referenceLink = eventLink.parentNode.parentNode.parentNode;
    insertAfter(referenceLink.parentNode, editEventPanel.parentNode, referenceLink);              
        
    eventPanel.onTabClick(eventPanel);
    
}

function editPromo(promoLink, promoId, promoPanel)
{
    var curPromo = document.getElementById("promoId").value;
    if(promoPanel.isOpen()){
        if(curPromo != promoId){
            promoPanel.onTabClick(promoPanel);
        }
    }
    
    
    populatePromoForm(promoId);
    
    editPromoPanel = document.getElementById("addPromoArea");       
    
    var referenceLink = promoLink.parentNode.parentNode.parentNode;
    insertAfter(referenceLink.parentNode, editPromoPanel.parentNode, referenceLink);              
        
    promoPanel.onTabClick(promoPanel);
    
}

function deleteEvent(eventLink,eventId,eventPanel)
{
    if(confirm("Are you sure you want to delete this event?")){
        var success = Spry.Utils.loadURL("GET", "Admin/DeleteEvent.aspx?eventId=" + eventId, true, onDeleteEvent, { errorCallback: onErrorCallback });                
    }    
}

function onDeleteEvent(req){    
    updateEventList(req);
}

function onErrorCallback(req){
    
    updateEventList(req);
}

function deletePromo(promoLink,promoId,promoPanel)
{
    if(confirm("Are you sure you want to delete this promotion?")){
        var success = Spry.Utils.loadURL("GET", "Admin/DeletePromo.aspx?promoId=" + promoId, true, onDeletePromo, { errorCallback: onPromoErrorCallback });                
    }    
}

function onDeletePromo(req){    
    updatePromoList(req);
}

function onPromoErrorCallback(req){
    
    updatePromoList(req);
}


function populateEventForm(eventId){
    
    //reset values
    document.getElementById("eventForm").reset();

    document.getElementById("eventId").value = "";

    if(eventId != null){
        var matchingEvent = dsEvents.findRowsWithColumnValues({ "@id": eventId},true);
        
        if(matchingEvent!= null){
            document.getElementById("eventTitle").value = matchingEvent["title"];
            document.getElementById("eventDate").value = matchingEvent["date"];
            document.getElementById("eventTime").value = matchingEvent["time"];
            document.getElementById("eventDescription").value = matchingEvent["description"].replace(/<br>/g,"\n");
            document.getElementById("eventLinkName").value = matchingEvent["linkName"];
            document.getElementById("eventLink").value = matchingEvent["linkPath"];
                       
            document.getElementById("eventId").value = eventId;
        }
        
    }
}

function populatePromoForm(promoId){
    
    //reset values
    document.getElementById("promoForm").reset();

    document.getElementById("promoId").value = "";

    if(promoId != null){
        var matchingPromo = dsPromos.findRowsWithColumnValues({ "@id": promoId},true);
        
        if(matchingPromo!= null){
            document.getElementById("storeName").value = matchingPromo["store"];
            document.getElementById("promoHeader").value = matchingPromo["title"];
            document.getElementById("promoDescription").value = matchingPromo["description"].replace(/<br>/g,"\n");
            document.getElementById("promoLinkText").value = matchingPromo["linkName"];
            document.getElementById("promoLink").value = matchingPromo["link"];
            
            document.getElementById("icon_blank").checked = false;
            document.getElementById("icon_pdf").checked = false;
            document.getElementById("icon_doc").checked = false;
            document.getElementById("icon_jpeg").checked = false;
            
            if(matchingPromo["icon"]=="pdf") {
                document.getElementById("icon_pdf").checked = true;
            } else if(matchingPromo["icon"]=="doc") {
                document.getElementById("icon_doc").checked = true;
            } else if(matchingPromo["icon"]=="jpeg") {
                document.getElementById("icon_jpeg").checked = true;
            } else {
                document.getElementById("icon_blank").checked = true;
            }
            
            document.getElementById("promoLink").value
            document.getElementById("promoId").value = promoId;
        }
        
    }
}

function updateEvent(eventForm){
    if(eventForm == null)
        eventForm = document.getElementById("eventForm");
    
    document.getElementById("eventDescription").value = document.getElementById("eventDescription").value.replace(/\n/g, '<br>');
    
    document.getElementById("eventDescription").value = escapeHTML(document.getElementById("eventDescription").value);
    document.getElementById("eventDate").disabled = false;
    var success = Spry.Utils.submitForm(eventForm, updateEventList, {method:'post', url:'Admin/UpdateEvent.aspx'});
    
    document.getElementById("eventDate").disabled = true;
    
    return success;
}

function updatePromo(promoForm){

    if(promoForm == null)
        promoForm = document.getElementById("promoForm");
    document.getElementById("promoDescription").value = document.getElementById("promoDescription").value.replace(/\n/g, '<br>');
    document.getElementById("promoDescription").value = escapeHTML(document.getElementById("promoDescription").value);
    var success = Spry.Utils.submitForm(promoForm, updatePromoList, {method:'post', url:'Admin/UpdatePromo.aspx'});
             
    return success;
}


function closeForm(panel){
    panel.onTabClick(panel);
}

function updateEventList(req){
    //alert(req.xhRequest.responseText)
    if(eventPanel.isOpen()){
        eventPanel.onTabClick(eventPanel);        
    }
    
    //DoDirectoryQuery("CastoShops.asmx/GetDirectories");   
    
    dsEvents.loadData();
    
    //directoryRegionEdit.updateRegion();  
    
}

function updatePromoList(req){
    //alert(req.xhRequest.responseText)
    if(promoPanel.isOpen()){
        promoPanel.onTabClick(promoPanel);
        
    }
    
    //DoDirectoryQuery("CastoShops.asmx/GetDirectories");   
    dsPromos.loadData();
    //directoryRegionEdit.updateRegion();  
    
}

function saveChanges(){
    //update form values
    if(document.getElementById("firstBlockImage").parentNode.style.backgroundColor != ""){
        document.getElementById("editFirstBlockImageStyle").value = "background-color: " + document.getElementById("firstBlockImage").parentNode.style.backgroundColor;
    }
    if(document.getElementById("secondBlockImage").parentNode.style.backgroundColor != ""){
        document.getElementById("editSecondBlockImageStyle").value = "background-color: " + document.getElementById("secondBlockImage").parentNode.style.backgroundColor;
    }
   
    document.getElementById("editLogoPath").value = document.getElementById("propertyLogoImage").src;
    document.getElementById("editLogoStyle").value = "";
    
    document.getElementById("editFirstBlockImagePath").value = document.getElementById("firstBlockImage").src;    
    document.getElementById("editSecondBlockImagePath").value = document.getElementById("secondBlockImage").src;    
    
    document.getElementById("copyParagraphUpdate").value = escapeHTML(document.getElementById("copyParagraphEdit").value);
       
    document.getElementById("contentForm").submit();
}

function eventPromoInit(){           
    if(document.getElementById("eventRegionEdit") != null)         
        Spry.Data.Region.addObserver("eventRegionEdit", eventTableObs);
    else
        Spry.Data.Region.addObserver("eventRegion", eventTableObs);
    
    dsEvents = new Spry.Data.XMLDataSet("CastoData.asmx/GetEvents?siteId=" + document.getElementById("siteId").value, "/events/event", { method: "GET", useCache:false, sortOnLoad: "sortableDate", sortOrderOnLoad: "ascending" });
    
    if(document.getElementById("promoRegionEdit") != null)         
        Spry.Data.Region.addObserver("promoRegionEdit", eventTableObs);
    else
        Spry.Data.Region.addObserver("promoRegion", eventTableObs);
    
    dsPromos = new Spry.Data.XMLDataSet("CastoData.asmx/GetPromos?siteId=" + document.getElementById("siteId").value, "/promos/promo", { method: "GET", useCache:false, sortOnLoad: "name", sortOrderOnLoad: "ascending" });
    
    
    dsEvents.addObserver({ onPostLoad: function() {
	    var numberOfItemsPerView = 2;
	        
	    
	    var rows = dsEvents.getData();
	    var numRows = rows.length;
        
        // Add some custom columns to our data set.
        
        SPECIAL_DAYS = { 0:[],1:[],2:[],3:[],4:[],5:[],6:[],7:[],8:[],9:[],10:[],11:[]};
	    
	    for (var i = 0; i < numRows; i++)
	    {
	        var row = rows[i];
		    
		    var curDate = Date.parse(row.date);
            
		    row.sortableDate = curDate;
    		
    		//if(row.sortableDate >= today)
    		    updateEventDate(rows[i].date, true);        	
		    
		    // Add a 'viewStartIndex' column that indicates what view this row
		    // belongs to.

		    row.viewNumber = Math.floor(i / numberOfItemsPerView) + 1;		    		    
		    row.viewStartIndex = i - (i % numberOfItemsPerView);
		    row.prevStartIndex = row.viewStartIndex - numberOfItemsPerView;
		    row.nextStartIndex = row.viewStartIndex + numberOfItemsPerView;
	    }
	    
	    dsEvents.sort('sortableDate', 'ascending');
	    
	    filterPastEvents(today);
    }});
    
    dsPromos.addObserver({ onPostLoad: function() {
	    var numberOfItemsPerView = 2;
	    var rows = dsPromos.getData();
	    var numRows = rows.length;

        if(numRows>0) {
            document.getElementById("no_promotions").style.display = "none";
        } else {
            document.getElementById("no_promotions").style.display = "block";
        }
	    // Add some custom columns to our data set.

	    for (var i = 0; i < numRows; i++)
	    {
		    var row = rows[i];

		    // Add a 'viewStartIndex' column that indicates what view this row
		    // belongs to.

		    row.viewNumber = Math.floor(i / numberOfItemsPerView) + 1;
		    row.viewStartIndex = i - (i % numberOfItemsPerView);
		    row.prevStartIndex = row.viewStartIndex - numberOfItemsPerView;
		    row.nextStartIndex = row.viewStartIndex + numberOfItemsPerView;
	    }
    }});
    
    //DoQuery("CastoData.asmx/GetEvent?siteId=" + document.getElementById("siteId").value);
    
}

function updateEventView(m, y){
    if((initYear != y)&&(initMonth != m)){        
        initMonth = m;
        initYear = y;
        alert(m + ", " + y);
    }
}