/*
 * Copyright © 1995-2005 by 4system Polska Sp. z o.o.
 * All Rights Reserved.
 */

function fnArrayPop()
{
  var response = this[this.length - 1]
  this.length--
  return response
}

if (typeof(Array.prototype.pop) == "undefined") {
  Array.prototype.pop = fnArrayPop;
}

function fnArrayPush() {
  var A_p = 0
  for (A_p = 0; A_p < arguments.length; A_p++) {
    this[this.length] = arguments[A_p]
  }
  return this.length;
}

if (typeof Array.prototype.push == "undefined") {
  Array.prototype.push = fnArrayPush;
}

function fnArraySplice(index, delTotal) {
	var temp = new Array()
	var response = new Array()

	var A_s = 0
	for (A_s = 0; A_s < index; A_s++) {
		temp[temp.length] = this[A_s]
	}
	for (A_s = 2; A_s < arguments.length; A_s++) {
		temp[temp.length] = arguments[A_s]
	}
	for (A_s = index + delTotal; A_s < this.length; A_s++) {
		temp[temp.length] = this[A_s]
	}
	for (A_s = 0; A_s < delTotal; A_s++) {
		response[A_s] = this[index + A_s]
	}
	this.length = 0
	for (A_s = 0; A_s < temp.length; A_s++) {
		this[this.length] = temp[A_s]
	}
	return response;
}

if (typeof Array.prototype.splice == "undefined") {
	Array.prototype.splice = fnArraySplice;
}

/**
 * String
 */
 
