var ICON_PATH = "http://pairs.speedymarks.com/appicons/";

var landscape = false;

var appObjs;

var newObjs = new Array();

var countryCode = "en-us";
if (navigator.language) {
  countryCode = navigator.language;
}

if (navigator.browserLanguage) {
  countryCode = navigator.browserLanguage;
}

var markets = {
  web: {
    title: "Apple App Store"
    ,badge: "appStoreBadge2.png"
    ,link: "http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewArtist?id=288060167"  
  }  
  ,iphone: {
    title: "App Store"
    ,badge: "appStoreBadge.png"
    ,link: "http://itunes.com/apps/pietjonas"  
  }  
  ,ipad: {
    title: "App Store"
    ,badge: "appStoreBadge2.png"  
    ,link: "http://itunes.com/apps/pietjonas"  
  }  
  ,android: {
    title: "Android Market"
    ,badge: "androidBadge.png"
    ,link: "http://market.android.com/search?q=SpeedyMarks"  
  }  
  ,palm: {
    title: "HP App Catalog"
    ,badge: "palmBadge.png"  
  }  
  ,palmPad: {
    title: "HP TouchPad App Catalog"
    ,badge: "palmBadge.png"  
  }  
  ,wp7: {
    title: "Windows Phone 7 Market"
    ,badge: "wp7Badge.png"
    ,link: "http://www.windowsphone.com/" + countryCode + "/publishers/SpeedyMarks"  
    //,link: "http://www.windowsphone.com/" + countryCode + "/search?q=speedymarks"  
  }  
  ,pBook: {
    title: "BlackBerry App World"
    ,badge: "blackBerryBadge.png"  
    ,link: "http://appworld.blackberry.com/webstore/vendor/7959"  
  }  
};

function setup() {
  appObjs = new Array();
  for ( var i = 0; i < apps.length; i++) {
    var obj = filter(new AppObj(apps[i]));
    if (obj) {
      appObjs.push(obj);
    }
  }
  appObjs.sort();
  fillNewApps();
  for ( var key in categories) {
    var option = document.createElement("option");
    option.value = key.substring(3);
    option.innerHTML = categories[key];
    $("CategoryGroup").appendChild(option);
  }
  hideLoading();
  var agent = navigator.userAgent.toLowerCase();
  if (agent.indexOf("iphone") >= 0 || agent.indexOf("ipod") >= 0 || agent.indexOf("ipad") >= 0) {
    $("AppType").value = "iphone";
  }
  if (agent.indexOf("ipad") >= 0) {
    $("AppType").value = "ipad";
  }
  if (agent.indexOf("android") >= 0) {
    $("AppType").value = "android";
  }
  if (agent.indexOf("webos") >= 0) {
    $("AppType").value = "palm";
  }
  if (agent.indexOf("hp-desktop") >= 0) {
    $("AppType").value = "palmPad";
  }
  if (agent.indexOf("playbook") >= 0) {
    $("AppType").value = "pBook";
  }
  if (agent.indexOf("windows phone") >= 0) {
    $("AppType").value = "wp7";
  }
  fillList();
}

function filter(obj) {
  return obj;
}

function openLink(link) {
  if (link) {
    window.open(link, "_blank");
  }
}

function fillNewApps() {
  newObjs = new Array();
  for ( var i = 0; i < appObjs.length; i++) {
    if (appObjs[i].app.date) {
      var obj = appObjs[i];
      obj.app.date = parseInt(obj.app.date);
      for ( var j = 0; j < newObjs.length; j++) {
        if (newObjs[j].app.date < obj.app.date) {
          newObjs.splice(j, 0, obj);
          obj = null;
          break;
        }
      }
      if (obj) {
        newObjs.push(obj);
      }
    }
  }
}

function fillList() {
  $("AppList").innerHTML = "";
  var category = $("Categories").value;
  var list = appObjs;
  if (category == "n") {
    list = newObjs;
  }
  for ( var i = 0; i < list.length; i++) {
    var obj = list[i];
    var link = obj.getWeb();
    switch ($("AppType").value) {
    case "iphone":
      link = obj.getIPhone();
      break;
    case "ipad":
      link = obj.getIPad();
      break;
    case "android":
      link = obj.getAndroid();
      if (!link) {
        link = obj.getAndroidFree();
      }
      break;
    case "palm":
      link = obj.getPalm();
      break;
    case "palmPad":
      link = obj.getPalmPad();
      break;
    case "wp7":
      link = obj.getMicrosoft();
      break;
    case "pBook":
      link = obj.getBlackBerry();
      break;
    }
    if (category != "0" && category != "n" && (obj.app.cats + "").indexOf(category) < 0) {
      continue;
    }
    if (link) {
      var div = document.createElement("div");
      div.className = "listEntry";
      div.appObj = obj;
      var img = document.createElement("img");
      img.className = "listIcon";
      img.src = ICON_PATH + obj.getIcon();
      div.appendChild(img);
      var title = document.createElement("div");
      title.className = "listTitle";
      title.innerHTML = obj.getTitle();
      div.appendChild(title);
      var text = document.createElement("div");
      text.className = "listText";
      text.innerHTML = obj.app.text;
      div.appendChild(text);
      $("AppList").appendChild(div);
      div.link = link;
      div.onclick = function() {
        openLink(this.link);
      };
    }
    var market = markets[$("AppType").value];
    if (market) {
      if (market.link) {
        $("StoreSection").style.display = "block";
        $("StoreLink").href = market.link;
        $("StoreTitle").innerHTML = market.title;
        $("StoreIcon").src = market.badge;
      }
      else {
        $("StoreSection").style.display = "none";
      }
    }
  }
}

function hideLoading(msg) {
  $("Loading").style.display = "none";
  $("AppListSection").style.display = "block";
  //$("TimeStamp").innerHTML = "";
}

function debug(msg) {
  $("Debug").innerHTML = msg + "<br>" + $("Debug").innerHTML;
}

function $(id) {
  return document.getElementById(id);    
}

function tellFriend() {
  var body = "Hi,%0A%0AI just stumbled upon this list of mobile applications:" +
    "%0A%0Ahttp://start.speedymarks.com" +
    "%0A%0ABest regards";
  window.open("mailto:?subject=Applications of SpeedyMarks&body=" + body, "_blank");  
}

function orientationChanged() {
  var width = Math.min(Math.min(700, $("Game").clientWidth) / $("Game").columns, 80);
  var imgs = $("GameTable").getElementsByTagName("img");
  for ( var i = 0; i < imgs.length; i++) {
    imgs[i].width = width;
  }
  setTimeout(function() {window.scrollTo(0,0);}, 1);
}

function fav(title, loc) {
  if (window.sidebar) {
    window.sidebar.addPanel(title, loc,'');
  } 
  else if (window.external) {
    window.external.AddFavorite(loc, title);
  } 
}

