/*
	XPDOM Cross-Platform DOM 
	Compatibility Wrapper for Web Scripting with W3C DOM
	using  W3C Java DOM interfaces.
	http://xpdom.sourceforge.net
	http://www.sourceforge.net/projects/xpdom

	(c) 2000-2002, José María Arranz Santamaría
	mailto:jmarranz@users.sourceforge.net
	mailto:jmarranz@eresmas.com
	(Spanish citizen)
 
	Copyright of this library is covered with GNU General Public License (GPL) v2
	(see file COPYING)

	Comercial use at commercial web sites is forbidden without a license
	of the author.
*/


// CSSDOMImplementation Interface (Auxiliar)
// **************************************
function xpdom_dom_CSSDOMImplementation() 
{
	this.CSSDOMImplementation_init_constants = init_constants;
	this.CSSDOMImplementation_finalize_constants = finalize_constants;

	function init_constants(native_window)
	{
		if (!native_window.CSSValue_init_constants)
		{
			native_window.CSSValue_init_constants = xpdom_dom_CSSValue_init_constants;
			native_window.CSSValue_init_constants();
		}

		if (!native_window.CSSPrimitiveValue_init_constants)
		{
			native_window.CSSPrimitiveValue_init_constants = xpdom_dom_CSSPrimitiveValue_init_constants;
			native_window.CSSPrimitiveValue_init_constants();
		}

		if (!native_window.RGBColor_init_constants)
		{
			native_window.RGBColor_init_constants = xpdom_dom_RGBColor_init_constants;
			native_window.RGBColor_init_constants();
		}
	}

	function finalize_constants(native_window) // Only MSIE
	{
		native_window.CSSValue = null;
		native_window.CSSValue_init_constants = null;

		native_window.CSSPrimitiveValue = null;
		native_window.CSSPrimitiveValue_init_constants = null;
		
		native_window.RGBColor = null;
		native_window.RGBColor_init_constants = null;

		native_window.CSS2Properties = null;
		native_window.CSS2Properties_init_constants = null;

		native_window.Rect = null;
		native_window.Rect_init_constants = null;
	}
}


// ElementCSSInlineStyle Interface
// **************************************

// CSSValue  Interface
// **************************************
function xpdom_dom_CSSValue_init_constants()
{
	// Context caller : a Window object
	if (!this.CSSValue)
	{
		this.CSSValue = new Object();
	}

	this.CSSValue.CSS_INHERIT				= 0;
	this.CSSValue.CSS_PRIMITIVE_VALUE		= 1;
	this.CSSValue.CSS_VALUE_LIST			= 2;
	this.CSSValue.CSS_CUSTOM				= 3;
}

function xpdom_dom_CSSValue(objstyle,cssValueInfo)
{
	// Methods
	this.toString = toString;

	this.getCssText = getCssText;
	this.setCssText = setCssText;
	this.getCssValueType = getCssValueType;

	// Props
	this.aux_objstyle = objstyle;
	this.aux_staticInfo = cssValueInfo;

	function toString()
	{
		return "[object CSSValue]";
	}

	function getCssText()
	{
		return this.aux_staticInfo.getValue(this.aux_objstyle);
	}

	function setCssText(cssText)
	{
		this.aux_staticInfo.setValue(this.aux_objstyle,cssText);
	}

	function getCssValueType()
	{
		return this.aux_staticInfo.cssValueType;
	}
}


// CSSValueInfo (Aux)
function xpdom_dom_CSSValueInfo(name,getFunction,setFunction,defaultValue,cssValueType)
{
	this.PropertyInfo = xpdom_dom_PropertyInfo;
	this.PropertyInfo(name,getFunction,setFunction,defaultValue);

	// Bind
	this.toString = toString;
	this.getCssValueType = getCssValueType;
	this.createCSSValue = null; // pure virtual

	// Props
	this.cssValueType = cssValueType;

	function toString()
	{
		return "[object CSSValueInfo]";
	}

	function getCssValueType()
	{
		return this.cssValueType;
	}
}

// CSSPrimitiveValue   Interface
// **************************************
function xpdom_dom_CSSPrimitiveValue_init_constants()
{
	if (!this.CSSPrimitiveValue)
	{
		this.CSSPrimitiveValue = new Object();
	}

	var obj = this.CSSPrimitiveValue;
	obj.aux_units = new Array();

	obj.CSS_UNKNOWN		= 0;	obj.aux_units[0] = "";
	obj.CSS_NUMBER		= 1;	obj.aux_units[1] = "";
	obj.CSS_PERCENTAGE	= 2;	obj.aux_units[2] = "%";		obj.aux_units["%"] = 2;
	obj.CSS_EMS			= 3;	obj.aux_units[3] = "em";	obj.aux_units["em"] = 3;
	obj.CSS_EXS			= 4;	obj.aux_units[4] = "ex";	obj.aux_units["ex"] = 4;
	obj.CSS_PX			= 5;	obj.aux_units[5] = "px";	obj.aux_units["px"] = 5;
	obj.CSS_CM			= 6;	obj.aux_units[6] = "cm";	obj.aux_units["cm"] = 6;
	obj.CSS_MM			= 7;	obj.aux_units[7] = "mm";	obj.aux_units["mm"] = 7;
	obj.CSS_IN			= 8;	obj.aux_units[8] = "in";	obj.aux_units["in"] = 8;
	obj.CSS_PT			= 9;	obj.aux_units[9] = "pt";	obj.aux_units["pt"] = 9;
	obj.CSS_PC			= 10;	obj.aux_units[10] = "pc";	obj.aux_units["pc"] = 10;
	obj.CSS_DEG			= 11;	obj.aux_units[11] = "deg";	obj.aux_units["deg"] = 11;
	obj.CSS_RAD			= 12;	obj.aux_units[12] = "rad";	obj.aux_units["rad"] = 12;
	obj.CSS_GRAD		= 13;	obj.aux_units[13] = "grad"; obj.aux_units["grad"] = 13;
	obj.CSS_MS			= 14;	obj.aux_units[14] = "ms";	obj.aux_units["ms"] = 14;
	obj.CSS_S			= 15;	obj.aux_units[15] = "s";	obj.aux_units["s"] = 15;
	obj.CSS_HZ			= 16;	obj.aux_units[16] = "hz";	obj.aux_units["hz"] = 16;
	obj.CSS_KHZ			= 17;	obj.aux_units[17] = "khz";	obj.aux_units["khz"] = 17;
	obj.CSS_DIMENSION	= 18;	obj.aux_units[18] = "";
	obj.CSS_STRING		= 19;	obj.aux_units[19] = "";
	obj.CSS_URI			= 20;	obj.aux_units[20] = "";		obj.aux_units["url"] = 20;
	obj.CSS_IDENT		= 21;	obj.aux_units[21] = "";
	obj.CSS_ATTR		= 22;	obj.aux_units[22] = "";		obj.aux_units["attr"] = 22;
	obj.CSS_COUNTER		= 23;	obj.aux_units[23] = "";		obj.aux_units["counter"] = 23;
	obj.CSS_RECT		= 24;	obj.aux_units[24] = "";		obj.aux_units["rect"] = 24;
	obj.CSS_RGBCOLOR	= 25;	obj.aux_units[25] = "";		obj.aux_units["rgb"] = 25;
}


function xpdom_dom_CSSPrimitiveValue(objstyle,cssPrimValueInfo)
{
	this.CSSValue = xpdom_dom_CSSValue;
	this.CSSValue(objstyle,cssPrimValueInfo);
	
	// Methods
	this.toString = toString;
	this.getPrimitiveType = getPrimitiveType;
	this.setFloatValue = setFloatValue;
	this.getFloatValue = getFloatValue;
	this.setStringValue = setStringValue;
	this.getStringValue = getStringValue;
	this.getCounterValue = getCounterValue;
	this.getRectValue = getRectValue;
	this.getRGBColorValue = getRGBColorValue;

	this.aux_getPrimitiveTypeFromString = getPrimitiveTypeFromString;

	function toString()
	{
		return "[object CSSPrimitiveValue]";
	}

	function getPrimitiveTypeFromString(cssTextValue) // Aux
	{
		var len = cssTextValue.length;
		if (len == 0) return window.CSSPrimitiveValue.CSS_UNKNOWN;

		var cssNumber = parseFloat(cssTextValue);
		if (isNaN(cssNumber)) // Not a number
		{
			var prefix = cssTextValue.substring(0,cssTextValue.indexOf("("));
			var primType = window.CSSPrimitiveValue.aux_units[prefix];
			if (typeof(primType) != "undefined") return primType;			

			if ((cssTextValue.charAt(0) == "#")|| (typeof(window.RGBColor.aux_list_named[cssTextValue]) != "undefined") )
				return window.CSSPrimitiveValue.CSS_RGBCOLOR;

			if ((cssTextValue.indexOf(" ") == -1) && (cssTextValue.indexOf(",") == -1) ) // Not a list of names
				return window.CSSPrimitiveValue.CSS_IDENT;

			return window.CSSPrimitiveValue.CSS_STRING;
		}
		else // Is a number + text
		{
			var suffix = "";
			for(var i=len - 1; i >= 0; i--)
			{
				var letter = cssTextValue.charAt(i);
				if (!isNaN(parseInt(letter))) break; // is a number
				suffix = letter + suffix;
			}

			var primType = window.CSSPrimitiveValue.aux_units[suffix];
			if (typeof(primType) != "undefined") return primType;

			if (suffix != "") return window.CSSPrimitiveValue.CSS_UNKNOWN; // unit unknown

			return window.CSSPrimitiveValue.CSS_NUMBER; // No unit (more general than CSS_DIMENSION)
		}
	}

	function getPrimitiveType()
	{
		return this.aux_getPrimitiveTypeFromString(this.getCssText());
	}

	function setFloatValue(unitType,floatValue)
	{
		var unit = window.CSSPrimitiveValue.aux_units[unitType];
		this.setCssText(floatValue + unit);
	}

	function getFloatValue(unitType)
	{
		// TODO: convert to unitType
		return parseInt(this.getCssText());
	}

	function setStringValue(stringType,stringValue)
	{
		if ((stringType >= 19) && (stringType <= 22)) // CSS_STRING,URI,IDENT,ATTR
			this.setCssText(stringValue);
	}

	function getStringValue()
	{
		return this.getCssText();
	}

	function getCounterValue()
	{
		return null; // Not implemented
	}

	function getRectValue()
	{
		// Not check to increase performance: if (this.getPrimitiveType() != window.CSSPrimitiveValue.CSS_RECT) return null;
		return new xpdom_dom_Rect(this);
	}

	function getRGBColorValue()
	{
		// Not check to increase performance: if (this.getPrimitiveType() != window.CSSPrimitiveValue.CSS_RGBCOLOR) return null;
		return new xpdom_dom_RGBColor(this);
	}
}


