/**
 * CMS.js
 * 
 * @author    Patrick Pfeiffer <patrick[at]buzzle[dot]at>
 * @author    Markus Weissensteiner <weez[at]buzzle[dot]at>
 * @package   feuersbrunn.at
 * @copyright Patrick Pfeiffer, Markus Weissensteiner (2010)      
 * @license   all rights reserved 
 */

//var $j = jQuery.noConflict();
//var $ = {};
 
//----------------------------------------------------------
//                                      INIT CMS
//----------------------------------------------------------

var addthis_config =
{
  username:'feuersbrunn'                                                                                         
}

var CMS = {
  _displayItem: false,    // status (helper)
  config: {Map:{center:{}}},
  items: {},              // $CMS->Feeds->entries
  events: {}              // $CMS->Feeds->events
};

function pageload(hash) {
  if (hash) {
    if (window.addthis) window.addthis = null;
    $.getScript('http://s7.addthis.com/js/250/addthis_widget.js#username=feuersbrunn');
    displayItem({itemID:hash});
  } else {
    if (window.addthis) window.addthis = null;
    $.getScript('http://s7.addthis.com/js/250/addthis_widget.js#username=feuersbrunn');
    if (!CMS._displayItem) displayNone();
  }
}

function init() {  
  drawMap();
  initLayout();
  initCMS();
}

function initCMS(options) {
  var para = {
    //'debug':true,
    'CMS':'initCMS'
  };
  if (!para.debug) $('#DEBUG').hide();
  if (CMS.points) {
    $.each(CMS.points,function(lat,x){
      $.each(x,function(long,y){CMS.map.removeOverlay(CMS.points[lat][long]['marker']);});
    });
  }
  $.ajax({
    url: 'index.php',
    data: (para), 
    dataType: 'json',
    type: 'GET',
    success: function(msg){
      $('#DEBUG').append("<div style='background:green;'>"+msg.debug+"</div>");
      CMS.auth   = msg.auth;
      CMS.config = msg.config;
      CMS.items  = msg.items;
      CMS.events = msg.events;
      CMS.points = msg.points;
      drawPoints();
      drawNews();
      drawCalendar();
      drawTagMenu();
      //drawHeadPic();
      $.history.init(pageload);
      if (options && options.displayItem) displayItem({itemID:options.displayItem});
      if (options && options.drawEntryList) drawEntryList(options.drawEntryList);
      var tplInfosHeurigen = $("<p></p>");
      $.each(CMS.items,function(i,currentItem){
        if (($.inArray('Heuriger',currentItem.tags)!='-1') &&
          ($.inArray('Info',currentItem.tags)!='-1')) {
          var tplCurrItem =  $('<li class="itemLink ui-corner-all">'+currentItem.title+'</li>')
            .hover(function(){
              $(this).toggleClass("hover");
              if (currentItem.geoLat) displayPoint({currItemID:i,nopan:true});
            }, function(){
              $(this).toggleClass("hover");
              if (!CMS._displayItem) displayNone();
            })
            .click(function(){
              displayItem({'itemID':i});});
          tplInfosHeurigen.append(tplCurrItem);
        }
      });
      $("#infosheurigen").html(tplInfosHeurigen);
      var tplInfosWinzer = $("<p></p>");
      $.each(CMS.items,function(i,currentItem){
        if (($.inArray('Winzer',currentItem.tags)!='-1') &&
          ($.inArray('Info',currentItem.tags)!='-1')) {
          var tplCurrItem =  $('<li class="itemLink ui-corner-all">'+currentItem.title+'</li>')
            .hover(function(){
              $(this).toggleClass("hover");
              if (currentItem.geoLat) displayPoint({currItemID:i,nopan:true});
            }, function(){
              $(this).toggleClass("hover");
              if (!CMS._displayItem) displayNone();
            })
            .click(function(){
              displayItem({'itemID':i});});
          tplInfosWinzer.append(tplCurrItem);
        }
      });
      $("#infoswinzer").html(tplInfosWinzer);
      var tplInfosBetriebe = $("<p></p>");
      $.each(CMS.items,function(i,currentItem){
        if (($.inArray('Gasthaus',currentItem.tags)!='-1') ||
            ($.inArray('Unterkunft',currentItem.tags)!='-1') &&
            ($.inArray('Info',currentItem.tags)!='-1')) {
          var tplCurrItem =  $('<li class="itemLink ui-corner-all">'+currentItem.title+'</li>')
            .hover(function(){
              $(this).toggleClass("hover");
              if (currentItem.geoLat) displayPoint({currItemID:i,nopan:true});
            }, function(){
              $(this).toggleClass("hover");
              if (!CMS._displayItem) displayNone();
            })
            .click(function(){
              displayItem({'itemID':i});});
          tplInfosBetriebe.append(tplCurrItem);
        }
      });
      $("#infosbetriebe").html(tplInfosBetriebe);
      $('<div style="clear:both; color:#484848; height:20px; width:10px; display:block;"></div>').appendTo("#infoswinzer");
      $('<div style="clear:both; color:#484848; height:20px; width:10px; display:block;"></div>').appendTo("#infosheurigen");
      $('<div style="clear:both; color:#484848; height:20px; width:10px; display:block;"></div>').appendTo("#infosbetriebe");
    }
  });  
}

//----------------------------------------------------------
//                                      NEWS
//----------------------------------------------------------

function drawNews(options) {
  $("#NEWS .browser").html("");
  $.each(CMS.items, function(i, item){
    if (item.openTill) {      
    CMS.config.HeadPic.items.push(i);
    currNewsItem = $('<div id="newsItem'+i+'" class="item"><div class="bg">'+
                     '</div><div class="title">'+item.title+
                     '</div><div class="date">ausgsteckt bis '+
                     $.fullCalendar.formatDate($.fullCalendar.parseDate(item.openTill),'dd. MMM')+
                     '</div><img class="bgImg" src="'+item.imageUrl+'" /></div>')
        .addClass("ui-corner-all")
        .hover(function(){
          $(this).toggleClass("hover");
          if (item.geoLat) displayPoint({currItemID:item.id,nopan:true});
        }, function(){
          $(this).toggleClass("hover");
          if (!CMS._displayItem) displayNone();
        })
        .click(function(){
            displayItem({'itemID':item.id});})
        // .click(function(){hidePoints({itemIDs:[item.id]});}) // hiding a point
        .appendTo('#NEWS > .browser');
      if ($.inArray('Heuriger',item.tags)!=-1) {
        currNewsItem.children('.date').show();
      }
    } else if (!item.hideNews) {
      currNewsItem = $('<div id="newsItem'+i+'" class="item"><div class="bg"></div><div class="title">'+item.title+
        '</div><img class="bgImg" src="'+item.imageUrl+'" /></div>')
        .addClass("ui-corner-all")
        .hover(function(){
          $(this).toggleClass("hover");
          if (item.geoLat) displayPoint({currItemID:item.id,nopan:true});
        }, function(){
          $(this).toggleClass("hover");
          if (!CMS._displayItem) displayNone();
        })
        .click(function(){
            displayItem({'itemID':item.id});})
        // .click(function(){hidePoints({itemIDs:[item.id]});}) // hiding a point
        .appendTo('#NEWS > .browser');
      if ($.inArray('Heuriger',item.tags)!=-1) {
        currNewsItem.children('.date').show();
      }
    } 

  });
  drawHeadPic();
  $('<div style="clear:both; color:#484848; height:20px;'+ 
    'width:10px; display:block;"></div>').appendTo("#NEWS .browser");
}

//----------------------------------------------------------
//                                      CALENDAR
//----------------------------------------------------------

