window.artkreuzberg = window.artkreuzberg || {};

artkreuzberg.View= function() {

  var view = {


    showMain : function(location) {
     
      var url = "/info/home";
      if ( location ) {
        url += "#" + location
      }

      if ( artkreuzberg.Model.current.substring(0,5) == "#/map" ) {
        artkreuzberg.showMainMap(location);
        return false;
      }

      $.ajax( url, {
                dataType : 'html',
                success : function(data, textStatus, jqXHR) {
                  $("#content").empty().hide().html(data).slideDown(600,function() {
                    artkreuzberg.showMainMap(location);
                  });
                },
                error : function(jqXHR, textStatus, errorThrown) { 
                 // alert("ajax err! " + textStatus + errorThrown.message); 
                }
      });


    },        

    showUrl : function(url) {

      if ( url.substring(0,1) == "#" ) {
         url = url.substring(1);
      }
      $.ajax( url, {
                dataType : 'html',
                success : function(data, textStatus, jqXHR) {
                  $( 'html, body' ).animate( { scrollTop: 0 }, 0 );
                  $("#content").empty().hide().html(data).slideDown();
                },
                error : function(jqXHR, textStatus, errorThrown) { 
                  //alert("ajax err! " + textStatus + errorThrown.message); 
                }
      });
    },

    showLocation : function(location) {

      var l = artkreuzberg.Model.locations[location];
      if (!l)
        return;

      var content = {
         location : l.name,
         locationName : l.gallery,
         street : l.street,
         streetName : artkreuzberg.Model.data[l.street].name,
         streetNr : l.nr,
         img : l.img,
         description : l.description,
         x : l.x,
         y : l.y,
         facebook : l.facebook,
         special : l.popurl
      };
     
      $("#content").hide().empty();
      $( 'html, body' ).animate( { scrollTop: 0 }, 0 );
      $("#locationTemplate" ).tmpl( content ).appendTo( "#content" );   

      this.showEvents(l.name);

      for ( var key in l.artists ) {

        var a = l.artists[key];

        var content = {
          name: a.name,
          shortname : a.shortname,
          img: a.img,
          special: a.special,
          other: a.other,
          url: a.url.split(','),
          mail: a.mail
        };

        $( "#locationArtistTemplate" ).tmpl( content ).appendTo( "#artistInfo" ); 
      }

      $("#content").slideDown();

      return false;
    },

    showStreet : function(street) {

      var s = artkreuzberg.Model.data[street];

      var locations = s.locations;

      var content = {
         street : s.name
      };

      $("#content").hide().empty();
      $( 'html, body' ).animate( { scrollTop: 0 }, 0 );
      $("#streetTemplate" ).tmpl( content ).appendTo( "#content" ); 

      for ( var key in locations ) {

        var l = locations[key];
        var content = {
          location : l.name,
          locationName : l.gallery,
          street : s.url,
          streetName : s.name,
          streetNr : l.nr,
          description : l.description
        };

        $( "#streetLocationTemplate" ).tmpl( content ).appendTo( "#streetInfo" ); 
     }

     var that = this;
     $("#content").slideDown(600,function(){
       that.showStreetMap(street);
     });

     return false;
    },

    showLocations : function() {

      var locations = artkreuzberg.Model.locations;

      $("#content").hide().empty();
      $( 'html, body' ).animate( { scrollTop: 0 }, 0 );

      var content = { 'locations' : [] };
      
      for ( var key in locations ) {

        var location = locations[key];
        var entry= {
          'location'     : location.name,
          'locationName' : location.gallery,
          'street'       : location.street,
          'streetNr'     : location.nr,
          'streetName'   : artkreuzberg.Model.data[location.street].name,
          'img'          : location.img
        };
        content.locations.push(entry);
        
      }
 
      $("#locationsTemplate" ).tmpl( content ).appendTo( "#content" );   
      $("#content").slideDown(1000);

      return false;
    },


    showArtists : function() {

      var locations = artkreuzberg.Model.locations;

      $("#content").hide().empty();
      $( 'html, body' ).animate( { scrollTop: 0 }, 0 );

      var content = { 'artists' : [] };

      var tmp = {};

      for ( var key in locations ) {

        var location = locations[key];

        for ( var k in location.artists ) {

          var a = location.artists[k];
          var entry = {
            'location' : location.name,
            'locationName' : location.gallery,
            'street' : location.street,
            'streetNr' : location.nr,
            'streetName' : artkreuzberg.Model.data[location.street].name,
            'artist' : a.name,
            'img' : a.img
          };
          //content.artists.push(entry);
          tmp[a.id] = entry
        }
      }
      for ( var k in tmp ) {
        var entry = tmp[k];
        content.artists.push(entry);
      }
      $("#artistsTemplate" ).tmpl( content ).appendTo( "#content" );   
      $("#content").slideDown(500);

      return false;
    },

    showEvents : function(location) {

      var events = artkreuzberg.Model.locations[location].events;

      var content = [];
      for ( var i = 0; i < events.length; i++ )
      {
        content.push({ 
                  event : events[i].event, 
                  info : events[i].info 
                });
      }
       
      $("#eventTemplate" ).tmpl( content ).appendTo( "#eventContainer" ); 

    },



    showArtist : function(url) {

      url = url.replace(/artist/,"info");

      $.ajax({
		type		: "POST",
		cache	        : false,
		url		: url,
                processdata : false,
		data		: "",
		success: function(data) {

                  $.fancybox(
                    data,
                    { 
                     	'autoDimensions'	: false,
                      	'width'         	: 750,
                     	'height'        	: 600,
                 	'transitionIn'		: 'elastic',
                 	'transitionOut'		: 'elastic'
                    }
                   );
	        }
	});

        return false;
    },


    showStreetMap : function(street) {

      var pt = { x : 0, y : 0 };

      var s = artkreuzberg.Model.data[street];
  
      var indexes = [];

      for ( var key in s.locations ) 
      { 
        var l = s.locations[key];
        pt.x += parseFloat(l.x);
        pt.y += parseFloat(l.y);

        indexes.push( { x:l.x, y:l.y, name : l.name } );
      }   

      pt.x = pt.x / (indexes.length );
      pt.y = pt.y / (indexes.length );

      $('#street_canvas').empty();

      var streetmap = Map.Create( 
                            pt.x,
                            pt.y,15,
                            "dyn_street_canvas", 
                            false, 
                            google.maps.MapTypeId.ROADMAP
                      );

      for ( var i = 0; i < indexes.length; i++) {
 
        var data = indexes[i];

        var sid = "" + data.name;
        streetmap.marker( data.x,data.y, data.name, 
          function(id) 
          { 
            return function()
            {
              if ( artmode ) 
              {
                document.location.hash = "/location/" + id;
              }
              else 
              {
                document.location = "/location/" + id;
              }
            }
          }(sid)
        );
      }
    },

    hookEvents : function() {

      $(window).bind('hashchange', artkreuzberg.Controller.onHashChange);

      var streets = $('div.street_small div a');
      streets.each( function(street) {
        $(this).click( function(){

          var href = $(this).attr('href');
            document.location.hash = href;
          return false;
        });
      });

      var main_locations = $("#tabs td.tab a[href='/locations']");
      main_locations.click(function(){ 
          document.location.hash = '/locations';
          return false;
      });

      var main_artists = $("#tabs td.tab a[href='/artists']");
      main_artists.click(function(){ 
          document.location.hash = '/artists';
          return false;
      });

      var main_news = $("#tabs td.tab a[href='/news']");
      main_news.click(function(){ 
          artkreuzberg.Controller.onTarget('/news');
          return false;
      });


      var main_register = $("#tabs td.tab a[href='/special/late-register']");
      main_register.click(function(){ 
          artkreuzberg.Controller.onTarget('/register');
          return false;
      });

      var main_sponsor = $("#tabs td.tab a[href='/sponsoren']");
      main_sponsor.click(function(){ 
          artkreuzberg.Controller.onTarget('/sponsor');
          return false;
      });

      var main_impressum = $("a[href='/special/impressum.mhtml']");
      main_impressum .click(function(){ 
          artkreuzberg.Controller.onTarget('/impressum');
          return false;
      });

/*
      var specials = $("a[href^='/special/']");
      specials .each( function(special) {
        $(this).click( function(){

          var href = $(this).attr('href');
          href = href.replace(/^\/special\//,"/info/");
          href = href.replace(/\.mhtml$/,"");
          artkreuzberg.Controller.onTarget(href);
          return false;
        });
      });
*/
    }

  };
  return view;
}();
