function iPhone_check(){return((navigator.platform.indexOf("iPhone") != -1)||(navigator.platform.indexOf("iPod") != -1));}
function iPad_check(){return((navigator.platform.indexOf("iPad") != -1));}

var bbSliderData = {
  id : 'id',
  data : [
    {
      id : 0,
      type : 'image', // vimeo // youtube //
      tid : 'tid1',
      title : 'title1',
      description : 'description1',
      images : [
      '/img/tid1_1.jpg',
      '/img/tid1_2.jpg',
      '/img/tid1_3.jpg'
      ],
      image_link : '/tid1',
      image_link_target : '_blank',
      vimeo_id : '',
      vimeo_clip : '1234567',
      vimeo_iframe : '',
      vimeo_html : '',
      youtube : '?'
      
    }
  ]
}

var billboardSliderImager = function(data){
  this.type = 'image';
}

var billboardSliderVimeo = function(data){
  this.type = 'vimeo';
}


var billboardSlider = function(data){
  this.id = data.id;
  this.data = data.data ? data.data : [];
  
  this.root = false;
  this.cnt = false;
  this.item = [];
  this.page = [];
  
  
  
  this.curpos = 0;
  this.nxtpos = -1;
  
  this.curpagepos = 0;
  this.nxtpagepos = -1;
  
  this.swing = false;
  this.pageswing = false;
  
  this.items_per_page = 3;
}

billboardSlider.prototype.init = function(){
  this.root = $('#'+this.id);
  if(this.root){
    this.cnt = $(this.root).find('.cnt')[0];
  }
}

billboardSlider.prototype.create = function(){
  var item = false;
  for(var i=0;i<this.data.length;i++){
    switch(this.data[i].type){
      case 'image':default:
        item = new billboardSliderImager(this.data[i]);
        item.create();
        break;
    }
  }
}

billboardSlider.prototype.collect = function(){
  if(this.cnt){
    var items = $(this.cnt).find('.item');
    if(items.length){
      
      this.data = [];
      
      for(var i=0;i<items.length;i++){
        
        var item = {
          id : i,
          type : '',
          tid : '',
          title : '',
          description : '',
          images : [],
          image_link : '',
          image_link_target : '_self',
          vimeo : '',
          youtube : ''
        };
        
        var item_image = $(items[i]).find('.image')[0];
        if(item_image){
          var image = $(item_image).css('background-image').replace(/^url\("([^"]*)"\)$/g,"$1");
          item.images[item.images.length] = image;
          item.type = 'image';
        }
        
        var item_link = $(items[i]).find('.link')[0];
        if(item_link){
          var href = $(item_link).find('a')[0];
          if(href){
            href = $(href).attr('href');
            var target = $(href).attr('target');
            item.image_link = href;
            item.image_link_target = (target == '_blank') ? '_blank' : '_self';
          }
        }
        
        var item_video = $(items[i]).find('.video')[0];
        if(item_video){
          if($(item_video).hasClass('vimeo')){
            var iframe = $(item_video).find('iframe.vimeoMarker')[0];
            if(iframe){
              var vimeo_clip = $(iframe).attr('src');
              vimeo_clip = vimeo_clip.match(/\/video\/([\d]+)/);
              if(vimeo_clip[1]){
                item.vimeo_id = iframe.id;
                item.vimeo_iframe = iframe;
                item.vimeo_clip = vimeo_clip[1];
                //item.vimeo_html = $(item_video).html();
              }
            }
          }
          item.type = 'video';
        }
        
        this.data[this.data.length] = item;
        this.item[this.item.length] = items[i];
        
      }
      
      if(this.data.length){
        var pages = $(this.root).find('.page');
        var dots = $(this.root).find('.dot');
        
        var page_count = 0;
        var item_count = 0;
        
        if(pages.length == dots.length){
          for(var i=0;i<pages.length;i++){
            
            var page = {
              pos : i,
              obj : pages[i],
              dot : dots[i],
              item : []
            };
            
            var items = $(page.obj).find('.pageitem');
            if(items.length){
              for(var j=0;j<items.length;j++){
                var item = {
                  pos : i*this.items_per_page + j,
                  obj : items[j]
                };
                page.item[page.item.length] = item;
                item_count++;
              }
            }
            
            this.page[this.page.length] = page;
            page_count++;
            
          }
        }
      }
      
      this.setEvents();
      
    }
  }
}