function drawCalendar(options) {
    var rnd = Math.floor(Math.random()*10);
    var date = new Date();
	var d = date.getDate();
	var m = date.getMonth();
	var y = date.getFullYear();
	$('#EVENTS').html('<div class="calendar"></div><div style="clear:both; color:#484848; height:1px; width:10px; display:block;"></div>');
	$('#EVENTS > .calendar').fullCalendar({
    theme: true,
    buttonText:{
    prev:     '&nbsp;&#9668;&nbsp;',  // left triangle
    next:     '&nbsp;&#9658;&nbsp;',  // right triangle
    prevYear: '&nbsp;&lt;&lt;&nbsp;', // <<
    nextYear: '&nbsp;&gt;&gt;&nbsp;', // >>
    today:    'Heute',
    month:    'Monat',
    week:     'Woche',
    day:      'Tag'
    },
    monthNames:['J&auml;nner', 'Februar', 'M&auml;rz', 'April', 'Mai', 'Juni', 'Juli','August', 'September', 'Oktober', 'November', 'Dezember'],
    monthNamesShort:['Jan', 'Feb', 'M&auml;r', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],
    dayNames:['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'],
    dayNamesShort:['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
    
    header: {left: 'prev,next today', center: 'title', right: 'month,agendaWeek,agendaDay'},
    editable: false,
      eventClick: function(event, jsEvent, view) {
        displayItem({itemID:event.id.replace(/(.+)---\d+$/g,"$1")});
      },
      eventMouseover: function(calEvent, jsEvent, view){
        var currItem = CMS.items[calEvent.id.replace(/(.+)---\d+$/g,"$1")];
        if (currItem.geoLat) displayPoint({currItemID:currItem.id,nopan:true});
      },
      eventMouseout: function(calEvent, jsEvent, view){
        var currItem = CMS.items[calEvent.id.replace(/(.+)---\d+$/g,"$1")]; 
        if (!CMS._displayItem) displayNone();
      },
      eventResize: function( event, jsEvent, ui, view ) {
        var currItem = CMS.items[event.id.replace(/(.+)---\d+$/g,"$1")];
        var GDi = event.id.replace(/(.+)---(\d+)$/g,"$2");
        currItem.gdWhenStartTime[GDi] = $.fullCalendar.formatDate(event.start,'u');
        currItem.gdWhenEndTime[GDi] = $.fullCalendar.formatDate(event.end,'u');
        // #TODO# das is no net optimal gloest da......
        var para = {'CMS':[{'class':'Feeds',
                            'method':'setEntries',
                            'options':[{id:currItem.id,
                                        gdWhenStartTime:currItem.gdWhenStartTime,                      
                                        gdWhenEndTime:currItem.gdWhenEndTime,
                                        tag:currItem.tag,
                                        feed:currItem.feed,
                                        title:currItem.title,
                                        content:currItem.content,
                                        published:currItem.published,
                                        authorName:currItem.authorName,
                                        geoLat:currItem.geoLat,
                                        geoLong:currItem.geoLong}]}]};
        $.ajax({url:'index.php',data: (para),type:'GET',success: function(msg){}});
      },
      eventDrop: function( event, jsEvent, ui, view ) {
        var currItem = CMS.items[event.id.replace(/(.+)---(\d+)$/g,"$1")];
        var GDi = event.id.replace(/(.+)---(\d+)$/g,"$2");
        currItem.gdWhenStartTime[GDi] = $.fullCalendar.formatDate(event.start,'u');
        currItem.gdWhenEndTime[GDi] = $.fullCalendar.formatDate(event.end,'u');
        //var encoded = $.toJSON(currItem);
        // #TODO# das is no net optimal gloest da......
        var para = {'CMS':[{'class':'Feeds',
                            'method':'setEntries',
                            'options':[{id:currItem.id,
                                        gdWhenStartTime:currItem.gdWhenStartTime,                      
                                        gdWhenEndTime:currItem.gdWhenEndTime,
                                        tag:currItem.tag,
                                        feed:currItem.feed,
                                        title:currItem.title,
                                        content:currItem.content,
                                        published:currItem.published,
                                        authorName:currItem.authorName,
                                        geoLat:currItem.geoLat,
                                        geoLong:currItem.geoLong}]}]};
        $.ajax({url:'index.php',data: (para),type:'GET',success: function(msg){}});
      },
      //eventSources: [$.fullCalendar.gcalFeed("http://www.google.com/calendar/feeds/patrick232%40gmail.com/public/full",{editable:true})],
      events: CMS.events
		});
	$(".fc-content").addClass("ui-corner-all");
}

//----------------------------------------------------------
//                                      GOOGLE MAP
//----------------------------------------------------------

function drawMap(options) {
  CMS.map = new GMap2($("#MAP").get(0));
  $('#MAP').css({"position":"fixed","z-index":"1003"});
  
  //var myLayer = new GLayer("com.google.webcams"); CMS.map.addOverlay(myLayer);
  //var myLayer = new GLayer("com.panoramio.all");  CMS.map.addOverlay(myLayer);
  //geoXml = new GGeoXml("http://api.flickr.com/services/feeds/geo/");
  //geoXml = new GGeoXml("http://brainpain.at/eyzn/stuff/feuersbrunn.xml");
  //CMS.map.addOverlay(geoXml);
  
  // #TODO# das ghoert aus da config rausgladn
  CMS.config.Map.center.lat = 48.4403;
  CMS.config.Map.center.long = 15.7872;
  CMS.config.Map.zoomLvl = 14;
  
  var feuersbrunnMAP = new GLatLng(CMS.config.Map.center.lat,CMS.config.Map.center.long);
  var mapTypeControl = new GMapTypeControl();
  var topRight       = new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(10,30));
  var bottomRight    = new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10,10));
  CMS.map.setCenter(feuersbrunnMAP, CMS.config.Map.zoomLvl);
  //CMS.map.setCenter(feuersbrunnMAP, 13);
  CMS.map.addControl(new GSmallMapControl(), topRight);
  CMS.map.addControl(new GMapTypeControl());
  
  //$(markers).each(function(i,marker){
  //    $("<ul />").prependTo("#INFOS").append($("<li />")
  //        .html("Point "+i).hover(function(){displayPoint(marker, i);}));});
  $("#markerMessage").appendTo(CMS.map.getPane(G_MAP_FLOAT_SHADOW_PANE));
  //$("#markerMessage").appendTo(CMS.map.getPane(G_MAP_FLOAT_PANE));
  //.css({'z-index':-99999999999999999990});
  //drawPoints();
  GEvent.addListener(CMS.map, 'zoomend', function(){
    //drawPoints();
    if (CMS._displayItem) displayPoint({currItemID:CMS._displayItem});
    else $("#markerMessage").hide();
  });
}

