﻿// JScript File

/* ***************************************** *
 * Date object expansion script              *
 * Adds extra date methods to all your dates *
 * copyright Stephen Chapman 30 Dec 2007     *
 * http://javascript.about.com/              *
 *                                           *
 * You may copy this script provided that no *
 * changes to the script or content are made *
 *                                           *
 * Additional methods added:                 *
 *   addDays(number_of_days_to_add)          *
 *   week_num = getWeek()                    *
 *   day_of_year = getDOY()                  *
 *   julian_day = getJulian()                *
 *   month_name = getMonthName()             *
 *   day_of_week = getDayName()              *
 * ***************************************** */
    var m = ['January','February','March','April','May','June','July','August','September','October','November','December'];
    var d = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];

    Date.prototype.addDays = function(days) {this.setDate(this.getDate()+days);}
    Date.prototype.getWeek = function() {var onejan = new Date(this.getFullYear(),0,1); return Math.ceil((((this - onejan) / 86400000) + onejan.getDay())/7);}
    Date.prototype.getDOY = function() {var onejan = new Date(this.getFullYear(),0,1); return Math.ceil((this - onejan) / 86400000);}
    Date.prototype.getJulian = function() {return Math.floor((this / 86400000) -(this.getTimezoneOffset()/1440) + 2440587.5);}
    Date.prototype.getMonthName = function() { return m[this.getMonth()];}
    Date.prototype.getDayName = function() { return d[this.getDay()];}
             
            google.load("gdata", "1");
            google.setOnLoadCallback(getMyFeed);
            
            var myService;
    //        var feedUrl = "http://www.google.com/calendar/feeds/aaolktg21ougdv1sgvaj30flc8@group.calendar.google.com/private-6fb50efcfb63d1eddb4b8c5fd4c22b3e/basic";
    //        var feedUrl = "http://www.google.com/calendar/feeds/bigbirdtommy@gmail.com/private-e961890cb40d0760367f352f06280381/basic";

    //http://www.google.com/calendar/feeds/aaolktg21ougdv1sgvaj30flc8@group.calendar.google.com/private-6fb50efcfb63d1eddb4b8c5fd4c22b3e/basic
    function gup( name )
    {
      name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
      var regexS = "[\\?&]"+name+"=([^&#]*)";
      var regex = new RegExp( regexS );
      var results = regex.exec( window.location.href );
      if( results == null )
        return "";
      else
        return results[1];
    }

    function UrlFullEncode(str) 
    {
     str = encodeURIComponent(str); 
     return str;
    }

    function UrlFullDecode(str) 
    {
     str = decodeURIComponent(str);
     return str;
    }


    var debug = false;

    var feedUrl = '';
    var admin=false;
    var loggedin=false;
       
    var havecookie = readCookie("nordicnewsloggedin");
       

    function openChild(file,window) {
        file='http://www.lakselaget.org/pages/images/upload_resize.aspx';
        window='win2';

        childWindow=open(file,window,'resizable=yes,width=600,height=600');
        if (childWindow.opener == null) childWindow.opener = self;
     }