function quotedString(value)
{
	var new_value = value;
	
	new_value = new_value.replace(/"/g, "&quot;");
	new_value = new_value.replace(/'/g, "&#146;");
	
	return new_value;
};

function unquotedString(value)
{
	var new_value = value;
	
	new_value = new_value.replace(/&quot;/g, '"');
	new_value = new_value.replace(/#&034/g, '"');
	new_value = new_value.replace(/&#146;/g, "'");
	
	return new_value;
}; 
 
function trim(str)
{
   return str.replace(/^\s*|\s*$/g, "");
}

/**
 * Date & Time Tools
 */
Date.prototype.getFotmatedTime = function()
{
	var hours = this.getHours();
	hours = ((hours < 10) ? "0" : "") + hours;
	var minutes = this.getMinutes();
	minutes = ((minutes < 10) ? "0" : "") + minutes;
	var seconds = this.getSeconds();
	seconds = ((seconds < 10) ? "0" : "") + seconds;
	return hours + ":" + minutes + ":" + seconds;
}

Date.prototype.subtractTimeToString = function(dateStart)
{
  var dd = Math.abs(this.getTime() - dateStart.getTime());
  var ts = Math.floor( ( ( (dd % (60 * 60 * 1000 * 24) ) % (60 * 60 * 1000) ) % ( 60 * 1000 ) ) / 1000 * 1);
  var tm = Math.floor( (dd % (60 * 60 * 1000 * 24)) % ((60 * 60 * 1000)) / (60 * 1000));
  var th = Math.floor( (dd % (60 * 60 * 1000 * 24)) / (60 * 60 * 1000));

  var sh = ((th < 10) ? "0" : "") + th;
  var sm = ((tm < 10) ? "0" : "") + tm;
  var ss = ((ts < 10) ? "0" : "") + ts;

  return ("" + sh + ":" + sm + ":" + ss);
}

/**
 * NN4 Tools
 */

function getFormNS4(name, obj)
{
	for (var i = 0; i < obj.forms.length; i++) {
		if (obj.forms[i].name == name) return obj.forms[i];
	}
	for (var i = 0; i < obj.layers.length; i++) {
		var res = getFormNS4(name, obj.layers[i].document);
		if (res) return res;
	}
	return null;
}

function getObjNS4(obj,name)
{
	var x = obj.layers;
	var foundLayer;
  
	for (var i = 0; i < x.length; i++) {
		if (x[i].id == name)
			foundLayer = x[i];
		else if (x[i].layers.length)
			var tmp = getObjNS4(x[i],name);
		if (tmp) foundLayer = tmp;
	}
	return foundLayer;
}


function getForm(name)
{
	if (is.ns4) {
		return getFormNS4(name, document);
	} else {
		return document.forms[name];
	}
}

/**
 * Cookie Class
 */
 
function Cookie()
{
	this.get = function (nameOfCookie, doc)
	{
		if (typeof(doc) == "undefined") doc = top.window.document;
		
		if (doc.cookie.length > 0) { 
			var begin = -1;
			var code = '';
			code += (is.ns4) ? '' : 'try {';
			code += 'begin = doc.cookie.indexOf("' + nameOfCookie + '=");';
			code += (is.ns4) ? '' : '} catch(e) {}';
			eval(code);
			if (begin != -1) { 
				begin += nameOfCookie.length+1; 
				var end = doc.cookie.indexOf(";", begin);
				if (end == -1) end = doc.cookie.length;
				return unescape(doc.cookie.substring(begin, end));
			} 
		}
		return null; 
	} 

	this.set = function (nameOfCookie, value, expiredays, doc) 
	{
		if (typeof(doc) == "undefined") doc = top.window.document;
		
		if (typeof(expiredays) == "undefined") expiredays = 10;

		var ExpireDate = new Date ();
		ExpireDate.setTime(ExpireDate.getTime() + (expiredays * 24 * 3600 * 1000));
		var code = '';
		code += (is.ns4) ? '' : 'try {';
		code += 'doc.cookie = "' + nameOfCookie + '=' + escape(value) + ((expiredays == null) ? '' : '; expires=' + ExpireDate.toGMTString()) + '"';
		code += (is.ns4) ? '' : '} catch(e) {}';
		eval(code);
	}

	this.remove = function (nameOfCookie, doc)
	{
		if (typeof(doc) == "undefined") doc = document;

		if (this.get(nameOfCookie)) {
			var code = '';
			code += (is.ns4) ? '' : 'try {';
			code += 'doc.cookie = "' + nameOfCookie + '=' + '; expires=Thu, 01-Jan-70 00:00:01 GMT"';
			code += (is.ns4) ? '' : '} catch(e) {}';
			eval(code);
		}
	} 
}

cookie = new Cookie();

//--

function getTopCommandUrl(name)
{
	var r = '';
	try {
		name = name.toLowerCase();
		sArgs = top.location.search.slice(1).split('&');
		for (var i = 0; i < sArgs.length; i++) {
			keyName = sArgs[i].slice(0, sArgs[i].indexOf('=')).toLowerCase();
			if (keyName == name) {
				r = sArgs[i].slice(sArgs[i].indexOf('=') + 1);
				break;
			}
		}
	} catch(e) {
		log.error(e + " : getTopCommandUrl name=" + name + "");
	}	
	return r;
}

//Detect ActiveX Architecture on Both IE and on Gecko
//Defer to plugin architecture for other browsers

var wmp64 = "{22D6F312-B0F6-11D0-94AB-0080C74C7E95}";
var wmp64Str = "MediaPlayer.MediaPlayer.1";
var wmp7_10 = "{6BF52A52-394A-11d3-B153-00C04F79FAA6}";
var wmp7_10Str = "WMPlayer.OCX.7";
	
function testForWMP() {
	var player;
	var plugin;
	var hasActiveX=false;
	
	try {
		if (window.ActiveXObject) {
			hasActiveX = true;
			player = new ActiveXObject("WMPlayer.OCX.7");
		} else if (window.GeckoActiveXObject) {
			hasActiveX = true;
			player = new GeckoActiveXObject("WMPlayer.OCX.7");
		}
	} catch (oError) { }
	
	try {
		if (navigator.mimeTypes) {
			plugin = navigator.mimeTypes['application/x-mplayer2'].enabledPlugin;
		}
	} catch (oError) { }
	
/*	var message = "Your browser "+ (hasActiveX ? "does" : " does not") +" support ActiveX. \n"
	message +=  "The Windows Media Player ActiveX control is"+ ( player ? "" : " not") +" installed. \n";
	message += "The Windows Media Plugin "+ (plugin ? "is installed" : "is not necessary for IE") + "\n";
	alert(message);	
*/
	return hasActiveX;
}

function createActiveXObject(id) {
	var error;
	var control = null;
	
	try {
		if (window.ActiveXObject) {
			control = new ActiveXObject(id);
		} else if (window.GeckoActiveXObject) {
			control = new GeckoActiveXObject(id);
		}
	} catch (error) { }
	return control;
}

function detectWMP() {
	var wmpInfo = {
		installed: false,
		scriptable: false,
		type: null,
		versionInfo: null
	};
	
	var wmp64 = "MediaPlayer.MediaPlayer.1";
	var wmp7 = "WMPlayer.OCX.7";
	
	if ((window.ActiveXObject && navigator.userAgent.indexOf('Windows') != -1) 
		|| window.GeckoActiveXObject) {
		wmpInfo.type = "ActiveX";
		var player = createActiveXObject(wmp7);
		if (player) {
			wmpInfo.installed = true;
			wmpInfo.scriptable = true;
			wmpInfo.versionInfo = player.versionInfo;
			return wmpInfo;
		} else {
			player = createActiveXObject(wmp64);
			if (player) {
				wmpInfo.installed = true;
				wmpInfo.scriptable = true;
				wmpInfo.versionInfo = "6.4";
				return wmpInfo;
			} else {
				wmpInfo.versionInfo = "none";
				return wmpInfo;
			}
		}
	} else if (navigator.mimeTypes) {
		wmpInfo.type = "NetscapePlugin";
		var player = navigator.mimeTypes['application/x-mplayer2'].enabledPlugin;
		if (player) {
			wmpInfo.installed = true;
			//wmpInfo.scriptable = false;
			wmpInfo.versionInfo = "PluginVersion";
			return wmpInfo;
		}
		return wmpInfo;
	}
}

function geckoActiveXInstaled () {
	if (navigator.plugins && navigator.plugins.length) {
		for (x=0; x<navigator.plugins.length; x++) {
			if (navigator.plugins[x].name.indexOf('ActiveX') != -1 && window.GeckoActiveXObject) {
				return true;
				break;
			}
		}
	}
	return false;
}

function printResults() {
	var detectionResults = detectWMP();

	var message = "Browser architecture supports: " + detectionResults.type + "\n";
	message += "Windows Media Player Installed: " + detectionResults.installed + "\n";
	if (detectionResults.installed) {
		message += "Windows Media Scriptable: " + detectionResults.scriptable + "\n";
		message += "Windows Media Version: " + detectionResults.versionInfo + "\n";
	}
	alert(message);	
}

function findPlayer(win) {
	// Search the window hierarchy for an object named "Player"
	// Look in the current window (win) and recursively look in any child frames
	if (win.player != null) return win.player;

	if (win.length > 0) {
		for(var i = 0; i < win.length; i++) {
			var thePlayer = findPlayer(win.frames[i]);
			if (thePlayer != null) return thePlayer;
		}
		if (win.parent != null) {
			var thePlayer = findPlayer(win.parent);
			if (thePlayer != null) return thePlayer;
		}
	}
	return null;
}

function getPlayer() {
	// start at the topmost window - findPlayer will recurse down through
	// all of the child frames
	
	if (parent.parent.player != null) return parent.parent.player;
	if (parent.player != null) return parent.player;

	var thePlayer = findPlayer(parent);
	// the Player wasn't found in the current window's hierarchy.  If the
	// current window has an opener (was launched by another window),
	// check the opener's window hierarchy.
	if (thePlayer == null) {
		if (typeof(opener) != "undefined") {
			if (opener != null) thePlayer = findPlayer(opener.top);
		}
	}
	return thePlayer;
}

function findFrame(name, frame)
{
	var oldFrameName = null;
	if (name == "navigation") {
		oldFrameName = "header";
	}

	if (typeof(frame) == "undefined") {
		frame = frames;
	}
	for (var i = 0; i < frame.length; i++) {
		if (frame[i].name == name || (oldFrameName && frame[i].name == oldFrameName)) {
			return frame[i];
		} else {
			var result = findFrame(name, frame[i]);
			if (result) return(result);
		}
	}
	return(null);
}

function findStruct(win)
{
	if (win.struct != null) return win.struct;

	if (win.length > 0) {
		for(var i = 0; i < win.length; i++) {
			var theStruct = findStruct(win.frames[i]);
			if (theStruct != null) return theStruct;
		}
	}
	return null;
}

function getStruct()
{
	var theStruct = findStruct(parent);
	if (theStruct == null) theStruct = findStruct(top);

	if(theStruct == null) {
		if(typeof(opener) != "undefined") {
			if(opener != null) theStruct = findStruct(opener.top);
		}
	}
	return theStruct;
}

function addVersionControl(millis) 
{
	date = new Date();
	var curDate = null;
	
	do { var curDate = new Date(); } 
	while(curDate-date < millis);
} 

function isInTable(tableToSearch, itemToSearch){	for (var i = 0; i < tableToSearch.length; i++) {		if(tableToSearch[i]==itemToSearch) return true;	}	return false;}
