var navigationEnabled = false;
var ajax;
var thumbObject;
var browser = navigator.appName;
var timelineID = 4334003;
var assetID = 4334284;
var thumbImage;
var imageWidth = 120;
var imageHeight = 80;
var originUrl = "";
var creditText = "";
var elementNames = ["PreviousItem2", "PreviousItem", "CurrentItem", "NextItem", "NextItem2"];
var widgetElements = {};
var curPos = 2;
var imageWidget;
var timelineWindowHandle;

if(browser == "Microsoft Internet Explorer"){
  ajax = new ActiveXObject("Microsoft.XMLHTTP");
}else{
  ajax = new XMLHttpRequest();
}


function init() {
  ajax.open('get', "Widget.xml", true);
  ajax.onreadystatechange = handleResponse;
  ajax.send(null);
  imageWidget = document.getElementById("thumb") != null;
}

function handleResponse(){
  if(ajax.readyState == 4 && ajax.status == 200){
    var xml;
    if(browser == "Microsoft Internet Explorer"){
      xml = new ActiveXObject("Microsoft.XMLDOM");
      xml.async = "false";
      xml.loadXML(ajax.responseText);
    } else {
      xml = (new DOMParser()).parseFromString(ajax.responseText, "text/xml");
    }
    for (var i in elementNames) {
      if (xml.getElementsByTagName(elementNames[i]) != null)
        widgetElements[elementNames[i]] = xml.getElementsByTagName(elementNames[i]).item(0);
    }
    if (widgetElements["CurrentItem"] != undefined) {
      fillData(curPos);
    }
  }
}

function fillData(xmlItem) {
  var xmlItem = widgetElements[elementNames[curPos]];
  var assetDate = convertDate(xmlItem.attributes.getNamedItem("When").value, xmlItem.attributes.getNamedItem("Precision").value);
  document.getElementById("text_header").innerHTML = xmlItem.attributes.getNamedItem("Title").value;
  document.getElementById("text_date").innerHTML = assetDate;
  document.getElementById("text_content").innerHTML = xmlItem.attributes.getNamedItem("Description").value;
  originUrl = xmlItem.attributes.getNamedItem("OriginURL").value;
  document.getElementById("moreButton").style.display = (originUrl == "") ? "none" : "block";
  document.getElementById("nextButton").style.cursor = "pointer";
  document.getElementById("nextButton").style.backgroundPosition = "0px 0px";
  document.getElementById("prevButton").style.cursor = "pointer";
  document.getElementById("prevButton").style.backgroundPosition = "0px 0px";
  if (imageWidget) {
    imageUrl = xmlItem.attributes.getNamedItem("Url").value;
    //imageUrl = "http://storage10.allofme.com/f4751dda/3aa2/44a3/9f0b/178e2e4a6fd5/4334270_2ff/ths/551_{0}.jpg";
    imageUrl = imageUrl.replace(/\{0\}/g, 'B');
    creditText = xmlItem.attributes.getNamedItem("Subtitle").value;
    if (creditText != "") creditText = "צילום: " + creditText;
    thumbImage = new Image();
    thumbImage.src = imageUrl + "?rnd=" + Math.random() * 99999999;
    thumbImage.onload = thumbLoaded;
  }
  navigationEnabled = true;
}

function thumbLoaded() {
  var ratio = thumbImage.width / thumbImage.height;
  var h, marginTop;
  if (ratio <= 1){
    // portrait / square:
    h = Math.floor(imageWidth * ratio);
  } else {
  // landscape:
    h = Math.floor(imageWidth / ratio);
  }
  marginTop = 0 - Math.floor(h - imageHeight) / 2;
  var img = '<img src="' + thumbImage.src + '" style="width:' + imageWidth + 'px; height: ' + h + 'px;margin-top:' + marginTop + 'px" />';
  if (creditText != "") img += '<div id="credit">' + creditText + '</div>';
  document.getElementById("thumb").innerHTML = img;
  if (creditText != "")
    document.getElementById("credit").style.top = (marginTop - 16) + "px";
  document.getElementById("thumb").style.display = "block";
  document.getElementById("thumb").style.cursor = (originUrl == "") ? "default" : "pointer";
  document.getElementById("thumb_loader").style.display = "none";
  document.getElementById("thumb_loader").style.cursor = (creditText == "") ? "default" : "pointer";
}

function box_over(element, vOffset) {
  element.style.backgroundPosition = "0px -" + vOffset + "px";
}