//        var feedUrl = "http://www.google.com/calendar/feeds/aaolktg21ougdv1sgvaj30flc8@group.calendar.google.com/public/basic";
        
        
        
       function checkLogin(){
            try {
           //     alert("before doGetInfo()");
           //     doGetInfo();
       
             //   alert("before scope");
                var scope = "http://www.google.com/calendar/feeds/";
//                var scope = feedUrl;
              //  alert("Getting Token :"+scope);
              //  var token = google.accounts.user.checkLogin(scope);
               // if(token){
                  //  alert("Token was:"+token );
                    loggedin=true;
              //  }
              //  else {
                //    alert("Token was not declared");
              //  }
            }
            catch(exc){
                PRINT ("In checkLogin:"+exc);
            }
       } 

        
       function logMeIn() {
      //    scope = "http://www.google.com/calendar/feeds/";
      //    var token = google.accounts.user.login(scope);
      //    alert("after login: token was:"+token);
        }

       function logMeOut() {
//          scope = "http://www.google.com/calendar/feeds/";
     //     google.accounts.user.logout();
       //   window.location = window.location.href;
        }

       function adminRedirect() {
       
          scope = "http://www.lakselaget.org/pages/nordicnews.html?admin=true";
          document.location = scope;
       }
       function publicRedirect() {
       
          eraseCookie("nordicnewsloggedin");
          scope = "http://www.lakselaget.org/pages/nordicnews.html";
          document.location = scope;
       }

        
        function setupMyService() {
        
//EDITABLE LINK
            //alert("Top of setupmyservice");
            var adminstr = gup('admin');
            if(adminstr && adminstr == 'true'){
                 //checkLogin();
                 
                 PRINT("coming from: "+ document.referrer );
                 //alert("havecookie:"+havecookie);
//                 if(document.referrer.indexOf("http://www.lakselaget.org/members/")==0 ){
  //                  PRINT("came from the members area and was logged in");
    //             }
                 if(havecookie){
                     admin=true;
                     loggedin=true;
                     var arb = document.getElementById("adminRedirectButton");
                     arb.value = "Log out of Admin";
                     arb.onclick = publicRedirect;
                     
                 }
                 else {
                     showhide("HeaderDiv",false);
                     showhide("SearchDiv",false);
                     showhide("PopupDiv",false);
                     showhide("AddNewButton",false);
                     showhide("LoginDiv",true);
//                    alert("You must be logged in to the members area to edit Nordic News events.");
                    //document.location = "http://www.lakselaget.org/members/index.html";
                 }
                 
            }
        }

        function getMyFeed() {
          setupMyService();
          //getEventsFeed();
          //populateMonth();
	bas_cal = new Epoch('epoch_basic','flat',document.getElementById('basic_container'));
//	dp_cal  = new Epoch('epoch_popup','popup',document.getElementById('popup_container'));
//	ms_cal  = new Epoch('epoch_multi','flat',document.getElementById('multi_container'),true);
//Month is initialized and populates the search
          getEventsFeedByDate(bas_cal.displayMonth,bas_cal.displayYear); 

        }
        
        
        
        var today = new Date;
        var thismonth = today.getMonth();
        var thisyear = today.getYear();
        var searchmonth = today.getMonth();
        
        function populateMonth(){
            
            var tmonth = document.getElementById("SearchDateMonth");
            for(var i=0;i<12;i++){
                
                var t = (thismonth + i)%12;
                
                tmonth.options[i]= new Option(m[t]);
                tmonth.options[i].value = t+1;
                if(i==0) tmonth.options[i].selected = true;
               // PRINT("month:"+m[t]);
            }
        }
        
        
        // Submit the request using the calendar service object.  Notice the 
        // CalendarEventQuery object is passed in place of the feed URI
        function getEventsFeed(){
          getEventsFeedByDate(bas_cal.displayMonth,bas_cal.displayYear); 
        }

        var slm = "";
        var sly = "";
        
        function getEventsFeedByDate(month, year, day, fullyear){
            slm = month;
            sly = year;
           // alert("Month:"+month+" year:"+year);
            // Create a CalendarEventQuery, and specify that this query is 
            // applied toward the "private/full" feed
            month = ZeroPad(month/1 + 1); 
            //var query = new google.gdata.calendar.CalendarEventQuery(feedUrl);
            
            var syear = year;
            var eyear = year;
            var searchmonthstrs = month;
            
            var sday;
            var eday;
            if(!day){
                sday="01";
                eday="01";
            }
            else {
               // alert("Day was:"+day);
                sday=ZeroPad(day);
                eday=ZeroPad(day);
            }
            
            if(month=='12'){
                if(!day){
                    eyear = ZeroPad(year/1+1);
                    var searchmonthstre = "01";
                }
                else {
                    eyear = year;
                    var searchmonthstre = searchmonthstrs;
                }
            }
            else {
                if(!day){
                    var searchmonthstre = ZeroPad(month/1+1);
                }
                else {
                    var searchmonthstre = searchmonthstrs;
                
                }
            }

            // Create and set the minimum and maximum start time for the date query
            var minstr = ''+syear+'-'+searchmonthstrs+'-'+sday;
            var maxstr = ''+eyear+'-'+searchmonthstre+'-'+eday;
           // alert("min:" +minstr);
           // alert("max:" +maxstr);
            if(admin || fullyear ){
                var minstr = ''+syear+'-'+01+'-01';
                var maxstr = ''+syear+'-'+12+'-31';
            }
            
            //alert("minstr:"+minstr);
            //alert("maxstr:"+maxstr);
//            var startMin = google.gdata.DateTime.fromIso8601(minstr);
  //          var startMax = google.gdata.DateTime.fromIso8601(maxstr);
    //        PRINT(minstr);
      //      PRINT(maxstr);
            
            //query.setMinimumStartTime(startMin);
            //query.setMaximumStartTime(startMax);
            
            var sdate = minstr; //syear +"-"+searchmonthstrs+"-01";
            var edate = maxstr; //eyear +"-"+searchmonthstre+"-01";
            
            //alert("sdate:"+sdate + " : "+ edate);
            getPrivateListFromServer(sdate,edate, handlePrivateFromServer);
            
            /*
            PRINT("getting results for you...");
            document.getElementById("Events").innerHTML = "<div>Loading Events for "+month+"/"+year+" please wait a moment...</div>";
            PRINT("cleared events list..");

            myService.getEventsFeed(query, tomcallback, handleError);
            PRINT("called get feed...");
//            document.getElementById("Events").innerText = "Loading Events for "+month+"/"+year+" please wait a moment...";
            */
            //showhide("Wait",true);
            PRINT("popped wait...");
        }
    

    
        function handleMyFeed(myResultsFeedRoot) {
            //alert("This feed's title is: " + myResultsFeedRoot.feed.getTitle().getText());
            document.getElementById("Title").innerHTML = "<div>Title of Calendar is: "+ myResultsFeedRoot.feed.getTitle().getText()+"</div>";
        }

        function handleError(e) {
            document.getElementById("Events").innerHTML = "<div>No events were found for this search...</div>";

            PRINT("There was an error!");
            PRINT(e.cause ? e.cause.statusText : e.message);
        }
        
        function getFromExtended(name, proparray){
            try {
                if(proparray.length>50){
                    PRINT("proparray is not an array!" + proparray.length);
                    return getValueByNameFromStr(name, proparray);
                }
                PRINT("proparray is an array!" + proparray.length);
                for(var i=0; i<proparray.length;i++){
                    var n = proparray[i];
                    
                    if(n.getName() == name){
                        if(n.getValue()=="undefined"){
                            return "-";
                        }
                        
                        return n.getValue();
                    }
                }
                return "-";
            }catch(exc){
                PRINT("caught in getFromExtended:"+exc);
            }
        }
        function setDonation(){
            var el = document.getElementById("Donation");
            //alert("setAllDay:"+el.checked);
            //el.checked = el.checked ? false : true;
            //if(el.checked == true)
            
            if(el.checked == true) {
               //alert("Setting Reservation!");
                var element;
                var val;
                var name;
                var nval;
                for (var i = 0; i < addnew.elements.length - 1; i++) {
                    try {
                        element = addnew.elements[i];
                        if (element && element.name) {
                            name = element.name;
                            val = element.value;
                            if(name == 'EventCost'){
                                if(val!='Donation Requested'){
                                    element.value = 'Donation Requested';
                                }
                                else {
                                    element.value = '';
                                }
                            }
                        }
                        else {
                            PRINT("element or element.name was bad");
                        }
                    }
                    catch (exc) {
                        PRINT("for loop of addPropsIntoForm: name:"+name+" val:"+val+" caught exc:" + exc); 
                    }
                }
                el.checked=false;
            }
           // alert("Toggle All Day!");
        }
        function setFree(){
            var el = document.getElementById("Free");
            //alert("setAllDay:"+el.checked);
            //el.checked = el.checked ? false : true;
            //if(el.checked == true)
            
            if(el.checked == true) {
               //alert("Setting Reservation!");
                var element;
                var val;
                var name;
                var nval;
                for (var i = 0; i < addnew.elements.length - 1; i++) {
                    try {
                        element = addnew.elements[i];
                        if (element && element.name) {
                            name = element.name;
                            val = element.value;
                            if(name == 'EventCost'){
                                if(val!='Free'){
                                    element.value = 'Free';
                                }
                                else {
                                    element.value = '';
                                }
                            }
                        }
                        else {
                            PRINT("element or element.name was bad");
                        }
                    }
                    catch (exc) {
                        PRINT("for loop of addPropsIntoForm: name:"+name+" val:"+val+" caught exc:" + exc); 
                    }
                }
                el.checked=false;
            }
           // alert("Toggle All Day!");
        }
        
        function setReservation(){
            var el = document.getElementById("Reservation");
            //alert("setAllDay:"+el.checked);
            //el.checked = el.checked ? false : true;
            //if(el.checked == true)
            
            if(el.checked == true) {
               //alert("Setting Reservation!");
                var element;
                var val;
                var name;
                var nval;
                for (var i = 0; i < addnew.elements.length - 1; i++) {
                    try {
                        element = addnew.elements[i];
                        if (element && element.name) {
                            name = element.name;
                            val = element.value;
                            if(name == 'EventCost'){
                                if(val!='Reservation Required'){
                                    element.value = 'Reservation Required';
                                }
                                else {
                                    element.value = '';
                                }
                            }
                        }
                        else {
                            PRINT("element or element.name was bad");
                        }
                    }
                    catch (exc) {
                        PRINT("for loop of addPropsIntoForm: name:"+name+" val:"+val+" caught exc:" + exc); 
                    }
                }
                el.checked=false;
            }
           // alert("Toggle All Day!");
        }
        function setAllDay(){
            var el = document.getElementById("AllDay");
            //alert("setAllDay:"+el.checked);
            //el.checked = el.checked ? false : true;
            //if(el.checked == true)
            
            if(el.checked == true) {
               //alert("Setting All Day!");
                var element;
                var val;
                var name;
                var nval;
                for (var i = 0; i < addnew.elements.length - 1; i++) {
                    try {
                        element = addnew.elements[i];
                        if (element && element.name) {
                            name = element.name;
                            val = element.value;
                            if(name == 'EventTime'){
                                if(val!='All Day'){
                                    element.value = 'All Day';
                                }
                                else {
                                    element.value = '';
                                }
                            }
                        }
                        else {
                            PRINT("element or element.name was bad");
                        }
                    }
                    catch (exc) {
                        PRINT("for loop of addPropsIntoForm: name:"+name+" val:"+val+" caught exc:" + exc); 
                    }
                }
                el.checked=false;
            }
           // alert("Toggle All Day!");
        }

        function setSameAsEvent(){
            var el = document.getElementById("SameAsEvent");
           // alert("SameAsEvent:"+el.checked);
            //el.checked = el.checked ? false : true;
            
            if(el.checked == true) {
           //alert("Setting All Day!");
                var element;
                var val;
                var name;
                var nval;
                var cname;
                var cphone;
                var cemail;
            
                for (var i = 0; i < addnew.elements.length - 1; i++) {
                    try {
                        element = addnew.elements[i];
                        if (element && element.name) {
                            name = element.name;
                            val = element.value;
                            if(name == 'ContactName'){
                                    cname = element.value;
                            }
                            else if(name == 'ContactPhone'){
                                    cphone =element.value ;
                            }
                            else if(name == 'ContactEmail'){
                                    cemail = element.value;
                            }
                            else if(name == 'SubmitterName'){
                                    element.value = cname;
                            }
                            else if(name == 'SubmitterPhone'){
                                    element.value = cphone;
                            }
                            else if(name == 'SubmitterEmail'){
                                    element.value = cemail;
                            }
                        }
                        else {
                            PRINT("element or element.name was bad");
                        }
                    }
                    catch (exc) {
                        PRINT("for loop of addPropsIntoForm: name:"+name+" val:"+val+" caught exc:" + exc); 
                    }
                }
                el.checked=false;
            }
           // alert("Toggle All Day!");
        }
        
        function printExtended(proparray){
                for(var i=0; i<proparray.length;i++){
                    var n = proparray[i];
                    PRINT(i+" - "+ n.getName()+":"+n.getValue());                    
                }
        
        }
        
        function replaceInExtended(name, val, proparray){
            try {
                //printExtended(proparray);
                for(var i=0; i<proparray.length;i++){
                    var n = proparray[i];
                    
                    if(n.getName() == name){
                        if(n.getValue()=="undefined"){
                           // PRINT("replaceInExtended: value was undefined");
                            return proparray;
                        }
                        n.setValue(val);
                        proparray[i]=n;
                       // PRINT("replaced val :"+n.getName()+":"+n.getValue());
                        //printExtended(proparray);
                        return proparray;
                    }
                }
                proparray[i]= addNewProp(name,val);
               // PRINT("Had to add a new :"+name+":"+val);
                return proparray;
            }catch(exc){
                PRINT("caught in replaceInExtended:"+exc);
            }
        }
        /// get all events list
        
        /*
        * Retrieve events with full text query
        */ 

        // Create the calendar service object
        //var calendarService = new google.gdata.calendar.CalendarService('GoogleInc-jsguide-1.0');
        var calendarService = myService;
        
        // The default "private/full" feed is used to retrieve events from 
        // the primary private calendar with full projection 
        //var feedUri = 'http://www.google.com/calendar/feeds/default/private/full';
        
        var monthfilter = 'any';
        var eventfilter = 'any';
        var countryfilter = 'any';
        var statefilter = 'any';
        var textfilter = '';
        var publishedfilter = 'true';

        function changedSearch(fullyear){
            try {
                PRINT("someone changed search");
                var clear=false;
                
                // handle type filter
                var typeselect = document.getElementById("SearchEventType");
//                searchform.SearchEventType.selectedIndex;
                PRINT("setype:"+typeselect);
                if(clear){
                    typeselect.selectedIndex=0;
                }
                var ts = typeselect.selectedIndex;
                if(ts>0){
                    PRINT("setype: index" + ts);
                    var tsv = typeselect.options[ts].value;
                    PRINT("tsv:"+tsv);
                    eventfilter = tsv;
                    PRINT("setype:"+eventfilter);
                }
                else {
                    eventfilter = 'any';
                }
                
                var typeselect = document.getElementById("SearchNordicCountry");
//                searchform.SearchEventType.selectedIndex;
                PRINT("setype:"+typeselect);
                if(clear){
                    typeselect.selectedIndex=0;
                }
                var ts = typeselect.selectedIndex;
                if(ts>0){
                    PRINT("setype: index" + ts);
                    var tsv = typeselect.options[ts].value;
                    PRINT("tsv:"+tsv);
                    countryfilter = tsv;
                    PRINT("setype:"+countryfilter);
                }
                else {
                    countryfilter='any';
                }

                var typeselect = document.getElementById("SearchEventState");
//                searchform.SearchEventType.selectedIndex;
                PRINT("setype:"+typeselect);
                if(clear){
                    typeselect.selectedIndex=0;
                }
                var ts = typeselect.selectedIndex;
                if(ts>0){
                    PRINT("setype: index" + ts);
                    var tsv = typeselect.options[ts].value;
                    PRINT("tsv:"+tsv);
                    statefilter = tsv;
                    PRINT("setype:"+statefilter);
                }
                else {
                    statefilter = 'any';
                }
                
                var typeselect = document.getElementById("SearchText");
//                searchform.SearchEventType.selectedIndex;
                PRINT("setype:"+typeselect);
                if(clear){
                    typeselect.value='';
                }
                var st = typeselect.value;
                if(st.length>0){
                    textfilter = st;
                }
                else {
                    textfilter="";
                }
                // handle country filter
            }
            catch(exc){
                PRINT("changedSearch caught:name:"+exc.name + " message:" + exc.message);
            }
            if(fullyear){
                getEventsFeedByDate(slm,sly,'01',fullyear);
            }
            else {
                getEventsFeedByDate(slm,sly);
            }
            //alert("setype:"+setype);
        }
        
        var myevents = new Array();
        
        function ZeroPad(value){
            if(value<10){
                return "0"+value;
            }
            return value;
        }
        
        function MonthToNumber(value){
            if(value=='January'){
                return "1";
            }   
            else if(value=='February'){
                return "2";
            }   
            else if(value=='March'){
                return "3";
            }   
            else if(value=='April'){
                return "4";
            }   
            else if(value=='May'){
                return "5";
            }   
            else if(value=='June'){
                return "6";
            }   
            else if(value=='July'){
                return "7";
            }   
            else if(value=='August'){
                return "8";
            }   
            else if(value=='September'){
                return "9";
            }   
            else if(value=='October'){
                return "10";
            }   
            else if(value=='November'){
                return "11";
            }   
            else if(value=='December'){
                return "12";
            }
            return "-";   
        }
