﻿var SIFRButton = new Class(
{
	initialize: function()
	{
		this.initializingButtons = [];
	},

	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)
	{
		var cssString = "";
		var elStyles = sifrButton.getCssStyles(el);

		cssString += "color:" + elStyles["color"];
		cssString += ";font-weight:" + elStyles["font-weight"];
		cssString += ";font-style:" + elStyles["font-style"];
		cssString += ";leading:" + el.getParent().retrieve("leading");

		return cssString;
	},

	updateSifr: function(button)
	{
		var flashEl = button.retrieve("flashEl", button.getElement(".sIFR-flash"));
		var alternateEl = button.retrieve("alternateEl", button.getElement(".sIFR-alternate"));

		if (flashEl == null || flashEl.changeCSS == null || alternateEl == null)
		{
			if (sIFR.ua.supported)
			{
				//document.title = "not ready yet " + sIFR.ua.supported;
				return;
			}

			//document.title = 'nja';
			return;
		}

		button.store("flashEl", flashEl);
		button.store("alternateEl", alternateEl);

		var cssString = sifrButton.getCssString(alternateEl);
		flashEl.changeCSS(".sIFR-root{" + cssString + "}");
	},

	onMouseEnter: function()
	{
		if (this.retrieve("activated"))
		{
			return;
		}

		ajaxCssButton.onMouseEnter.bind(this)();
		sifrButton.updateSifr(this);
	},

	onMouseLeave: function()
	{
		if (this.retrieve("activated"))
		{
			return;
		}

		ajaxCssButton.onMouseLeave.bind(this)();
		sifrButton.updateSifr(this);
	},

	deactivate: function(button, updateGroup)
	{
		ajaxCssButton.deactivate(button, updateGroup);
		sifrButton.updateSifr(button);
	},

	activate: function(button, updateGroup)
	{
		ajaxCssButton.activate(button, updateGroup);
		sifrButton.updateSifr(button);
	},

	onClick: function()
	{
		if (this.section != "")
		{
			sifrButton.activate(this);
		}
	},

	onReplacement: function(control)
	{
		sifrButton.initializingButtons.remove(sifrButton.initializingButtons.indexOf(control));

		if (sifrButton.initializingButtons.length == 0)
		{
			//document.title += ", Resizing";
			ui.onResize();
		}
	},

	init: function(dialogID, controlID, sifrFlash, sifrClass, isActivated, singleLine, leading)
	{
		var control = ui.getNestedControl(dialogID, controlID);

		if (control == null)
		{
			return;
		}

		control.store("sifrClass", sifrClass);

		//		control["isSIFR"] = true;
		//		control["sifrClass"] = sifrClass;

		control.removeEvent('mouseenter', ajaxCssButton.onMouseEnter);
		control.removeEvent('mouseleave', ajaxCssButton.onMouseLeave);
		control.removeEvent('activate', ajaxCssButton.activate);
		control.removeEvent('deactivate', ajaxCssButton.deactivate);

		control.addEvent('mouseenter', sifrButton.onMouseEnter);
		control.addEvent('mouseleave', sifrButton.onMouseLeave);
		control.addEvent('activate', sifrButton.activate);
		control.addEvent('deactivate', sifrButton.deactivate);

		sifrButton.initializingButtons.push(control);

		//		if (isActivated == true)
		//		{
		//			ajaxCssButton.activate(control);
		//		}

		var innerControl = control.getElement("." + sifrClass);

		if (innerControl != null)
		{
			innerControl.store("leading", leading);

			var styles = sifrButton.getCssStyles(innerControl);
			styles["leading"] = leading;

			sIFR.replace(sifrElements[sifrFlash],
				{
					elements: [innerControl],
					css:
					{
						'.sIFR-root': styles
					},
					forceSingleLine: singleLine,
					leading: styles["leading"],
					selectable: false,
					wmode: 'transparent',
					onRelease: function(callbackInfo)
					{
						if (Browser.Engine.trident == true)
						{
							var parentDiv = $(callbackInfo.getAlternate()).getParent();
							var ieRouteFunc = parentDiv.click;

							if (ieRouteFunc)
							{
								ieRouteFunc();
							}
						}
					}
					//					onReplacement : function(callbackInfo)
					//					{
					//						ui.onResize();
					//						//sifrButton.onReplacement(control);
					//					}
				}
			);
		}
	}
});

var sifrButton = new SIFRButton();