/*
 * ELSlideshowParserJson 1.3.1
 *
 * Copyright 2010 Estee Lauder - www.esteelauder.com
 * Lovingly crafted By Nick Warner - www.nwarner.com
*/


ELSlideshowPlayer.addMethods({
  'parse_json': function(json){
    var player = this;
    
    json = json.evalJSON();
    
    player.slideshow.width =    json.width    || player.slideshow.width;
    player.slideshow.height =   json.height   || player.slideshow.height;
    player.slideshow.autoplay = json.autoplay || player.slideshow.autoplay;
    player.slideshow.loop =     json.loop     || player.slideshow.loop;
    
    player.slideshow.zindexes = json.zindexes || player.slideshow.zindexes;

    // Add pager
    if (json.overlay) { 
      if (json.overlay.pager) {
        player.pager = new ELPager(json.pager);
        player.pager.start_x =    parseInt(json.overlay.pager.x, 10);
        player.pager.start_y =    parseInt(json.overlay.pager.y, 10);
        player.pager.width =      json.overlay.pager.width;
        player.pager.height =     json.overlay.pager.height;
        player.pager.src =        json.overlay.pager.src;
        player.pager.src_current = json.overlay.pager.src_current;
        player.pager.onload_action = json.overlay.pager.onload;
        player.pager.onmouseover_action = json.overlay.pager.onmouseover;
        player.pager.onmouseout_action = json.overlay.pager.onmouseout;   
      }
    
      // Add Slideshow Overlays
      json.overlay.layers.each(function(overlay_json, index) {
        var overlay_layer = new ELImage("overlay_image"+index);
        overlay_layer = player.parse_json_for_layer(overlay_json, overlay_layer);       
        player.slideshow.overlays.push(overlay_layer);
      });
    }
    
    // Add Slideshow Underlays
    if (json.underlay) {
      if (json.underlay.layers && json.underlay.layers.length > 0) { 
        json.underlay.layers.each(function(underlay_json, index) {
          var underlay_layer = new ELImage("underlay_image"+index);
          underlay_layer = player.parse_json_for_layer(underlay_json, underlay_layer);       
          player.slideshow.underlays.push(underlay_layer);
        });
      }
    }
    
    if (json.slides && json.slides.length > 0) {     
      json.slides.each(function(slide_json, i) {
        var slide = new ELSlide("slide"+i);
        
        // Add Slide Layers
        slide.layers = [];

        if (slide_json.layers && slide_json.layers.length > 0) {
          slide_json.layers.each(function(layer_json, index) {
            // Add images to layer
            if (!layer_json.type || (layer_json.type.toLowerCase() !== "text")) {          
              var image = new ELImage(slide.id+"_image"+index);
              image = player.parse_json_for_layer(layer_json, image);       
              slide.layers.push(image);
            }
            // Add texts to layer
            if (layer_json.type && (layer_json.type.toLowerCase() == "text")) { 
              var text = new ELText(slide.id+"_text"+index);
              text = player.parse_json_for_layer(layer_json, text);
              if (text.text !== undefined) {
                slide.layers.push(text);
              }
            }
          });
        }
  
        // Other slide attributes
        slide.name =    slide_json.name;
        slide.style =   slide.style + slide_json.style; 
        slide.background_color = player.hexify_color(slide_json.background_color);   // Maybe deprecate this in the future in favor of setting this in the Style
        slide.metrics_id =  slide_json.metrics_id;
        slide.interval =    slide_json.interval; 
        slide = player.json_parser_register_layer_actions(slide_json, slide);      
     
        player.slideshow.slides.push(slide);   
      });
    }
  },
  
  
  'parse_json_for_layer': function(layer_json, layer) {
    var player = this;
    if (layer.type === 'image') {
      layer.src =       layer_json.src;
      layer.image.src = layer.src;
    }
    if (layer.type === 'text') {
      layer.text = layer_json.text;
    }
    
    // add additional assets for layer
    layer.assets = [];  
    if (layer_json.assets) {
      layer_json.assets.each(function(asset){
        layer.assets.push(asset);
      });
    }
    
    layer.name =    layer_json.name;
    layer.x =       layer_json.x || 0;
    layer.y =       layer_json.y || 0; 
    layer.width =   layer_json.width || player.width;
    layer.height =  layer_json.height || player.height;   
    layer.url =     layer_json.url;
    layer.style =   layer.style + layer_json.style;   
    layer = player.json_parser_register_layer_actions(layer_json, layer);
    
    return layer; 
  },


  'json_parser_register_layer_actions': function(layer_json, layer){
    var player = this;
    layer.onload =      new ELAction(layer, layer_json.onload, player);          
    layer.onunload =    new ELAction(layer, layer_json.onunload, player);
    layer.onmouseover = new ELAction(layer, layer_json.onmouseover, player);
    layer.onmouseout =  new ELAction(layer, layer_json.onmouseout, player);
    layer.onclick =     new ELAction(layer, layer_json.onclick, player);
    return layer;
  }

  
});



