var largeTeaserOIDListOrignal = new Array();
var largeTeaserOIDListRandom = new Array();
var currentLargeTeaser = 0;
var maxLargeTeaser = 4;
var largeTeaserRule = 1;
var largeTeaserAutoRotateActive = false;
var largeTeaserDefaultTime = 15;
var largeTeaserInterval;
var currentlargeFlashTeasers = 0;

var wideTeaserRule = 1;
var wideTeaserOIDListOrignal = new Array();
var wideTeaserOIDListRandom = new Array();
var currentWideTeaser = 0;
var maxWideTeaser = 4;

var standardTeaserRule = 1;
var standardTeaserOIDListOrignal = new Array();
var standardTeaserOIDListRandom = new Array();


var currentLargeTeaserName    = "";
var currentLargeTeaserName    = "";
var currentLargeTeaserImage   = "";
var nextLargeTeaserImage      = "";
var largeBasicTeasersPreload  = new Image();
var largeBasicTeasers         = new Array();
var largeTeaserArray          = new Array();
var largeFlashTeasers         = new Array();





function initHome(){

  initTeaserList1();
  initTeaserList2();
  initTeaserList3();
  initStandardTeaser();
  initStandardSalesTeaser();
}
  
function initStandardPage() {

  checkClient();
}

function getWcmsPrefix(){
  var prefix = "";
  if (self.location.href.indexOf('/bmwdealer_edit/') != -1) {
    prefix = "/bmwdealer_edit";
  } else if (self.location.href.indexOf('/bmwdealer_qa/') != -1) {
    prefix = "/bmwdealer_qa";
  } 
  return prefix;
}


function initStandardTeaser() {
  $(".standardTeaser").each(function(i,e){

    if($(this).find(".text").size() > 0) {
      $(this).find(".content .media").mouseover(function() {
        $(this).hide();
      });

      $(this).find(".content .text").mouseleave(function() {
        $(this).next(".media").show();
      });
    }
  });
}


function initStandardSalesTeaser() {
  $(".standardSalesTeaser .eventArea").each(function() {
    var teaserImage = $(this).parents(".standardSalesTeaser").find("img.stsltimg");
    var text = $(this).parents(".standardSalesTeaser").find(".text");
    var twoButtons = false;
    if($(this).parents(".standardSalesTeaser").find(".button").size() == 2) {
      twoButtons = true;
    }
    var twoImages = false;
    if(teaserImage.attr("preload")) {
      twoImages = true;
    }

    if(twoImages || twoButtons) {
      if(twoImages) {
        $('<img />').attr("src", getWcmsPrefix() + teaserImage.attr("preload"));
        var original = teaserImage.attr("src");


       if( getWcmsPrefix() == "/bmwdealer_edit") {
          if(original.indexOf("/bmwdealer_edit/") == -1) {
            original = "/bmwdealer_edit" + original;
          }
        }
      }
     $(this).hover(
        function () {
          if(twoImages) {
            teaserImage.attr("src",teaserImage.attr("preload"));
          }
          if(twoButtons) {
            text.show();
          }
        },
        function() {
          if(twoImages) {
            teaserImage.attr("src",original);
          }
          if(twoButtons) {
            text.hide();
          }
        }
      );
    }
  });
}


