/**
 *  Janmedia Intractive Inc
 *  $Id: jmscript.js,v 1.21 2008/04/15 08:07:40 pcharasimiuk Exp $
 *  Janmedia Java Script
 *  Author: fwo
 */

// IMPORT FEATURE --------------------------------------------------------------


// do przeechowywania wew pol stanu
if (typeof(ImportScript) == "undefined")
{
	ImportScript = {
		bOpe: (navigator.appName == "Opera"),
		bMoz: (navigator.appName == "Netscape")
	}
}

/**
 *	@return <tt>true</tt> if all libs loaded
 */
function importScriptDone()
{
	if (!document.jmscriptLoad) return false;
	//var bIE = (navigator.userAgent.indexOf('msie')!=-1);
	var importedScripts = window.importedScripts;
	if (typeof(importedScripts)=='undefined') {return true; }
	var i;

	for (i=0; i<importedScripts.length; i++)
	{
		var e = document.getElementById('jmscript' + i);
		if (e==null) continue;
//		if (e==null) { log(importedScripts[i] + " " + importedScripts.length); return false; }
		if (typeof(e.readyState)=='undefined') continue;
		if (e.readyState!='loaded' && e.readyState!='complete') return false;
		if (e.funcionOnLoad) return false;
	}
	return true;
}

/**
 *	Waits for load all libs and execute <tt>fn</tt>
 */
function importScriptWait(fn)
{
	if (importScriptDone()) fn();
	else setTimeout(function() {importScriptWait(fn)} ,100);
}

/**
 *	Imports lig form url <tt>scriptName</tt>
 */
function importScript(scriptName,functionOnLoad)
{
	var importedScripts = window.importedScripts;
	if (!importedScripts)
	{
		importedScripts = new Array();
		window.importedScripts = importedScripts;
	}

	var i;
	for (i=0; i<importedScripts.length; i++)
	{
		if (importedScripts[i]==scriptName)
		{
			if (!functionOnLoad) return;
			var e = document.getElementById('jmscript' + i);
			if (typeof(e.readyState)=='undefined' || e.readyState!='loaded' || e.readyState!='complete')
			{
				functionOnLoad();
			}
			else
			{
				alert('NOT IMPLEMENTTED!');
			}
			return;
		}
	}

	importedScripts[importedScripts.length] = scriptName;

	// Opera 9.2
	// T#5069 - fwo, Dodalem sprawdzanie, czy mamy document.body
	if (document.jmscriptLoad && document.body )
	{
		var s = document.createElement('script');
		if 	(ImportScript.bMoz)
		{
			s.readyState='loading';
			if(functionOnLoad) s.funcionOnLoad = functionOnLoad;
			addEvent(s, 'load', function() {this.readyState='loaded'; if (this.funcionOnLoad) { this.funcionOnLoad(); this.funcionOnLoad=null}},false); // FF
		}
		else
		{
			if(functionOnLoad)
			{
				s.funcionOnLoad = functionOnLoad;
				addEvent(s, 'readystatechange', importScriptAfterIE,false); // IE
			}
		}

		s.setAttribute('id','jmscript' + (importedScripts.length-1));
		s.setAttribute('src',scriptName);
		s.setAttribute('language','Javascript1.2');
		s.setAttribute('type','text/javascript');
		// alert(s + " " + document.body + " " + document.jmscriptLoad);
		document.body.appendChild(s);
	}
	else
	{
		// IE
		if (functionOnLoad && !ImportScript.bMoz)
		{
			importScript_addFunction(scriptName,functionOnLoad);
			document.write('<scrip' + 't onreadystatechange="importScriptAfterIE2(this);" id="jmscript' + (importedScripts.length-1) + '" type="text/javascript" src="' + scriptName + '"></scrip' + 't>');
		}
		else
		{
			document.write('<scrip' + 't id="jmscript' + (importedScripts.length-1) + '" type="text/javascript" src="' + scriptName + '"></scrip' + 't>');
		}
		// document.write(s);

		if (functionOnLoad && ImportScript.bMoz)
		{
			window.importedScripts_timer = functionOnLoad;
			document.write('<scrip' + 't type="text/javascript">window.importedScripts_exec();</scrip' + 't>');
		}

	}
}

importScriptAfterIE = function(e) {importScriptAfterIE2(e.srcElement);}
importScriptAfterIE2 = function(o) {
	if (o.readyState!='loaded' && o.readyState!='complete') return;
	importScript_executeFunction(o.src);
	if (o.funcionOnLoad) { o.funcionOnLoad(); o.funcionOnLoad=null; }
}


function importScript_addFunction(scriptName,functionOnLoad)
{
	var fs = window.importedScriptFunctions;
	if (!fs)
	{
		fs = new Array();
		window.importedScriptFunctions = fs;
	}
	var a = fs[scriptName];
	if (!a)
	{
		a = new Array();
		fs[scriptName] = a;
	}
	a.push(functionOnLoad);
}
function importScript_executeFunction(scriptName)
{
	var fs = window.importedScriptFunctions;
	if (!fs) return;
	var a = fs[scriptName];
	if (!a) return;
	var ai;
	for (ai=0; ai<a.length; ai++)
	{
		var f = a[ai];
		if (f==null) continue;
		a[ai]=null;
		f();
	}
}

function importStyle(src)
{
	if (document.jmscriptLoad)
	{
		var s = document.createElement('link');
		s.setAttribute('href',src + "?" + Math.round());
		s.setAttribute('rel','stylesheet');
		s.setAttribute('type','text/css');
		document.getElementsByTagName('head')[0].appendChild(s);
	}
	else if(document.createStyleSheet)
	{
		setTimeout(function() { document.createStyleSheet(src); }, 100);
	}
	else
	{
		document.write('<link href=\'' + src + '\' rel=\'stylesheet\' type=\'text/css\'/>');
	}
}

function addEvent(obj, evt, func, capture) {
	if(obj.addEventListener) {
		obj.addEventListener(evt, func, capture);
	}
	else if(obj.attachEvent) {
		obj.attachEvent('on' + evt, func);
	}
	else {
		alert('Hmmm, your browser doesn\'t support anything required for modern websites.\n\nPrepare for a life changing experience though...\n\nFirefox is here.  Please getfirefox.com');
		window.location='http://www.getfirefox.com/';
	}
}

//addEvent(window, 'focus', function() {alert(10);}, false);
addEvent(window, 'load', jmscript_load, true);
function jmscript_load()
{
	document.jmscriptLoad = true; // set we are loaded
	if (!ImportScript.bOpe)
		document.write = null; // specjalnie, 2007-12-20, fwo, ale nie dla Opera 9.2 -> T#5069
}