function drawPoints(options) {
  var zoomLvl = CMS.map.getZoom();
  $('#DEBUG').append("lvl: "+CMS.map.getZoom()+"<br/>");
  $.each(CMS.points,function(lat,x){
    $.each(x,function(long,y){
      var point = new GLatLng(lat,long);
      var mapIcon = new GIcon();            
      $.each(CMS.items[CMS.points[lat][long][0]].tags,function(i,val){                
        if (CMS.config.Feeds.tags[val]) {
          tag = val;
          icon = CMS.config.Feeds.tags[val].icon;
          return false;
        }
      });
                                
      mapIcon.image = icon;
      //mapIcon.shadow = "http://econym.org.uk/gmap/fingershadow.png";
      mapIcon.iconSize = new GSize(32, 37);
      //mapIcon.shadowSize = new GSize(36, 34);
      mapIcon.iconAnchor = new GPoint(14, 38);
      mapIcon.infoWindowAnchor = new GPoint(5, 2);
      mapIcon.infoShadowAnchor = new GPoint(14, 25);
      mapIcon.transparent = icon;
      mapIcon.printImage = icon;
      mapIcon.mozPrintImage = icon;
      
      var isDraggable = (CMS.auth) ? true : false;
      marker = new GMarker(point,{draggable:isDraggable,icon:mapIcon});
      CMS.map.addOverlay(marker);
      CMS.points[lat][long]['marker'] = marker;
      //marker.hide();
      GEvent.addListener(marker, "dragend", function(latlng){
        var latEnd = latlng.lat();
        var longEnd = latlng.lng();
        
        if (CMS._mouseOverPoint &&
            ((CMS._mouseOverPoint.lat != lat) &&
             (CMS._mouseOverPoint.long != long))) {
          latEnd = CMS._mouseOverPoint.lat;
          longEnd = CMS._mouseOverPoint.long;
          CMS._mouseOverPoint = false;
        }
        
        var currItems = Array();
        var para = {'CMS':[]};
        if (CMS._displayItem)
          currItems.push(CMS.items[CMS._displayItem]);
        else
          $.each(CMS.points[lat][long],function(i,val){currItems.push(CMS.items[val]);});
        $.each(currItems,function(i,currItem){
          para.CMS.push({'class':'Feeds',
                          'method':'setEntries',
                          'options':[{'id':currItem.id,'geoLat':latEnd,'geoLong':longEnd}]});
        });
        $.ajax({url:'index.php',data: (para),type:'POST',success: function(msg){
          initCMS({displayItem:CMS._displayItem});
        }});
      });
      GEvent.addListener(marker, "click", function(){
        displayItem({'lat':lat,'long':long});});
      GEvent.addListener(marker, "mouseover", function(){
        CMS._mouseOverPoint = {lat:lat,long:long};
        displayPoint({'lat':lat,'long':long,nopan:true});
      });
      GEvent.addListener(marker, "mouseout", function(){
        CMS._mouseOverPoint = false;
        if (CMS._displayItem) {
          displayPoint({currItemID:CMS._displayItem,nopan:true});
        } else {
          $("#markerMessage").hide();
          $(".markerMessageClone").hide();
        }
      });
      //GEvent.addListener(marker, "mouseup", function(){});
      //GEvent.addListener(marker, "mouseover", function(){});
    });
  });
  $.each(CMS.config.Map.overlays,function(i,currOverlay){
    var myLayer = new GLayer(currOverlay);
    CMS.map.addOverlay(myLayer);
    $("body").delegate("#"+currOverlay.replace(/\./g,''),'click',function(){
      if ($("#"+currOverlay.replace(/\./g,'')).hasClass("hiddenTag"))
        CMS.map.removeOverlay(myLayer);
      else
        CMS.map.addOverlay(myLayer);
    });
  });
}

function displayPoint(options) {
  if (options.currItemID) {
      var currItem = CMS.items[options.currItemID];
      if (!CMS.points[currItem.geoLat]) return null;
      else var point = CMS.points[currItem.geoLat][currItem.geoLong];
  } else if (options.lat && options.long) {
      var point = CMS.points[options.lat][options.long];
  } else {
      return null;
  }
  if (!point.hidden) {
    var marker = point['marker'];
    var nopan = (!options.nopan) ? false : true;
    
    if (!nopan) {
      var moveEnd = GEvent.addListener(CMS.map, "moveend", function(){
        var markerOffset = CMS.map.fromLatLngToDivPixel(marker.getLatLng());
        $("#markerMessage").css({top:markerOffset.y - 45, left:markerOffset.x - 25});
        GEvent.removeListener(moveEnd);
      });
    }
    var markerOffset = CMS.map.fromLatLngToDivPixel(marker.getLatLng());
    $("#markerMessage").css({top:markerOffset.y - 45, left:markerOffset.x - 25});                        
    
    
    $("#markerMessage > .msgCt").html("");
    markerMessageCoutner = 0;
    $.each(point, function(i,itemID){            
      if (markerMessageCoutner++ < CMS.config.Map.maxEntriesPerPoint) {
        var current = "";                                                                                                    
        if ((currItem && (itemID == currItem.id))||(itemID == CMS._displayItem)) current = " current";
        $("<div class='ui-corner-all item"+current+"'>"
         +CMS.items[itemID].title.substr(0,CMS.config.Map.maxEntryTitleLength)
         +"<div class='date'>"
         +$.fullCalendar.formatDate($.fullCalendar.parseDate(CMS.items[itemID].published),'dd. MMM yyyy HH:mm')
         +"</div></div>")
          .appendTo("#markerMessage > .msgCt")
          .hover(function(){$(this).toggleClass("hover")})
          .click(function(){displayItem({'itemID':itemID,nopan:true});});
          //.clone().appendTo(CMS.map.getPane(G_MAP_FLOAT_PANE)).addClass("markerMessageClone");
      } else {
        return false;
        markerMessageCoutner = 0;
      }
    });
    $("#markerMessage").fadeIn("fast");       
    
    var currZoom = CMS.map.getZoom();        
    var mvCenter = 0;
    var bounds = CMS.map.getBounds();
    var southWest = bounds.getSouthWest();
    var northEast = bounds.getNorthEast();
    var lngDelta = (northEast.lng() - southWest.lng()) / 7;
    var latDelta = (northEast.lat() - southWest.lat()) / 7;
    var panLat   = marker.getLatLng().lat() - latDelta;
    var panLng   = marker.getLatLng().lng() + lngDelta;
    
    var panPoint = new GLatLng(panLat,panLng);
    if(!nopan) CMS.map.panTo(panPoint);
  }
}

function showPoints(options) {
  $.each(options.itemIDs,function(i,itemID){
    var lat = CMS.items[itemID].geoLat;
    var long = CMS.items[itemID].geoLong;
    if (CMS.points[lat] && CMS.points[lat][long]) {
        CMS.points[lat][long]['marker'].show();
        CMS.points[lat][long].hidden = false;
    }
  });
}

function hidePoints(options) {
  $.each(options.itemIDs,function(i,itemID){
    var lat = CMS.items[itemID].geoLat;
    var long = CMS.items[itemID].geoLong;                                                                         
    if (CMS.points[lat] && CMS.points[lat][long] && 
        CMS.points[lat][long]['marker']) {
      CMS.points[lat][long]['marker'].hide();
      CMS.points[lat][long].hidden = true;
    }
  });
}

function hideEntries(options) {
  $.each(options.itemIDs,function(i,itemID){
    CMS.items[itemID].hidden = true;
  });
  dontHide = false;
  $.each(CMS.points,function(i,currLat){
    $.each(currLat,function(i,currPoint){
      $.each(currPoint,function(i,currItem){
        if (!CMS.items[currItem].hidden) dontHide = true;
      });
      if (!dontHide) {
        currPoint['marker'].hide();
        currPoint.hidden = true;
      } else {
        currPoint['marker'].show();
        currPoint.hidden = false;
      }
    });
  });
}

function showEntries(options) {
  $.each(options.itemIDs,function(i,itemID){
      CMS.items[itemID].hidden = false;
  });
  dontHide = false;
  $.each(CMS.points,function(i,currLat){
    $.each(currLat,function(i,currPoint){
      $.each(currPoint,function(i,currItem){
        if (!CMS.items[currItem].hidden) dontHide = true;
      });
      if (!dontHide) {
        currPoint['marker'].hide();
        currPoint.hidden = true;
      } else {
        currPoint['marker'].show();
        currPoint.hidden = false;
      }
    });
  });
}