function initTeaserList1(alternativeHeight){
  if($(window).width() > 1024){
    $(".teaserLargeContainer, .teaserLargeStandardContainer").width("1024px");
  }

  $(window).resize(function() {
    if($(window).width() > 1024){
      $(".teaserLargeContainer, .teaserLargeStandardContainer").width("1024px");
    }else{
      $(".teaserLargeContainer, .teaserLargeStandardContainer").width("1004px");
    }
  });

  $(".LEhelper").hide();
  $(".teaserLarge").each(function(i,e){
    largeTeaserOIDListOrignal[largeTeaserOIDListOrignal.length] = $(e).attr("id");
  })

  switch (largeTeaserRule) {
    case 1:
      largeTeaserOIDListRandom = randomizeTeaser(largeTeaserOIDListOrignal, false);
      break;

    case 2:
      largeTeaserOIDListRandom = randomizeSimpleTeaser(largeTeaserOIDListOrignal, false);
      break;

    case 3:
      largeTeaserOIDListRandom = sameOrderTeaser(largeTeaserOIDListOrignal);
      break;

    case 4:
      largeTeaserOIDListRandom = randomizeSimpleTeaser(largeTeaserOIDListOrignal, true);
      break;

    case 5:
      largeTeaserOIDListRandom = randomizeTeaser(largeTeaserOIDListOrignal, true);
      break;

    default:
      largeTeaserOIDListRandom = randomizeTeaser(largeTeaserOIDListOrignal, false);
      break;
  }

  maxLargeTeaser = largeTeaserOIDListRandom.length-1;

  if(maxLargeTeaser != -1){
    $(".teaserLargeContainer .skip, .teaserLargeStandardContainer .skip").html((currentLargeTeaser + 1) + " / " + (maxLargeTeaser+1));
    if(maxLargeTeaser >= 1){
      $(".teaserLargeContainer .skip, .teaserLargeStandardContainer .skip").show();
    }


    $.each(largeTeaserOIDListRandom, function(i,e) {
      if(getWcmsPrefix()=='/bmwdealer_edit'){
      $('<img />').attr('src', largeBasicTeasers[ $.inArray(e, largeTeaserOIDListOrignal) ]);
      }else{
      $('<img />').attr('src', getWcmsPrefix() + largeBasicTeasers[ $.inArray(e, largeTeaserOIDListOrignal) ]);
      }
    });


    useLageFlashTeaser = false;
    currentlargeFlashTeasers = $.inArray(largeTeaserOIDListRandom[currentLargeTeaser], largeTeaserOIDListOrignal);
    if(typeof(largeFlashTeasers[currentlargeFlashTeasers])!="undefined" && largeFlashTeasers[currentlargeFlashTeasers].swfurl != "none"){
      var largeTeaserSwfUrl =  getWcmsPrefix() + "/_common/highend/wrapper_modules_autorotate.swf";
      if(largeFlashTeasers[currentlargeFlashTeasers].swfurl == ""){
        largeTeaserSwfUrl =  getWcmsPrefix() + "/_common/shared/swf/large_teaser_as3.swf";
      }

      var largeTeaserSwfHeight =  "280";
      if(alternativeHeight != undefined){
        largeTeaserSwfHeight =  alternativeHeight;
      }

      var teaserSWFObject = new SWFObject(largeTeaserSwfUrl, "largeTeaserFlashObject", "1024", largeTeaserSwfHeight, "8", "#FFFFFF");
      teaserSWFObject.addParam("allowScriptAccess", "sameDomain");
      teaserSWFObject.addParam("wmode", "transparent");
      teaserSWFObject.addParam("quality", "BEST");
      teaserSWFObject.addVariable("defaultTimeToRun", largeTeaserDefaultTime);
      teaserSWFObject.addVariable("nextTeaserFunction", "startLargeTeaserTimer()");

      if(teaserSWFObject.write("largeTeaserFlash")){
        $("#largeTeaserFlash").show();
        useLageFlashTeaser = true;
      }
    }

    if(!useLageFlashTeaser){
      $("#" + largeTeaserOIDListRandom[currentLargeTeaser]).show();
      
      if(getWcmsPrefix()=='/bmwdealer_edit'){
      $("#largeTeaserBasic img").attr("src", largeBasicTeasers[$.inArray(largeTeaserOIDListRandom[currentLargeTeaser], largeTeaserOIDListOrignal)]);
      }else{
      $("#largeTeaserBasic img").attr("src", getWcmsPrefix() + largeBasicTeasers[$.inArray(largeTeaserOIDListRandom[currentLargeTeaser], largeTeaserOIDListOrignal)]);
      }      
      $("#largeTeaserBasic").show();
    }
    if(typeof(largeFlashTeasers[currentlargeFlashTeasers])!="undefined"){
    $("#LE"+largeFlashTeasers[currentlargeFlashTeasers].teaserOID).show();
    }
    $(".teaserLargeContainer .skip, .teaserLargeStandardContainer .skip").html((currentLargeTeaser + 1) + " / " + (maxLargeTeaser+1));
    $("#largeTeaserOverlay").fadeOut(500);
    $(".teaserLargeContainer .skip, .teaserLargeStandardContainer .skip").bind("click", showNextLargeTeaser);

    if(largeTeaserAutoRotateActive && maxLargeTeaser  > 0){
      startLargeTeaserTimer();
    }

  }

}