//        var myevents = new Array();
        
        function addToTable(eventEntries, tablestr, fname, num) {
            //for (var i = 0; i < eventEntries.length; i++) {
                try {
              //  var event = eventEntries[i];
              // Print the event title of the matches
              //alert('Event title = ' + event.getTitle().getText());
              //var times = event.getTimes();
//                var date = event.getTimes()[0].getStartTime().getDate();
                var date = "not gotten yet";
                var fullcontent = "";//event.getContent().getText();
                
                var id = fname;//event.getId().getValue(); 
                if(id){
                    myevents[id]= eventEntries;
                    PRINT("myevents["+id+"]="+myevents[id]);
                }
                var extendedprops = eventEntries;
                
                var category = getFromExtended("EventType",extendedprops);
                //Filter for the event type
                if(eventfilter != 'any'){
                    if(category != eventfilter){
                        return tablestr;
                    }
                }
                //Get all of the special fields back from the extended properties
                var location = getFromExtended("EventLocationName",extendedprops);
                //Filter for the location type
                
                var imageurl = getFromExtended("imageurl",extendedprops);
                var org = getFromExtended("norganization",extendedprops);
                var desc = getFromExtended("EventDescrip",extendedprops);
                desc = replaceAll("\\\"","\"",desc);
                var country = getFromExtended("NordicCountry",extendedprops);
                //Filter for the country type
                if(countryfilter != 'any'){
                    if(country != countryfilter){
                        return tablestr;
                    }
                }
                
                var published = getFromExtended("published",extendedprops);
                PRINT("publishedfilter:"+ publishedfilter);
                PRINT("published:"+ published);
                if(publishedfilter != 'any'){
                    if(published != publishedfilter){
//                        return tablestr;
                    }
                }
                
                //Get the Date of the event back and strip off the time for display
                var eventcity = getFromExtended("EventCity", extendedprops);
                if (eventcity.length < 1) {
                    eventcity = "";
                }
                else {
                    eventcity = eventcity + ", ";
                }
                var eventstate = getFromExtended("EventState", extendedprops);
                if(statefilter != 'any'){
                    if(eventstate.indexOf(statefilter)<0 ){
                       return tablestr;
                    }
                }
  
                var location = eventcity + eventstate;

                var sdate = MonthToNumber(getFromExtended("StartDateMonth",extendedprops)) +"/"+ getFromExtended("StartDateDay",extendedprops) +"/"+ getFromExtended("StartDateYear",extendedprops);                
                var edate = MonthToNumber(getFromExtended("EndDateMonth",extendedprops)) +"/"+ getFromExtended("EndDateDay",extendedprops) +"/"+ getFromExtended("EndDateYear",extendedprops);                

                var content = sdate +"-<br/>" + edate;
                
                if(edate==sdate || edate.indexOf("-")>-1){
                    content=sdate;
                }
                //Filter for the month
                if(monthfilter != 'any'){
                    if(content.indexOf("-"+monthfilter+"-")<0){
                        return tablestr;    
                    }
                }
                
                if(textfilter.length>0){
                    if(fullcontent.toLowerCase().indexOf(textfilter.toLowerCase())<0){
                        return tablestr;
                    }
                }
                
                var title = getFromExtended("EventTitle", extendedprops);//event.getTitle().getText();
                var bgcolor = "white";
                if(num%2==0){
                    bgcolor = "#dddddd";
                }

                    tablestr += "<tr style='background-color:"+bgcolor+";font-size:9pt'>";
                    tablestr += "<td width='90'>"+ content+"</td>";
                    tablestr += "<td width='125'><a href='javascript:showpop(\""+id+"\");' title='"+fullcontent+"' >"+title+"</a></td>";
                    tablestr += "<td width='80'>"+category+"</td>";
                    tablestr += "<td width='80'>"+country+"</td>";
                    tablestr += "<td width='125'>"+location+"</td>";
                    if(admin){
                        if(published && published == "false"){
                            tablestr += "<td width='125'><input type=button value='Activate' onclick='javascript:togglePublished(\""+id+"\");'></input></td>";
                        }
                        else if(published && published == "true"){
                        
                            tablestr += "<td width='125'><input type=button value='Deactivate' onclick='javascript:togglePublished(\""+id+"\");'></input></td>";
                        }
                        tablestr += "<td width='125'><input type=button value='Delete' onclick='javascript:deleteEvent(\""+id+"\")' title='"+id+"'></input></td>";
                        tablestr += "<td width='125'><input type=button value='Edit' onclick='javascript:editEvent(\""+id+"\")' title='"+id+"' ></input></td>";
                        
                    }
                    tablestr += "</tr>";
                } catch(exc){
                    //alert("In listing loop:"+exc+ " " +exc.message);
                    PRINT("In listing loop:"+exc + " "+ exc.message);
                    //document.getElementById("Errors").innerHTML += "Caught err:"+exc+"<br/>";
                }

            //}

            return tablestr;        
        }
        
        var handlePrivateFromServer = function(rootstr){
            PRINT("handlePrivateFromServer rootstr:"+rootstr);
            var troot = rootstr;
            var start = troot.indexOf("<endevent>");
            var tablestr = "<table border='0'><tr style='background-color:#FFFFFF;font-size:10pt'>";
            tablestr += "<td width='90'><b>Date</b></td><td width='150'><b>Event</b></td><td width='80'><b>Type</b></td><td width='80'><b>Affliated Country</b></td><td width='125'><b>Location</b></td>";
            if (admin) {
//                tablestr += "<td width='125'><b>Activate</b></td><td width='125'><b>Delete</b></td><td width='125'><b>Edit</b></td>"
                tablestr += "<td width='125'><b>Delete</b></td><td width='125'><b>Edit</b></td>"
            }

            tablestr += "</tr>";
            var num=0;
            while(start>-1){
                var tfname="";
                var first = troot.substring(0,start);
//                PRINT("Event from Server:"+first);
  //              PRINT("first looking for :"+replaceAll("<","_", first));
                if(first.indexOf("filename='")>-1){
                    PRINT("finding filename");
                    tfname = first.substring(first.indexOf("filename='")+10,first.length);
                    tfname = tfname.substring(0,tfname.indexOf("'"));
                    PRINT("tfname:"+tfname);
                }                
                
                var exprop = getExtendedProperties(first);
                tablestr = addToTable(exprop, tablestr, tfname, num);
                troot = troot.substring(start+11,troot.length);
                start = troot.indexOf("<endevent>");
                num++;
//                start=-1;
            }
            tablestr += "</table>";                
            if(num==0){
                tablestr = "<br/>Sorry, there are no events listed for this time.<br/>";
                
            }
            
            if(admin){
                var holdinglist = getHoldingListFromServer();
                if(holdinglist.length>0){
                    tablestr += "</br></br> <b>There are new publicly submitted events to review:</b></br>"+holdinglist+"<br/></br>";
                }
            }
            
            document.getElementById("Events").innerHTML = tablestr;
            showhide("Wait",false);
            clearPrint();
        }

        var tomcallback = function(root) {
        
        PRINT("EXITING FROM TOMCALLBACK: DEPRECATED!!!!");
        return;
        /*
            document.getElementById("Events").innerHTML = "<div>No events were found for this search...</div>";

            // Obtain the array of mateched CalendarEventEntry
            var eventEntries = root.feed.getEntries();

            //myevents = eventEntries;
//            document.getElementById("Events").innerText = "";
            // If there is matches for the full text query
            myevents = new Array();
            if (eventEntries.length > 0) {
                PRINT("From feed:");
                try {
                    //            PRINT(UrlFullEncode(JSON.stringify(eventEntries[0])));
                }
                catch (exc2) {
                    PRINT("Caught exception in the stringify:" + exc2);
                }
                //document.getElementById("Events").innerHTML 
                var tablestr = "<table border='0'><tr style='background-color:#FFFFFF;font-size:10pt'>";
                tablestr += "<td width='90'>Date</td><td width='150'>Event</td><td width='80'>Type</td><td width='80'>Affliated Country</td><td width='125'>Location</td>";
                if (admin) {
                    tablestr += "<td width='125'>Activate</td><td width='125'>Delete</td><td width='125'>Edit</td>"
                }

                tablestr += "</tr>";



                tablestr = addToTable(eventEntries, tablestr);
                //            document.getElementById("Events").innerHTML
                tablestr += "</table>";
                //PRINT("tablestr:" + tablestr);
                if (admin) {
                    try {

                        var holding = getHoldingListFromServer();
                        tablestr += "<br/><br/>" + holding;
                        PRINT("Holding was:" + holding);
                    }
                    catch (exc) {
                        PRINT("Caught exception listing holding:" + exc);
                    }


                }
                document.getElementById("Events").innerHTML = tablestr;
            } else {
                document.getElementById("Events").innerHTML = "<div>No events were found for this search. Please try again. </div>";

                // No match is found for the full text query
                // alert('no events are matched from the query!');
            }
            showhide("Wait",false);
            */
        }
        
        function handleTogglePublish(result){
            PRINT("handleTogglePublish: result:"+result);
            getEventsFeed();
//            hidewait();
        }

        // Full text query for this string
        function togglePublished(id){
          //  PRINT(id);
        
            var extendedprops = myevents[id];
            var pubval = getFromExtended("published",extendedprops);          
           // PRINT("STARTED:"+pubval);
            if(pubval==true || pubval=="true"){
                pubval = false;
            }
            else if(pubval==false || pubval=="false"){
                pubval = true;
            }
          //  PRINT("BEFORE update:"+pubval);
          //  printExtended(extendedprops);
//            extendedprops = replaceInExtended("published",pubval,extendedprops);
        //    PRINT("returned from replace");
           // printExtended(extendedprops);
//            extendedprops.add(addNewProp("published",pubval);
  //          event.setExtendedProperties(extendedprops);

    //        event.updateEntry(
      //          handleTogglePublish, 
        //        handleError
          //  );
//            alert("Toggled Publish:"+id+"-"+pubval);
            //alert(html);
            //showhide("Wait",true);
        }
         // Full text query for this string

        
        
        function updateSpan(name,extendedprops, link, image, prepend, postpend){
            var tmp = document.getElementById(name);
            var tmpval = getFromExtended(name,extendedprops); 
            if(!prepend){
                prepend = "";
            }
            if(!postpend){
                postpend = "";
            }
            
            if(tmpval && tmpval != "-"){
                if(link && link==true){
                    if(tmpval.indexOf("http://")<0){
                        tmpval = "http://"+tmpval;
                    }
                    tmp.innerHTML="<a href='"+tmpval+"' target='new' >"+tmpval+"</a>";
                }
                else if(image && image==true){
                    if(tmpval.indexOf("http://")<0){
                        tmpval = "http://"+tmpval;
                    }
                    tmp.innerHTML="<img src='"+tmpval+"'>";
                }
                else{
                    
                    tmp.innerHTML=prepend + tmpval + postpend;
                }
            }
            else{
                    tmp.innerHTML="";
            }
        }

        var state = 'none';

        function showhide(layer_ref, show) {
            try {
                if(show==true){
                    state = 'block';
                }
                else {
                    state = 'none';
                }
                if (document.all) { //IS IE 4 or 5 (or 6 beta) 
                    eval( "document.all." + layer_ref + ".style.display = state"); 
                } 
                if (document.layers) { //IS NETSCAPE 4 or below 
                    document.layers[layer_ref].display = state; 
                } 
                if (document.getElementById &&!document.all) { 
                    hza = document.getElementById(layer_ref); 
                    hza.style.display = state; 
                } 
            }
            catch(exc){
                PRINT("showhide: exception:"+ exc);
            }
        }         
        
        function showpop(id){
        
             document.body.scrollTop = 0; 
            PRINT(id);
            //var event = myevents[id];
            
            var extendedprops = myevents[id];
            PRINT("exprops:"+extendedprops);
            //var pubval = getFromExtended("published",extendedprops);          

//            PRINT(event);
           // var title = getFromExtended("EventTitle",extendedprops);
           // var html = "";//event.getContent().getText();
            
            var popup = document.getElementById("PopDiv");
            updateSpan("EventTitle",extendedprops);
            updateSpan("StartDateMonth",extendedprops);
            updateSpan("StartDateDay",extendedprops,false,false,false,",&nbsp");
            updateSpan("StartDateYear",extendedprops);
            updateSpan("EndDateMonth",extendedprops,false,false," - ");
            updateSpan("EndDateDay",extendedprops,false,false,false,",&nbsp");
            updateSpan("EndDateYear",extendedprops);
            updateSpan("NordicCountry",extendedprops);
            updateSpan("EventLocationName",extendedprops);
            updateSpan("EventAddress1",extendedprops);
            updateSpan("EventAddress2",extendedprops);
            updateSpan("EventCity",extendedprops);
            updateSpan("EventState",extendedprops);
            updateSpan("EventZip",extendedprops);
            updateSpan("EventCost",extendedprops);
            updateSpan("EventTime",extendedprops);
            updateSpan("ContactName",extendedprops);
            updateSpan("ContactPhone",extendedprops);            
            updateSpan("NameSponsor",extendedprops);
            updateSpan("EventWebsite",extendedprops, true);
            updateSpan("EventDescrip",extendedprops);
            updateSpan("imageurl",extendedprops, false,true);
            
            var address = getFromExtended("EventAddress1",extendedprops)+","+getFromExtended("EventAddress2",extendedprops)+","+getFromExtended("EventCity",extendedprops)+","+getFromExtended("EventState",extendedprops)+","+getFromExtended("EventZip",extendedprops);
            
            address = replaceAll(" ", "+", address);

            document.getElementById("GoogleMapLink").innerHTML = "<a href='http://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q="+address+"' target='new'>Click here for a Google Map link</a>";
            //http://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q=1095+Stryker+Ave,+St+Paul,+MN+55118

//            PRINT("b4 search hide");
            showhide("SearchDiv", false);
  //          PRINT("b4 showpop");
            showhide("PopDiv", true);
            showhide("AddNewButton", false);
            showhide("HeaderDiv",false);
            showhide("LoginDiv",false);
            clearPrint();
            //        PRINT("after showpop");
                        //alert(html);
        }

        function closepop(){
            showhide("SearchDiv", true);
            showhide("PopDiv", false);
            showhide("AddNewButton", true);
            showhide("HeaderDiv",true);
            showhide("LoginDiv",false);
        }
        
        var startingadd = null;
        
        function showadd(){
            document.body.scrollTop = 0; 

            addnew.reset();
            showhide("SearchDiv",false);
            showhide("PopDiv",false);
            showhide("AddDiv",true);
            showhide("AddNewButton", false);
            showhide("HeaderDiv",false);
            showhide("LoginDiv",false);

            //alert(html);
        }

        function closeadd(){
            addnew.reset();
            showhide("SearchDiv",true);
            showhide("PopDiv",false);
            showhide("AddDiv", false);
            showhide("AddNewButton", true);
            showhide("HeaderDiv",true);
            showhide("LoginDiv",false);
        }        
        
        // The callback method that will be called when getEventsFeed() returns feed data

        
        ///Insert events
        // The default "private/full" feed is used to insert event to the 
