if (fpb_array == undefined)
{
	var fpb_array = new Array();
	StaticHandler_fpb_array("INIT");
}

function StaticHandler_fpb_array(event)
{
	var back = "";

	if (event == undefined)
		event = "RESIZE";

	if (typeof event == "object")
	    event = "RESIZE";

	switch(event)
	{
		case "RESIZE" :
			for (var i=0;i<fpb_array.length;i++)
				fpb_array[i].WindowResize.call(fpb_array[i]);
			break;

		case "INIT" :
			window.onresize = StaticHandler_fpb_array;
			break;

		case "NEWITEM" :
			fpb_array.push(arguments[1]);
			back = "fpb_array["+(fpb_array.length - 1)+"]";
			break;
	}

	return back;
}

function banner_fpb_v1()
{
	this.ADDCOVER   = "AddCover";
	this.RESIZE     = "Resize";
	this.ADDCONTENT = "AddContent";
	this.COUNTOPEN  = "CountOpen";
	this.COUNTJUMP  = "CountJump";

	this.gh      = new GeneralHelper();
	this.index   = "";
	this.overdiv = null;
	this.isopen  = false;


	this.WindowResize = function()
	{
		if (this.overswfid == null)
			return;

		var s    = this.gh.GetViewportSize();
		var f    = this.gh.GetFlashMovieObject(this.overswfid);
		f.width  = s[0];
		f.height = s[1];

		this.CallOverFunction(this.RESIZE,[f.width,f.height]);
	}

	this.CallSmallFunction = function(func,params)
	{
		if (this.smallswfid == null)
			return;

		var flash = this.gh.GetFlashMovieObject(this.smallswfid);
		switch(func)
		{
			case this.ADDCONTENT:
				return flash.AddContent();
				break;
			case this.COUNTOPEN:
				return flash.CountOpen();
				break;
		}
	};

	this.CallOverFunction = function(func,params)
	{
		if (this.overswfid == null)
			return;

		var flash = this.gh.GetFlashMovieObject(this.overswfid);
		switch(func)
		{
			case this.ADDCOVER:
				return flash.AddCover(params[0],params[1]);
				break;
			case this.RESIZE:
				return flash.Resize(params[0],params[1]);
				break;
			case this.COUNTJUMP:
				return flash.CountJump();
				break;
		}
		//return flash[func].apply(flash,params);
	};

	this.GetOverSize = function()
	{
		var over = this.gh.GetFlashMovieObject(this.overswfid);
		return [over.width,over.height];
	};

	this.EventHandler = function(type)
	{
		var back = "";

		switch(type)
		{
			case "COUNTOPEN" :
				this.CallSmallFunction(this.COUNTOPEN,[]);
				break;

			case "COUNTJUMP" :
				this.CallOverFunction(this.COUNTJUMP,[]);
				break;

			case "LITTLEREMOVE" :
				this.InitOver();
				break;

			case "REMOVE" :
				this.DoneOver();
				break;

			case "SETALPHA" :
				this.overdiv.style.opacity = "1.0";
				break;

			case "SOURCEPOS" :
				back = this.GetSmallPosition();
				break;

			case "CONSTRUCTOVER" :
				this.CallOverFunction(this.ADDCOVER,this.GetOverSize());
				break;

			case "ANIMTYPE" :
				this.overanimtype=arguments[1];
				this.InitOver();
				break;

			case "DEBUG" :
				var out = "";
				for (var i=1;i<arguments.length;i++)
					out = out + arguments[i] + (i != arguments.length - 1 ? ", " : "");

				if (out == "")
					out = "DEBUG";
				else
					out = "DEBUG: " + out;
				alert(out);
				break;
		}

		return back;
	}

	this.DoneOver = function()
	{
		if (!this.isopen)
			return;

		this.isopen = false;
		if (this.overdiv != null)
		{
			this.overdiv.innerHTML       = "";
			this.overdiv.style["width"]  = "1px";
			this.overdiv.style["height"] = "1px";

			document.getElementsByTagName("body").item(0).removeChild(this.overdiv);
		}
		this.overdiv   = null;
		this.overswfid = null;

		if (this.eventhandler != null)
			this.eventhandler.call(this.eventhandler,false);
		this.CallSmallFunction(this.ADDCONTENT,[]);
	};

	this.Create = function(parameters)
	{
		var require  = [  "smallhtmlid",
						  "smallswfurl",
						  "smallmovie",
				          "overtargetmovie",
					      "overtargeturl",
					      "overswfurl"];

		var optional = [ {"smallwidth"			   : 728},
						 {"smallheight"            : 90},
						 {"smallinteractive"       : 0},
						 {"smallopenurl"           : "default"},
						 {"smallcounteranimtype"   : "default"},

 						 {"overmoviewidth"         : 640},
						 {"overmovieheight"        : 480},
						 {"overtargettarget"       : "_blank"},
						 {"overinteractive"        : 0},
						 {"overcustompreloaderurl" : "default"},
						 {"overcustomcloseurl"     : "default"},
						 {"overanimtype"           : "default"},

						 {"eventhandler"           : null}];

		var i        = 0;
		var j        = null;
		var d        = null;
		var err      = new Array();
		var thr      = "";

		for (i=0;i<require.length;i++)
		{
			d = parameters[require[i]];
			if (typeof d == "undefined")
				err.push("\"" + require[i] + "\"");
			else
				this[require[i]] = d;
		}

		if (err.length != 0)
		{
			for (i=0;i<err.length;i++)
				thr = thr + err[i] + (i != err.length - 1 ? ", " : "");

			throw "ERROR - not defined in parameters:[ " + thr +" ] !";
		}

		for (i=0;i<optional.length;i++)
		{
			for (j in optional[i])
			{
				d = parameters[j];

				if (typeof d == "undefined")
					this[j] = optional[i][j];
				else
					this[j] = d;
			}
		}

		this.index       = StaticHandler_fpb_array("NEWITEM",this);
		this.overdiv     = null;
		this.overswfid   = null;
		this.smallmovie  = this.smallmovie + "?jshandler="+this.index+".EventHandler";
		this.overmovie   = this.overmovie + "?jshandler="+this.index+".EventHandler";
		this.overswfurl  = this.overswfurl + "?" + Math.floor(Math.random()*1000);
		this.smallswfurl = this.smallswfurl + "?" + Math.floor(Math.random()*1000);
		this.smallswfid  = this.gh.GenRandID();

		this.InitSmall();
	};

	this.GetParameters = function(who)
	{
		var back = "";
		if (who == "over")
		{
			var sp = this.GetSmallPosition();
			back   = "sourcex="+sp[0]+"&"+
					 "sourcey="+sp[1]+"&"+
					 "sourcew="+this.smallwidth+"&"+
					 "sourceh="+this.smallheight+"&"+
					 "contentwidth="+this.overmoviewidth+"&"+
					 "contentheight="+this.overmovieheight+"&"+
					 "animtype="+this.overanimtype+"&"+
					 "targetmovie="+this.overtargetmovie+"&"+
					 "targeturl="+this.overtargeturl+"&"+
					 "targettarget="+this.overtargettarget+"&"+
					 "interactive="+this.overinteractive+"&"+
					 "jshandler="+this.index+".EventHandler&"+
					 "custompreloaderurl="+this.overcustompreloaderurl+"&"+
					 "customcloseurl="+this.overcustomcloseurl+"&";
		}
		else
			back   = "smallmovie="+this.smallmovie+"&"+
					 "smallwidth="+this.smallwidth+"&"+
					 "smallheight="+this.smallheight+"&"+
					 "smallopenurl="+this.smallopenurl+"&"+
					 "smallcounteranimtype="+this.smallcounteranimtype+"&"+
					 "smallinteractive="+this.smallinteractive+"&"+
					 "jshandler="+this.index+".EventHandler&";
		return back;
	};

	this.InitSmall = function()
	{
		var towrite = document.getElementById(this.smallhtmlid);
		var flash   = this.gh.GetBackSWF
					  (
							'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0',
							'width', this.smallwidth,
							'height', this.smallheight,
							'src', this.smallswfurl,
							'quality', 'high',
							'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
							'align', 'left',
							'play', 'true',
							'loop', 'false',
							'scale', 'noscale',
							'wmode', 'transparent',
							'devicefont', 'false',
							'id', this.smallswfid,
							'name', this.smallswfid,
							'menu', 'false',
							'allowFullScreen', 'true',
							'allowScriptAccess','always',
							'movie', this.smallswfurl,
							'FlashVars', this.GetParameters("small"),
							'salign', 'lt'
					  );

		towrite.innerHTML = flash;
	}

	this.GetSmallPosition = function()
	{
		var small = document.getElementById(this.smallhtmlid);
		var sx    = this.gh.GetX(small);
		var sy    = this.gh.GetY(small);
		var hs    = 0;
		var vs    = 0;

		vs = document.body.scrollTop;
		if (vs == 0)
		{
		    if (window.pageYOffset)
		        vs = window.pageYOffset;
		    else
		        vs = (document.body.parentElement) ? document.body.parentElement.scrollTop : 0;
		}

		hs = document.body.scrollLeft;
		if (hs == 0)
		{
		    if (window.pageXOffset)
		        hs = window.pageXOffset;
		    else
		        hs = (document.body.parentElement) ? document.body.parentElement.scrollLeft : 0;
		}

		return [sx - hs,sy - vs];
	};

	this.InitOver = function()
	{
		if (this.isopen)
			return;

		this.isopen = true;

		if (this.eventhandler != null)
			this.eventhandler.call(this.eventhandler,true);

		this.overdiv   = document.createElement("div");
		this.overswfid = this.gh.GenRandID();
		var body       = document.getElementsByTagName("body").item(0);
		var size       = this.gh.GetViewportSize();
		var overflash  = this.gh.GetBackSWF
						 (
								'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0',
								'width', size[0],
								'height', size[1],
								'src', this.overswfurl,
								'quality', 'high',
								'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
								'align', 'left',
								'play', 'true',
								'loop', 'false',
								'scale', 'noscale',
								'wmode', 'transparent',
								'devicefont', 'false',
								'id', this.overswfid,
								'name', this.overswfid,
								'menu', 'false',
								'allowFullScreen', 'true',
								'allowScriptAccess','always',
								'movie', this.overswfurl,
								'FlashVars', this.GetParameters("over"),
								'salign', 'lt'
						 );


		this.overdiv.setAttribute('id',this.gh.GenRandID());
		this.overdiv.style.position = 'fixed';
		this.overdiv.style.top      = '0px';
		this.overdiv.style.left     = '0px';
		this.overdiv.style.zIndex   = Math.floor(Math.random() * 10000) + 10000;

		/*
		this.overdiv.style.color           = "#111111";
		this.overdiv.style.backgroundColor = "#ff0000";
		*/

		//-----------------------------------------------------------//
		this.overdiv.style.opacity         = "0.0";
		//-----------------------------------------------------------//

		body.insertBefore(this.overdiv,body.firstChild);

		this.overdiv.innerHTML = overflash;
	};

}