function initTeaserList2(){

  $(".standardTeaserContainer div[id^='id']").each(function(i,e){
    standardTeaserOIDListOrignal[standardTeaserOIDListOrignal.length] = $(e).attr("id");
  })

  switch (standardTeaserRule) {

    case 1:
      standardTeaserOIDListRandom = randomizeTeaser(standardTeaserOIDListOrignal, false);
      break;

    case 2:
      standardTeaserOIDListRandom = randomizeSimpleTeaser(standardTeaserOIDListOrignal, false);
      break;

    case 3:
      standardTeaserOIDListRandom = standardTeaserOIDListOrignal;
      break;

    default:
      standardTeaserOIDListRandom = randomizeTeaser(standardTeaserOIDListOrignal, false);
      break;
  }

  $("#" + standardTeaserOIDListRandom[0]).css("visibility" , "visible");
}



function initTeaserList3(){

  $(".doubleTeaserContainer .doubleTeaser").each(function(i,e){
    wideTeaserOIDListOrignal[wideTeaserOIDListOrignal.length] = $(e).attr("id");
  })

  maxWideTeaser = wideTeaserOIDListOrignal.length-1;

  if(maxWideTeaser != -1){
    $(".doubleTeaserContainer .skip").html((currentWideTeaser + 1) + " / " + (maxWideTeaser+1));
    if(maxWideTeaser > 0){
      $(".doubleTeaserContainer .skip").show();
    }

    switch (wideTeaserRule) {

      case 1:
        wideTeaserOIDListRandom = randomizeTeaser(wideTeaserOIDListOrignal, false);
        break;

      case 2:
        wideTeaserOIDListRandom = randomizeSimpleTeaser(wideTeaserOIDListOrignal, false);
        break;

      case 3:
        wideTeaserOIDListRandom = wideTeaserOIDListOrignal;
        break;

      default:
        wideTeaserOIDListRandom = randomizeTeaser(wideTeaserOIDListOrignal, false);
        break;
    }

    $("#" + wideTeaserOIDListRandom[currentWideTeaser]).css("visibility" , "visible");

    $(".doubleTeaserContainer .skip").click(function(){
      $("#" + wideTeaserOIDListRandom[currentWideTeaser]).css("visibility" , "hidden");
      currentWideTeaser++;
      if(currentWideTeaser > maxWideTeaser){
        currentWideTeaser = 0;
      }
      $(".doubleTeaserContainer .skip").html((currentWideTeaser + 1) + " / " + (maxWideTeaser+1));
      $("#" + wideTeaserOIDListRandom[currentWideTeaser]).css("visibility" , "visible");
    });

  }

}

function getContent()  {
  return largeFlashTeasers[currentlargeFlashTeasers];
}



function startLargeTeaserTimer()  {

  if(largeTeaserAutoRotateActive){
    var currentRunTime = largeTeaserDefaultTime;
    largeTeaserInterval = window.setTimeout("showNextLargeTeaser()", (1000 * currentRunTime));
  }
}