// primary calendar of the authenticated user
//var feedUri = 'http://www.google.com/calendar/feeds/default/private/full';
// Create an instance of CalendarEventEntry representing the new event
        var entry = "";
        
        function addNewProp(name,value){
            var tmp = new google.gdata.ExtendedProperty();
            // Set the name of the property
            tmp.setName(name);
            tmp.setValue(value);
            return tmp;
        }
        
        
        function getAddEntry(admin){
            //alert ("top of getAddEntry");
            try {
            // Set the title of the event
            entry = new google.gdata.calendar.CalendarEventEntry();
            var title = addnew.EventTitle.value;
            //alert("title:"+title);
            entry.setTitle(google.gdata.Text.create(title));

            // Create a When object that will be attached to the event
            var when = new google.gdata.When();

            // Set the start and end time of the When object
         //   var newstartdate = addnew.nstartdate.value;
         //   var newenddate = addnew.nenddate.value;
            var newstartdate = "2008-12-12";
            var newenddate = "2008-12-12";
         //   PRINT(newdate);
//            if(ndate.length!=11){
  //              alert("Date must be formated like: 2008-11-10 - please try again.");
    //            return;
      //      }

            var fulldesc = "";
            var sday = "";
            var smonth = "";
            var syear = "";
            var eday = "";
            var emonth = "";
            var eyear = "";
            
            for(var i=0;i<addnew.elements.length-1;i++){
                var element = addnew.elements[i];
                var val = element.value;
                PRINT("name:"+element.name + "="+val);
                entry.addExtendedProperty(addNewProp(element.name, val));
                fulldesc += "|"+val +"";
                if(element.name == "StartDateDay"){
                    sday = ZeroPad(val);
                }
                else if(element.name == "StartDateMonth"){
                    smonth = ZeroPad(MonthToNumber(val));
                }
                else if(element.name == "StartDateYear"){
                    syear = val;
                }
                else if(element.name == "EndDateDay"){
                    eday = ZeroPad(val);
                }
                else if(element.name == "EndDateMonth"){
                    emonth = ZeroPad(MonthToNumber(val));
                }
                else if(element.name == "EndDateYear"){
                    eyear = val;
                }
            
            }
            var now = new Date();

            entry.addExtendedProperty(addNewProp("published", admin));
            entry.addExtendedProperty(addNewProp("id", now.getTime()));

            try {
                newstartdate = syear + "-"+smonth + "-"+sday;
                newenddate = eyear + "-"+emonth + "-"+eday;
                
                PRINT(" newstartdate:"+newstartdate);
                PRINT(" newenddate:"+newenddate);
                entry.sdate = newstartdate;
                entry.edate = newenddate;
                var startTime = google.gdata.DateTime.fromIso8601(newstartdate+"T00:00:01.000-08:00");
                var endTime = google.gdata.DateTime.fromIso8601(newenddate+"T11:59:00.000-08:00")
                PRINT(startTime.getDate() + " -- " + endTime.getDate());
                if(startTime.getDate()=="Invalid Date"){
                    alert("Date needs to be of format: YYYY-MM-DD entered:"+newstartdate);
                    return;
                }
      //          var startTime = google.gdata.DateTime.fromIso8601("2008-12-08T09:00:00.000-08:00");
        //        var endTime = google.gdata.DateTime.fromIso8601("2008-12-08T10:00:00.000-08:00")
               // when.setStartTime(startTime);
               // when.setEndTime(endTime);
            // Add the When object to the event 
               // entry.addTime(when);
            }
            catch(exc2){
                PRINT("Date was bad:"+newstartdate);
                alert("Date needs to be of format: YYYY-MM-DD entered:"+newstartdate);
                return;
            }


//You can add HTML to the Content here to have it display.            
            //entry.setContent(google.gdata.atom.Text.create(fulldesc));
            
/*            var cat = new google.gdata.ExtendedProperty();
            // Set the name of the property
            cat.setName('category');
            // Set the value of the property
            cat.setValue(document.getElementById("newcategory").value);
            // Add the property to the event
            entry.addExtendedProperty(cat);
            */
            PRINT ("bottom of getAddEntry");
            }
            catch(exc){
                PRINT("Caught EXCEPTION in add entry:"+ exc);
                //alert("Caught EXCEPTION in add entry:"+ exc);
            }
            //alert("returning entry");
            return entry;
        }

       
       function insertEntry(entry){
            PRINT("top of insertEntry");
//            myService.insertEntry(feedUrl, entry, entrycallback,  entryhandleError, google.gdata.calendar.CalendarEventEntry);
            PRINT("bottom of insertEntry");
       }


