
/* Merged Plone Javascript file
 * This file is dynamically assembled from separate parts.
 * Some of these parts have 3rd party licenses or copyright information attached
 * Such information is valid for that section,
 * not for the entire composite file
 * originating files are separated by - filename.js -
 */

/* - store_locator.js - */
var store_locator = {
    'COOKIE_NAME': 'gut.2011.position',
    'LL_DEFAULT': {'lat':45.46369 , 'lng': 9.188143 },
    'REQ_URL':'pos-locator'
  };

(function(context){
  context.position = function(){
    //onLoad
    var lat = null;
    var lng = null;
    var params = store_locator['LL_DEFAULT'];
    //leggere cookie e recuperare ll
    ll = readCookie(store_locator['COOKIE_NAME'])
    if(!geo_position_js.init()){
      //funzione non disponibile
      return store_locator['LL_DEFAULT']
    }
    if (!ll && geo_position_js.init()) {
      //console.log('geolocalizzazione');
      //recuperare codice posizione calcolato da geolocation
      geo_position_js.getCurrentPosition(
          store_locator.setLocationCookie,
          function(p){p.message},
          {enableHighAccuracy:true,options:5000}
      );

    }else{
      ll = ll.split(',')
      params = {'lat':ll[0], 'lng':ll[1]}
    }
    return params;
  }


  context.setLocationCookie = function(position) {

    lat = position.coords.latitude.toFixed(2)
    lng = position.coords.longitude.toFixed(2)

    if(!lat || !lng){
      ll = store_locator['LL_DEFAULT'];
    }else{
      ll = lat+','+lng;
    }
    createCookie(store_locator['COOKIE_NAME'],ll,0.5);

    params = {'lat':lat,'lng':lng};

    store_locator.setStores(params,function(){$('#place-map').jMapping('update')})
  }



  context.setStores = function(params, callback){
    $('.store-error-message').hide()
    $('.store-none').hide()

    $.getJSON(store_locator['REQ_URL'],params, function(data){
      main_store = null;
      pos_request = data.position;
      store_locator.removeStores();

      $.each(data.markers,function(i,item){
        el_snippet = $('[data-snippet="store"]').clone()
        //[{"phone": "02/74.12.45", "name": "La Bottega Per L'ufficio Srl ", "level": "0", "lat": 45.462039300000001, "image": "", "address": "Viale Corsica, 74, 20137 Milano (Mi)", "lng": 9.2329901999999997}]
        el_snippet.removeAttr('data-snippet');

        //id: 1, point: {lat: 45.541946, lng: 9.582825}
        idx = i+1;
		if(item.level=='1'){
            category = 'keystores';
            el_snippet.addClass('keystores');
        }else{
            category = 'stores';
        }
        data_jmapping = '{id:'+ idx +', point:{lat:' + item.lat +', lng:' + item.lng + '},category:"'+category+'"}';
        el_snippet.attr('data-jmapping', data_jmapping)
        el_snippet.find('.org').text(item.name);
        el_snippet.find('.tel').text(item.phone);
        el_snippet.find('.street-address').text(item.address);
        website = item.website
        if(website.indexOf('http://')!=0){
            website = 'http://'+website;
        }
        el_snippet.find('.website a').attr('href',website).text(item.website);
        if(item.image != ''){
            var src_image = item.image + "_thumb";
            $($('<img/>').attr('src',src_image)).appendTo(el_snippet.find('.thumb'));
            el_snippet.addClass('thumb');
        }
        el_snippet.show();
        $(el_snippet).appendTo('.store-items');
        if(i==0){
          store_locator.setMainStore(item, {'lat':item.lat,'lng':item.lng});
        }
      })

      //nessun risultato, vengono mostrati i risultati di default (milano)
      if(data.markers.length == 0){
        store_locator.setMainStore(null, pos_request);
        store_locator.setEmptyStores();
      }

      if(data.totmarkers == 0){
        store_locator.setEmptyStores();
      }

      //stampo la posizione richiesta
      if(pos_request.lat==0 && pos_request.lng==0){
        //nel caso fosse stata ricercata una via o citta inesistente
        pos_request = store_locator.LL_DEFAULT
      }
      el_snippet = $('[data-snippet="store"]').clone()
      el_snippet.removeAttr('data-snippet');
      data_jmapping = '{id:0, point:{lat:' + pos_request.lat +', lng:' + pos_request.lng + '},category:"user"}';
      el_snippet.attr('data-jmapping', data_jmapping)
      el_snippet.find('.info-box').remove();
      $(el_snippet).appendTo('.store-items');


      //callback
      if(typeof callback == 'function'){callback.call(this, data);}
    })
  }


  context.setMainStore = function(item, position){

    el_snippet = $('[data-snippet="main_store"]');

    if(item){
	  if(item.level=='1'){category = 'keystores'}else{category = 'stores'}

      data_jmapping = '{id:0, point:{lat:' + position.lat +', lng:' + position.lng + '},category:"'+category+'"}';
      el_snippet.attr('data-jmapping', data_jmapping);
      el_snippet.find('.org').text(item.name);
      el_snippet.find('.tel').text(item.phone);
      el_snippet.find('.street-address').text(item.address);
    }else{
      data_jmapping = '{id:0, point:{lat:' + position.lat +', lng:' + position.lng + '},category:"user"}';
      el_snippet.attr('data-jmapping', data_jmapping);
      el_snippet.find('.org').text("Nessun punto vendita nelle tue vicinanze");
      el_snippet.find('.adr').hide();
      el_snippet.find('.tel').hide();
    }
    //el_snippet.removeAttr('data-snippet');
    el_snippet.show();

  }



  context.setEmptyStores = function(){
    $('.store-error-message').appendTo('#store-list').show()
  }

  context.removeStores = function(){
    $('.store-items').children().remove();
    $('#place-map-selector').children().remove();
  }

})(store_locator);