function drawTagMenu(options) {
  var tagMenu = $("<div></div>");
  $.each(CMS.config.Feeds.tags,function(currTag,val){
    var tplTagBtn = $('<a id="'+currTag+'" class="'
                     +'ui-state-default ui-corner-all map-menu-tagBtn" title="'
                     +currTag+'">'
                     +'<span class="ui-icon ui-icon-circle-check"></span>'+
                      '<img style="float:left;" src="'+val.icon+'" /></a>');
    tplTagBtn.click(function(){
      var options = {itemIDs:[]};
      var isHidden = $(this).hasClass("hiddenTag");
      $.each(CMS.items, function(i,item){
           if ($.inArray(currTag,item.tags)!='-1') {
               if (!(CMS._displayItem && (item.id == CMS._displayItem)))
                   options.itemIDs.push(item.id);
           }
      });
      if (isHidden) {
        showPoints(options);
        $(this).toggleClass("hiddenTag");
        $(this).find("span").removeClass("ui-icon-circle-close");
        $(this).find("span").addClass("ui-icon-circle-check");
      } else {
        hidePoints(options);
        $(this).toggleClass("hiddenTag");
        $(this).find("span").removeClass("ui-icon-circle-check");
        $(this).find("span").addClass("ui-icon-circle-close");
      }
      if (isHidden) {
        $("#EVENTS ."+currTag).show();
      } else {
        $("#EVENTS ."+currTag).hide();
      }
    });
    tagMenu.append(tplTagBtn);
  });
  $.each(CMS.config.Map.overlays,function(i,currOverlay){
    var icon = "";
    if (currOverlay=="org.wikipedia.de") icon = "layout/images/map-icons/wikipedia.png";
    if (currOverlay=="com.panoramio.all") icon = "layout/images/map-icons/panoramio.png";
    var tplTagBtn = $('<a id="'+currOverlay.replace(/\./g,'')+'" class="'
                     +'ui-state-default ui-corner-all map-menu-tagBtn" title="'
                     +currOverlay+'">'
                     +'<span class="ui-icon ui-icon-circle-check"></span>'
                     +'<img style="float:left;" src="'+icon+'" /></a>');
    tplTagBtn.click(function(){
      var isHidden = $(this).hasClass("hiddenTag");
      if (isHidden) {
        $(this).toggleClass("hiddenTag");
        $(this).find("span").removeClass("ui-icon-circle-close");
        $(this).find("span").addClass("ui-icon-circle-check");
      } else {
        $(this).toggleClass("hiddenTag");
        $(this).find("span").removeClass("ui-icon-circle-check");
        $(this).find("span").addClass("ui-icon-circle-close");
      }
    });
    tagMenu.append(tplTagBtn);
  });
  $("#MAPMENU .mycontent").html(tagMenu);
}
//----------------------------------------------------------
//                                       DISPLAY ITEM
//----------------------------------------------------------