function showNextLargeTeaser(){
  
  $(".LEhelper").hide();
  $(".teaserLargeContainer .skip, .teaserLargeStandardContainer .skip").unbind("click");
  if(largeTeaserAutoRotateActive){
    window.clearTimeout(largeTeaserInterval);
  }

  $("#largeTeaserOverlay").fadeIn(500, function(){
    $("#" + largeTeaserOIDListRandom[currentLargeTeaser]).hide();
    useLageFlashTeaser = false;
    currentLargeTeaser++;
    if(currentLargeTeaser > maxLargeTeaser){
      currentLargeTeaser = 0;
    }

    currentlargeFlashTeasers = $.inArray(largeTeaserOIDListRandom[currentLargeTeaser], largeTeaserOIDListOrignal);
    if(largeFlashTeasers[currentlargeFlashTeasers].swfurl != "none"){
      var largeTeaserSwfUrl =  getWcmsPrefix() + "/_common/highend/wrapper_modules_autorotate.swf";
      if(largeFlashTeasers[currentlargeFlashTeasers].swfurl == ""){
        largeTeaserSwfUrl =  getWcmsPrefix() + "/_common/shared/swf/large_teaser_as3.swf";
      }

      var largeTeaserSwfHeight =  "280";
      var teaserSWFObject = new SWFObject(largeTeaserSwfUrl, "largeTeaserFlashObject", "1024", largeTeaserSwfHeight, "8", "#FFFFFF");
      teaserSWFObject.addParam("allowScriptAccess", "sameDomain");
      teaserSWFObject.addParam("wmode", "transparent");
      teaserSWFObject.addParam("quality", "BEST");
      teaserSWFObject.addVariable("defaultTimeToRun", largeTeaserDefaultTime);
      teaserSWFObject.addVariable("nextTeaserFunction", "startLargeTeaserTimer()");

      if(teaserSWFObject.write("largeTeaserFlash")){
        $("#largeTeaserBasic").hide();
        $("#largeTeaserFlash").show();
        $("#largeTeaserOverlay").fadeOut(500);
        useLageFlashTeaser = true;
      }

    }

    if(!useLageFlashTeaser){
      $("#largeTeaserFlash").hide();
      
      if(getWcmsPrefix()=='/bmwdealer_edit'){
      $("#largeTeaserBasic img").attr("src", largeBasicTeasers[$.inArray(largeTeaserOIDListRandom[currentLargeTeaser], largeTeaserOIDListOrignal)]);
      }else{
      $("#largeTeaserBasic img").attr("src", getWcmsPrefix() + largeBasicTeasers[$.inArray(largeTeaserOIDListRandom[currentLargeTeaser], largeTeaserOIDListOrignal)]);
      }      
      $("#largeTeaserBasic").show();
      $("#" + largeTeaserOIDListRandom[currentLargeTeaser]).show();
      $("#largeTeaserOverlay").fadeOut(500);
      if(largeTeaserAutoRotateActive){
        startLargeTeaserTimer();
      }
    }
    $("#LE"+largeFlashTeasers[currentlargeFlashTeasers].teaserOID).show();
    $(".teaserLargeContainer .skip, .teaserLargeStandardContainer .skip").html((currentLargeTeaser + 1) + " / " + (maxLargeTeaser+1));

  });

  
  $(".teaserLargeContainer .skip, .teaserLargeStandardContainer .skip").bind("click", showNextLargeTeaser);

}



Math.randomize = function() {var minValue=0,maxValue=0;if(arguments.length==1){maxValue=((isNaN(Number(arguments[0])))?(0):(parseInt(arguments[0])));}else if(arguments.length==2){minValue=((isNaN(Number(arguments[0])))?(0):(parseInt(arguments[0])));maxValue=((isNaN(Number(arguments[1])))?(0):(parseInt(arguments[1])));}if(maxValue<minValue){var tmpValue=minValue;minValue=maxValue;maxValue=tmpValue;}Math.randomize.startValue=(((Math.randomize.startValue*Math.randomize.a)+Math.randomize.b)%Math.randomize.c);return((minValue==maxValue)?(Math.randomize.startValue/Math.randomize.c):(minValue+Math.floor((maxValue-minValue+1)*Math.randomize.startValue/Math.randomize.c)));};Math.randomize.a=4096;Math.randomize.b=150889;Math.randomize.c=714025;Math.randomize.startValue=(((new Date()).getTime())%Math.randomize.c);

Array.prototype.remove = function(obj) {
  var arr=this,k=0;
  while(k<arr.length){
    if(arr[k]===obj){
      arr=arr.slice(0,k).concat(arr.slice(k+1,arr.length));
      --k;
    }
    ++k;
  }
  for(k=0;k<arr.length;++k){
    this[k]=arr[k];
  }
  this.length=arr.length;
};



function sameOrderTeaser(teaserList){
  var teaserListLength = 5;
  var returnList = new Array();
  if(teaserList.length < 5){
    teaserListLength = teaserList.length;
  }

  for (i=0; i<teaserListLength; ++i) {
    returnList[returnList.length] = teaserList[i];
  }
  return returnList;
}



function randomizeSimpleTeaser(teaserList, firstFix){
  var teaserListLength = 5;
  var workList = new Array(teaserList.length);
  for (var i=0; i<teaserList.length; ++i) {
    workList[i] = teaserList[i];
  }
  var returnList = new Array();
 
  if(workList.length < 5){
    teaserListLength = workList.length;
  }

  if(firstFix){
    returnList[returnList.length] = workList[0];
    workList.remove(workList[0]);
    teaserListLength--;
  }

  for (var i=0; i<teaserListLength; ++i) {
    var currentNumber = Math.floor(Math.random()*workList.length);
    returnList[returnList.length] = workList[currentNumber];
    workList.remove(workList[currentNumber]);
  }

  return returnList;
}