$(document).ready(function(){
  if($('.template-brandhome_view').length>0){store_locator['REQ_URL'] = '../pos-locator'}
  if($('#stores_list').length>0){store_locator['REQ_URL'] = './allpos-locator'}

  if($('.template-brandhome_view').length>0 || $('.template-article_view').length>0 || $('#stores_list').length>0){
    var params = store_locator.position();

    store_locator.setStores(params,function(){
        /*mostro la posizione corrente dell'utente o il negozio piu vicino*/
        if($('#stores_list').length>0){
            //creo la mappa nella pagina punti-vendita
            $('#store-map').jMapping({
                side_bar_selector: '#store-list',
                default_zoom_level: 10,
                category_icon_options:{
                    'user': {color: '#C8514B'},
                    'stores': {color: '#00FF00'},
                    'keystores': {color: '#00FF00', starcolor:'#FFFF00'}
                }});
            $('.stats_pos .value').text($('.store-item:visible').length);
            _setCity(params, $('.stats_pos .location'))
        }else{
            $('#place-map').jMapping({
                side_bar_selector: '#store-locator',
                map_config: {disableDefaultUI: true,
                            mapTypeId: google.maps.MapTypeId.ROADMAP,
                            maxZoom:9, minZoom:5, zoom:9},
                force_zoom_level:9,
                always_show_markers:true,
                category_icon_options:{'user': {color: '#C8514B'},
                                        'stores': {color: '#00FF00'},
                                        'keystores': {color: '#00FF00', starcolor:'#FFFF00'}
                                        }
                });
        }
    });


    if($('#stores_list').length==0){
        //creo la mappa nella viewlet
        $('#store-map').jMapping({
          side_bar_selector: '#store-list',
          default_zoom_level: 10,
          category_icon_options:{
              'user': {color: '#C8514B'},
              'stores': {color: '#00FF00'},
    		  'keystores': {color: '#00FF00', starcolor:'#FFFF00'}
            }});


        //overlay
        $("#store-locator-view").appendTo('body');
        $("#store-locator .place-more").overlay({
          top:0,
          fixed:'true',
          left:'center',
          onLoad:function(){
            $('#store-map').jMapping('update');
            //$("#store-list").scrollable({ vertical: true});
          }
        });
    }

     //search store
     $('[data-snippet="store"]').hide();
     $('#storeLocatorForm').submit(function(){
        $(this).find('#cerca').removeClass('submitting');
        msg_default = "Inserire almeno la città";
        adr = $('#address').val();
        if(adr==''){
            adr="Milano";
            $('#address').val(adr)
        }
        var params = {"address" : adr}
        $('.store-items').empty();
        store_locator.setStores(params,function(params){
            $('#store-map').jMapping('update');
            if($('#stores_list').length>0){
               $('.stats_pos .value').text($('.store-item:visible').length);
               _setCity(params.position, $('.stats_pos .location'))
            }
        });
        return false;
     })

  }
})