function displayItem(options) {
  if(!options.itemID && options.lat && options.long) 
    options.itemID = CMS.points[options.lat][options.long][0];
  window.location.hash = options.itemID;
  CMS._displayItem = options.itemID;
  var item = CMS.items[options.itemID];
  if (item.geoLat) displayPoint({currItemID:options.itemID,nopan:options.nopan});
  var tplShareButton = $('<a class="addthis_button ui-state-default ui-corner-all"'
                        +' addthis:url="http://feuersbrunn.at#'+item.id
                        +'" addthis:title="'+item.title+'" addthis:description="'+item.title
                        +'"><span class="ui-icon ui-icon-circle-plus" style="height:30px;"></span>Weitersagen</a>');
  var tplCloseButton = $('<a class="ui-state-default ui-corner-all"><span class="ui-icon ui-icon-circle-close"></span>Schließen</a>');
  tplCloseButton.click(function(){displayNone();});
  $.each(item.tags,function(i,val){
    if (CMS.config.Feeds.tags[val]) {
      icon = CMS.config.Feeds.tags[val].icon;
      return false;
    }
  });
  var tplTag     = $('<img src="'+icon+'" />');
  var tplItem    = $("<div class='itemHolder'></div>");
  var title      = $('<div class="title ui-corner-all" '
                    +'style="background:url('+item.imageUrl+') 50% 50% no-repeat;">'
                    +'<div class="background"></div></div>');
  var info       = $('<div class="info"></div>');
  var authorName = (item.authorName) ? item.authorName : item.feed;
  var authorInfo = (item.authorUri)
                      ? '<a href="'+item.authorUri+'" target="_blank">'+authorName.substr(0,20)+'</a>'
                      : authorName;
  var published = $('<p>am <span class="published">'
                   +$.fullCalendar.formatDate($.fullCalendar.parseDate(item.published),"dd. MMM yy")
                   +'</span> von <span class="authorName">'
                   +authorInfo
                   +'</p>');
  var content   = $('<div class="content ui-corner-all">'
                   +item.content+'</div>');
  content.find('a').attr('target','_blank');
  if (item.editable)
    title.append('<h3 class="itemTitle"><input type="text" value="'+item.title+'" /></h3>');
  else 
    title.append('<h3>'+item.title+'</h3>');
  title.append(tplCloseButton);
  title.append(tplShareButton);
  title.append(tplTag);
  info.append(published);
  
  $('#ITEMS .item').html("");
  $('#ITEMS .item').append(title);
  $('#ITEMS .item').append(info);
  $('#ITEMS .item').append(content);
  $("#ITEMS .item a").addClass("ui-corner-all");
  
  // reinitialize addthis....
  //tplShareButton.mouseover(function(){
  if (window.addthis) window.addthis = null;
  $.getScript('http://s7.addthis.com/js/250/addthis_widget.js#domready=1');
  
  if (item.editable) {   
    $('body').append('<div id="buzzWym"></div>');
    $('#ITEMS .item').find(".content").wymeditor({
      html:item.content,
      toolsItems: [{'name': 'Bold', 'title': 'Strong', 'css': 'wym_tools_strong'}, 
                   {'name': 'Italic', 'title': 'Emphasis', 'css': 'wym_tools_emphasis'},
                   {'name': 'Superscript', 'title': 'Superscript', 'css': 'wym_tools_superscript'},
                   {'name': 'Subscript', 'title': 'Subscript', 'css': 'wym_tools_subscript'},
                   {'name': 'InsertOrderedList', 'title': 'Ordered_List', 'css': 'wym_tools_ordered_list'},
                   {'name': 'InsertUnorderedList', 'title': 'Unordered_List', 'css': 'wym_tools_unordered_list'},
                   {'name': 'Indent', 'title': 'Indent', 'css': 'wym_tools_indent'},
                   {'name': 'Outdent', 'title': 'Outdent', 'css': 'wym_tools_outdent'},
                   {'name': 'Undo', 'title': 'Undo', 'css': 'wym_tools_undo'},
                   {'name': 'Redo', 'title': 'Redo', 'css': 'wym_tools_redo'},
                   {'name': 'CreateLink', 'title': 'Link', 'css': 'wym_tools_link'},
                   {'name': 'Unlink', 'title': 'Unlink', 'css': 'wym_tools_unlink'},
                   //{'name': 'InsertImage', 'title': 'Image', 'css': 'wym_tools_image'},     // wir habn eigenes tool
                   {'name': 'InsertTable', 'title': 'Table', 'css': 'wym_tools_table'},
                   {'name': 'Paste', 'title': 'Paste_From_Word', 'css': 'wym_tools_paste'},
                   {'name': 'ToggleHtml', 'title': 'HTML', 'css': 'wym_tools_html'},
                   //{'name': 'Preview', 'title': 'Preview', 'css': 'wym_tools_preview'}
                  ],
      containersItems: [{'name': 'P', 'title': 'Paragraph', 'css': 'wym_containers_p'},
                        {'name': 'H1', 'title': 'Heading_1', 'css': 'wym_containers_h1'}],
      preInit:function(wym){},
      postInit:function(wym){
        var html = "<li class='wym_tools_image'>"
                 + "<a name='NewButton'>"
                 + "Do something"
                 + "</a></li>"
                 + "<li class='wym_tools_floatLeft'>"
                 + "<a name='floatLeft'>"
                 + "floatleft"
                 + "</a></li>"
                 + "<li class='wym_tools_floatRight'>"
                 + "<a name='floatRight'>"
                 + "floatleft"
                 + "</a></li>";
        $(wym._box).find(wym._options.toolsSelector + wym._options.toolsListSelector).append(html);
        $(wym._box).find('li.wym_tools_floatLeft a').click(function(){wym.toggleClass("floatLeft","img");});
        $(wym._box).find('li.wym_tools_floatRight a').click(function(){wym.toggleClass("floatRight","img");});
        imageDlg = $('<div id="imageDlg" title="Bilder verwalten"></div>');  
        $('<span id="status" ></span>').appendTo(imageDlg);
        $(wym._box).find('li.wym_tools_image a').click(function(){     
          imageDlg.dialog({
            modal:false, width:550, height:400, zIndex:2005,
            dialogClass:'imageHandling',
            buttons: {"Bild raufladen":function(){}},
            open:function(){
              $(".ui-button").each(function(){
                if ($(this).children("span").html() == "Bild raufladen") {                                         
                  new AjaxUpload($(this), {  
                    action: 'lib/upload-file.php', 
                    name: 'uploadfile',  
                    onSubmit: function(file, ext){  
                      if (! (ext && /^(jpg|png|jpeg|gif)$/.test(ext))){
                        $("#status").text('Only JPG, PNG or GIF files are allowed');  
                        return false;}  
                      $("#status").text('Uploading...');},  
                    onComplete: function(file, response){ 
                      $("#status").text(''); 
                      if(response==="success"){  
                        var bla = $('<img src="data/thumbnails/'+file+'" alt="" />');
                        imageDlg.append(bla); 
                      } else {  
                        imageDlg.append(response);}}});}});
              drawImgList(imageDlg,item.id); 
            } 
          });
          $(".ui-widget-overlay").css({"z-index":2004});
          $("#MAP").css({"z-index":1003});
          return(false);     
        });
        
        tplEditEntry = $('<div id="editEntry" class="ui-corner-all"><p>Eintrag editieren:</p></div>');
        var tplDelButton = $('<a class="ui-state-default ui-corner-all"><span class="ui-icon ui-icon-delete"></span>Löschen</a>');
        tplDelButton.click(function(){
          var para = {'CMS':[]};
          para.CMS.push({'class':'Feeds','method':'delEntry','options':options.itemID});
          $.ajax({url:'index.php',data: (para),type:'GET',success: function(msg){
            displayNone();
            initCMS();
          }});
        });
        var tplSaveButton = $('<a class="ui-state-default ui-corner-all"><span class="ui-icon ui-icon-disk"></span>Speichern</a>');
        titlePicBtn = $('<a class="ui-state-default ui-corner-all"><span class="ui-icon ui-icon-disk"></span>Titelbild ändern</a>').click(function(){
          imageDlg.dialog({
            modal:false, width:550, height:400, zIndex:2005,
            dialogClass:'imageHandling',
            buttons: {"Bild raufladen":function(){}},
            open:function(){
              $(".ui-button").each(function(){
                if ($(this).children("span").html() == "Bild raufladen") {                                         
                  new AjaxUpload($(this), {  
                    action: 'lib/upload-file.php', 
                    name: 'uploadfile',  
                    onSubmit: function(file, ext){  
                      if (! (ext && /^(jpg|png|jpeg|gif)$/.test(ext))){
                        $("#status").text('Only JPG, PNG or GIF files are allowed');  
                        return false;}  
                      $("#status").text('Uploading...');},  
                    onComplete: function(file, response){ 
                      $("#status").text(''); 
                      if(response==="success"){  
                        var bla = $('<img src="data/thumbnails/'+file+'" alt="" />');
                        imageDlg.append(bla);} 
                      else {  
                        imageDlg.append(response);}}});}});
              drawImgList(imageDlg,item.id); 
            } 
          });
          $(".ui-widget-overlay").css({"z-index":2004});
          $("#MAP").css({"z-index":1003});
          return(false); 
        });
        var tplOptionButtons = $('<p></p>');
        tplOptionButtons.append(titlePicBtn).append(tplDelButton).append(tplSaveButton);
        var tplTag = $('<form id="editEntryTags"></form>');
        $.each(CMS.config.Feeds.tags,function(i,currTag){
          var isSelected = '';
          if (item.tags[0] == i) isSelected = ' checked="checked"';
          tplTag.append('<input type="radio" class="entryTags" name="tag" value="'+i+'"'
                       +isSelected+' >'+'<img src="'+currTag.icon+'" />');
        });
        
        var newsChecked  = (item.hideNews)  ? '' : 'checked="checked"';
        var eventChecked = (item.hideEvent) ? '' : 'checked="checked"';
        var pointChecked = (item.hidePoint) ? '' : 'checked="checked"';
        var infoChecked  = (!$.inArray('Info',item.tags)) ? '' : 'checked="checked"';
        var tplHideButtons = $('<div class="hideButtons"><p>news '
                              +'<input class="hideNews" type="checkbox" '
                              +newsChecked+' /> '+'event <input class="hideEvent" type="checkbox" '
                              +eventChecked+' /> '+'point <input class="hidePoint" type="checkbox" '
                              +infoChecked+' /> '+'info <input class="infoTag" type="checkbox" '
                              +'</p></div>');
        
        
        cal = $('<div></div>');
        calAdd = $('<a class="ui-state-default ui-corner-all">'
                  +'<span class="ui-icon ui-icon-disk">'
                  +'</span>Kalendereintrag hinzufügen</a>');
        entryAdd = $('<a class="ui-state-default ui-corner-all">'
                    +'<span class="ui-icon ui-icon-disk">'
                    +'</span>Neuen Eintrag auf dem Kartenpunkt.</a>')
        
        cal.append(calAdd).append('<br/>');
        calTbl = $('<table></table>');
        calTbl.append('<tr><td>von</td><td>bis</td><td></td></tr>');
        calAdd.click(function(){
          var addDatepickerFrom = $('<input class="calFrom" type="text" class="datepicker" size="10" />');
          var addDatepickerTo   = $('<input class="calTo"  type="text" class="datepicker" size="10" />');
          addDatepickerFrom.datepicker({showTime:true,zIndex:90000000000000000});
          addDatepickerTo.datepicker({showTime:true,zIndex:90000000000000000});
          var calRow = $('<tr class="calFromTo"></tr>');
          calFrom = $('<td></td>');
          calFrom.append(addDatepickerFrom);
          calTo = $('<td></td>');
          calTo.append(addDatepickerTo);
          calDel = $("<td></td>");
          var calDelBtn = $("<span>löschen</span>");
          calDelBtn.click(function(){
            $(this).parent().parent().detach();
          });                                                                                          
          calDel.append(calDelBtn);
          calRow.append(calFrom).append(calTo).append(calDel);
          calTbl.append(calRow);
        });
        if (item.gdWhenStartTime && item.gdWhenEndTime) {
          $.each(item.gdWhenStartTime,function(i,startTime){
            var calStart = $.fullCalendar.formatDate($.fullCalendar.parseDate(item.gdWhenStartTime[i]),'u');
            var calEnd = $.fullCalendar.formatDate($.fullCalendar.parseDate(item.gdWhenEndTime[i]),'u');        
            var datepickerFrom = $('<input type="text" class="calFrom datepicker" size="10" value="'+calStart+'" />');
            datepickerFrom.datepicker({showTime:true,zIndex:90000000000000000});
            var datepickerTo = $('<input type="text" class="calTo datepicker" size="10" value="'+calEnd+'" />');
            datepickerTo.datepicker({showTime:true,zIndex:90000000000000000});
            
            var calRow = $('<tr class="calFromTo"></tr>');
            calFrom = $("<td></td>");
            calFrom.append(datepickerFrom);
            calTo = $("<td></td>");
            calTo.append(datepickerTo);
            calDel = $("<td></td>");
            var calDelBtn = $("<span>löschen</span>");
            calDelBtn.click(function(){
              $(this).parent().parent().removeClass('calFromTo');
              $(this).parent().parent().detach();
            });
            calDel.append(calDelBtn);
            calRow.append(calFrom).append(calTo).append(calDel);
            calTbl.append(calRow);
          });
        }
        
        cal.append(calTbl);
        
        tplEditEntry.append(tplTag)
                    .append(tplHideButtons)
                    .append(cal)
                    .append(tplOptionButtons);
        $('body').append(tplEditEntry);
        
        tplSaveButton.click(function(){
          var para = {'CMS':[]};
          var currItem = {};
          currItem.id              = item.id;
          currItem.title           = $("#ITEMS .item .title .itemTitle input").attr("value");
          currItem.content         = wym.html();
          //currItem.published       = $.fullCalendar.formatDate($.fullCalendar.parseDate($("#ITEMS .item .published").html()),'uu');
          currItem.published       = item.published;
          gdWhenStartTime = Array();
          gdWhenEndTime   = Array();          
          $.each($('#editEntry .calFromTo'),function(i,currCal){
              gdWhenStartTime.push($.fullCalendar.formatDate($.fullCalendar.parseDate($(this).find('.calFrom').val()),'u'));
              gdWhenEndTime.push($.fullCalendar.formatDate($.fullCalendar.parseDate($(this).find('.calTo').val()),'u'));
          });     
          currItem.gdWhenStartTime = currItem.gdWhenEndTime = null;
          currItem.gdWhenStartTime = gdWhenStartTime;
          currItem.gdWhenEndTime   = gdWhenEndTime;                 
          currItem.link            = item.link;
          currItem.tags            = item.tags;
          currItem.tags[0]         = $("#editEntry .entryTags:checked").val();
          if ($("#editEntry .infoTag:checked").length > 0)
              currItem.tags[1]     = "Info";
          else
              currItem.tags[1]     = null;
          currItem.feed            = item.feed;
          currItem.geoLat          = item.geoLat;
          currItem.geoLong         = item.geoLong;
          currItem.imageUrl        = (item.imageUrl) ? item.imageUrl : null;
          para.CMS.push({'class':'Feeds',
                         'method':'setEntries',
                         'options':[{'id':currItem.id,'tags':currItem.tags,'feed':currItem.feed,
                                     'link':currItem.link,'imageUrl':currItem.imageUrl,
                                     'gdWhenStartTime':currItem.gdWhenStartTime,
                                     'gdWhenEndTime':currItem.gdWhenEndTime,
                                     'title':currItem.title,'content':currItem.content,
                                     'published':currItem.published,'authorName':currItem.authorName,
                                     'geoLat':currItem.geoLat,'geoLong':currItem.geoLong
                         }]});
          $.ajax({url:'index.php',data: (para),type:'GET',success: function(msg){}});
          var hideNews  = ($("#editEntry .hideButtons .hideNews:checked").length > 0)  ? '0' : '1';
          var hideEvent = ($("#editEntry .hideButtons .hideEvent:checked").length > 0) ? '0' : '1';
          var hidePoint = ($("#editEntry .hideButtons .hidePoint:checked").length > 0) ? '0' : '1';
          var para = {'CMS':[]};
          para.CMS.push({'class':'Feeds',
                         'method':'hideEntry',
                         'options':{'id':currItem.id,
                                     'hideNews' :hideNews,
                                     'hideEvent':hideEvent,
                                     'hidePoint':hidePoint
                         }});
          $.ajax({url:'index.php',data: (para),type:'GET',success: function(msg){
                  displayNone();
                  initCMS();
          }});                      
        });              
      }
    });
  } // </ if (item.editable) >                                                                                       
  $('.wym_area_main').css("margin","0");
  $(".wym_wymeditor_link").detach();
  $('#LOGO').css({'position':'fixed','top':'44px'});
  $('#WELCOME').css({'position':'fixed','top':'124px'});
  $('#shadow').fadeIn().click(function(){displayNone();});
  $('#ITEMS .item').fadeIn();
}