function GeneralHelper()
{
	this.isIE6	 = ((window.XMLHttpRequest == undefined) && (ActiveXObject != undefined));
	this.isFF    = (navigator.userAgent.indexOf("Firefox") != -1)            ? true : false;
	this.isIE    = (navigator.appVersion.indexOf("MSIE") != -1)              ? true : false;
	this.isWin   = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
	this.isOpera = (navigator.userAgent.indexOf("Opera") != -1)              ? true : false;

	this.GenRandID = function()
	{
		return "id_" + Math.floor(Math.random()*1000) + "_" + Math.floor(Math.random()*1000) + "_" + Math.floor(Math.random()*1000) + "_" + Math.floor(Math.random()*1000);
	}

	this.AC_AddExtension = function(src, ext)
	{
	  if (src.indexOf('?') != -1)
	    return src.replace(/\?/, ext+'?');
	  else
	    return src + ext;
	};

	this.Generateobj = function(objAttrs, params, embedAttrs)
	{
	  var str = '';
	  if (this.isIE && this.isWin && !this.isOpera)
	  {
	    str += '<object ';
	    for (var i in objAttrs)
	    {
	      str += i + '="' + objAttrs[i] + '" ';
	    }
	    str += '>';
	    for (var i in params)
	    {
	      str += '<param name="' + i + '" value="' + params[i] + '" /> ';
	    }
	    str += '</object>';
	  }
	  else
	  {
	    str += '<embed ';
	    for (var i in embedAttrs)
	    {
	      str += i + '="' + embedAttrs[i] + '" ';
	    }
	    str += '> </embed>';
	  }

	  return str;
	};

	this.GetBackSWF = function()
	{
	  var ret = this.AC_GetArgs(arguments,
               				    ".swf",
							    "movie",
							    "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000",
		                        "application/x-shockwave-flash");

	  return this.Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
	};

	this.AC_GetArgs = function(args, ext, srcParamName, classid, mimeType){
	  var ret = new Object();
	  ret.embedAttrs = new Object();
	  ret.params = new Object();
	  ret.objAttrs = new Object();
	  for (var i=0; i < args.length; i=i+2){
	    var currArg = args[i].toLowerCase();

	    switch (currArg){
	      case "classid":
	        break;
	      case "pluginspage":
	        ret.embedAttrs[args[i]] = args[i+1];
	        break;
	      case "src":
	      case "movie":
	        args[i+1] = this.AC_AddExtension(args[i+1], ext);
	        ret.embedAttrs["src"] = args[i+1];
	        ret.params[srcParamName] = args[i+1];
	        break;
	      case "type":
	      case "codebase":
	      case "id":
	        ret.objAttrs[args[i]] = args[i+1];
	        break;
	      case "width":
	      case "height":
	      case "align":
	      case "vspace":
	      case "hspace":
	      case "class":
	      case "title":
	      case "accesskey":
	      case "name":
	      case "tabindex":
	        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
	        break;
	      default:
	        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
	    }
	  }
	  ret.objAttrs["classid"] = classid;
	  if (mimeType) ret.embedAttrs["type"] = mimeType;
	  return ret;
	};

	this.GetX = function(obj)
	{
		var curleft = 0;

		if(obj.offsetParent)
		{
			while(1)
			{
		  		curleft += obj.offsetLeft;
		  		if (!obj.offsetParent)
		    		break;
		  		obj = obj.offsetParent;
			}
		}
		else
			if (obj.x)
				curleft += obj.x;

		return curleft;
	};

	this.GetY = function(obj)
	{
		var curtop = 0;

		if(obj.offsetParent)
		{
			while(1)
			{
		  		curtop += obj.offsetTop;
		  		if (!obj.offsetParent)
		    		break;
		  		obj = obj.offsetParent;
			}
		}
		else
			if (obj.y)
				curtop += obj.y;
		return curtop;
	};

	this.GetViewportSize = function()
	{
		var viewportwidth;
		var viewportheight;

		if (typeof window.innerWidth != 'undefined') // the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight
		{
			viewportwidth  = window.innerWidth,
			viewportheight = window.innerHeight
		}
		else										// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)
			if (typeof document.documentElement != 'undefined' &&
			typeof document.documentElement.clientWidth != 'undefined' &&
			document.documentElement.clientWidth != 0)
			{
				viewportwidth  = document.documentElement.clientWidth,
				viewportheight = document.documentElement.clientHeight
			}
			else               						// older versions of IE
			{
			   	viewportwidth  = document.getElementsByTagName('body')[0].clientWidth,
			   	viewportheight = document.getElementsByTagName('body')[0].clientHeight
			}


		if (this.isFF)
		{
	    	var hasvs = document.body.scrollHeight > viewportheight;
	    	var hashs = document.body.scrollWidth  > viewportwidth;

	    	if (hasvs)
	    		viewportwidth -= 16;

	    	if (hashs)
	    		viewportheight -= 16;
	    }

		return [viewportwidth,viewportheight];
	};

	this.GetFlashMovieObject = function(moviename)
	{
		if (window.document[moviename])
			return window.document[moviename];

		if (navigator.appName.indexOf("Microsoft Internet") == -1)
		{
			if (document.embeds && document.embeds[moviename])
				return document.embeds[moviename];
		}
		else
			return document.getElementById(moviename);
	};

	this.GetElementByClass = function(theClass)
	{
		var retnode = [];
		var myclass = new RegExp('\\b'+theClass+'\\b');
		var elem    = document.getElementsByTagName('*');

		for (var i = 0; i < elem.length; i++)
		{
			var classes = elem[i].className;
			if (myclass.test(classes))
				retnode.push(elem[i]);
		}

		return retnode;
	};
};