/* UTILITY
  --------------*/

function _setCity(params, node){
    //http://code.google.com/apis/maps/documentation/javascript/services.html#ReverseGeocoding
    geocoder = new google.maps.Geocoder();
    latlng = new google.maps.LatLng(params.lat, params.lng);
    geocoder.geocode({'latLng': latlng}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            if(results.length>0){
                city = results[0].address_components[2].long_name
                node.find('.locvalue').text(city);
                node.show()
            }
        }
    })
}


/* COOKIE
  --------------*/

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}


/* - jtheme_init.js - */
$(document).ready(function(){


  /***
    *
    * SLIDER
    *
    ***/
  if($('.slider').length >0){$('.slider').easyAccordion({slideNum:false});}


  /***
    *
    * HORIZONTAL SCROLLABLE
    *
    ***/
    $('.marchi-scrollable').scrollable({size:1,clickable:false,keyboard:false});

    $('.xxx').hover(function(){
    //$('.marchi-scrollable .marchio-thumb').hover(function(){
            $('#focusthumbct').remove()
            focusthumbct = $('<div id="focusthumbct"/>');
            focusthumb = $('<div id="focusthumb"/>');
            //position
            t = $(this).offset().top
            focusthumb_l = 100 * $(this).index()

            focusthumbct.css('left',focusthumb_l+'px')
            //a
            fta = $("<a/>")
            fta.attr("href",$(this).find('a').attr("href"));
            //img
            img = $(this).find('img')
            ftimg = $("<img/>")
            src= img.attr('src')
            ftimg.attr('src',src.replace('logoThumb','logoThumbLarge_header'));
            fta.append(ftimg).appendTo(focusthumb);
            //append
            focusthumbct.append(focusthumb).appendTo($('.marchi'));
            //bind event
            focusthumbct.mouseleave(function(){$(this).remove()})
        })
    $('#portal-top-wrapper,.row_2').mouseenter(function(){
        $('#focusthumbct').remove()
    })



    /***
     *
     *  MEGA TAB
     *
     ***/
    $("ul#portal-globalnav li .sub").css({'opacity':'0'}); //Fade sub nav to 0 opacity on default
    el_marchi = $("ul#portal-globalnav li#portaltab-marchi")
    el_prodotti = $("ul#portal-globalnav li#portaltab-prodotti")
    var megaTab = [el_prodotti, el_marchi]
    $(megaTab).each(function(){
      $(this).click(function(){
        if(!$(this).hasClass('mega-hover-over')){
          megaHoverOutOnClick($('.mega-hover-over'));
          megaHoverOverOnClick($(this));
        }else{
          megaHoverOutOnClick($(this));
        }
      })
    })

    $("#portal-top-wrapper").mouseleave(function(){
        megaHoverOutOnClick($('.mega-hover-over'))
    })



  /***
    *
    * COLLAGE BACKOFFICE
    *
    ***/
  if($('.template-collage_compose').length>0){
    $('.collage-header').hover(
      function(){
        parent = $(this).parent().get(0);
        el = $(parent).children().get(1);
        $(el).addClass('compose-hover');
        $(this).addClass('compose-hover');
      },
      function(){
        parent = $(this).parent().get(0);
        el = $(parent).children().get(1);
        $(el).toggleClass('compose-hover');
        $(this).toggleClass('compose-hover');
      }
    )
  }


  /***
    *
    * ARTICLE VIEW
    *
    ***/
  if($('#article-wrapper').length>0){
    if($('.more-img ul').children().length == 0){
      $('#article-img').css('background-image','none');
    }
    src_org = $('.main-img img').attr('src');
    $('.article_thumb').hover(
      function(){
        $(this).addClass('rotate');
        src = $(this).find('img').attr('src');
        if(src){
          src_path = src.split('/');
          src_path[src_path.length-1] = 'image_preview';
          $('.main-img img').attr('src',src_path.join('/'));
        };
      },
      function(){
        $(this).removeClass('rotate');
        $('.main-img img').attr('src',src_org);}
      )

  }


  /***
    *
    * STATUS MESSAGE
    *
    ***/

  if($('.portalMessage.info dd').length>0){
    $.each($('.portalMessage'),function(i,el){
        if($(el).find('dd').text()!=''){
          $(el).append('<span class="close"></span>');
        }
        if($(el).hasClass('info') && $(el).find('dd').text()!=''){
          $(el).fadeTo('fast',1).delay(4000).fadeTo('slow',0,function(){$(this).hide()});
        }
    })
    $('.portalMessage .close').click(function(){$(this).parent('dl').hide()})
  }


  /***
    *
    * FACET NAVIGATION PRODOTTI
    *
    ***/
  if($('.section-prodotti').length>0){
    //nascondo le sottocategorie al primo livello
    if($('.section').find('.facet_back').length == 0){
      $('.subcategory').hide();
      $('.category').css('margin-bottom','5px');
    }
    //  le linee sono considerate come sottocategorie di marchi
    //  dunque viene mostrato solo quando un marchio e' selezionato

    $('#line').hide()

    var line_el = $('#line').clone();
    //nascondo il titolo
    $(line_el).find('h2').hide();
    //inserisco l'albero sotto il marchio corrente solo se ci sono piu di una linea
    var base = $('#article_brand .selected');
    $(base).after($(line_el).html());


    //se la line e' selezionata il marchio deve essere un link che rimuove la linea
    if(base.length>0 && base.find('.selected')){
      base_text = $(base).text();
      var link_el = $(line_el).find('h2 a');
      $(base).wrap(link_el.empty())
      var link_back = $('#article_brand .facet_type a').first().attr('href');
      var current_line = $('#article_brand .facet_line_item .selected');
      line_field = $(current_line).attr('id');
      line_field = line_field + '&';
      link_back = link_back.replace(line_field,'');
      $('#article_brand .facet_type a').first().attr('href',link_back)
    }


    //added tip to back link
    if($('#article_brand .facet_back').length>0){
        //se marchio e' selezionato il sottotitolo della sezione ('visualizza tutta la proposta di <MARCHIO SELEZIONATO>')
        var selected_brand = $('.facet_brand_item .selected').first().text();
        var tooltip = 'Visuallizza tutta la proposta di ' + selected_brand.split('(')[0];
        $('#scuola .facet_back span').first().append($('<span class="facet-tooltip"/>').text(tooltip));
        $('#pronto .facet_back span').first().append($('<span class="facet-tooltip"/>').text(tooltip));


        //se la categoria o sottacategoria e' selezionata ('visualizza tutti i marchi che offrono <CATEGORIA SELEZIONATA>')
        var tooltip = 'Visuallizza tutti i marchi';
        var selected_facet = $('.category .selected').last().text();
        if(selected_facet!=''){var tooltip = 'Visuallizza tutti i marchi che offrono ' + selected_facet.split('(')[0];}
        $('#article_brand .facet_back span').first().append($('<span class="facet-tooltip"/>').text(tooltip));

    }else{
        $('#scuola .facet_back span').first().append('<span class="facet-tooltip">Visuallizza tutta la proposta</span>');
        $('#pronto .facet_back span').first().append('<span class="facet-tooltip">Visuallizza tutta la proposta</span>');
    }
    $('.category .facet_back span').first().append('<span class="facet-tooltip">Visuallizza tutti</span>');


    if($('#article_brand').find('.facet_back').length == 0){
      var current_facet = $('.facets_list_container .selected:last').clone();
      $(current_facet).find('.counter-value').remove();
      if(current_facet.length>0){
        var tooltip = $('<span class="facet-tooltip"></span>');
        tooltip_text = 'Questi sono i marchi che offrono ' + current_facet.text().split('(')[0];
        $('#article_brand .facet_type').append(tooltip.text(tooltip_text));
      }
    }


    /* BREADCRUMB PRODOTTI */
	//filter facets on listing
	facets_selected = $('#brand-facets .section .selected:not(a)');
	bread_container = $('#bread-facets');
	base = $('#brand-facets .section a').first().clone();
	createBreadCrumb(facets_selected, bread_container,base)

	//filter brands on listing
	facets_selected = $('#facets_brand .selected');
	bread_container = $('#bread-brand');
	base = $('#article_brand a').first().clone();
	createBreadCrumb(facets_selected, bread_container, base)


  } /* end setion-prodotti*/





  /***
    *
    * SOCIAL ROW
    *
    ***/
	if($('#article-social').length){
		$('.template-article_view #portal-columns-wrapper').css('background-position',function(){
			var bgh = 775;//altezza prima parte background image
			return moveBgToSocial($(this), $('#article-social'), bgh)
		});
		$('#article-social').css('visibility','visible').css('opacity','0').animate({opacity:1},400);
	}
	if($('#brand-social').length){

		$('.template-brandhome_view #portal-columns-wrapper').css('background-position',function(){
			var bgh = 458;//altezza prima parte background image
			return moveBgToSocial($(this), $('#brand-social'), bgh)
		});
		$('#brand-social').css('visibility','visible').css('opacity','0').animate({opacity:1},400);
	}

    if($('.template-collage_view.section-homepage').length){
		$('.section-homepage #portal-columns-wrapper').css('background-position',function(){
			var social_el = $('.collage-row')[1]
			var bgh = 495;//altezza prima parte background image
			return moveBgToSocial($(this), $(social_el), bgh)
		});
	}

	/* personal action remove overlay*/
    //$('#portal-siteactions a[href$=/contact-info]').removeClass('link-overlay').removeAttr('rel')



});