function displayNone() {
  if (CMS._displayItem) window.location.hash = '';
  CMS._displayItem = false;
  $('#editEntry').detach();
  $('#markerMessage').hide();
  $('#shadow').hide();
  $('#ITEMS .item').hide();
  $('#LOGO').css({'position':'absolute','top':'20px'});
  $('#WELCOME').css({'position':'absolute','top':'100px'});
}

//----------------------------------------------------------
//                                          LAYOUT
//----------------------------------------------------------

function drawHeadPic() {
  // zuerst CMS.config.HeadPic.items durchlaufn
  $.each(CMS.config.HeadPic.items, function(i,currItemID){
    if (CMS.items[currItemID]) {
      var tplPic = $('<div class="item ui-corner-all" style="display: block;">'
                    +'<div style="background: url(&quot;'+CMS.items[currItemID].imageUrl+'&quot;) '
                    +'no-repeat scroll 50% 50% transparent;" class="title ui-corner-all">'
                    +'<div class="background"></div><h3>'+CMS.items[currItemID].title
                    +'</h3></div></div>');
      tplPic.click(function(e){displayItem({'itemID':currItemID});})
            .mouseover(function(){displayPoint({'currItemID':currItemID,nopan:true});})
            .mouseout(function(){if (!CMS._displayItem) displayNone();});
      tplPic.appendTo("#HEADPIC");
    }
  });
  // dann die neuesten CMS.config.HeadPic.latestItems (nur news)
  var v=0;
  $.each(CMS.items, function(i,currItemID){
    if (!CMS.items[i].hideNews) {
      v++;
      if (v>=CMS.config.HeadPic.latestItems) return false;
      if (CMS.items[i]) {
        var tplPic = $('<div class="item ui-corner-all" style="display: block;">'
                      +'<div style="background: url(&quot;'+CMS.items[i].imageUrl+'&quot;) '
                      +'no-repeat scroll 50% 50% transparent;" class="title ui-corner-all">'
                      +'<div class="background"></div><h3>'+CMS.items[i].title
                      +'</h3></div></div>');
        tplPic.click(function(e){displayItem({'itemID':i});});
        tplPic.appendTo("#HEADPIC");
      }
    }
  });
  $("#HEADPIC").addClass("ui-corner-all");
  cycleHeadPic();
}

function cycleHeadPic(currItem) {
  if ($("#HEADPIC .item").length > 1) {
    if (!currItem) currItem = $("#HEADPIC .item").first();
    $("#HEADPIC .item").fadeOut();
    currItem.fadeIn("slow");
    if ((currItem).is(":last-child"))
      nextItem = $("#HEADPIC .item").first();
    else
      nextItem = currItem.next();
    setTimeout('cycleHeadPic(nextItem)',8000);
  }
}