function nav_box_over(element, vOffset){
  if (navigationEnabled){
    box_over(element, vOffset);
  }
}

function buttonAction(action) {
  var popTimeline = false;
  switch(action){
    case "prev":
      if (curPos == 0) {
        popTimeline = true;
      } else if (widgetElements[elementNames[curPos - 1]] == undefined) {
        popTimeline = true;
      } else { 
        curPos--;
        navigate();
      }
      break;
    case "next":
      if (curPos == 4) {
        popTimeline = true;
      } else if (widgetElements[elementNames[curPos + 1]] == undefined) {
        popTimeline = true;
      } else { 
        curPos++;
        navigate();
      }
      break;
    case "go_sport":
      window.parent.location.href = "http://go.ynet.co.il/sport";
      break;
    case "more":
      if (originUrl != "")
        window.parent.location.href = originUrl;
      break;
    case "respond":
      window.parent.location.href = "mailto:ency@y-i.co.il";
      break;
  }
  if (popTimeline){
    if (timelineWindowHandle != null) {
      timelineWindowHandle.close();
    }
    timelineWindowHandle = window.open("http://go.ynet.co.il/sport")
  }
}

function navigate() {
  if (imageWidget) {
    document.getElementById("thumb").style.display = "none";
    document.getElementById("thumb_loader").style.display = "block";
  }
  fillData(curPos);
}

function revealCredit(flag){
  if (creditText != ""){
	document.getElementById("credit").style.display = flag ? "block" : "none";
  }
}

function convertDate(dateText, precision){
  precision = parseInt(precision);
  var months = {
    en:["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], 
    he:["ינואר", "פברואר", "מרץ", "אפריל", "מאי", "יוני", "יולי", "אוגוסט", "ספטמבר", "אוקטובר", "נובמבר", "דצמבר"]};
  var shortMonths = {
    en:["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
    he:["ינואר", "פברואר", "מרץ", "אפריל", "מאי", "יוני", "יולי", "אוגוסט", "ספטמבר", "אוקטובר", "נובמבר", "דצמבר"]};
  var days = {
    en:["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
    he:["ראשון", "שני", "שלישי", "רביעי", "חמישי", "שישי", "שבת"]};
  var shortDays = {
    en:["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
     he:["א", "'ב", "'ג", "'ד", "'ה", "'ו", "שבת"]};
  var dSplit = dateText.split(" ");
  var dSplitDate = dSplit[0].split("/");
  var dSplitTime = dSplit[1].split(":");
  var date = new Date();
  date.setFullYear(parseInt(dSplitDate[2]));
  date.setMonth(getArrayPosition(shortMonths["en"], dSplitDate[0]));
  date.setDate(parseInt(dSplitDate[1]));  
  var toDateString = "";
  toDateString += "יום " + days.he[date.getDay()] + ", ";
  toDateString += date.getDate() + " ב" + months.he[date.getMonth()] + " ";
  toDateString += date.getFullYear();
  var str = "";
  switch (precision){
        case 1:
        case 10:
          str = toDateString + ", " + date.getHours();
          str += ":" + (date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes());
          break;
        case 20:
          str = toDateString + ", " + date.getHours() + ":00";
          break;
        case 30:
          str = toDateString;
          break;
        case 40:
          str = months["he"][date.getMonth()] + " " + Math.abs(date.getFullYear())
          if (date.getFullYear() < 0)   
            str += ' לפנה"ס';
          break;
        case 50:
          str = Math.abs(date.getFullYear()).toString();
          if (date.getFullYear() < 0) 
            str += ' לפנה"ס';
          break;
        case 60:
          str = "שנות ה-" + parseInt(Math.abs(date.getFullYear())/10) + "0"
          if (date.getFullYear()<0)    
            str += ' לפנה"ס';
          if (Math.abs(date.getFullYear())<10)
            str = str.substring(1);
          break;
        case 70:
        case 80:
          var century = parseInt(Math.abs(date.getFullYear()) / 100) + 1;
          var str = "המאה ה-" + century;
          if (date.getFullYear()<0)    
            str += ' לפנה"ס';
          break;
        default:
          str = toDateString;
          break;  
      }
  return str;
}

function getArrayPosition(arrayName, arrayItem)
{
    for(var i = 0; i < arrayName.length; i++){ 
       if(arrayName[i] == arrayItem)
            return i;
    }
}