// CSSPrimitiveValueInfo (Aux)
function xpdom_dom_CSSPrimitiveValueInfo(name,getFunction,setFunction,defaultValue)
{
	this.CSSValueInfo = xpdom_dom_CSSValueInfo;
	this.CSSValueInfo(name,getFunction,setFunction,defaultValue,window.CSSValue.CSS_PRIMITIVE_VALUE);

	// Bind
	this.toString = toString;
	this.createCSSValue = createCSSValue; // virtual

	// Props

	function toString()
	{
		return "[object CSSPrimitiveValueInfo]";
	}

	function createCSSValue(styleElemObj)
	{
		return new xpdom_dom_CSSPrimitiveValue(styleElemObj,this);
	}
}

// Rect Interface
// **************************************

function xpdom_dom_Rect(primValueObj)
{
	// Represents: rect(top right bottom left)
	this.toString = toString;
	this.getTop = getTop;
	this.getRight = getRight;
	this.getBottom = getBottom;	
	this.getLeft = getLeft;	

	// Aux
	this.aux_getTopValue = getTopValue;
	this.aux_setTopValue = setTopValue;
	this.aux_getRightValue = getRightValue;
	this.aux_setRightValue = setRightValue;
	this.aux_getBottomValue = getBottomValue;
	this.aux_setBottomValue = setBottomValue;
	this.aux_getLeftValue = getLeftValue;
	this.aux_setLeftValue = setLeftValue;

	this.aux_getRectEntries = getRectEntries;
	this.aux_setRectEntry = setRectEntry;

	// Props
	this.aux_primValueObj = primValueObj;

	if (!window.Rect) window.Rect = new Object(); // Note: in Nav4 exists a native Rect object class
	if (!window.Rect.aux_propInfoTop)
	{
		window.Rect.aux_propInfoTop = new xpdom_dom_CSSPrimitiveValueInfo("",this.aux_getTopValue,this.aux_setTopValue,"");
		window.Rect.aux_propInfoRight = new xpdom_dom_CSSPrimitiveValueInfo("",this.aux_getRightValue,this.aux_setRightValue,"");
		window.Rect.aux_propInfoBottom = new xpdom_dom_CSSPrimitiveValueInfo("",this.aux_getBottomValue,this.aux_setBottomValue,"");
		window.Rect.aux_propInfoLeft = new xpdom_dom_CSSPrimitiveValueInfo("",this.aux_getLeftValue,this.aux_setLeftValue,"");
	}

	this.aux_primValueTop = new xpdom_dom_CSSPrimitiveValue(this,window.Rect.aux_propInfoTop);
	this.aux_primValueRight = new xpdom_dom_CSSPrimitiveValue(this,window.Rect.aux_propInfoRight);
	this.aux_primValueBottom = new xpdom_dom_CSSPrimitiveValue(this,window.Rect.aux_propInfoBottom);
	this.aux_primValueLeft = new xpdom_dom_CSSPrimitiveValue(this,window.Rect.aux_propInfoLeft);

	function toString()
	{
		return "[object Rect]";
	}

	function getTop()
	{
		return this.aux_primValueTop;
	}

	function getRight()
	{
		return this.aux_primValueRight;
	}

	function getBottom()
	{
		return this.aux_primValueBottom;
	}

	function getLeft()
	{
		return this.aux_primValueLeft;
	}
	
	// Aux
	function getTopValue()
	{
		var entries = this.aux_getRectEntries();
		return entries[0];
	}

	function setTopValue(value)
	{
		this.aux_setRectEntry("top",value);
	}

	function getRightValue()
	{
		var entries = this.aux_getRectEntries();
		return entries[1];
	}

	function setRightValue(value)
	{
		this.aux_setRectEntry("right",value);
	}

	function getBottomValue()
	{
		var entries = this.aux_getRectEntries();
		return entries[2];
	}

	function setBottomValue(value)
	{
		this.aux_setRectEntry("bottom",value);
	}

	function getLeftValue()
	{
		var entries = this.aux_getRectEntries();
		return entries[3];
	}

	function setLeftValue(value)
	{
		this.aux_setRectEntry("left",value);
	}

	function getRectEntries() 
	{
		var rectstr = this.aux_primValueObj.getCssText();

		rectstr = rectstr.slice(5,rectstr.length-1);
		var entries = rectstr.split(" ");

		return entries;
	}

	function setRectEntry(index,value)
	{
		var entries = this.aux_getRectEntries();

		if (index == "top") entries[0] = value;
		else if (index == "right") entries[1] = value;
		else if (index == "bottom") entries[2] = value; 
		else if (index == "left") entries[3] = value;

		var rectstr = "rect(" + entries[0] + " " + entries[1] + " " + entries[2] + " " + entries[3] +")";
		this.aux_primValueObj.setCssText(rectstr);
	}
}

// RGBColor Interface
// **************************************
function xpdom_dom_RGBColor_init_constants()
{
	// caller context : a window object
	if (!this.RGBColor) this.RGBColor = new Object(); 

	var colors = new Array();
	this.RGBColor.aux_list_named = colors;
	
	colors["black"] = "#000000";
	colors["green"] = "#008000";
	colors["silver"] = "#C0C0C0";
 	colors["lime"] = "#00FF00";
 	colors["gray"] = "#808080";
 	colors["olive"] = "#808000";
 	colors["white"] = "#FFFFFF";
 	colors["yellow"] = "#FFFF00";
 	colors["maroon"] = "#800000";
 	colors["navy"] = "#000080";
 	colors["red"] = "#FF0000";
 	colors["blue"] = "#0000FF";
 	colors["purple"] = "#800080";
 	colors["teal"] = "#008080";
 	colors["fuchsia"] = "#FF00FF";
 	colors["aqua"] = "#00FFFF";
}

function xpdom_dom_RGBColor(primValueObj)
{
	// Represents formats: rgb(red,green,blue) or #FFFFFF or namedcolor 
	this.toString = toString;
	this.getRed = getRed;
	this.getGreen = getGreen;
	this.getBlue = getBlue;	

	// Aux
	this.aux_getRedValue = getRedValue;
	this.aux_setRedValue = setRedValue;
	this.aux_getGreenValue = getGreenValue;
	this.aux_setGreenValue = setGreenValue;
	this.aux_getBlueValue = getBlueValue;
	this.aux_setBlueValue = setBlueValue;

	this.aux_getRGBEntries = getRGBEntries;
	this.aux_setRGBEntry = setRGBEntry;

	// Props
	this.aux_primValueObj = primValueObj;

	if (!window.RGBColor.aux_propInfoRed)
	{
		window.RGBColor.aux_propInfoRed = new xpdom_dom_CSSPrimitiveValueInfo("",this.aux_getRedValue,this.aux_setRedValue,"");
		window.RGBColor.aux_propInfoGreen = new xpdom_dom_CSSPrimitiveValueInfo("",this.aux_getGreenValue,this.aux_setGreenValue,"");
		window.RGBColor.aux_propInfoBlue = new xpdom_dom_CSSPrimitiveValueInfo("",this.aux_getBlueValue,this.aux_setBlueValue,"");
 	}

	this.aux_primValueRed = new xpdom_dom_CSSPrimitiveValue(this,window.RGBColor.aux_propInfoRed);
	this.aux_primValueGreen = new xpdom_dom_CSSPrimitiveValue(this,window.RGBColor.aux_propInfoGreen);
	this.aux_primValueBlue = new xpdom_dom_CSSPrimitiveValue(this,window.RGBColor.aux_propInfoBlue);

	function toString()
	{
		return "[object RGBColor]";
	}

	function getRed()
	{
		return this.aux_primValueRed;
	}

	function getGreen()
	{
		return this.aux_primValueGreen;
	}

	function getBlue()
	{
		return this.aux_primValueBlue;
	}

	// Aux
	function getRedValue()
	{
		var entries = this.aux_getRGBEntries();
		return entries[0];
	}

	function setRedValue(value)
	{
		this.aux_setRGBEntry("red",value);
	}

	function getGreenValue()
	{
		var entries = this.aux_getRGBEntries();
		return entries[1];
	}

	function setGreenValue(value)
	{
		this.aux_setRGBEntry("green",value);
	}

	function getBlueValue()
	{
		var entries = this.aux_getRGBEntries();
		return entries[2];
	}

	function setBlueValue(value)
	{
		this.aux_setRGBEntry("blue",value);
	}

	function getRGBEntries() 
	{
		var	entries;
		var rgbstr = this.aux_primValueObj.getCssText();

		var format = 0;

		if (rgbstr.slice(0,3) == "rgb") format = 0;
		else if (rgbstr.charAt(0) == "#") format = 1;
		else // named color
		{
			rgbstr = window.RGBColor.aux_list_named[rgbstr];
			format = 1;
		}

		if (format == 0)
		{
			rgbstr = rgbstr.slice(4,rgbstr.length-1);
			entries = rgbstr.split(",");
		}
		else // hex
		{
			entries = new Array(3);
			entries[0] = parseInt("0x" + rgbstr.slice(1,3));
			entries[1] = parseInt("0x" + rgbstr.slice(3,5));
			entries[2] = parseInt("0x" + rgbstr.slice(5,7));
		}

		return entries;
	}

	function setRGBEntry(index,value)
	{
		var entries = this.aux_getRGBEntries();

		if (index == "red") entries[0] = value;
		else if (index == "green") entries[1] = value;
		else if (index == "blue") entries[2] = value; 

		var rgbstr = "rgb(" + entries[0] + "," + entries[1] + "," + entries[2] + ")";
		this.aux_primValueObj.setCssText(rgbstr);
	}
}


// CSSValueList   Interface
// **************************************

function xpdom_dom_CSSValueList(objstyle,cssValueListInfo)
{
	this.CSSValue = xpdom_dom_CSSValue;
	this.CSSValue(objstyle,cssValueListInfo);

	// Methods
	this.toString = toString;
	this.getLength = getLength;
	this.item = item;

	this.aux_split = split;
	this.aux_getItemValue = getItemValue;
	this.aux_setItemValue = setItemValue;

	function toString()
	{
		return "[object CSSValueList]";
	}

	function getLength()
	{
		var entries = this.aux_split();
		return entries.length;
	}

	function item(index)
	{
		var entries = this.aux_split();
		if (index > (entries.length - 1)) return null;
		return new xpdom_dom_CSSValueListItem(this,this.aux_staticInfo.primitiveValueInfoItems,index);
	}

	function split() // Aux
	{
		var csstext = this.getCssText();
		csstext = csstext.slice(0,csstext.length);
		entries = csstext.split(",");
		return entries;
	}

	function getItemValue(index) // Aux
	{
		var entries = this.aux_split();
		if (index > (entries.length - 1)) return null;
		return entries[index];
	}

	function setItemValue(index,newValue) // Aux
	{
		var entries = this.aux_split();
		var cssText = "";
		var len = entries.length;
		for(var i=0; i < len; i++)
		{
			if (i > 0) cssText += ",";
			if (i != index) cssText += entries[i];
			else cssText += newValue;
		}
		this.setCssText(cssText);
	}
}