function initLayout(options) {
  $("#contactBtn").click(function(){displayItem({'itemID':'4bf8b8f691411'});});
  $(".datepicker").datepicker();    
  $("#infosContent").tabs();
  $("#LOGO, #WELCOME").click(function(){displayNone();});
  $("body").delegate(".ui-state-default","hover",function(){$(this).toggleClass("ui-state-hover")});
  $("#INFOS").delegate(".ui-state-default","hover",function(){$(this).toggleClass("ui-state-hover")});
  
  $("#MAPMENU").addClass("ui-corner-right");
  $(".item, #CONTENT > .content, #MENU > .button, #markerMessage")
      .addClass("ui-corner-all");
  $("#menuButton1").addClass("active");
  $("#menuButton1").click(function(){
    $("#MENU > .button").removeClass("active");
    $(this).addClass("active");
    $("#CONTENT > .content").hide();
    $("#NEWS").show();
  });
  $("#menuButton2").click(function(){
    $("#MENU > .button").removeClass("active");
    $(this).addClass("active");
    $("#CONTENT > .content").hide();
    $("#EVENTS").show();
    $('#EVENTS > .calendar').fullCalendar('render');
  });
  $("#menuButton3").click(function(){
    $("#MENU > .button").removeClass("active");
    $(this).addClass("active");
    $("#CONTENT > .content").hide();
    $("#INFOS").show();
  });
  $(".button").hover(function(){$(this).addClass("hover");},
                     function(){$(this).removeClass("hover");});
  $(".button").click(function(){
    $(".ui-dialog").css({'position':'fixed',top:300,right:50});
  });
  $("#NEWS .menu .switch").click(function(){$(".item").toggleClass("bla");});
  $("#LOGO, #WELCOME").css({'position':'absolute'});
  $("#ADMIN").hide();
  $("#CONTENT > .content").hide();
  $("#NEWS").show();   
  
  $("#ITEMS .item").delegate("a","mouseover",function(){$(this).add("ui-corner-all");});
  
  
  //------------------------------------------------------ dialogs    
  $('#login').click(function(){
    var tplLogin = $('<div id="loginForm" title="Auf feuersbrunn.at einloggen">'
                    +'<form method="post" action="">'
                    +'<p>name: <input name="LUhandle" type="text" /></p>'
                    +'<p>passwort: <input name="LUpasswd" type="password" /></p>'
                    +'<p><input type="submit" name="LUlogin" value="login" /></p>'
                    +'</form>'
                    +'</div>');
    tplLogin.dialog({modal:true, autoOpen:false, height:200, width:380, zIndex:2005});
    tplLogin.dialog('open');
    $(".ui-widget-overlay").css({"z-index":2004});
    $("#MAP").css({"z-index":1003});
  });
  $("#btnDlgUsers").click(function(){
    var tplDlgUsers = $('<div id="dlgUsers" title="Benutzer verwalten"></div>');
    tplDlgUsers.append('<div id="userList"></div>');
    drawUserLlist(tplDlgUsers);
    tplDlgUsers.dialog({
      //resizeStop:function(){$(".ui-dialog").css("position","fixed");},
      modal:false, autoOpen:false, zIndex:3005,
      buttons:{"Neuen Benutzer erstellen":function(){
        var tplDlgAddUser = $('<div title="Neuen Benutzer erstellen">'
                             +'<form method="post" action="">'
                             +'<p>name: <input id="addUserHandle" type="text" /></p>'
                             +'<p>passwort: <input id="addUserPwd" type="password" /></p>'
                             +'</form></div>');
        tplDlgAddUser.dialog({autoOpen:false,buttons:{"erstellen":function(){
          var para = {'CMS':[{'class':'LUA',
                              'method':'addUser',
                              'options':{'handle':$("#addUserHandle").val(),
                                         'passwd':$("#addUserPwd").val()}}]
                     };
          $.get("index.php",para,function(data){
            drawUserLlist(tplDlgUsers);
            tplDlgAddUser.dialog("close");
            tplDlgAddUser.detach();
          });
        }}});
        tplDlgAddUser.dialog("open");
      }}
    });
    $("#dlgUsers").dialog('close');
    tplDlgUsers.dialog('open');
  });    
  
  
  $("#btnDlgEntries").click(function(){
    tplDlgEntries = $('<div id="dlgEntries" title="Einträge verwalten"></div>');
    tplDlgEntries.dialog({modal:false, autoOpen:false, zIndex:3005, height:500, width:650,
      buttons:{"Eintrag erstellen":function(){
        var para = {'CMS':[{'class':'Feeds','method':'setEntries','options':['']}]};
        $.get("index.php",para,function(data){
          tplDlgEntries.dialog('close');
          initCMS({displayItem:data});
        });}}
    });
    drawEntryList(tplDlgEntries);
    tplDlgEntries.dialog('open');
    $(".ui-widget-overlay").css({"z-index":1004});
    $("#MAP").css({"z-index":1003});
  });
  $("#dlgSettings").dialog({
    modal:false, autoOpen:false, width:600, zIndex:3005,
    buttons:{"Speichern":function(){}}
  });
  $("#btnDlgSettings").click(function(){
    var tplSettings = $("<table></table");
    var tplConfig = $("<div></div>");
    var tplConfigTable = $("<table></table>");     
    if (CMS.auth.handle == 'admin') {
      tplConfigTable.append('<tr><td>Karte bewegen, wenn Maus über Eintrag bewegt wird: </td>'+
                            '<td><input type="checkbox" id="newsHoverPanMap" checked="checked"></td></tr>');
      tplConfigTable.append('<tr><td>Kartenmitte: </td>'+
                            '<td>lat:<input id="mapCenterLat"><br/>long:<input id="mapCenterLong"></td></tr>');
      tplConfigTable.append('<tr><td>Karten-Zoom: </td>'+
                            '<td><input id="mapZoomLvl" value="13"></td></tr>');
      tplConfigTable.append('<tr><td>Cache-Zeitraum (in Sekunden): </td>'+
                            '<td><input id="cacheLifeTime" value="600"></td></tr>');
    } else {
      tplConfigTable.append('<tr><td>Anzeige-Name:</td>'+
                            '<td><input type="text" id="name" checked="checked"></td></tr>');
      tplConfigTable.append('<tr><td>Webseite:</td>'+
                            '<td><input type="text" id="name" checked="checked"></td></tr>');          
      tplConfigTable.append('<tr><td>Email:</td>'+
                            '<td><input type="text" id="name" checked="checked"></td></tr>');
      tplConfigTable.append('<tr><td>Passwort:</td>'+
                            '<td><input type="password" id="name" checked="checked"></td></tr>');
      tplConfigTable.append('<tr><td>Standard-Titelbild:</td>'+
                            '<td><input type="text" id="name" checked="checked"></td></tr>');
      tplConfigTable.append('<tr><td>Standard-Icon:</td>'+
                            '<td><input type="text" id="name" checked="checked"></td></tr>');
      tplConfigTable.append('<tr><td>Standard-Kartenpunkt:</td>'+
                            '<td><a class="ui-state-default ui-corner-all" id="btnDlgSettings" href="#">'
                           +'<span class="ui-icon ui-icon-close"></span>Punkt festlegen</a></td></tr>');
    }
    tplConfig.append(tplConfigTable);
    tplSettings.append(tplConfig);
    $("#dlgSettings").html(tplSettings);    
    $("#dlgSettings").dialog('open');
    $(".ui-widget-overlay").css({"z-index":1004});
    $("#MAP").css({"z-index":1003});
  });  
}

