// AdBar v1.0
// (c) 2010 by Lukas Benda, luke.benda@gmail.com
// No copies, modifications or re-distribution allowed without prior written consent
// from the author.

var eu_DATA_SOURCE = "../csv/akce2.csv";

var eu_DISPLAY_PERIOD = 5000; //ms

var eu_FRAME_DELAY = 60; //ms
var eu_FRAME_COUNT = 5; //frames

var eu_inAnimation = false;

var eu_sourceData = [];
var eu_loaded = false;

var eu_masterTimer = null;
var eu_animTimer = 0;
var eu_animStep = 0;

var eu_adPos = 2;

var eu_stripIndex = 0;


function eu_init() {

    if(typeof String.prototype.trim !== 'function') {
      String.prototype.trim = function() {
         return this.replace(/^\s+|\s+$/, ''); 
      }
    }

    eu_startRotation();
    eu_loadExternalData();
}

function eu_getCellHtmlByIndex(ind) {

    var i = ind;
    var l = eu_sourceData.length;
    
    if (i < 0) i = l - (Math.abs(i) % l);
    if (i >= l) i = i % (l-1);
    
    return '<div class="eubar-cell"><div class="adbar-destination"><a href="http://www.letenky-takeflight.cz/"  target="_parent">'+eu_sourceData[i].destination+
           '</a></div><div class="adbar-price"><a href="http://www.letenky-takeflight.cz/"  target="_parent">'+eu_sourceData[i].price+
           '</a></div><div class="eubar-departure"><a href="http://www.letenky-takeflight.cz/"  target="_parent">'+eu_sourceData[i].departure+
           '</a></div><div class="adbar-airline">&nbsp;'+
           '</div></div>';

}

function eu_getStripHtmlByIndex(ind,body) {
   
    var cn = "eubar-strip"+(Math.abs(ind)%3);
    return '<div id="eu_Str'+ind+'" class="'+cn+'">'+body+'</div>';
}


function eu_renderFirstStrip() {

    var pane = eu_getObjById('eubar-scrollpane');
    
    if (pane) {
    
          var f = eu_getCellHtmlByIndex(0);
              f += eu_getCellHtmlByIndex(1); 
              f += eu_getCellHtmlByIndex(2);
    
          f = eu_getStripHtmlByIndex(0,f);
          
          var f2 = eu_getCellHtmlByIndex(3);
              f2 += eu_getCellHtmlByIndex(4); 
              f2 += eu_getCellHtmlByIndex(5);
    
          f2 = eu_getStripHtmlByIndex(1,f2);
          
          pane.innerHTML = f+f2;
    
    } else alert("eubar html corrupt.");
}


function eu_startAnim() {
  if (!eu_inAnimation) {
    eu_inAnimation = true;
    eu_animStep = 0;
    eu_animTimer = setInterval(eu_updateAnim,eu_FRAME_DELAY);
  }
}

function eu_updateAnim() {
  
    
    var currId = 'eu_Str' + eu_stripIndex;
    var currId2 = 'eu_Str' + (eu_stripIndex+1);
    
    var leadStrip = eu_getObjById(currId);
    var leadStrip2 = eu_getObjById(currId2);
    
    var position =  eu_easeInOut(0,135,eu_FRAME_COUNT,eu_animStep,1);
    
    if (leadStrip && leadStrip2) {
        leadStrip.style.left = (-position)+'px';
        leadStrip2.style.left = (135-position)+'px';
    }
    
    eu_animStep++;
    
    if (eu_animStep > eu_FRAME_COUNT) {
        clearInterval(eu_animTimer);
   
        leadStrip2.style.left = '0px';
        leadStrip.style.left = '135px';
        
        leadStrip.innerHTML =  eu_getCellHtmlByIndex(eu_adPos*3)+
                               eu_getCellHtmlByIndex(eu_adPos*3+1)+
                               eu_getCellHtmlByIndex(eu_adPos*3+2);
        eu_setCla(leadStrip,'eubar-strip'+(eu_adPos%3));
                                                  
        eu_adPos++;
        if (eu_adPos*3>eu_sourceData.length){
            eu_adPos = 0;
        }
          
   
        leadStrip.id = currId2;
        leadStrip2.id = currId;
   
        eu_inAnimation = false;
        //swap strips
    }
}


function eu_updateStrip() {

      if (eu_loaded) {
          eu_startAnim();      
      }
}

function eu_startRotation() {  //start renderign engine
    eu_masterTimer = setInterval(eu_updateStrip,eu_DISPLAY_PERIOD);
}


function eu_createAdObject(csvString) {
   cols = csvString.split(";");
  
   var in_dep = cols[0];
   var in_des = cols[1];
   var in_price = cols[2];
   var in_air = cols[3]; 

   var error = false;
   
   var emsg = " EU-vikendy: CSV Chyba. Chybny sloupec ";

   if (cols) {
      if (cols.length == 4) {
         if (!in_dep) {
            error = true;
            emsg += "odlet (prvni)";
         }  
         if (!in_des) {
            error = true;
            emsg += " ,cil (druhy)";
         }
         if (!in_price) {
            error = true;
            emsg += " ,cena (treti)";
         }
         if (!in_air) {
            error = true;
            emsg += " ,aerolinky (posledni)";
         }
             
      } else error = true;
   } else error = true;
   
   emsg += ". Pocet sloupcu je " + cols.length;
   emsg += ". \nRadek '" + csvString + "'.";
   
   if (error) {
      alert(emsg);
   }
  
   return {
			"departure" : in_dep.trim(),
			"destination" : in_des.trim(),
			"price" : in_price.trim(),
			"airline" : in_air.trim()
	 }
}


function eu_parseData(lineArray) {
      for (i = 0; i < lineArray.length; i++) {
          if (lineArray[i]) {
              if (lineArray[i].length) {
              eu_sourceData[eu_sourceData.length] = eu_createAdObject(lineArray[i]);
              }
          }
      }
      eu_loaded = true;
      eu_renderFirstStrip();
}


function eu_loadExternalData() {

  var txtFile = false;
  
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
      txtFile = new XMLHttpRequest();
      if (txtFile.overrideMimeType) {
          txtFile.overrideMimeType('text/html');
      }
  } else if (window.ActiveXObject) { // IE
     try {
           txtFile = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
           try {
                 txtFile = new ActiveXObject("Microsoft.XMLHTTP");
               } catch (e) {}
         }
  }
        
  if (!txtFile) {
         alert('Cannot create XMLHTTP instance');
         return false;
  }
  
  txtFile.open("GET", eu_DATA_SOURCE, true);
  txtFile.onreadystatechange = function() {
  
       if (txtFile.readyState === 4) {  // Makes sure the document is ready to parse.
          if (txtFile.status === 200) {  // Makes sure it's found the file.
             allText = txtFile.responseText;
             lines = txtFile.responseText.split("\n"); // Will separate each line into an array
             eu_parseData(lines);
          }
       }
  }
  txtFile.send(null);
}



function eu_getObjById(id)   { 
     if (document.getElementById) 
        var returnVar = document.getElementById(id); 
     else if (document.all) 
        var returnVar = document.all[id]; 
     else if (document.layers) 
        var returnVar = document.layers[id]; 
     return returnVar; 
}

function eu_setCla(obj,cla) {
    obj.setAttribute("class", cla); 
    obj.setAttribute("className", cla); 
}

function eu_easeInOut(minValue,maxValue,totalSteps,actualStep,powr) {
	var delta = maxValue - minValue;
	var stepp = minValue+(Math.pow(((1 / totalSteps)*actualStep),powr)*delta);
	return Math.ceil(stepp)
}