// CSSValueListInfo (Aux)
function xpdom_dom_CSSValueListInfo(name,getFunction,setFunction,defaultValue)
{
	this.CSSValueInfo = xpdom_dom_CSSValueInfo;
	this.CSSValueInfo(name,getFunction,setFunction,defaultValue,window.CSSValue.CSS_VALUE_LIST);

	// Bind
	this.toString = toString;
	this.createCSSValue = createCSSValue; // virtual

	// Props
	this.primitiveValueInfoItems = new xpdom_dom_CSSPrimitiveValueInfo("",null,null,"");

	function toString()
	{
		return "[object CSSValueListInfo]";
	}

	function createCSSValue(styleElemObj)
	{
		return new xpdom_dom_CSSValueList(styleElemObj,this);
	}
}


// CSSShortHandValue Auxiliar  Interface
// **************************************

function xpdom_dom_CSSShortHandValue(objstyle,cssShortHandInfo)
{
	this.CSSValue = xpdom_dom_CSSValue;
	this.CSSValue(objstyle,cssShortHandInfo);

	// Methods
	this.toString = toString;

	function toString()
	{
		return "[object CSSShortHandValue]";
	}
}


// CSSShortHandValueInfo (Aux)
function xpdom_dom_CSSShortHandValueInfo(name,getFunction,setFunction,defaultValue)
{
	this.CSSValueInfo = xpdom_dom_CSSValueInfo;
	this.CSSValueInfo(name,getFunction,setFunction,defaultValue,window.CSSValue.CSS_CUSTOM);

	// Bind
	this.toString = toString;
	this.createCSSValue = createCSSValue; // virtual

	// Props
	function toString()
	{
		return "[object CSSShortHandValueInfo]";
	}

	function createCSSValue(styleElemObj)
	{
		return new xpdom_dom_CSSShortHandValue(styleElemObj,this);
	}
}

// CSSValueListItem (Aux)
function xpdom_dom_CSSValueListItem(objstyle,cssValueListInfo,itemIndex)
{
	this.CSSValue = xpdom_dom_CSSValue;
	this.CSSValue(objstyle,cssValueListInfo);

	// Bind
	this.toString = toString;
	this.getCssText = getCssText; // overloaded
	this.setCssText = setCssText; // overloaded

	// Props
	this.itemIndex = itemIndex;

	function toString()
	{
		return "[object CSSValueListItem]";
	}

	function getCssText()
	{
		return this.aux_objstyle.aux_getItemValue(this.itemIndex);
	}

	function setCssText(cssText)
	{
		this.aux_objstyle.aux_setItemValue(this.itemIndex,cssText);
	}
}


// CSSStyleDeclaration Interface
// **************************************

function xpdom_dom_CSSStyleDeclaration_getPropertyCSSValue(propertyName)
{
	var listprop = this.aux_getPropertiesInfo();
	var propInfo = listprop[propertyName];
	if (propInfo.getCssValueType() == window.CSSValue.CSS_CUSTOM) return null; // Shorthand property

	var value = propInfo.getValue(this);
	if (value == "") return null;

	return propInfo.createCSSValue(this);
}

