/************************************
 * MUISTA PAIVITTAA YLE_PACK.JS !!!
 ************************************/
 
/* onload handler */
function addLoadEventHandlers()  {
	var old = window.onload;
	var args = arguments;
		
	window.onload = function(e)  {
		if (old) old(e);
		for (var i = 0; i < args.length; i++)
			args[i](e);
	}
}


/*
 * Escapes regular expression meta characters from given string.
 */
String.prototype.escapeRxSpecials = function() {
	return this.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1');
}


/*
 * Returns true if the node has CSS class with given name; otherwise returns false.
 */
function hasClass(node, className) {
	return new RegExp('\\b' + className.escapeRxSpecials() + '\\b').exec(node.className);
}

function setClass(node, className) {
	if (!hasClass(node, className))
		node.className = className + (node.className.length > 0 ? ' ': '') + node.className;
	
	return node;
}


function removeClass(node, className) {
	var classNames = node.className.split(/\s+/);
	
	for (var i = 0; i < classNames.length; i++) {
		if (classNames[i] == className) {
			classNames.splice(i, 1);
			node.className = classNames.join(' ');
			break;
		}
	}
	
	return node;
}

//Does the client support ActiveX component?
function hasActiveX() {
	return (window.ActiveXObject || window.GeckoActiveXObject);
}

//Does the client support WMP ActiveX control?
function hasWMPlayerX() {
	var player = null;
	try {
		if (window.ActiveXObject) {
			player = new ActiveXObject("WMPlayer.OCX"); //Test against Media Player version 7 or greater
		}
		else if (window.GeckoActiveXObject) {
			player = new GeckoActiveXObject("WMPlayer.OCX");
		}
	} catch (exc) { }
	return (player != null);
}

//Does the client have WMP Plugin installed?
function hasWMPlugin() {
	var plugin = null;
	try {
		if (navigator.mimeTypes) {
			//plugin = navigator.mimeTypes['application/x-mplayer2'].enabledPlugin;  //version 5.2 or greater
			plugin = navigator.mimeTypes['video/x-ms-wmv'].enabledPlugin;  //version 6.4 or greater
		} 
	} catch (exc) { }
	return (plugin != null);
}

function jQueryLoaded() {
  return (typeof jQuery!="undefined" && typeof $!="undefined");
}

function executeWhenJQueryReady(myFunction) {
  if (!jQueryLoaded() || typeof myFunction!="function") return false;
  $(document).ready(myFunction);
  return true;
}

var loadingJQuery = false;
function loadJQueryScripts() {
  if (loadingJQuery) return;
  loadingJQuery = true;
  var head = document.getElementsByTagName("head")[0];
  script = document.createElement('script');
  script.id = 'jQueryScript';
  script.type = 'text/javascript';
  script.src = "http://static.yle.fi/global/api/document/?service=jquery";
  head.appendChild(script);
}

if (typeof jQuery == "undefined") {
  loadJQueryScripts();
}

/* FF3 has native getElementsByClassName function, don't mess override it! */
if (typeof document.getElementsByClassName != 'function') {
  document.getElementsByClassName = function(cl, tag) {
    if (!tag) tag = '*';
    var retnode = [];
    var myclass = new RegExp('\\b'+cl+'\\b');
    var elems = this.getElementsByTagName(tag);
    for (var i = 0, elem; elem = elems[i]; i++) {
      var classes = elem.className;
      if (myclass.test(classes))retnode.push(elem);
    }
    return retnode;
  };
}

function YLELiterizer() {
  this.execute = function() {
    if (typeof navigator=='undefined' || typeof navigator.userAgent=='undefined') return;
    if (navigator.userAgent.indexOf('iPhone') != -1) {
      this.removeClassName();
    }
  }
  
  this.removeLiterizerClass = function() {
    executeWhenJQueryReady(function(){
      jQuery('div.literizer').removeClass('literizer');
    });
  }
}

/**
 * Tarjolla:
 * functionExists-funktio, jota kaytetaan nain: if(YLE.functionExists(activeXfix)) {doSomething}
 */
function YLEUtil() {
  this.initTime = new Date().getTime();
  this.readyTime = -1;

  this.functionExists = function(name) {
    return (typeof name == 'function');
  }
  
  this.loadingReady = function() {
    this.readyTime = new Date().getTime();
  }
  
  this.loadingTime = function() {
    return (this.readyTime - this.initTime)/60; //secs
  }  
}

var YLE = new YLEUtil();
var literizer = new YLELiterizer();
literizer.execute();