function moveBgToSocial(container, social_el, bgh){
	var top = social_el.offset().top;
	var bg_top = container.offset().top;
	var toth = bg_top + bgh;
	var gap = toth - top;
	var bgpos = '0px '+ '-'+gap.toString()+'px';
	return bgpos;
}

function createBreadCrumb(facets_sel, bread_cont, base){
	$.each(facets_sel, function(i,v){
        $(v).find('.facet-tooltip').remove();
        if(i==0){
            base.find('.facet-tooltip').remove();
            base.appendTo(bread_cont);
        }
        $('<span class="breadcrumbSeparator">&rsaquo;</span>').appendTo(bread_cont);
        parent = $(v).parent()
        var el
        if($(parent).is('a')){
            el = $(parent).clone();
        }else{
            el = $(v).clone()
        }
        $(el).text($(v).text().split('(')[0]);
        $(el).appendTo(bread_cont);
    })
}

function megaHoverOverOnClick(el){
  el.find('a').first().addClass('onHover')
  el.addClass('mega-hover-over');
  el.find(".sub").stop().fadeTo('fast', 1).show(); //Find sub and fade it in
  (function($) {
      //Function to calculate total width of all ul's
      jQuery.fn.calcSubWidth = function() {
          rowWidth = 0;
          //Calculate row
          el.find("ul").each(function() { //for each ul...
              rowWidth += $(this).width(); //Add each ul's width together
          });
      };
  })(jQuery);

  if ( el.find(".row").length > 0 ) { //If row exists...
      var biggestRow = 0;
      el.find(".row").each(function() {	//for each row...
          el.calcSubWidth(); //Call function to calculate width of all ul's
          //Find biggest row
          if(rowWidth > biggestRow) {
              biggestRow = rowWidth;
          }
      });
      el.find(".sub").css({'width' :biggestRow}); //Set width
      el.find(".row:last").css({'margin':'0'});  //Kill last row's margin
  } else { //If row does not exist...
      el.calcSubWidth();  //Call function to calculate width of all ul's
      el.find(".sub").css({'width' : rowWidth}); //Set Width
  }
  //home page bug with easy accordion
  $('.easy-accordion dt').css('z-index',0);
  $('.easy-accordion dd.active').css('z-index',0);
}

//On Hover Out
function megaHoverOutOnClick(el){
  el.removeClass('mega-hover-over');
  el.find('a').first().removeClass('onHover')
  el.find(".sub").stop().fadeTo('fast', 0, function() { //Fade to 0 opactiy
    $(this).hide();  //after fading, hide it
  });
  //home page bug with easy accordion
  $('.easy-accordion dt').css('z-index',5);
  $('.easy-accordion dd.active').css('z-index',3);
}