function xpdom_dom_CSSStyleDeclaration_initPropertiesInfo(is_unbound)
{
	if (!window.CSS2Properties) window.CSS2Properties = new Object();

	if ((!window.CSS2Properties.css_properties && !is_unbound) || 
		(!window.CSS2Properties.css_properties_unbound && is_unbound))
	{	
		// It is internal, not public, is not necessary associate to each window object
		var listprop = new Array();
		if (!is_unbound) window.CSS2Properties.css_properties = listprop;
		else window.CSS2Properties.css_properties_unbound = listprop;

		listprop["azimuth"] = new xpdom_dom_CSSPrimitiveValueInfo("azimuth",this.getAzimuth,this.setAzimuth,"");

		listprop["background"] = new xpdom_dom_CSSShortHandValueInfo("background",this.getBackground,this.setBackground,"");
		listprop["background-attachment"] = new xpdom_dom_CSSPrimitiveValueInfo("background-attachment",this.getBackgroundAttachment,this.setBackgroundAttachment,"");
		listprop["background-color"] = new xpdom_dom_CSSPrimitiveValueInfo("background-color",this.getBackgroundColor,this.setBackgroundColor,"");
		listprop["background-image"] = new xpdom_dom_CSSPrimitiveValueInfo("background-image",this.getBackgroundImage,this.setBackgroundImage,"");
		listprop["background-position"] = new xpdom_dom_CSSPrimitiveValueInfo("background-position",this.getBackgroundPosition,this.setBackgroundPosition,"");
		listprop["background-repeat"] = new xpdom_dom_CSSPrimitiveValueInfo("background-repeat",this.getBackgroundRepeat,this.setBackgroundRepeat,"");

		listprop["border"] = new xpdom_dom_CSSShortHandValueInfo("border",this.getBorder,this.setBorder,"");
		listprop["border-collapse"] = new xpdom_dom_CSSPrimitiveValueInfo("border-collapse",this.getBorderCollapse,this.setBorderCollapse,"");
		listprop["border-color"] = new xpdom_dom_CSSPrimitiveValueInfo("border-color",this.getBorderColor,this.setBorderColor,"");
		listprop["border-spacing"] = new xpdom_dom_CSSPrimitiveValueInfo("border-spacing",this.getBorderSpacing,this.setBorderSpacing,"");
		listprop["border-style"] = new xpdom_dom_CSSPrimitiveValueInfo("border-style",this.getBorderStyle,this.setBorderStyle,"");
		listprop["border-top"] = new xpdom_dom_CSSPrimitiveValueInfo("border-top",this.getBorderTop,this.setBorderTop,"");
		listprop["border-right"] = new xpdom_dom_CSSPrimitiveValueInfo("border-right",this.getBorderRight,this.setBorderRight,"");
		listprop["border-bottom"] = new xpdom_dom_CSSPrimitiveValueInfo("border-bottom",this.getBorderBottom,this.setBorderBottom,"");
		listprop["border-left"] = new xpdom_dom_CSSPrimitiveValueInfo("border-left",this.getBorderLeft,this.setBorderLeft,"");
		listprop["border-top-color"] = new xpdom_dom_CSSPrimitiveValueInfo("border-top-color",this.getBorderTopColor,this.setBorderTopColor,"");
		listprop["border-right-color"] = new xpdom_dom_CSSPrimitiveValueInfo("border-right-color",this.getBorderRightColor,this.setBorderRightColor,"");
		listprop["border-bottom-color"] = new xpdom_dom_CSSPrimitiveValueInfo("border-bottom-color",this.getBorderBottomColor,this.setBorderBottomColor,"");
		listprop["border-left-color"] = new xpdom_dom_CSSPrimitiveValueInfo("border-left-color",this.getBorderLeftColor,this.setBorderLeftColor,"");
		listprop["border-top-style"] = new xpdom_dom_CSSPrimitiveValueInfo("border-top-style",this.getBorderTopStyle,this.setBorderTopStyle,"");
		listprop["border-right-style"] = new xpdom_dom_CSSPrimitiveValueInfo("border-right-style",this.getBorderRightStyle,this.setBorderRightStyle,"");
		listprop["border-bottom-style"] = new xpdom_dom_CSSPrimitiveValueInfo("border-bottom-style",this.getBorderBottomStyle,this.setBorderBottomStyle,"");
		listprop["border-left-style"] = new xpdom_dom_CSSPrimitiveValueInfo("border-left-style",this.getBorderLeftStyle,this.setBorderLeftStyle,"");
		listprop["border-top-width"] = new xpdom_dom_CSSPrimitiveValueInfo("border-top-width",this.getBorderTopWidth,this.setBorderTopWidth,"");
		listprop["border-right-width"] = new xpdom_dom_CSSPrimitiveValueInfo("border-right-width",this.getBorderRightWidth,this.setBorderRightWidth,"");
		listprop["border-bottom-width"] = new xpdom_dom_CSSPrimitiveValueInfo("border-bottom-width",this.getBorderBottomWidth,this.setBorderBottomWidth,"");
		listprop["border-left-width"] = new xpdom_dom_CSSPrimitiveValueInfo("border-left-width",this.getBorderLeftWidth,this.setBorderLeftWidth,"");
		listprop["border-width"] = new xpdom_dom_CSSPrimitiveValueInfo("border-width",this.getBorderWidth,this.setBorderWidth,"");

		listprop["bottom"] = new xpdom_dom_CSSPrimitiveValueInfo("bottom",this.getBottom,this.setBottom,"");
		listprop["caption-side"] = new xpdom_dom_CSSPrimitiveValueInfo("caption-side",this.getCaptionSide,this.setCaptionSide,"");
		listprop["clear"] = new xpdom_dom_CSSPrimitiveValueInfo("clear",this.getClear,this.setClear,"");
		listprop["clip"] = new xpdom_dom_CSSPrimitiveValueInfo("clip",this.getClip,this.setClip,"");
		listprop["color"] = new xpdom_dom_CSSPrimitiveValueInfo("color",this.getColor,this.setColor,"");
		listprop["content"] = new xpdom_dom_CSSPrimitiveValueInfo("content",this.getContent,this.setContent,"");
		listprop["counter-increment"] = new xpdom_dom_CSSPrimitiveValueInfo("counter-increment",this.getCounterIncrement,this.setCounterIncrement,"");
		listprop["counter-reset"] = new xpdom_dom_CSSPrimitiveValueInfo("counter-reset",this.getCounterReset,this.setCounterReset,"");

		listprop["cue"] = new xpdom_dom_CSSShortHandValueInfo("cue",this.getCue,this.setCue,"");
		listprop["cue-after"] = new xpdom_dom_CSSPrimitiveValueInfo("cue-after",this.getCueAfter,this.setCueAfter,"");
		listprop["cue-before"] = new xpdom_dom_CSSPrimitiveValueInfo("cue-before",this.getCueBefore,this.setCueBefore,"");

		listprop["cursor"] = new xpdom_dom_CSSValueListInfo("cursor",this.getCursor,this.setCursor,"");

		listprop["direction"] = new xpdom_dom_CSSPrimitiveValueInfo("direction",this.getDirection,this.setDirection,"");
		listprop["display"] = new xpdom_dom_CSSPrimitiveValueInfo("display",this.getDisplay,this.setDisplay,"");
		listprop["elevation"] = new xpdom_dom_CSSPrimitiveValueInfo("elevation",this.getElevation,this.setElevation,"");
		listprop["empty-cells"] = new xpdom_dom_CSSPrimitiveValueInfo("empty-cells",this.getEmptyCells,this.setEmptyCells,"");
		listprop["float"] = new xpdom_dom_CSSPrimitiveValueInfo("float",this.getCssFloat,this.setCssFloat,"");

		listprop["font"] = new xpdom_dom_CSSShortHandValueInfo("font",this.getFont,this.setFont,"");
		listprop["font-family"] = new xpdom_dom_CSSValueListInfo("font-family",this.getFontFamily,this.setFontFamily,"");
		listprop["font-size"] = new xpdom_dom_CSSPrimitiveValueInfo("font-size",this.getFontSize,this.setFontSize,"");
		listprop["font-size-adjust"] = new xpdom_dom_CSSPrimitiveValueInfo("font-size-adjust",this.getFontSizeAdjust,this.setFontSizeAdjust,"");
		listprop["font-stretch"] = new xpdom_dom_CSSPrimitiveValueInfo("font-stretch",this.getFontStretch,this.setFontStretch,"");
		listprop["font-style"] = new xpdom_dom_CSSPrimitiveValueInfo("font-style",this.getFontStyle,this.setFontStyle,"");
		listprop["font-variant"] = new xpdom_dom_CSSPrimitiveValueInfo("font-variant",this.getFontVariant,this.setFontVariant,"");
		listprop["font-weight"] = new xpdom_dom_CSSPrimitiveValueInfo("font-weight",this.getFontWeight,this.setFontWeight,"");

		listprop["height"] = new xpdom_dom_CSSPrimitiveValueInfo("height",this.getHeight,this.setHeight,"");
		listprop["left"] = new xpdom_dom_CSSPrimitiveValueInfo("left",this.getLeft,this.setLeft,"");
		listprop["letter-spacing"] = new xpdom_dom_CSSPrimitiveValueInfo("letter-spacing",this.getLetterSpacing,this.setLetterSpacing,"");
		listprop["line-height"] = new xpdom_dom_CSSPrimitiveValueInfo("line-height",this.getLineHeight,this.setLineHeight,"");

		listprop["list-style"] = new xpdom_dom_CSSShortHandValueInfo("list-style",this.getListStyle,this.setListStyle,"");
		listprop["list-style-image"] = new xpdom_dom_CSSPrimitiveValueInfo("list-style-image",this.getListStyleImage,this.setListStyleImage,"");
		listprop["list-style-position"] = new xpdom_dom_CSSPrimitiveValueInfo("list-style-position",this.getListStylePosition,this.setListStylePosition,"");
		listprop["list-style-type"] = new xpdom_dom_CSSPrimitiveValueInfo("list-style-type",this.getListStyleType,this.setListStyleType,"");

		listprop["margin"] = new xpdom_dom_CSSShortHandValueInfo("margin",this.getMargin,this.setMargin,"");
		listprop["margin-top"] = new xpdom_dom_CSSPrimitiveValueInfo("margin-top",this.getMarginTop,this.setMarginTop,"");
		listprop["margin-right"] = new xpdom_dom_CSSPrimitiveValueInfo("margin-right",this.getMarginRight,this.setMarginRight,"");
		listprop["margin-bottom"] = new xpdom_dom_CSSPrimitiveValueInfo("margin-bottom",this.getMarginBottom,this.setMarginBottom,"");
		listprop["margin-left"] = new xpdom_dom_CSSPrimitiveValueInfo("margin-left",this.getMarginLeft,this.setMarginLeft,"");

		listprop["marker-offset"] = new xpdom_dom_CSSPrimitiveValueInfo("marker-offset",this.getMarkerOffset,this.setMarkerOffset,"");
		listprop["marks"] = new xpdom_dom_CSSPrimitiveValueInfo("marks",this.getMarks,this.setMarks,"");
		listprop["max-height"] = new xpdom_dom_CSSPrimitiveValueInfo("max-height",this.getMaxHeight,this.setMaxHeight,"");
		listprop["max-width"] = new xpdom_dom_CSSPrimitiveValueInfo("max-width",this.getMaxWidth,this.setMaxWidth,"");
		listprop["min-height"] = new xpdom_dom_CSSPrimitiveValueInfo("min-height",this.getMinHeight,this.setMinHeight,"");
		listprop["min-width"] = new xpdom_dom_CSSPrimitiveValueInfo("min-width",this.getMinWidth,this.setMinWidth,"");
		listprop["orphans"] = new xpdom_dom_CSSPrimitiveValueInfo("orphans",this.getOrphans,this.setOrphans,"");

		listprop["outline"] = new xpdom_dom_CSSShortHandValueInfo("outline",this.getOutline,this.setOutline,"");
		listprop["outline-color"] = new xpdom_dom_CSSPrimitiveValueInfo("outline-color",this.getOutlineColor,this.setOutlineColor,"");
		listprop["outline-style"] = new xpdom_dom_CSSPrimitiveValueInfo("outline-style",this.getOutlineStyle,this.setOutlineStyle,"");
		listprop["outline-width"] = new xpdom_dom_CSSPrimitiveValueInfo("outline-width",this.getOutlineWidth,this.setOutlineWidth,"");

		listprop["overflow"] = new xpdom_dom_CSSPrimitiveValueInfo("overflow",this.getOverflow,this.setOverflow,"");

		listprop["padding"] = new xpdom_dom_CSSShortHandValueInfo("padding",this.getPadding,this.setPadding,"");
		listprop["padding-top"] = new xpdom_dom_CSSPrimitiveValueInfo("padding-top",this.getPaddingTop,this.setPaddingTop,"");
		listprop["padding-right"] = new xpdom_dom_CSSPrimitiveValueInfo("padding-right",this.getPaddingRight,this.setPaddingRight,"");
		listprop["padding-bottom"] = new xpdom_dom_CSSPrimitiveValueInfo("padding-bottom",this.getPaddingBottom,this.setPaddingBottom,"");
		listprop["padding-left"] = new xpdom_dom_CSSPrimitiveValueInfo("padding-left",this.getPaddingLeft,this.setPaddingLeft,"");

		listprop["page"] = new xpdom_dom_CSSPrimitiveValueInfo("page",this.getPage,this.setPage,"");
		listprop["page-break-after"] = new xpdom_dom_CSSPrimitiveValueInfo("page-break-after",this.getPageBreakAfter,this.setPageBreakAfter,"");
		listprop["page-break-before"] = new xpdom_dom_CSSPrimitiveValueInfo("page-break-before",this.getPageBreakBefore,this.setPageBreakBefore,"");
		listprop["page-break-inside"] = new xpdom_dom_CSSPrimitiveValueInfo("page-break-inside",this.getPageBreakInside,this.setPageBreakInside,"");

		listprop["pause"] = new xpdom_dom_CSSShortHandValueInfo("pause",this.getPause,this.setPause,"");
		listprop["pause-after"] = new xpdom_dom_CSSPrimitiveValueInfo("pause-after",this.getPauseAfter,this.setPauseAfter,"");
		listprop["pause-before"] = new xpdom_dom_CSSPrimitiveValueInfo("pause-before",this.getPauseBefore,this.setPauseBefore,"");

		listprop["pitch"] = new xpdom_dom_CSSPrimitiveValueInfo("pitch",this.getPitch,this.setPitch,"");
		listprop["pitch-range"] = new xpdom_dom_CSSPrimitiveValueInfo("pitch-range",this.getPitchRange,this.setPitchRange,"");
		listprop["play-during"] = new xpdom_dom_CSSPrimitiveValueInfo("play-during",this.getPlayDuring,this.setPlayDuring,"");
		listprop["position"] = new xpdom_dom_CSSPrimitiveValueInfo("position",this.getPosition,this.setPosition,"");
		listprop["quotes"] = new xpdom_dom_CSSPrimitiveValueInfo("quotes",this.getQuotes,this.setQuotes,"");
		listprop["richness"] = new xpdom_dom_CSSPrimitiveValueInfo("richness",this.getRichness,this.setRichness,"");
		listprop["right"] = new xpdom_dom_CSSPrimitiveValueInfo("right",this.getRight,this.setRight,"");
		listprop["size"] = new xpdom_dom_CSSPrimitiveValueInfo("size",this.getSize,this.setSize,"");
		listprop["speak"] = new xpdom_dom_CSSPrimitiveValueInfo("speak",this.getSpeak,this.setSpeak,"");
		listprop["speak-header"] = new xpdom_dom_CSSPrimitiveValueInfo("speak-header",this.getSpeakHeader,this.setSpeakHeader,"");
		listprop["speak-numeral"] = new xpdom_dom_CSSPrimitiveValueInfo("speak-numeral",this.getSpeakNumeral,this.setSpeakNumeral,"");
		listprop["speak-punctuation"] = new xpdom_dom_CSSPrimitiveValueInfo("speak-punctuation",this.getSpeakPunctuation,this.setSpeakPunctuation,"");
		listprop["speech-rate"] = new xpdom_dom_CSSPrimitiveValueInfo("speech-rate",this.getSpeechRate,this.setSpeechRate,"");
		listprop["stress"] = new xpdom_dom_CSSPrimitiveValueInfo("stress",this.getStress,this.setStress,"");
		listprop["table-layout"] = new xpdom_dom_CSSPrimitiveValueInfo("table-layout",this.getTableLayout,this.setTableLayout,"");
		listprop["text-align"] = new xpdom_dom_CSSPrimitiveValueInfo("text-align",this.getTextAlign,this.setTextAlign,"");
		listprop["text-decoration"] = new xpdom_dom_CSSPrimitiveValueInfo("text-decoration",this.getTextDecoration,this.setTextDecoration,"");
		listprop["text-indent"] = new xpdom_dom_CSSPrimitiveValueInfo("text-indent",this.getTextIndent,this.setTextIndent,"");
		listprop["text-shadow"] = new xpdom_dom_CSSValueListInfo("text-shadow",this.getTextShadow,this.setTextShadow,"");
		listprop["text-transform"] = new xpdom_dom_CSSPrimitiveValueInfo("text-transform",this.getTextTransform,this.setTextTransform,"");
		listprop["top"] = new xpdom_dom_CSSPrimitiveValueInfo("top",this.getTop,this.setTop,"");
		listprop["unicode-bidi"] = new xpdom_dom_CSSPrimitiveValueInfo("unicode-bidi",this.getUnicodeBidi,this.setUnicodeBidi,"");
		listprop["vertical-align"] = new xpdom_dom_CSSPrimitiveValueInfo("vertical-align",this.getVerticalAlign,this.setVerticalAlign,"");
		listprop["visibility"] = new xpdom_dom_CSSPrimitiveValueInfo("visibility",this.getVisibility,this.setVisibility,"");
		listprop["voice-family"] = new xpdom_dom_CSSPrimitiveValueInfo("voice-family",this.getVoiceFamily,this.setVoiceFamily,"");
		listprop["volume"] = new xpdom_dom_CSSPrimitiveValueInfo("volume",this.getVolume,this.setVolume,"");
		listprop["white-space"] = new xpdom_dom_CSSPrimitiveValueInfo("white-space",this.getWhiteSpace,this.setWhiteSpace,"");
		listprop["widows"] = new xpdom_dom_CSSPrimitiveValueInfo("widows",this.getWidows,this.setWidows,"");
		listprop["width"] = new xpdom_dom_CSSPrimitiveValueInfo("width",this.getWidth,this.setWidth,"");
		listprop["word-spacing"] = new xpdom_dom_CSSPrimitiveValueInfo("word-spacing",this.getWordSpacing,this.setWordSpacing,"");
		listprop["z-index"] = new xpdom_dom_CSSPrimitiveValueInfo("z-index",this.getZIndex,this.setZIndex,"");
	}
}