function drawEntryList(target) {
  var tplDlgEntries = $("<table></table>");
  tplDlgEntries.append("<tr><td>Titel</td><td width='150px'>Inhalt</td><td width='80px'>Anzeige</td><td>Optionen</td></tr>");
  $.each(CMS.items,function(i,item){
    if (item.editable) {
      var tplHideNews   = (item.hideNews)  ? '' : 'checked="checked" ';
      var tplHideEvent  = (item.hideEvent) ? '' : 'checked="checked" ';
      var tplHidePoint  = (item.hidePoint) ? '' : 'checked="checked" ';
      var tplSetHeadPic = ($.inArray(item.id,CMS.config.HeadPic.items)=='-1') ? '' : 'checked="checked" ';
      var tplSetInfo    = ($.inArray("Info",item.tags)=='-1') ? '' : 'checked="checked" ';
      var tplDlgEntriesRow = $("<tr></tr>");
      tplDlgEntriesRow.append("<td>"+item.title+"</td><td>"+item.content+"</td>");
      var tplDlgEntriesRowHideTbl = $("<td></td>");
      var tplHideNewsBtn  = $('<input type="checkbox" '+tplHideNews+'/>').change(function(){
        var hideNews = ($(this).is(":checked")) ? '0' : '1';
        var para = {'CMS':[{'class':'Feeds','method':'hideEntry','options':{'id':item.id,'hideNews' :hideNews}}]};
        $.ajax({url:'index.php',data: (para),type:'GET',success: function(msg){initCMS();}});
      });
      var tplHideEventBtn = $('<input type="checkbox" '+tplHideEvent+' />').change(function(){
        var hideEvent = ($(this).is(":checked")) ? '0' : '1';
        var para = {'CMS':[{'class':'Feeds','method':'hideEntry','options':{'id':item.id,'hideEvent' :hideEvent}}]};
        $.ajax({url:'index.php',data: (para),type:'GET',success: function(msg){initCMS();}});
      });
      var tplHidePointBtn = $('<input type="checkbox" '+tplHidePoint+' />').change(function(){
        var hidePoint = ($(this).is(":checked")) ? '0' : '1';
        var para = {'CMS':[{'class':'Feeds','method':'hideEntry','options':{'id':item.id,'hidePoint' :hidePoint}}]};
        $.ajax({url:'index.php',data: (para),type:'GET',success: function(msg){initCMS();}});
      });
      var tplSetHeadPicBtn = $('<input type="checkbox" '+tplSetHeadPic+' />').change(function(){
        var setHeadPic = ($(this).is(":checked")) ? '1' : '0';
        var para = {'CMS':[{'class':'Feeds','method':'setHeadPic','options':{'id':item.id,'setHeadPic' :setHeadPic}}]};
        $.ajax({url:'index.php',data: (para),type:'GET',success: function(msg){initCMS();}});
      });
      var tplSetInfoBtn = $('<input type="checkbox" '+tplSetInfo+' />').change(function(){
        if ($(this).is(":checked")) item.tags.push("Info");
        else item.tags.splice($.inArray("Info",item.tags),1);
        var para = {'CMS':[{'class':'Feeds','method':'setEntries','options':[{'id':item.id,'tags':item.tags}]}]};
        $.ajax({url:'index.php',data: (para),type:'GET',success: function(msg){initCMS();}});
      });
      tplDlgEntriesRowHideTbl.append("news: ");
      tplDlgEntriesRowHideTbl.append(tplHideNewsBtn);
      tplDlgEntriesRowHideTbl.append("event: ");
      tplDlgEntriesRowHideTbl.append(tplHideEventBtn);
      tplDlgEntriesRowHideTbl.append("point: ");
      tplDlgEntriesRowHideTbl.append(tplHidePointBtn);
      tplDlgEntriesRowHideTbl.append("headpic: ");
      tplDlgEntriesRowHideTbl.append(tplSetHeadPicBtn);
      tplDlgEntriesRowHideTbl.append("info: ");
      tplDlgEntriesRowHideTbl.append(tplSetInfoBtn);
      var tplDlgEntriesRowOptionsTbl = $("<td></td>");
      var tplEditEntryBtn  = $('<a class="ui-state-default ui-corner-all" id="btnDlgSettings" href="#">'
                              +'<span class="ui-icon ui-icon-wrench"></span>Bearbeiten</a>');
      var tplDelEntryBtn = $('<a class="ui-state-default ui-corner-all" id="btnDlgSettings" href="#">'
                            +'<span class="ui-icon ui-icon-close"></span>Löschen</a>');
      tplEditEntryBtn.click(function(){
        displayItem({itemID:item.id});
      });
      tplDelEntryBtn.click(function(){
        var para = {'CMS':[{'class':'Feeds','method':'delEntry','options':item.id}]};
        $.ajax({url:'index.php',data: (para),type:'GET',success: function(msg){
          initCMS({drawEntryList:target});
        }});
      });
      tplDlgEntriesRowOptionsTbl.append(tplDelEntryBtn)
                                .append("<br/>")
                                .append(tplEditEntryBtn);
      tplDlgEntriesRow.append(tplDlgEntriesRowHideTbl).append(tplDlgEntriesRowOptionsTbl);
      tplDlgEntries.append(tplDlgEntriesRow);
    }
  });
  target.html(tplDlgEntries);
}

function drawUserLlist(target) {
  var tplUsers = $('<table></table>');
  var para = {'CMS':[{'class':'LUA',
                      'method':'getUsers',
                      'options':{'container':'auth'}}]};
  $.getJSON("index.php",para,function(data){ 
    $.each(data,function(i,val){
      var tplUserEditBtn = $('<a class="ui-state-default ui-corner-all" id="btnDlgSettings" href="#">'
                             +'<span class="ui-icon ui-icon-wrench"></span>Bearbeiten</a>');
      var tplUserDelBtn  = $('<a class="ui-state-default ui-corner-all" id="btnDlgSettings" href="#">'
                             +'<span class="ui-icon ui-icon-close"></span>Löschen</a>');
      tblUserOptions = $('<td></td>').append(tplUserEditBtn).append(tplUserDelBtn);
      var tblRow = $('<tr></tr>');
      tblRow.append('<td>'+val.handle+'</td>');
      tblRow.append(tblUserOptions);
      tplUsers.append(tblRow);
      tplUserDelBtn.click(function(){
        var para = {'CMS':[{'class':'LUA','method':'removeUser','options':val.perm_user_id}]};               
        $.getJSON("index.php",para,function(data){drawUserLlist(target)});
      });
      tplUserEditBtn.click(function(){
        var tplDlgUserEdit = $('<div title="Benutzer Einstellungen"></div>');
        var tplUserSettings = $('<div id="userSettings"></div>');
        tplDlgUserEdit.dialog({modal:false, autoOpen:false, zIndex:3005, height:400, width:500,
                               buttons:{"Speichern":function(){}}
        });
        tplDlgUserEdit.dialog('open');
      });
    });
    target.html(tplUsers);
  });
}

function drawImgList(target,itemID) {
  cropImgButton = $('<a class="ui-state-default ui-corner-all cropImage"><span class="ui-icon ui-icon-mail-closed"></span>Ausschneiden</a>');
  logoImgButton = $('<a class="ui-state-default ui-corner-all logoImage"><span class="ui-icon ui-icon-mail-closed"></span>als Titelbild</a>');
  delImgButton = $('<a class="ui-state-default ui-corner-all delImage"><span class="ui-icon ui-icon-mail-closed"></span>Löschen</a>');
  $.ajax({
    url: 'index.php',
    data: ({'getImages':'1'}),
    type: 'GET',
    cache: false,
    success: function(data){ 
    target.html(data).children("img")
          .wrap('<div class="imageItem"></div>')
          .after(delImgButton)
          .after(logoImgButton)
          .after(cropImgButton);
    target.delegate(".delImage","click",function(){
      imageName = $(this).prev().prev().prev().attr("src").substr(16).replace(/(.+)\?.+/g,"$1");
      $.get("index.php",{"delImage":imageName},function(){drawImgList(target,itemID);});
    });
    target.delegate(".logoImage","click",function(){
      imageName = $(this).prev().prev().attr("src").substr(16).replace(/(.+)\?.+/g,"$1");
      CMS.items[itemID].imageUrl = "data/thumbnails/"+imageName;
      $("#ITEMS .title").css("background","url('"+CMS.items[itemID].imageUrl+"')");
    });
    target.delegate(".cropImage","click",function(){
      imageName = $(this).prev().attr("src").substr(16).replace(/(.+)\?.+/g,"$1");
      var imageSrc = "data/images/"+imageName;
      var xywh = $('<input type="hidden" id="x" name="x" /><input type="hidden" id="y" name="y" /><input type="hidden" id="w" name="w" /><input type="hidden" id="h" name="h" />');
      tplCropImg = $('<div id="cropImg" title="Thumbnail ausschneiden:"></div>');
      var imgToCrop = $('<img src="'+imageSrc+'" />').Jcrop({aspectRatio:32/21,onSelect:updateCoords});
      tplCropImg.append(imgToCrop);
      tplCropImg.append(xywh);
      tplCropImg.dialog({autoOpen:true, height:500, width:600, zIndex:2005,
        buttons:{'Ausschneiden':function(){
          $.get("index.php",{"cropImage":imageName,
                "x":$('#x').val(),"y":$('#y').val(),
                "w":$('#w').val(),"h":$('#h').val()},                                                 
                function(data){
                  tplCropImg.dialog('close');
                  tplCropImg.detach();});}},
        close:function(){drawImgList(target,itemID);}});
      drawImgList(target,itemID);
      $(".ui-widget-overlay").css({"z-index":2004});
      $("#MAP").css({"z-index":1003});
    });
  }}); 
}

function updateCoords(c) {
  $('#x').val(c.x);
  $('#y').val(c.y);
  $('#w').val(c.w);
  $('#h').val(c.h);
}

function checkCoords() {
  if (parseInt($('#w').val())) return true;
  alert('Please select a crop region then press submit.');
  return false;
}

// currently not used
function lockUI() {
  var working = $('<div id="working" title="working..."><div><center><img src="layout/gfx/ajax-loader.gif"></center></div></div>');
  working.dialog({modal:true, autoOpen:false, zIndex:3005});
  working.dialog('open');
}

// currently not used
function unlockUI() {
  $('#working').dialog('close');
}

