﻿var SIFRLabel = new Class(
{
	initialize: function()
	{
		this.typeID = "sifrLbl";
		this.dataID = "sifrLbl_data";
		this.initializingButtons = [];

		uiDialog.registerPreInitHandler(this.typeID, this.preInit);
		uiDialog.registerInitHandler(this.typeID, this.init);
	},

	preInit: function(control, clientData)
	{
		var data = {};

		$extend(data, clientData[sifrLabel.typeID]);

		control.store(sifrLabel.dataID, data);

		sifrLabel.initializingButtons.push(control);

		var innerControl = control.getElement("." + data.sifrClass);

		if (innerControl != null)
		{
			var styles = sifrLabel.getCssStyles(innerControl);
			styles["leading"] = data.leading;

			sIFR.replace(sifrElements[data.sifrFlash],
				{
					elements: [innerControl],
					css:
					{
						'.sIFR-root': styles
					},
					forceSingleLine: data.singleLine,
					selectable: false,
					wmode: 'transparent',
					onReplacement: function(callbackInfo)
					{
						sifrLabel.onReplacement(control);
					}
				}
			);
		}
	},

	init: function(control, clientData)
	{

	},

	filterInitButtons: function(controlID)
	{
		var filteredButtons = [];

		for (var i = 0; i < sifrLabel.initializingButtons.length; i++)
		{
			var elButton = sifrLabel.initializingButtons[i];

			if (elButton.id != controlID && elButton.getParent() != null)
			{
				filteredButtons.push(elButton);
			}
		}

		sifrLabel.initializingButtons = filteredButtons;
	},

	onReplacement: function(control)
	{
		sifrLabel.filterInitButtons(control.id);
		//sifrLabel.initializingButtons.remove(sifrLabel.initializingButtons.indexOf(control));

		if (sifrLabel.initializingButtons.length == 0)
		{
			//document.title += ", Resizing";
			ui.onResize();
		}
	},

	getCssStyles: function(el)
	{
		var styles = el.getStyles("color", "font-weight", "font-style");

		if (styles["font-weight"] == 700)
		{
			styles["font-weight"] = "bold";
		}

		return styles;
	},

	getCssString: function(el, data)
	{
		var cssString = "";
		var elStyles = sifrLabel.getCssStyles(el);

		cssString += "color:" + elStyles["color"];
		cssString += ";font-weight:" + elStyles["font-weight"];
		cssString += ";font-style:" + elStyles["font-style"];
		cssString += ";leading:" + data.leading;

		return cssString;
	},

	updateSifr: function(button, data)
	{
		var flashEl = button.getElement(".sIFR-flash");
		var alternateEl = button.getElement(".sIFR-alternate");

		if (flashEl == null || alternateEl == null)
		{
			if (sIFR.ua.supported)
			{
				//document.title = "not ready yet " + sIFR.ua.supported;
				return;
			}

			//document.title = 'nja';
			return;
		}

		//document.title = 'working';

		var cssString = sifrLabel.getCssString(alternateEl, data);
		flashEl.changeCSS(".sIFR-root{" + cssString + "}");
	}
});

var sifrLabel = new SIFRLabel();