function xpdom_dom_CSSStyleDeclaration_getPropertiesInfo()
{
	var is_unbound = !(typeof(this.native_object.is_unbound) == "undefined");

	var listprop = null;
	if (!is_unbound) listprop = window.CSS2Properties.css_properties;
	else listprop = window.CSS2Properties.css_properties_unbound;

	return listprop;
}



// CSS2Properties Interface
// **************************************

function xpdom_dom_CSS2PropertiesImpl()
{
	this.toString = toString; 	

	this.getAzimuth = getAzimuth;
	this.setAzimuth = setAzimuth;
	this.getBackground = getBackground;
	this.setBackground = setBackground;
	this.getBackgroundAttachment = getBackgroundAttachment;
	this.setBackgroundAttachment = setBackgroundAttachment;
	this.getBackgroundColor = getBackgroundColor;
	this.setBackgroundColor = setBackgroundColor;
	this.getBackgroundImage = getBackgroundImage;
	this.setBackgroundImage = setBackgroundImage;
	this.getBackgroundPosition = getBackgroundPosition;
	this.setBackgroundPosition = setBackgroundPosition;
	this.getBackgroundRepeat = getBackgroundRepeat;
	this.setBackgroundRepeat = setBackgroundRepeat;
	this.getBorder = getBorder;
	this.setBorder = setBorder;
	this.getBorderCollapse = getBorderCollapse;
	this.setBorderCollapse = setBorderCollapse;
	this.getBorderColor = getBorderColor;
	this.setBorderColor = setBorderColor;
	this.getBorderSpacing = getBorderSpacing;
	this.setBorderSpacing = setBorderSpacing;
	this.getBorderStyle = getBorderStyle;
	this.setBorderStyle = setBorderStyle;
	this.getBorderTop = getBorderTop;
	this.setBorderTop = setBorderTop;
	this.getBorderRight = getBorderRight;
	this.setBorderRight = setBorderRight;
	this.getBorderBottom = getBorderBottom;
	this.setBorderBottom = setBorderBottom;
	this.getBorderLeft = getBorderLeft;
	this.setBorderLeft = setBorderLeft;
	this.getBorderTopColor = getBorderTopColor;
	this.setBorderTopColor = setBorderTopColor;
	this.getBorderRightColor = getBorderRightColor;
	this.setBorderRightColor = setBorderRightColor;
	this.getBorderBottomColor = getBorderBottomColor;
	this.setBorderBottomColor = setBorderBottomColor;
	this.getBorderLeftColor = getBorderLeftColor;
	this.setBorderLeftColor = setBorderLeftColor;
	this.getBorderTopStyle = getBorderTopStyle;
	this.setBorderTopStyle = setBorderTopStyle;
	this.getBorderRightStyle = getBorderRightStyle;
	this.setBorderRightStyle = setBorderRightStyle;
	this.getBorderBottomStyle = getBorderBottomStyle;
	this.setBorderBottomStyle = setBorderBottomStyle;
	this.getBorderLeftStyle = getBorderLeftStyle;
	this.setBorderLeftStyle = setBorderLeftStyle;
	this.getBorderTopWidth = getBorderTopWidth;
	this.setBorderTopWidth = setBorderTopWidth;
	this.getBorderRightWidth = getBorderRightWidth;
	this.setBorderRightWidth = setBorderRightWidth;
	this.getBorderBottomWidth = getBorderBottomWidth;
	this.setBorderBottomWidth = setBorderBottomWidth;
	this.getBorderLeftWidth = getBorderLeftWidth;
	this.setBorderLeftWidth = setBorderLeftWidth;
	this.getBorderWidth = getBorderWidth;
	this.setBorderWidth = setBorderWidth;
	this.getBottom = getBottom;
	this.setBottom = setBottom;
	this.getCaptionSide = getCaptionSide;
	this.setCaptionSide = setCaptionSide;
	this.getClear = getClear;
	this.setClear = setClear;
	this.getClip = getClip;
	this.setClip = setClip;
	this.getColor = getColor;
	this.setColor = setColor;
	this.getContent = getContent;
	this.setContent = setContent;
	this.getCounterIncrement = getCounterIncrement;
	this.setCounterIncrement = setCounterIncrement;
	this.getCounterReset = getCounterReset;
	this.setCounterReset = setCounterReset;
	this.getCue = getCue;
	this.setCue = setCue;
	this.getCueAfter = getCueAfter;
	this.setCueAfter = setCueAfter;
	this.getCueBefore = getCueBefore;
	this.setCueBefore = setCueBefore;
	this.getCursor = getCursor;
	this.setCursor = setCursor;
	this.getDirection = getDirection;
	this.setDirection = setDirection;
	this.getDisplay = getDisplay;
	this.setDisplay = setDisplay;
	this.getElevation = getElevation;
	this.setElevation = setElevation;
	this.getEmptyCells = getEmptyCells;
	this.setEmptyCells = setEmptyCells;
	this.getCssFloat = getCssFloat;
	this.setCssFloat = setCssFloat;
	this.getFont = getFont;
	this.setFont = setFont;
	this.getFontFamily = getFontFamily;
	this.setFontFamily = setFontFamily;
	this.getFontSize = getFontSize;
	this.setFontSize = setFontSize;
	this.getFontSizeAdjust = getFontSizeAdjust;
	this.setFontSizeAdjust = setFontSizeAdjust;
	this.getFontStretch = getFontStretch;
	this.setFontStretch = setFontStretch;
	this.getFontStyle = getFontStyle;
	this.setFontStyle = setFontStyle;
	this.getFontVariant = getFontVariant;
	this.setFontVariant = setFontVariant;
	this.getFontWeight = getFontWeight;
	this.setFontWeight = setFontWeight;
	this.getHeight = getHeight;
	this.setHeight = setHeight;
	this.getLeft = getLeft;
	this.setLeft = setLeft;
	this.getLetterSpacing = getLetterSpacing;
	this.setLetterSpacing = setLetterSpacing;
	this.getLineHeight = getLineHeight;
	this.setLineHeight = setLineHeight;
	this.getListStyle = getListStyle;
	this.setListStyle = setListStyle;
	this.getListStyleImage = getListStyleImage;
	this.setListStyleImage = setListStyleImage;
	this.getListStylePosition = getListStylePosition;
	this.setListStylePosition = setListStylePosition;
	this.getListStyleType = getListStyleType;
	this.setListStyleType = setListStyleType;
	this.getMargin = getMargin;
	this.setMargin = setMargin;
	this.getMarginTop = getMarginTop;
	this.setMarginTop = setMarginTop;
	this.getMarginRight = getMarginRight;
	this.setMarginRight = setMarginRight;
	this.getMarginBottom = getMarginBottom;
	this.setMarginBottom = setMarginBottom;
	this.getMarginLeft = getMarginLeft;
	this.setMarginLeft = setMarginLeft;
	this.getMarkerOffset = getMarkerOffset;
	this.setMarkerOffset = setMarkerOffset;
	this.getMarks = getMarks;
	this.setMarks = setMarks;
	this.getMaxHeight = getMaxHeight;
	this.setMaxHeight = setMaxHeight;
	this.getMaxWidth = getMaxWidth;
	this.setMaxWidth = setMaxWidth;
	this.getMinHeight = getMinHeight;
	this.setMinHeight = setMinHeight;
	this.getMinWidth = getMinWidth;
	this.setMinWidth = setMinWidth;
	this.getOrphans = getOrphans;
	this.setOrphans = setOrphans;
	this.getOutline = getOutline;
	this.setOutline = setOutline;
	this.getOutlineColor = getOutlineColor;
	this.setOutlineColor = setOutlineColor;
	this.getOutlineStyle = getOutlineStyle;
	this.setOutlineStyle = setOutlineStyle;
	this.getOutlineWidth = getOutlineWidth;
	this.setOutlineWidth = setOutlineWidth;
	this.getOverflow = getOverflow;
	this.setOverflow = setOverflow;
	this.getPadding = getPadding;
	this.setPadding = setPadding;
	this.getPaddingTop = getPaddingTop;
	this.setPaddingTop = setPaddingTop;
	this.getPaddingRight = getPaddingRight;
	this.setPaddingRight = setPaddingRight;
	this.getPaddingBottom = getPaddingBottom;
	this.setPaddingBottom = setPaddingBottom;
	this.getPaddingLeft = getPaddingLeft;
	this.setPaddingLeft = setPaddingLeft;
	this.getPage = getPage;
	this.setPage = setPage;
	this.getPageBreakAfter = getPageBreakAfter;
	this.setPageBreakAfter = setPageBreakAfter;
	this.getPageBreakBefore = getPageBreakBefore;
	this.setPageBreakBefore = setPageBreakBefore;
	this.getPageBreakInside = getPageBreakInside;
	this.setPageBreakInside = setPageBreakInside;
	this.getPause = getPause;
	this.setPause = setPause;
	this.getPauseAfter = getPauseAfter;
	this.setPauseAfter = setPauseAfter;
	this.getPauseBefore = getPauseBefore;
	this.setPauseBefore = setPauseBefore;
	this.getPitch = getPitch;
	this.setPitch = setPitch;
	this.getPitchRange = getPitchRange;
	this.setPitchRange = setPitchRange;
	this.getPlayDuring = getPlayDuring;
	this.setPlayDuring = setPlayDuring;
	this.getPosition = getPosition;
	this.setPosition = setPosition;
	this.getQuotes = getQuotes;
	this.setQuotes = setQuotes;
	this.getRichness = getRichness;
	this.setRichness = setRichness;
	this.getRight = getRight;
	this.setRight = setRight;
	this.getSize = getSize;
	this.setSize = setSize;
	this.getSpeak = getSpeak;
	this.setSpeak = setSpeak;
	this.getSpeakHeader = getSpeakHeader;
	this.setSpeakHeader = setSpeakHeader;
	this.getSpeakNumeral = getSpeakNumeral;
	this.setSpeakNumeral = setSpeakNumeral;
	this.getSpeakPunctuation = getSpeakPunctuation;
	this.setSpeakPunctuation = setSpeakPunctuation;
	this.getSpeechRate = getSpeechRate;
	this.setSpeechRate = setSpeechRate;
	this.getStress = getStress;
	this.setStress = setStress;
	this.getTableLayout = getTableLayout;
	this.setTableLayout = setTableLayout;
	this.getTextAlign = getTextAlign;
	this.setTextAlign = setTextAlign;
	this.getTextDecoration = getTextDecoration;
	this.setTextDecoration = setTextDecoration;
	this.getTextIndent = getTextIndent;
	this.setTextIndent = setTextIndent;
	this.getTextShadow = getTextShadow;
	this.setTextShadow = setTextShadow;
	this.getTextTransform = getTextTransform;
	this.setTextTransform = setTextTransform;
	this.getTop = getTop;
	this.setTop = setTop;
	this.getUnicodeBidi = getUnicodeBidi;
	this.setUnicodeBidi = setUnicodeBidi;
	this.getVerticalAlign = getVerticalAlign;
	this.setVerticalAlign = setVerticalAlign;
	this.getVisibility = getVisibility;
	this.setVisibility = setVisibility;
	this.getVoiceFamily = getVoiceFamily;
	this.setVoiceFamily = setVoiceFamily;
	this.getVolume = getVolume;
	this.setVolume = setVolume;
	this.getWhiteSpace = getWhiteSpace;
	this.setWhiteSpace = setWhiteSpace;
	this.getWidows = getWidows;
	this.setWidows = setWidows;
	this.getWidth = getWidth;
	this.setWidth = setWidth;
	this.getWordSpacing = getWordSpacing;
	this.setWordSpacing = setWordSpacing;
	this.getZIndex = getZIndex;
	this.setZIndex = setZIndex;

	// Extras (Not W3C DOM Java like):

	// Clip

	function toString()
	{
		return "[object CSS2Properties]";
	}

	function getAzimuth()
	{
		if (typeof(this.native_style.azimuth) == "undefined") return "";
		return this.native_style.azimuth;
	}

	function setAzimuth(azimuth)
	{
		this.native_style.azimuth = azimuth;
	}


	function getBackground()
	{
		if (typeof(this.native_style.background) == "undefined") return "";
		return this.native_style.background;
	}

	function setBackground(background)
	{
		this.native_style.background = background;
	}

	function getBackgroundAttachment()
	{
		if (typeof(this.native_style.backgroundAttachment) == "undefined") return "";
		return this.native_style.backgroundAttachment;
	}

	function setBackgroundAttachment(backgroundAttachment)
	{
		this.native_style.backgroundAttachment = backgroundAttachment;
	}

	function getBackgroundColor()
	{
		if (typeof(this.native_style.backgroundColor) == "undefined") return "";
		return this.native_style.backgroundColor;
	}

	function setBackgroundColor(backgroundColor)
	{
		this.native_style.backgroundColor = backgroundColor;
	}

	function getBackgroundImage()
	{
		if (typeof(this.native_style.backgroundImage) == "undefined") return "";
		return this.native_style.backgroundImage;
	}

	function setBackgroundImage(backgroundImage)
	{
		this.native_style.backgroundImage = backgroundImage;
	}

	function getBackgroundPosition()
	{
		if (typeof(this.native_style.backgroundPosition) == "undefined") return "";
		return this.native_style.backgroundPosition
	}

	function setBackgroundPosition(backgroundPosition)
	{
		this.native_style.backgroundPosition = backgroundPosition;
	}

	function getBackgroundRepeat()
	{
		if (typeof(this.native_style.backgroundRepeat) == "undefined") return "";
		return this.native_style.backgroundRepeat;
	}

	function setBackgroundRepeat(backgroundRepeat)
	{
		this.native_style.backgroundRepeat = backgroundRepeat;
	}

	function getBorder()
	{
		if (typeof(this.native_style.border) == "undefined") return "";
		return this.native_style.border;
	}

	function setBorder(border)
	{
		this.native_style.border = border;
	}

	function getBorderCollapse()
	{
		if (typeof(this.native_style.borderCollapse) == "undefined") return "";
		return this.native_style.borderCollapse;
	}

	function setBorderCollapse(borderCollapse)
	{
		this.native_style.borderCollapse = borderCollapse;
	}

	function getBorderColor()
	{
		if (typeof(this.native_style.borderColor) == "undefined") return "";
		return this.native_style.borderColor;
	}

	function setBorderColor(borderColor)
	{
		this.native_style.borderColor = borderColor;
	}

	function getBorderSpacing()
	{
		if (typeof(this.native_style.borderSpacing) == "undefined") return "";
		return this.native_style.borderSpacing;
	}

	function setBorderSpacing(borderSpacing)
	{
		this.native_style.borderSpacing = borderSpacing;
	}

	function getBorderStyle()
	{
		if (typeof(this.native_style.borderStyle) == "undefined") return "";
		return this.native_style.borderStyle;
	}

	function setBorderStyle(borderStyle)
	{
		this.native_style.borderStyle = borderStyle;
	}

	function getBorderTop()
	{
		if (typeof(this.native_style.borderTop) == "undefined") return "";
		return this.native_style.borderTop;
	}

	function setBorderTop(borderTop)
	{
		this.native_style.borderTop = borderTop;
	}

	function getBorderRight()
	{
		if (typeof(this.native_style.borderRight) == "undefined") return "";
		return this.native_style.borderRight;
	}

	function setBorderRight(borderRight)
	{
		this.native_style.borderRight = borderRight;
	}

	function getBorderBottom()
	{
		if (typeof(this.native_style.borderBottom) == "undefined") return "";
		return this.native_style.borderBottom;
	}

	function setBorderBottom(borderBottom)
	{
		this.native_style.borderBottom = borderBottom;
	}

	function getBorderLeft()
	{
		if (typeof(this.native_style.borderLeft) == "undefined") return "";
		return this.native_style.borderLeft;
	}

	function setBorderLeft(borderLeft)
	{
		this.native_style.borderLeft = borderLeft;
	}

	function getBorderTopColor()
	{
		if (typeof(this.native_style.borderTopColor) == "undefined") return "";
		return this.native_style.borderTopColor;
	}

	function setBorderTopColor(borderTopColor)
	{
		this.native_style.borderTopColor = borderTopColor;
	}

	function getBorderRightColor()
	{
		if (typeof(this.native_style.borderRightColor) == "undefined") return "";
		return this.native_style.borderRightColor;
	}

	function setBorderRightColor(borderRightColor)
	{
		this.native_style.borderRightColor = borderRightColor;
	}

	function getBorderBottomColor()
	{
		if (typeof(this.native_style.borderBottomColor) == "undefined") return "";
		return this.native_style.borderBottomColor;
	}

	function setBorderBottomColor(borderBottomColor)
	{
		this.native_style.borderBottomColor = borderBottomColor;
	}

	function getBorderLeftColor()
	{
		if (typeof(this.native_style.borderLeftColor) == "undefined") return "";
		return this.native_style.borderLeftColor;
	}

	function setBorderLeftColor(borderLeftColor)
	{
		this.native_style.borderLeftColor = borderLeftColor;
	}

	function getBorderTopStyle()
	{
		if (typeof(this.native_style.borderTopStyle) == "undefined") return "";
		return this.native_style.borderTopStyle;
	}

	function setBorderTopStyle(borderTopStyle)
	{
		this.native_style.borderTopStyle = borderTopStyle;
	}

	function getBorderRightStyle()
	{
		if (typeof(this.native_style.borderRightStyle) == "undefined") return "";
		return this.native_style.borderRightStyle;
	}

	function setBorderRightStyle(borderRightStyle)
	{
		this.native_style.borderRightStyle = borderRightStyle;
	}

	function getBorderBottomStyle()
	{
		if (typeof(this.native_style.borderBottomStyle) == "undefined") return "";
		return this.native_style.borderBottomStyle;
	}

	function setBorderBottomStyle(borderBottomStyle)
	{
		this.native_style.borderBottomStyle = borderBottomStyle;
	}

	function getBorderLeftStyle()
	{
		if (typeof(this.native_style.borderLeftStyle) == "undefined") return "";
		return this.native_style.borderLeftStyle;
	}

	function setBorderLeftStyle(borderLeftStyle)
	{
		this.native_style.borderLeftStyle = borderLeftStyle;
	}

	function getBorderTopWidth()
	{
		if (typeof(this.native_style.borderTopWidth) == "undefined") return "";
		return this.native_style.borderTopWidth;
	}

	function setBorderTopWidth(borderTopWidth)
	{
		this.native_style.borderTopWidth = borderTopWidth;
	}

	function getBorderRightWidth()
	{
		if (typeof(this.native_style.borderRightWidth) == "undefined") return "";
		return this.native_style.borderRightWidth;
	}

	function setBorderRightWidth(borderRightWidth)
	{
		this.native_style.borderRightWidth = borderRightWidth;
	}

	function getBorderBottomWidth()
	{
		if (typeof(this.native_style.borderBottomWidth) == "undefined") return "";
		return this.native_style.borderBottomWidth;
	}

	function setBorderBottomWidth(borderBottomWidth)
	{
		this.native_style.borderBottomWidth = borderBottomWidth;
	}

	function getBorderLeftWidth()
	{
		if (typeof(this.native_style.borderLeftWidth) == "undefined") return "";
		return this.native_style.borderLeftWidth;
	}

	function setBorderLeftWidth(borderLeftWidth)
	{
		this.native_style.borderLeftWidth = borderLeftWidth;
	}

	function getBorderWidth()
	{
		if (typeof(this.native_style.borderWidth) == "undefined") return "";
		return this.native_style.borderWidth;
	}

	function setBorderWidth(borderWidth)
	{
		this.native_style.borderWidth = borderWidth;
	}

	function getBottom()
	{
		if (typeof(this.native_style.bottom) == "undefined") return "";
		return this.native_style.bottom;
	}

	function setBottom(bottom)
	{
		this.native_style.bottom = bottom;
	}

	function getCaptionSide()
	{
		if (typeof(this.native_style.captionSide) == "undefined") return "";
		return this.native_style.captionSide;
	}

	function setCaptionSide(captionSide)
	{
		this.native_style.captionSide = captionSide;
	}

	function getClear()
	{
		if (typeof(this.native_style.clear) == "undefined") return "";
		return this.native_style.clear;
	}

	function setClear(clear)
	{
		this.native_style.clear = clear;
	}

	function getClip()
	{
		if (typeof(this.native_style.clip) == "undefined") return "";
	  return this.native_style.clip;
	}

	function setClip(clip)
	{
		this.native_style.clip = clip;
	}

	function getColor()
	{
		if (typeof(this.native_style.color) == "undefined") return "";
		return this.native_style.color;
	}

	function setColor(color)
	{
		this.native_style.color = color;
	}

	function getContent()
	{
		if (typeof(this.native_style.content) == "undefined") return "";
		return this.native_style.content;
	}

	function setContent(content)
	{
		this.native_style.content = content;
	}

	function getCounterIncrement()
	{
		if (typeof(this.native_style.counterIncrement) == "undefined") return "";
		return this.native_style.counterIncrement;
	}

	function setCounterIncrement(counterIncrement)
	{
		this.native_style.counterIncrement = counterIncrement;
	}

	function getCounterReset()
	{
		if (typeof(this.native_style.counterReset) == "undefined") return "";
		return this.native_style.counterReset;
	}

	function setCounterReset(counterReset)
	{
		this.native_style.counterReset = counterReset;
	}

	function getCue()
	{
		if (typeof(this.native_style.cue) == "undefined") return "";
		return this.native_style.cue;
	}

	function setCue(cue)
	{
		this.native_style.cue = cue;
	}

	function getCueAfter()
	{
		if (typeof(this.native_style.cueAfter) == "undefined") return "";
		return this.native_style.cueAfter;
	}

	function setCueAfter(cueAfter)
	{
		this.native_style.cueAfter = cueAfter;
	}

	function getCueBefore()
	{
		if (typeof(this.native_style.cueBefore) == "undefined") return "";
		return this.native_style.cueBefore;
	}

	function setCueBefore(cueBefore)
	{
		this.native_style.cueBefore = cueBefore;
	}

	function getCursor()
	{
		if (typeof(this.native_style.cursor) == "undefined") return "";
		return this.native_style.cursor;
	}

	function setCursor(cursor)
	{
		this.native_style.cursor = cursor;
	}

	function getDirection()
	{
		if (typeof(this.native_style.direction) == "undefined") return "";
		return this.native_style.direction;
	}

	function setDirection(direction)
	{
		this.native_style.direction = direction;
	}

	function getDisplay() 
	{
		if (typeof(this.native_style.display) == "undefined") return "";
		return this.native_style.display;
	}

	function setDisplay(display) 
	{
		this.native_style.display = display;
	}

	function getElevation()
	{
		if (typeof(this.native_style.elevation) == "undefined") return "";
		return this.native_style.elevation;
	}

	function setElevation(elevation)
	{
		this.native_style.elevation = elevation;
	}

	function getEmptyCells()
	{
		if (typeof(this.native_style.emptyCells) == "undefined") return "";
		return this.native_style.emptyCells;
	}

	function setEmptyCells(emptyCells)
	{
		this.native_style.emptyCells = emptyCells;
	}

	function getCssFloat()
	{
		if (typeof(this.native_style.cssFloat) == "undefined") return "";
		return this.native_style.cssFloat;
	}

	function setCssFloat(cssFloat)
	{
		this.native_style.cssFloat = cssFloat;
	}

	function getFont()
	{
		if (typeof(this.native_style.font) == "undefined") return "";
		return this.native_style.font;
	}

	function setFont(font)
	{
		this.native_style.font = font;
	}

	function getFontFamily()
	{
		if (typeof(this.native_style.fontFamily) == "undefined") return "";
		return this.native_style.fontFamily;
	}

	function setFontFamily(fontFamily)
	{
		this.native_style.fontFamily = fontFamily;
	}

	function getFontSize()
	{
		if (typeof(this.native_style.fontSize) == "undefined") return "";
		return this.native_style.fontSize;
	}

	function setFontSize(fontSize)
	{
		this.native_style.fontSize = fontSize;
	}

	function getFontSizeAdjust()
	{
		if (typeof(this.native_style.fontSizeAdjust) == "undefined") return "";
		return this.native_style.fontSizeAdjust;
	}

	function setFontSizeAdjust(fontSizeAdjust)
	{
		this.native_style.fontSizeAdjust = fontSizeAdjust;
	}

	function getFontStretch()
	{
		if (typeof(this.native_style.fontStretch) == "undefined") return "";
		return this.native_style.fontStretch;
	}

	function setFontStretch(fontStretch)
	{
		this.native_style.fontStretch = fontStretch;
	}

	function getFontStyle()
	{
		if (typeof(this.native_style.fontStyle) == "undefined") return "";
		return this.native_style.fontStyle;
	}

	function setFontStyle(fontStyle)
	{
		this.native_style.fontStyle = fontStyle;
	}

	function getFontVariant()
	{
		if (typeof(this.native_style.fontVariant) == "undefined") return "";
		return this.native_style.fontVariant;
	}

	function setFontVariant(fontVariant)
	{
		this.native_style.fontVariant = fontVariant;
	}

	function getFontWeight()
	{
		if (typeof(this.native_style.fontWeight) == "undefined") return "";
		return this.native_style.fontWeight;
	}

	function setFontWeight(fontWeight)
	{
		this.native_style.fontWeight = fontWeight;
	}

	function getHeight() 
	{
		// In IE and Mozilla/Netscape 6: if top, left, width and height CSS properties aren´t 
		// defined in HTML code, they aren´t reflected in DOM, in that case returns 0 
		// With absolute positioning is convenient specify top and left.
		// With non absolute positioning, if not specified in HTML,it must be 0 (see W3C CSS2 doc)
		// Use getPagePosX, getPagePosY,getOffsetWidth, getOffsetHeight instead if
		// you want the **real** values of element (positioned or not)

		if (typeof(this.native_style.height) == "undefined") return "";
		return this.native_style.height;
	}

	function setHeight(height)
	{
		this.native_style.height = height;
	}

	function getLeft() 
	{
		if (typeof(this.native_style.left) == "undefined") return "";

		// See note in xpdom_dom_getHeight() 
		return this.native_style.left;
	}

	function setLeft(left)
	{
		this.native_style.left = left;
	}

	function getLetterSpacing()
	{
		if (typeof(this.native_style.letterSpacing) == "undefined") return "";
		return this.native_style.letterSpacing;
	}

	function setLetterSpacing(letterSpacing)
	{
		this.native_style.letterSpacing = letterSpacing;
	}

	function getLineHeight()
	{
		if (typeof(this.native_style.lineHeight) == "undefined") return "";
		return this.native_style.lineHeight;
	}

	function setLineHeight(lineHeight)
	{
		this.native_style.lineHeight = lineHeight;
	}

	function getListStyle()
	{
		if (typeof(this.native_style.listStyle) == "undefined") return "";
		return this.native_style.listStyle;
	}

	function setListStyle(listStyle)
	{
		this.native_style.listStyle = listStyle;
	}

	function getListStyleImage()
	{
		if (typeof(this.native_style.listStyleImage) == "undefined") return "";
		return this.native_style.listStyleImage;
	}

	function setListStyleImage(listStyleImage)
	{
		this.native_style.listStyleImage = listStyleImage;
	}

	function getListStylePosition()
	{
		if (typeof(this.native_style.listStylePosition) == "undefined") return "";
		return this.native_style.listStylePosition;
	}

	function setListStylePosition(listStylePosition)
	{
		this.native_style.listStylePosition = listStylePosition;
	}

	function getListStyleType()
	{
		if (typeof(this.native_style.listStyleType) == "undefined") return "";
		return this.native_style.listStyleType;
	}

	function setListStyleType(listStyleType)
	{
		this.native_style.listStyleType = listStyleType;
	}

	function getMargin()
	{
		if (typeof(this.native_style.margin) == "undefined") return "";
		return this.native_style.margin;
	}

	function setMargin(margin)
	{
		this.native_style.margin = margin;
	}

	function getMarginTop()
	{
		if (typeof(this.native_style.marginTop) == "undefined") return "";
		return this.native_style.marginTop;
	}

	function setMarginTop(marginTop)
	{
		this.native_style.marginTop = marginTop;
	}

	function getMarginRight()
	{
		if (typeof(this.native_style.marginRight) == "undefined") return "";
		return this.native_style.marginRight;
	}

	function setMarginRight(marginRight)
	{
		this.native_style.marginRight = marginRight;
	}

	function getMarginBottom()
	{
		if (typeof(this.native_style.marginBottom) == "undefined") return "";
		return this.native_style.marginBottom;
	}

	function setMarginBottom(marginBottom)
	{
		this.native_style.marginBottom = marginBottom;
	}

	function getMarginLeft()
	{
		if (typeof(this.native_style.marginLeft) == "undefined") return "";
		return this.native_style.marginLeft;
	}

	function setMarginLeft(marginLeft)
	{
		this.native_style.marginLeft = marginLeft;
	}

	function getMarkerOffset()
	{
		if (typeof(this.native_style.markerOffset) == "undefined") return "";
		return this.native_style.markerOffset;
	}

	function setMarkerOffset(markerOffset)
	{
		this.native_style.markerOffset = markerOffset;
	}

	function getMarks()
	{
		if (typeof(this.native_style.marks) == "undefined") return "";
		return this.native_style.marks;
	}

	function setMarks(marks)
	{
		this.native_style.marks = marks;
	}

	function getMaxHeight()
	{
		if (typeof(this.native_style.maxHeight) == "undefined") return "";
		return this.native_style.maxHeight;
	}

	function setMaxHeight(maxHeight)
	{
		this.native_style.maxHeight = maxHeight;
	}

	function getMaxWidth()
	{
		if (typeof(this.native_style.maxWidth) == "undefined") return "";
		return this.native_style.maxWidth;
	}

	function setMaxWidth(maxWidth)
	{
		this.native_style.maxWidth = maxWidth;
	}

	function getMinHeight()
	{
		if (typeof(this.native_style.minHeight) == "undefined") return "";
		return this.native_style.minHeight;
	}

	function setMinHeight(minHeight)
	{
		this.native_style.minHeight = minHeight;
	}

	function getMinWidth(minWidth)
	{
		if (typeof(this.native_style.minWidth) == "undefined") return "";
		return this.native_style.minWidth;
	}

	function setMinWidth(minWidth)
	{
		this.native_style.minWidth = minWidth;
	}

	function getOrphans()
	{
		if (typeof(this.native_style.orphans) == "undefined") return "";
		return this.native_style.orphans;
	}

	function setOrphans(orphans)
	{
		this.native_style.orphans = orphans;
	}

	function getOutline()
	{
		if (typeof(this.native_style.outline) == "undefined") return "";
		return this.native_style.outline;
	}

	function setOutline(outline)
	{
		this.native_style.outline = outline;
	}

	function getOutlineColor()
	{
		if (typeof(this.native_style.outlineColor) == "undefined") return "";
		return this.native_style.outlineColor;
	}

	function setOutlineColor(outlineColor)
	{
		this.native_style.outlineColor = outlineColor;
	}

	function getOutlineStyle()
	{
		if (typeof(this.native_style.outlineStyle) == "undefined") return "";
		return this.native_style.outlineStyle;
	}

	function setOutlineStyle(outlineStyle)
	{
		this.native_style.outlineStyle = outlineStyle;
	}

	function getOutlineWidth()
	{
		if (typeof(this.native_style.outlineWidth) == "undefined") return "";
		return this.native_style.outlineWidth;
	}

	function setOutlineWidth(outlineWidth)
	{
		this.native_style.outlineWidth = outlineWidth;
	}

	function getOverflow()
	{
		if (typeof(this.native_style.overflow) == "undefined") return "";
		return this.native_style.overflow;
	}

	function setOverflow(overflow)
	{
		this.native_style.overflow = overflow;
	}

	function getPadding()
	{
		if (typeof(this.native_style.padding) == "undefined") return "";
		return this.native_style.padding;
	}

	function setPadding(padding)
	{
		this.native_style.padding = padding;
	}

	function getPaddingTop()
	{
		if (typeof(this.native_style.paddingTop) == "undefined") return "";
		return this.native_style.paddingTop;
	}

	function setPaddingTop(paddingTop)
	{
		this.native_style.paddingTop = paddingTop;
	}

	function getPaddingRight()
	{
		if (typeof(this.native_style.paddingRight) == "undefined") return "";
		return this.native_style.paddingRight;
	}

	function setPaddingRight(paddingRight)
	{
		this.native_style.paddingRight = paddingRight;
	}

	function getPaddingBottom()
	{
		if (typeof(this.native_style.paddingBottom) == "undefined") return "";
		return this.native_style.paddingBottom;
	}

	function setPaddingBottom(paddingBottom)
	{
		this.native_style.paddingBottom = paddingBottom;
	}

	function getPaddingLeft()
	{
		if (typeof(this.native_style.paddingLeft) == "undefined") return "";
		return this.native_style.paddingLeft;
	}

	function setPaddingLeft(paddingLeft)
	{
		this.native_style.paddingLeft = paddingLeft;
	}

	function getPage()
	{
		if (typeof(this.native_style.page) == "undefined") return "";
		return this.native_style.page;
	}

	function setPage(page)
	{
		this.native_style.page = page;
	}

	function getPageBreakAfter()
	{
		if (typeof(this.native_style.pageBreakAfter) == "undefined") return "";
		return this.native_style.pageBreakAfter;
	}

	function setPageBreakAfter(pageBreakAfter)
	{
		this.native_style.pageBreakAfter = pageBreakAfter;
	}

	function getPageBreakBefore()
	{
		if (typeof(this.native_style.pageBreakBefore) == "undefined") return "";
		return this.native_style.pageBreakBefore;
	}

	function setPageBreakBefore(pageBreakBefore)
	{
		this.native_style.pageBreakBefore = pageBreakBefore;
	}

	function getPageBreakInside()
	{
		if (typeof(this.native_style.pageBreakInside) == "undefined") return "";
		return this.native_style.pageBreakInside;
	}

	function setPageBreakInside(pageBreakInside)
	{
		this.native_style.pageBreakInside = pageBreakInside;
	}

	function getPause()
	{
		if (typeof(this.native_style.pause) == "undefined") return "";
		return this.native_style.pause;
	}

	function setPause(pause)
	{
		this.native_style.pause = pause;
	}

	function getPauseAfter()
	{
		if (typeof(this.native_style.pauseAfter) == "undefined") return "";
		return this.native_style.pauseAfter;
	}

	function setPauseAfter(pauseAfter)
	{
		this.native_style.pauseAfter = pauseAfter;
	}

	function getPauseBefore()
	{
		if (typeof(this.native_style.pauseBefore) == "undefined") return "";
		return this.native_style.pauseBefore;
	}

	function setPauseBefore(pauseBefore)
	{
		this.native_style.pauseBefore = pauseBefore;
	}

	function getPitch()
	{
		if (typeof(this.native_style.pitch) == "undefined") return "";
		return this.native_style.pitch;
	}

	function setPitch(pitch)
	{
		this.native_style.pitch = pitch;
	}

	function getPitchRange()
	{
		if (typeof(this.native_style.pitchRange) == "undefined") return "";
		return this.native_style.pitchRange;
	}

	function setPitchRange(pitchRange)
	{
		this.native_style.pitchRange = pitchRange;
	}


	function getPlayDuring()
	{
		if (typeof(this.native_style.playDuring) == "undefined") return "";
		return this.native_style.playDuring;
	}

	function setPlayDuring(playDuring)
	{
		this.native_style.playDuring = playDuring;
	}

	function getPosition()
	{
		if (typeof(this.native_style.position) == "undefined") return "";
		return this.native_style.position;
	}

	function setPosition(position)
	{
		this.native_style.position = position;
	}

	function getQuotes()
	{
		if (typeof(this.native_style.quotes) == "undefined") return "";
		return this.native_style.quotes;
	}

	function setQuotes(quotes)
	{
		this.native_style.quotes = quotes;
	}

	function getRichness()
	{
		if (typeof(this.native_style.richness) == "undefined") return "";
		return this.native_style.richness;
	}

	function setRichness(richness)
	{
		this.native_style.richness = richness;
	}

	function getRight()
	{
		if (typeof(this.native_style.right) == "undefined") return "";
		return this.native_style.right;
	}

	function setRight(right)
	{
		this.native_style.right = right;
	}

	function getSize()
	{
		if (typeof(this.native_style.size) == "undefined") return "";
		return this.native_style.size;
	}

	function setSize(size)
	{
		this.native_style.size = size;
	}

	function getSpeak()
	{
		if (typeof(this.native_style.speak) == "undefined") return "";
		return this.native_style.speak;
	}

	function setSpeak(speak)
	{
		this.native_style.speak = speak;
	}


	function getSpeakHeader()
	{
		if (typeof(this.native_style.speakHeader) == "undefined") return "";
		return this.native_style.speakHeader;
	}

	function setSpeakHeader(speakHeader)
	{
		this.native_style.speakHeader = speakHeader;
	}


	function getSpeakNumeral()
	{
		if (typeof(this.native_style.speakNumeral) == "undefined") return "";
		return this.native_style.speakNumeral;
	}

	function setSpeakNumeral(speakNumeral)
	{
		this.native_style.speakNumeral = speakNumeral;
	}

	function getSpeakPunctuation()
	{
		if (typeof(this.native_style.speakPunctuation) == "undefined") return "";
		return this.native_style.speakPunctuation;
	}

	function setSpeakPunctuation(speakPunctuation)
	{
		this.native_style.speakPunctuation = speakPunctuation;
	}

	function getSpeechRate()
	{
		if (typeof(this.native_style.speechRate) == "undefined") return "";
		return this.native_style.speechRate;
	}

	function setSpeechRate(speechRate)
	{
		this.native_style.speechRate = speechRate;
	}

	function getStress()
	{
		if (typeof(this.native_style.stress) == "undefined") return "";
		return this.native_style.stress;
	}

	function setStress(stress)
	{
		this.native_style.stress = stress;
	}

	function getTableLayout()
	{
		if (typeof(this.native_style.tableLayout) == "undefined") return "";
		return this.native_style.tableLayout;
	}

	function setTableLayout(tableLayout)
	{
		this.native_style.tableLayout = tableLayout;
	}

	function getTextAlign()
	{
		if (typeof(this.native_style.textAlign) == "undefined") return "";
		return this.native_style.textAlign;
	}

	function setTextAlign(textAlign)
	{
		this.native_style.textAlign = textAlign;
	}

	function getTextDecoration()
	{
		if (typeof(this.native_style.textDecoration) == "undefined") return "";
		return this.native_style.textDecoration;
	}

	function setTextDecoration(textDecoration)
	{
		this.native_style.textDecoration = textDecoration;
	}

	function getTextIndent()
	{
		if (typeof(this.native_style.textIndent) == "undefined") return "";
		return this.native_style.textIndent;
	}

	function setTextIndent(textIndent)
	{
		this.native_style.textIndent = textIndent;
	}

	function getTextShadow()
	{
		if (typeof(this.native_style.textShadow) == "undefined") return "";
		return this.native_style.textShadow;
	}

	function setTextShadow(textShadow)
	{
		this.native_style.textShadow = textShadow;
	}

	function getTextTransform()
	{
		if (typeof(this.native_style.textTransform) == "undefined") return "";
		return this.native_style.textTransform;
	}

	function setTextTransform(textTransform)
	{
		this.native_style.textTransform = textTransform;
	}

	function getTop() 
	{
		// See note in xpdom_dom_getHeight()
		if (typeof(this.native_style.top) == "undefined") return "";
		return this.native_style.top;
	}

	function setTop(top)
	{
		this.native_style.top = top;
	}


	function getUnicodeBidi()
	{
		if (typeof(this.native_style.unicodeBidi) == "undefined") return "";
		return this.native_style.unicodeBidi;
	}

	function setUnicodeBidi(unicodeBidi)
	{
		this.native_style.unicodeBidi = unicodeBidi;
	}


	function getVerticalAlign()
	{
		if (typeof(this.native_style.verticalAlign) == "undefined") return "";
		return this.native_style.verticalAlign;
	}

	function setVerticalAlign(verticalAlign)
	{
		this.native_style.verticalAlign = verticalAlign;
	}

	function getVisibility()
	{
		if (typeof(this.native_style.visibility) == "undefined") return "";
		return this.native_style.visibility;
	}

	function setVisibility(visibility)
	{
		this.native_style.visibility = visibility;
	}

	function getVoiceFamily()
	{
		if (typeof(this.native_style.voiceFamily) == "undefined") return "";
		return this.native_style.voiceFamily;
	}

	function setVoiceFamily(voiceFamily)
	{
		this.native_style.voiceFamily = voiceFamily;
	}

	function getVolume()
	{
		if (typeof(this.native_style.volume) == "undefined") return "";
		return this.native_style.volume;
	}

	function setVolume(volume)
	{
		this.native_style.volume = volume;
	}

	function getWhiteSpace()
	{
		if (typeof(this.native_style.whiteSpace) == "undefined") return "";
		return this.native_style.whiteSpace;
	}

	function setWhiteSpace(whiteSpace)
	{
		this.native_style.whiteSpace = whiteSpace;
	}

	function getWidows() 
	{
		if (typeof(this.native_style.widows) == "undefined") return "";
		return this.native_style.widows;
	}

	function setWidows(widows) 
	{
		this.native_style.widows = widows;
	}

	function getWidth() 
	{
		// See note in xpdom_dom_getHeight()
		if (typeof(this.native_style.width) == "undefined") return "";
		return this.native_style.width;
	}

	function setWidth(width) 
	{
		this.native_style.width = width;
	}

	function getWordSpacing()
	{
		if (typeof(this.native_style.wordSpacing) == "undefined") return "";
		return this.native_style.wordSpacing;
	}

	function setWordSpacing(wordSpacing)
	{
		this.native_style.wordSpacing = wordSpacing;
	}

	function getZIndex()
	{
		if (typeof(this.native_style.zIndex) == "undefined") return "";
		return this.native_style.zIndex;
	}

	function setZIndex(zIndex)
	{
		this.native_style.zIndex = zIndex;
	}
}