function randomizeTeaser(teaserList, firstFix){

  var arr = [];
  var teaserArr = teaserList;
  var amplifier = 3;
  var fixDifference = ((firstFix) ? (0) : (1));
  var arrLength = (((teaserArr.length-1+fixDifference) <= (4+fixDifference)) ? (teaserArr.length-1+fixDifference) : (4+fixDifference));
  var fixEntries = ((firstFix) ? ([teaserArr[0]]) : (null));
  var lotteryPot = [], i;
  for (i=(1-fixDifference); i<teaserArr.length; ++i) {
    lotteryPot[lotteryPot.length] = i;
  }

  while (arr.length < arrLength) {
    i = lotteryPot[Math.floor(Math.pow(Math.randomize(),amplifier)*lotteryPot.length)];
    lotteryPot.remove(i);
    arr[arr.length] = teaserArr[i];
  }

  if (fixEntries) {
    arr = fixEntries.concat(arr);
  }
  return arr;

}



var videoTeasers = [];
var currentVideoTeaser = false;

function showVideoTeaser(videoTeaserId, videoTeaserWidth, videoTeaserHeight, layerTop, layerLeft){
  for(var thisVideoTeaser in videoTeasers) {
   setVisibility(thisVideoTeaser,0);
   var myElement = thisVideoTeaser + "FlashID";
   if(document.getElementById(myElement)){
     document.getElementById(myElement).stopVideo();
   }
  }
  currentVideoTeaser = "videoTeaser" + videoTeaserId;
  var videoTeaser = new SWFObject(videoTeaserFlashWrapper, "videoTeaser" + videoTeaserId + "FlashID", videoTeaserWidth, videoTeaserHeight + 16, "8.0.22", "#ffffff");
  videoTeaser.addParam("quality", "high");
  videoTeaser.addParam("allowScriptAccess", "always");
  videoTeaser.addParam("wmode", "transparent");
  videoTeaser.addVariable("prm_contentgetter", "videoTeaserGetContent");

  var originalObj = document.getElementById(currentVideoTeaser);
  var clonedObj = originalObj.cloneNode(true);

  originalObj.parentNode.removeChild(originalObj);
  document.body.appendChild(clonedObj);
  videoTeaser.write("videoTeaser" + videoTeaserId + "Player");
  setVisibility("videoTeaser" + videoTeaserId, 1, 'block');
}



function videoTeaserGetContent(){
  if (currentVideoTeaser) {
    return videoTeasers[currentVideoTeaser];
  }
}



function videoTeaserTracking(fileName, videoStatus){
  var trackingUrl = self.location.href.substring(0, self.location.href.lastIndexOf("/"));
  var pageName = self.location.href.substring(self.location.href.lastIndexOf("/") + 1, self.location.href.lastIndexOf("."));
  var flvName = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.lastIndexOf("."));
  trackingUrl = trackingUrl + "/" + pageName + "_video_" + flvName + "_" + videoStatus + ".html";
  if (confTrackingEnabled) {
    trackAbsolute(trackingUrl, '', true);
  }
}


function trackFlashTeaser(trackingUrl,identifier){
   var source = top.location.pathname;
    var objectReference = confCountryTopic + "/" + confDealerTopic + "/" + confLanguageTopic + "/_common/tracking/teaser_large.html?source=" + escape(source) + "&target=" + escape(trackingUrl);
    if( top.confTrackingEnabled) {
      top.trackAbsolute(objectReference,identifier,false);
    }
    return true;
}


function trackingLargeTeaser(teaserId, linkId, linkUrl, linkTarget){
  
  trackFlashTeaser(linkUrl, linkId);
  if(linkTarget == "_blank"){
  console.log("linkTarget1: "+linkTarget);
    window.open(linkUrl, "_blank");
  }else if(linkTarget == "popup"){
  console.log("linkTarget2: "+linkTarget);
    window.open(linkUrl, "_blank");
  }else{
  console.log("linkTarget3: "+linkTarget);
    top.location.href = linkUrl;
  }
}