billboardSlider.prototype.setEvents = function(){
  var animated = !(iPhone_check() || iPad_check());
  if(this.page.length){
    for(var i=0;i<this.page.length;i++){
      if(this.page[i].item.length){
        $(this.page[i].dot).bind('click',{ro:this, pos:this.page[i].pos, animated:animated},this.swPage);
        for(var j=0;j<this.page[i].item.length;j++){
          $(this.page[i].item[j].obj).bind('click',{ro:this, pos:this.page[i].item[j].pos, animated:animated},this.swItem);
        }
      }
    }
  }
}

billboardSlider.prototype.swItem = function(e){
  var ro = e.data.ro;
  var pos = e.data.pos;
  var animated = e.data.animated;
  var dir = pos > ro.curpos;
  
  if((pos != ro.curpos) && !ro.swing && !ro.pageswing){
    if(ro.item[pos]){
      var curitem = ro.item[ro.curpos];
      var nxtitem = ro.item[pos];
      ro.nxtpos = pos;
      ro.swing = true;
      
      var page_num = Math.floor(ro.curpos / ro.items_per_page);
      var item_num = ro.curpos % ro.items_per_page;
      
      var curitemlink = ro.page[page_num].item[item_num].obj;
      
      page_num = Math.floor(ro.nxtpos / ro.items_per_page);
      item_num = ro.nxtpos % ro.items_per_page;
      
      var nxtitemlink = ro.page[page_num].item[item_num].obj;
      
      $(curitemlink).removeClass('active_item').addClass('normal_item');
      $(nxtitemlink).removeClass('normal_item').addClass('active_item');
      
      if(ro.data[ro.curpos].type == 'video'){
        if(ro.data[ro.curpos].vimeo_id){
          var player = $f(ro.data[ro.curpos].vimeo_id);
          player.api('pause');
        }
      }
      
      $(nxtitem).css('display','block');
      
      if(animated){
        $(nxtitem).css('left',(dir ? 600 : -600));
        $(curitem).animate({ left : dir ? -600 : 600},300,'linear',function(){
          $(this).css('display','none');
        });
        $(nxtitem).animate({ left : 0},300,'linear',function(){
          ro.curpos = ro.nxtpos;
          ro.nxtpos = -1;
          ro.swing = false;
        });
      }else{
        $(curitem).css('left', -600);
        $(curitem).css('display','none');
        $(nxtitem).css('left', 0);
        ro.curpos = ro.nxtpos;
        ro.nxtpos = -1;
        ro.swing = false;
      }

      
    }
  }
  
}

billboardSlider.prototype.swPage = function(e){
  var ro = e.data.ro;
  var pos = e.data.pos;
  var animated = e.data.animated;
  var dir = pos > ro.curpagepos;
  
  if((pos != ro.curpagepos) && !ro.swing && !ro.pageswing){
    if(ro.page[pos]){
      var curitem = ro.page[ro.curpagepos].obj;
      var nxtitem = ro.page[pos].obj;
      ro.nxtpagepos = pos;
      
      ro.swItem({data:{ro:ro,pos:ro.nxtpagepos*ro.items_per_page,animated:animated}});
      
      ro.pageswing = true;
      
      var dotimg = false; 
      $(ro.page[ro.curpagepos].dot).removeClass('active_dot').addClass('normal_dot');
      dotimg = $(ro.page[ro.curpagepos].dot).find('img')[0];
      if(dotimg){dotimg.src = '/img/main/mn.gif';}
      
      $(ro.page[ro.nxtpagepos].dot).removeClass('normal_dot').addClass('active_dot');
      dotimg = $(ro.page[ro.nxtpagepos].dot).find('img')[0];
      if(dotimg){dotimg.src = '/img/main/mn_act.gif';}
      
      
      
      $(nxtitem).css('display','block');
      
      if(animated){
        $(nxtitem).css('left',(dir ? 300 : -300));
        $(curitem).animate({ left : dir ? -300 : 300},300,'linear',function(){
          $(this).css('display','none');
        });
        $(nxtitem).animate({ left : 0},300,'linear',function(){
          ro.curpagepos = ro.nxtpagepos;
          ro.nxtpagepos = -1;
          ro.pageswing = false;
        });
      }else{
        $(curitem).css('left',-300);
        $(curitem).css('display','none');
        $(nxtitem).css('left',0);
        ro.curpagepos = ro.nxtpagepos;
        ro.nxtpagepos = -1;
        ro.pageswing = false;
      }

    }
  }
  
}