//// method to do replaceAll on a string
function replaceAll(match, replace, instring){
    if(instring.indexOf(match)>-1 && match!= replace){
        for(var i=0;i<5000;i++){
            if(instring.indexOf(match)>-1){
                instring = instring.replace(match,replace);
              //  debugconsole("Did a replace in replaceAll:"+match+" "+replace+" i:"+i);
            }
            else {
                i=10000;
            }
        }
    }
    
    return instring;
}

       function validateForm(){
             var errorstr = "Please complete all required fields. Click OK to jump to the empty field.";
             for (var i = 0; i < addnew.elements.length - 1; i++) {
                try {
                    element = addnew.elements[i];
                    if (element && element.name) {
                        name = element.name;
                        val = element.value;
                        
                        if(name == 'NameSponsor' && val.length<1 ){
                            alert(errorstr);
                            element.focus();
                            return false;
                        }
                        else if(name == 'EventType' && element.selectedIndex == 0 ){
                            alert(errorstr);
                            element.focus();
                            return false;
                        }
                        else if(name == 'NordicCountry' && element.selectedIndex == 0 ){
                            alert(errorstr);
                            element.focus();
                            return false;
                        }
                        else if(name == 'EventTitle' && val.length<1 ){
                            alert(errorstr);
                            element.focus();
                            return false;
                        }
                        else if(name == 'EventDescrip' && val.length<1 ){
                            alert(errorstr);
                            element.focus();
                            return false;
                        }
                        else if(name == 'EventCost' && val.length<1 ){
                            alert(errorstr);
                            element.focus();
                            return false;
                        }
                        else if(name == 'EventLocationName' && val.length<1 ){
                            alert(errorstr);
                            element.focus();
                            return false;
                        }
                        else if(name == 'EventAddress1' && val.length<1 ){
                            alert(errorstr);
                            element.focus();
                            return false;
                        }
                        else if(name == 'EventCity' && val.length<1 ){
                            alert(errorstr);
                            element.focus();
                            return false;
                        }
                        else if(name == 'EventState' && element.selectedIndex == 0 ){
                            alert(errorstr);
                            element.focus();
                            return false;
                        }
                        else if(name == 'EventZip' && val.length<1 ){
                            alert(errorstr);
                            element.focus();
                            return false;
                        }
                        else if(name == 'SubmitterName' && val.length<1 ){
                            alert(errorstr);
                            element.focus();
                            return false;
                        }
                        else if(name == 'SubmitterPhone' && val.length<1 ){
                            alert(errorstr);
                            element.focus();
                            return false;
                        }
                    }
                    else {
                        PRINT("element or element.name was bad");
                    }
                }
                catch (exc) {
                    PRINT("for loop of addPropsIntoForm: name:"+name+" val:"+val+" caught exc:" + exc); 
                }
            }

            
            return true;
       }

       function addAdminEntry() {
            doAddEntry();            
       }

       var needsave = false;
       function doAddEntry( deletefirst ) {
            if(validateForm()){
//                showhide("Wait",true);
                deleteEvent2('');
                finishSave();
                closeadd();
                getEventsFeed();
            }
            
       }
       
       function finishSave() {
                ///alert("called finish save");
                needsave=false;
//          scope = "http://www.google.com/calendar/feeds/";
// Submit the request using the calendar service object
                PRINT("calling insertEntry");
                entry = getAddEntry(admin);
                
                if(entry == 'undefined'){
                    return;
                }
                PRINT(feedUrl);
                if(admin){
//                    insertEntry(entry);
                    
                    var entrystr = JSON.stringify(entry);
                    
                      //var adddiv = document.getElementById("AddDiv");
                    //alert("Saving: "+ entry.sdate + " : "+ entry.edate);
                    saveToServer(entrystr, true, entry.sdate, entry.edate); 
                    alert("You have successfully added/edited your event!");

                }
                else {
                    //                    saveToServer(entry);
                    var entrystr = JSON.stringify(entry);
                      
                      //var adddiv = document.getElementById("AddDiv");
                    saveToServer(entrystr); 
                    alert("You have successfully submitted an event. It must first be reviewed and approved before being displayed, so please check back soon to view your event or contact the calendar administrator at Nordicnewscalendar@gmail.com if you have questions.");
                }
                PRINT("Submitted Event...");
                
    //            window.location = "http://www.lakselaget.org/pages/nordicnewswrapper.html?admin=true";
               // closeadd();
                //getEventsFeed();

                PRINT("Closed add");
        }
        
        function hasBad(str){
            if( str.indexOf("\\n")>-1 || str.indexOf("\\r")>-1|| str.indexOf("\\t")>-1){
                return true;
            }
            return false;
        }
        
        function saveToServer(entry, priv, sdate,edate){
            //alert("top of saveToServer:");
            //showhide("Wait",true);
            if(hasBad(entry)){
                //alert("Had a bad character in entry:"+entry);
                entry = replaceAll("\\n"," ",entry);
                entry = replaceAll("\\r"," ",entry);
                entry = replaceAll("\\t"," ",entry);
                //entry = replaceAll("&","_",entry);
                //entry = replaceAll("?","_",entry);
               // alert("cleaned entry is:"+entry);
//                return;
            }
            else {
                //alert("no bad :"+ entry);
            }
        
            var url = "http://www.lakselaget.org/pages/images/savepublic.aspx";
            if(priv) {
                url = "http://www.lakselaget.org/pages/images/saveprivate.aspx";
                if(edate.indexOf("---")>-1){
                   // alert("reseting edate:"+ sdate+ " : " + edate);
                    edate=sdate;
                   // alert("reset edate:"+ sdate+ " : " + edate);
                }
                entry = "<"+sdate+"---"+edate+">"+entry;
            }
            PRINT("savetoserver entry was:"+entry);
            var params = "json="+UrlFullEncode(entry);
            PRINT("told to save to server here..."+ params);
            PRINT(sendSynch(url,params));
            PRINT("After save to server here..."+ params);
            //getEventsFeed();

            //showhide("Wait",false);
        }

        function getHoldingFromServer(fname) {
            var url = "http://www.lakselaget.org/pages/images/" + fname;
            var params = "";
            return sendSynch(url, params, "Get");

        }
        
        function deleteHoldingFromServer(fname) {
            //alert("called deleteHoldingFromServer :" +fname);
            //return;
            var url = "http://www.lakselaget.org/pages/images/savepublic.aspx";
            var params = "deleteholding="+fname;
            PRINT(url + ":" + params);
            var retstr = sendSynch(url, params, "Post");
            //PRINT("retstr was:" + retstr);
            //getEventsFeed();

            lastfile = null;
            return retstr;

        }
        
        function getHoldingListFromServer() {
            PRINT("called getHoldingListFromServer");
            var url = "http://www.lakselaget.org/pages/images/savepublic.aspx";
            var params = "listholding=true";
            PRINT(url + ":" + params);
            var retstr = sendSynch(url, params, "Post");
            //PRINT("retstr was:" + retstr);
            return retstr;

        }

        function getPrivateListFromServer(sdate, edate, retfunc) {
            PRINT("called getPrivateListFromServer");
            var url = "http://www.lakselaget.org/pages/images/saveprivate.aspx";
            var params = "listholding=true&sdate="+sdate+"&edate="+edate;
            PRINT(url + ":" + params);
            var retstr = sendSynch(url, params, "Post");
            PRINT("getPrivateListFromServer: retstr was:" + retstr);
            retfunc(retstr);
//            return retstr;

        }
        
        function deletePrivateFromServer(fname) {
            //alert("called deletePrivateFromServer :"+fname);
            //return;
            var url = "http://www.lakselaget.org/pages/images/saveprivate.aspx";
            var params = "deleteholding="+fname;
            PRINT(url + ":" + params);
            var retstr = sendSynch(url, params, "Post");
            //PRINT("retstr was:" + retstr);
            //getEventsFeed();
            lastfile = null;
            return retstr;

        }
    
        function sendSynch(url,params,submeth){
            try
            {
                var results = VI.XHR.getTextSync(url,params,submeth);
                return results;
                PRINT(results);              
            }
            catch(err)
            {
                PRINT("caught err in sendSynch:"+err);
            }
        }
        
        function PRINT(msg){
                    if(debug && debug == true) {
                        var currentstr = document.getElementById("Errors").innerHTML;
                        if(currentstr.length>2000){ currentstr = currentstr.substring(0,1800); }
                        document.getElementById("Errors").innerHTML = "Message:"+msg+"<br/>"+ currentstr;
                    }
        }
        function clearPrint(){
                    document.getElementById("Errors").innerHTML = "<br/>";
                }

        function getExtendedProperties(str) {
            try {
                PRINT("top of getExtendedProp:"+str);
                var start = str.indexOf("\"gd$extendedProperty\":[");
                if (start > -1) {
                    var rest = str.substring(start+23, str.length);
                    PRINT(rest);
                    var nextleft = rest.indexOf("[");
                    var nextright = rest.indexOf("]");
                    if (nextleft > -1) {
                        PRINT("Another left to deal with");
                    }
                    else if(nextleft<0 && nextright>-1) {
                        rest = rest.substring(0, nextright);
                        PRINT(rest);
                        return rest;
                    }
                }
            }catch(exc){
                PRINT("getExtendedProperties: caught exc:"+exc.message);
            }
            return null;
        }

        function getValueByNameFromStr(name, exstr) {
            // Get the value of the prop based on the name of the prop from the str
            //  {"name":"NameSponsor","value":"Anonymous Test"},
            PRINT("getValueByNameFromStr:" + name);
            var sstr = "\"" + name + "\",";
            var start = exstr.indexOf(sstr);
            if (start > -1) {
                var tstr = exstr.substring(start, exstr.length);
                //PRINT("tstr:" + tstr);
                var colon = tstr.indexOf("\":\"");
                //PRINT("colon:" + colon);
                var value = tstr.substring(colon + 3, tstr.length);
                //PRINT("value:" + value);
                var end = value.indexOf("},{") - 1;
                //PRINT("end:" + end);
                value = value.substring(0, end);
                PRINT(value);
                return value;
            }
            PRINT(start);
            return "-";
        }

        function addPropsIntoForm(exstr, exprops) {
            // Step through each form entry and add the value from the returned saved event
            PRINT("Top of addPropsIntoForm");
//            var addnew = document.getElementByName("addnew");
            var element;
            var val;
            var name;
            var nval;
            for (var i = 0; i < addnew.elements.length - 1; i++) {
                try {
                    element = addnew.elements[i];
                    if (element && element.name) {
                        name = element.name;
                        val = element.value;
                        PRINT("addPropsIntoForm name:" + name + " val=" + val);
                        if(exstr && exstr!=null){
                            var nval = getValueByNameFromStr(name, exstr);
                        }
                        else if(exprops && exprops!=null){
                            nval = getFromExtended(name,exprops)
                        }
                        element.value = nval;
                    }
                    else {
                        PRINT("element or element.name was bad");
                    }
                }
                catch (exc) {
                    PRINT("for loop of addPropsIntoForm: name:"+name+" val:"+val+" caught exc:" + exc); 
                }
            }

        }

        var lastfile = null;

        function deleteLast() {
            if (lastfile && lastfile != null) {
                //alert("deleteLast:"+lastfile);
                deleteHoldingFromServer(lastfile);
                lastfile = null;
                //closeadd();
            }
        }
        
        function handlePublicEvent(eventname) {
            try {
                //            alert("Feature coming soon!");
                //            PRINT("Getting event :" + eventname);
                var eventstr = getHoldingFromServer(eventname);
                PRINT("Got event :" + eventstr);

                var exprop = getExtendedProperties(eventstr);
                PRINT(exprop);
                showadd();
                addPropsIntoForm(exprop);
                PRINT("added into Form");

                lastfile = eventname;
                PRINT("show add");
            }
            catch (exc) {
                PRINT("handlePublicEvent: caught exc:" + exc);
            }
        }
        
        function editEvent(id){
            PRINT(id);
            lastedit=id;
//            var event = 
            var extendedprops=myevents[id];
            showadd();
            addPropsIntoForm(null,extendedprops);            
            lastfile='';
            //alert(html);
        }

        var lastedit = '';
        
        function deleteEvent(id){
            //alert("deleteEvent"+id);
            deleteEvent2(id);
            //alert("B4 getEventsFeed");
            getEventsFeed();
        }
        function deleteEvent2(id){
            //alert("deleteEvent2:"+id);
            //return;
            
            try {
                deleteLast();
                if(!id){
                    id=lastedit;
                }
                lastedit='';
                //alert(id);
                deletePrivateFromServer(id);
            }
            catch(exc){
                PRINT("caught exception deleting:" +id + " err:"+exc.message);
                //finishSave();
            }
        }
        
        

        
        /*
        Example Event from server to parse
{"author":[],
"category":[],
"content":{"$t":"|Anonymous Test|Food||Norway|Roemmegroet Luncheon|Enjoy traditional sour cream porridge served with dried, salted meats and Norwegian flatbread, all for just $6.00 a plate. Order tickets by calling 612-234-8888. Call soon as tickets go quickly.|6.00|Upload an image file||13|March|2009|1|January|2009|11:30 a.m.|All Day|Mindekirken|2345 21st Street East||Minneapolis|Minnesota|55232|www.mindekirken.org|Kaia|612-333-0000||Jeannette|651-246-6048|jhenrikssen@hotmail.com","type":"text"},
"contributor":[],
"link":[],
"title":{"$t":"Roemmegroet , Luncheon","type":"text"},
"gd$where":[],
"gd$who":[],
"gd$recurrenceException":[],
"gd$reminder":[],
"gd$when":[{"endTime":"2009-01-01T13:59:00.000-06:00","gd$reminder":[],"startTime":"2009-03-13T03:00:01.000-05:00"}],
"gd$extendedProperty":[
    {"name":"NameSponsor","value":"Anonymous Test"},
    {"name":"EventType","value":"Food"},
    {"name":"EventTypeOther","value":""},
    {"name":"NordicCountry","value":"Norway"},
    {"name":"EventTitle","value":"Roemmegroet Luncheon"},
    {"name":"EventDescrip","value":"Enjoy traditional sour cream porridge served with dried, salted meats and Norwegian flatbread, all for just $6.00 a plate. Order tickets by calling 612-234-8888. Call soon as tickets go quickly."},
    {"name":"EventCost","value":"6.00"},{"name":"","value":"Upload an image file"},{"name":"imageurl","value":""},
    {"name":"StartDateDay","value":"13"},
    {"name":"StartDateMonth","value":"March"},
    {"name":"StartDateYear","value":"2009"},
    {"name":"EndDateDay","value":"1"},
    {"name":"EndDateMonth","value":"January"},
    {"name":"EndDateYear","value":"2009"},
    {"name":"EventTime","value":"11:30 a.m."},
    {"name":"EventTimeAllday","value":"All Day"},
    {"name":"EventLocationName","value":"Mindekirken"},
    {"name":"EventAddress1","value":"2345 21st Street East"},
    {"name":"EventAddress2","value":""},
    {"name":"EventCity","value":"Minneapolis"},
    {"name":"EventState","value":"Minnesota"},
    {"name":"EventZip","value":"55232"},
    {"name":"EventWebsite","value":"www.mindekirken.org"},
    {"name":"ContactName","value":"Kaia"},
    {"name":"ContactPhone","value":"612-333-0000"},
    {"name":"ContactEmail","value":""},
    {"name":"SubmitterName","value":"Jeannette"},
    {"name":"SubmitterPhone","value":"651-246-6048"},
    {"name":"SubmitterEmail","value":"jhenrikssen@hotmail.com"},
    {"name":"published","value":false}
 ]}

*/

/*
function displayEvent(event) {    
        var title = event.getTitle().getText();  
        var date = event.getTimes()[0].getStartTime().getDate();
        var content = event.getContent().getText();  
  
  var eventHtml = [;
        eventHtml.push(date.toString());
        eventHtml.push('<br><br>');
        eventHtml.push('<b>Event title:</b> ');
        eventHtml.push(title);
        eventHtml.push('<br>');
        eventHtml.push('<br>');
        eventHtml.push('<b>Description:</b>');
        eventHtml.push('<p style="font-size: 11px;">');
        eventHtml.push(content); 
        eventHtml.push('</p>');
        eventHtml.push('<br>');

  document.getElementById('eventDisplayDiv').innerHTML = eventHtml.join('');
        }    
        */  

