/*
 * All java script logic for the Demanware reference application.
 *
 * The code relies on the prototype.js and scriptaculous.js libraries to
 * be also loaded.
 */

function submitWithValue(formid,name,value)
{
	var form = $(formid);
	
	try{
		element = document.createElement("<input name='"+name+"' type='hidden' value='"+value+"' />");
	}catch(e)
	{
	        element = document.createElement("input");
	        element.setAttribute("name", ""+name);
	        element.setAttribute("type", "hidden");
	        element.setAttribute("value", ""+value);
	}
	form.appendChild(element);
	form.submit();
}

/*
 * Register more initializations here
 */
window.onload = function()
{
}


/*
    Opens a new window with the provided url and dimension. Used
    for Scene7 and other situations.

    @param url the url to open
    @param width the window width
    @param height the window height
*/
function openPopup( url, width, height )
{
    if (url != null)
    {
        if (width != null && height != null)
        {
            window.open(url, "", "width=" + width +", height=" + height +", scrollbars=yes, resizable=yes");
        }
        else
        {
            window.open(url, "", "scrollbars=yes, resizable=yes, location=yes, statusbar=yes, menubar=yes");
        }
    }
}

Effect.Appear2 = function(ele) {
  element = $(ele);
  var options = Object.extend(
  {
  	from: 0.0,
  	to:   element.getOpacity(),
  	// force Safari to render floated elements properly
  	afterFinishInternal: function(effect) 
  	{
    	effect.element.forceRerendering();
  	},
  	beforeSetup: function(effect) 
  	{
    	effect.element.setOpacity(effect.options.from);
    	effect.element.show(); 
  	}
  }, arguments[1] || {});
  return new Effect.Opacity(element,options);
}

var PopupDiv = {
	rti: null,

	show: function(arg)
	{
		$('popupbody').style.top=getTop()+'px';
		$('popupbody').style.left=getLeft()+'px';
		$('popupbody').style.height=(getHeight()-1)+'px';
		$('popupbody').style.width=(getWidth()-scrollerWidth)+'px';
		Effect.Appear2('popupbody');
		window.onresize=resizeHandler;
		window.onscroll=resizeHandler;
		PopupDiv.rti = arg;
		var popup = $(PopupDiv.rti);
		centerComponent(popup);
		popup.scrollTop=0;
		Effect.Appear(PopupDiv.rti);
	},

	close: function()
	{
		Effect.Fade(PopupDiv.rti);
		Effect.Fade('popupbody');
	},
	
	
	showByUrl: function( url, arg, closeTimer, returnUrl )
	{
		var index=0;
		PopupDiv.rti = arg;
		$('popupbody').style.top=getTop()+'px';
		$('popupbody').style.left=getLeft()+'px';
		$('popupbody').style.height=(getHeight()-1)+'px';
		$('popupbody').style.width=(getWidth()-scrollerWidth)+'px';
		$('popupbody').style.top=getTop()+'px';
		window.onresize=resizeHandler;
		window.onscroll=resizeHandler;
		Effect.Appear2('popupbody');
		var popup = $(PopupDiv.rti);
		popup.src = url;
		centerComponent(popup);
		Element.hide(PopupDiv.rti);
		Effect.Appear(PopupDiv.rti);
	}
}

function resizeHandler()
{
	centerVisibleComponent($(PopupDiv.rti));
	$('popupbody').style.top=getTop()+'px';
	$('popupbody').style.left=getLeft()+'px';
	$('popupbody').style.height=getHeight()+'px';
	$('popupbody').style.width=getWidth()+'px';
	$('popupbody').style.top=getTop()+'px';
}

function centerVisibleComponent(compo)
{
	var ch=getTop()-compo.clientHeight/2;
	var cw=getLeft()-compo.clientWidth/2;
	compo.style.marginTop =ch + 'px';
	compo.style.marginLeft =cw + 'px';
}

function centerComponent(compo)
{
	compo.style.visibility='hidden';
	compo.style.display='block';
	var ch=getTop()-compo.clientHeight/2;
	var cw=getLeft()-compo.clientWidth/2;
	compo.style.display='none';
	compo.style.visibility='';
	compo.style.marginTop =ch + 'px';
	compo.style.marginLeft =cw + 'px';
}

function getLeft()
{
	var scrollPos;
	if(navigator.appName == "Microsoft Internet Explorer")
	{
		if(typeof window.pageXOffset != 'undefined')
		{
			scrollPos=window.pageXOffset;
		}
		else if(typeof document.compatMode != 'undefined' && document.compatMode != 'BackCompat')
		{
			scrollPos=document.documentElement.scrollLeft;
		}
		else if(typeof document.body != 'undefined')
		{
			scrollPos=document.body.scrollLeft;
		}
	} 
	else
	{
		scrollPos=window.pageXOffset;	
	}
//	return 0;
	return scrollPos;
}

function getHeight()
{
	var scrollPos;
	if(navigator.appName == "Microsoft Internet Explorer")
	{
		if(typeof window.innerHeight != 'undefined')
		{
			scrollPos=window.innerHeight;
		}
		else if(typeof document.compatMode != 'undefined' && document.compatMode != 'BackCompat')
		{
			scrollPos=document.documentElement.clientHeight;
		}
		else if(typeof document.body != 'undefined')
		{
			scrollPos=document.body.clientHeight;
		}
	} 
	else
	{
		scrollPos=window.innerHeight;	
	}
//	return 10000;
	return scrollPos;
}

function getWidth()
{
	var scrollPos;
	if(navigator.appName == "Microsoft Internet Explorer")
	{
		if(typeof window.innerWidth != 'undefined')
		{
			scrollPos=window.innerWidth;
		}
		else if(typeof document.compatMode != 'undefined' && document.compatMode != 'BackCompat')
		{
			scrollPos=document.documentElement.clientWidth;
		}
		else if(typeof document.body != 'undefined')
		{
			scrollPos=document.body.clientWidth;
		}
	} 
	else
	{
		scrollPos=window.innerWidth;	
	}
//	return 2000;
	return scrollPos;
}

function getTop()
{
	var scrollPos;
	if(navigator.appName == "Microsoft Internet Explorer")
	{
		if(typeof window.pageYOffset != 'undefined')
		{
			scrollPos=window.pageYOffset;
		}
		else if(typeof document.compatMode != 'undefined' && document.compatMode != 'BackCompat')
		{
			scrollPos=document.documentElement.scrollTop;
		}
		else if(typeof document.body != 'undefined')
		{
			scrollPos=document.body.scrollTop;
		}
	} 
	else
	{
		scrollPos=window.pageYOffset;	
	}
//	return 0;
	return scrollPos;
}

var EMail = {

	replacementTagId: null,
	url: null,

	login : function(url,replacementTagId)
	{
		EMail.replacementTagId = replacementTagId;
		EMail.url = url;
		// Please insert Cheetah Mail Login-URL
		var loginUrl='';
		var handlerFunc = function(req)
		{
			var text = req.responseText;
			if(text=='OK')
			{
				EMail.signUp(EMail.url,EMail.replacementTagId);
			}

		}

		var errFunc = function(req)
		{
		}

		// add the product
		new Ajax.Request( loginUrl, {method:'get', postBody:null, onSuccess:handlerFunc, onFailure:errFunc});
	},
	
	signUp : function( url,replacementTag)
	{
		var handlerFunc = function(req)
		{
			var popup = $(EMail.replacementTagId);
			popup.innerHTML = req.responseText;
			Element.hide(EMail.replacementTagId);
			Effect.Appear(EMail.replacementTagId);
		}

		var errFunc = function(req)
		{
		}

		// add the product
		new Ajax.Request( url, {method:'post', postBody:postdata, onSuccess:handlerFunc, onFailure:errFunc});
	}
}

var Popup = {

	// timer for automatic close of the popup
	timer: null,
	
	replacementTagId: null,

	showText: function( text, replacementTagId, closeTimer, returnUrl )
	{
		// get the data of the form as serialized string
		var postdata = null;
		
		Popup.replacementTagId = replacementTagId;
		var popup = $(Popup.replacementTagId);
		popup.style.display='block';
		popup.innerHTML = text;
		$('popupbody').style.display='block';
		Element.hide(Popup.replacementTagId);

//		Effect.Appear('popupbody');
		Effect.Appear(Popup.replacementTagId);
	},

	show: function( url, replacementTagId, closeTimer, returnUrl )
	{
		// get the data of the form as serialized string
		var postdata = null;
		
		Popup.replacementTagId = replacementTagId;
	
		var handlerFunc = function(req)
		{
			// replace the content
			var popup = $(Popup.replacementTagId);
			popup.innerHTML = req.responseText;
			Element.hide(Popup.replacementTagId);

			Effect.Appear(Popup.replacementTagId);

			// after a time out automatically close it
			if(!empty(closeTimer)){
				Popup.timer = setTimeout( 'Popup.close()', closeTimer );
			}
		}

		var errFunc = function(req)
		{
		}

		// add the product
		new Ajax.Request( url, {method:'post', postBody:postdata, onSuccess:handlerFunc, onFailure:errFunc});
	},
	
	processForm: function(url, form, replacementTagId)
	{
        var postdata = Form.serialize(form);
        Form.disable(form);
        
        var handlerFunc = function(req)
        {
            Form.enable(form);
        
            // Get the position before the innerHTML is set. After
            // the set the elements have no coordinates. A display
            // refresh from the browser is necessary.
            $(replacementTagId).innerHTML=req.responseText;
            try{
            	closingWindow();
            }catch(err)
            {
            	alert("Not found")
            }
        }

        var errFunc = function(req)
        {
            Form.enable(form);
        }

        new Ajax.Request( url, {method:'post', postBody:postdata, onSuccess:handlerFunc, onFailure:errFunc});
	},

	close: function()
	{
		if ( Popup.timer != null )
		{
			clearTimeout( Popup.timer );
			Popup.timer = null;
		}
		Effect.Fade(Popup.replacementTagId);
		$('popupbody').style.display='none';
	}
}

/*
 * Support for the compare window
 */
ProductCompare = {
    openPopup: function( url ) {
        window.open(
            url,
            'product_compare',
            'width=800,height=600,scrollbars=yes,resizable=yes',
            true /* replace history in the popped up window */
        ).focus();
    }
}


/*
 * Functionality around the mini cart.
 */
var MiniCart = {
    // flag, whether cart is open or not
    state: 0,

    // during page loading, the Demandware URL is stored here
    url: '',

    // timer for automatic close of cart item view
    timer: null,

    cartRefresh: function(carturl)
    {
        // get the data of the form as serialized string
        MiniCart.url = carturl;
        
        var refreshHandlerFunc = function(req)
        {
        
            // Get the position before the innerHTML is set. After
            // the set the elements have no coordinates. A display
            // refresh from the browser is necessary.
            var minicarttotal = $('minicarttotal');
            var pos = Position.cumulativeOffset(minicarttotal);
            var dim = Element.getDimensions(minicarttotal);

            // replace the content
            var minicart = $('minicart');
            minicart.innerHTML = req.responseText;

            // show the item
            // this display is optimized for Firefox. IE6/7 display the 
            // sliding down cart with an offset of -1
            var minicartcontent = $('minicartcontent');

            minicartcontent.style.left = pos[0] + 0 + 'px';
            minicartcontent.style.top = pos[1] + dim.height + 1 + 'px';
            minicartcontent.style.width = dim.width - 2 + 'px';

            new Effect.SlideDown('minicartcontent');

            // after a time out automatically close it
            MiniCart.timer = setTimeout( 'MiniCart.cartClose()', 6000 );
        }

        var refreshErrFunc = function(req)
        {
            // hide progress indicator
        }

        // cloes a previous mini cart
        MiniCart.cartClose();
        
        // add the product
        new Ajax.Request( MiniCart.url, {method:'post', postBody:'', onSuccess:refreshHandlerFunc, onFailure:refreshErrFunc});
    },

    cartReplace: function(carturl, form, progressImageSrc)
    {
        // get the data of the form as serialized string
        var postdata = Form.serialize(form);
        MiniCart.url = carturl;
    
        // get button reference
        var addButtons = Form.getInputs(form, 'image', 'add');
    
        // the button to update
        var addButton = null;
        
        // disable form
        Form.disable(form);

        // it is an array of buttons, but we need only one all
        // other combinations are strange so far
        if (addButtons.length == 1)
        {
            addButton = addButtons[0];  
        }
    
        var previousImageSrc = null;
    
        // show progress indicator
        if (addButton != null)
        {
            previousImageSrc = addButton.src;
            addButton.src = progressImageSrc;
        }
    
        var handlerFunc = function(req)
        {
            // hide progress indicator
            if (addButton != null)
            {
                addButton.src = previousImageSrc;
            }
            Form.enable(form);
        
            // Get the position before the innerHTML is set. After
            // the set the elements have no coordinates. A display
            // refresh from the browser is necessary.
            var minicarttotal = $('minicarttotal');
            var pos = Position.cumulativeOffset(minicarttotal);
            var dim = Element.getDimensions(minicarttotal);

            // replace the content
            var minicart = $('minicart');
            minicart.innerHTML = req.responseText;

            // show the item
            // this display is optimized for Firefox. IE6/7 display the 
            // sliding down cart with an offset of -1
            var minicartcontent = $('minicartcontent');

            minicartcontent.style.left = pos[0] + 0 + 'px';
            minicartcontent.style.top = pos[1] + dim.height + 1 + 'px';
            minicartcontent.style.width = dim.width - 2 + 'px';

            new Effect.SlideDown('minicartcontent');

			
            // after a time out automatically close it
            MiniCart.timer = setTimeout( 'MiniCart.cartClose()', 6000 );
        }

        var errFunc = function(req)
        {
            // hide progress indicator
            if (addButton != null)
            {
                addButton.src = previousImageSrc;
            }
            Form.enable(form);
        }

        // close a product QuickView
        // if ( QuickView ) QuickView.closeQuickView();

        // cloes a previous mini cart
        MiniCart.cartClose();

        // add the product
        new Ajax.Request( MiniCart.url, {method:'post', postBody:postdata, onSuccess:handlerFunc, onFailure:errFunc});
    },
    
    cartAdd: function( form, progressImageSrc )
    {
        // get the data of the form as serialized string
        var postdata = Form.serialize(form);
    
        // get button reference
        var addButtons = Form.getInputs(form, 'image', 'add');
    
        // the button to update
        var addButton = null;
        
        // disable form
        Form.disable(form);

        // it is an array of buttons, but we need only one all
        // other combinations are strange so far
        if (addButtons.length == 1)
        {
            addButton = addButtons[0];  
        }
    
        var previousImageSrc = null;
    
        // show progress indicator
        if (addButton != null)
        {
            previousImageSrc = addButton.src;
            addButton.src = progressImageSrc;
        }
    
        var handlerFunc = function(req)
        {
            // hide progress indicator
            if (addButton != null)
            {
                addButton.src = previousImageSrc;
            }
            Form.enable(form);
        
            // Get the position before the innerHTML is set. After
            // the set the elements have no coordinates. A display
            // refresh from the browser is necessary.
            var minicarttotal = $('minicarttotal');
            var pos = Position.cumulativeOffset(minicarttotal);
            var dim = Element.getDimensions(minicarttotal);

            // replace the content
            var minicart = $('minicart');
            minicart.innerHTML = req.responseText;

            // show the item
            // this display is optimized for Firefox. IE6/7 display the 
            // sliding down cart with an offset of -1
            var minicartcontent = $('minicartcontent');

            minicartcontent.style.left = pos[0] + 0 + 'px';
            minicartcontent.style.top = pos[1] + dim.height + 1 + 'px';
            minicartcontent.style.width = dim.width - 2 + 'px';

            new Effect.SlideDown('minicartcontent');


            // after a time out automatically close it
            MiniCart.timer = setTimeout( 'MiniCart.cartClose()', 6000 );
        }

        var errFunc = function(req)
        {
            // hide progress indicator
            if (addButton != null)
            {
                addButton.src = previousImageSrc;
            }
            Form.enable(form);
        }

        // close a product QuickView
        // if ( QuickView ) QuickView.closeQuickView();

        // cloes a previous mini cart
        MiniCart.cartClose();

        // add the product
        new Ajax.Request( MiniCart.url, {method:'post', postBody:postdata, onSuccess:handlerFunc, onFailure:errFunc});
    },

    cartClose: function()
    {
        if ( MiniCart.timer != null )
        {
            clearTimeout( MiniCart.timer );
            MiniCart.timer = null;
            Effect.SlideUp('minicartcontent');

        }
    }
}

wmtt = null;

document.onmousemove = updateWMTT;

function updateWMTT(e) {
	var test = "";
	//try {
		if(e != null)
		{
			x = (document.all) ? window.event.x + document.body.scrollLeft : e.pageX;
			y = (document.all) ? window.event.y + document.body.scrollTop  : e.pageY;
			if (wmtt != null) {
				wmtt.style.left = (x + 20) + "px";
				wmtt.style.top 	= (y + 20) + "px";
			}
		}
		else
		{
			if(document.all)
			{
				if (document.body!=null)
				{
					x = window.event.x + document.body.scrollLeft;
					y = window.event.y + document.body.scrollTop;
				} else {
					x = window.event.x;
					y = window.event.y;
				}
				if (wmtt != null) {
					wmtt.style.left = (x + 20) + "px";
					wmtt.style.top 	= (y + 20) + "px";
				}
			}
		}
	//} catch(exception) {alert(test);}
}

function showWMTT(id) {
	wmtt = document.getElementById(id);
	wmtt.style.display = "block"
}

function hideWMTT() {
	wmtt.style.display = "none";
}


/*
	Header Information------------------------------------[Do Not Remove This Header]--
	Title: OO Dom Image Rollover
	Description: This script makes it easy to add rollover/ mousedown 
  	effects to any image on the page, including image submit buttons. Automatically 
  	preloads images as well. Script works in all DOM capable browsers- IE5+, NS6+, 
  	Opera7+.
	
	Legal: Copyright 2005 Adam Smith
	Author Email Address: ibulwark@hotmail.com
	Date Created: June 6, 2005
	Website: Codevendor.com | eBadgeman.com
	Script featured on Dynamic Drive: http://www.dynamicdrive.com
	-----------------------------------------------------------------------------------
*/

function imageholderclass(){
	this.over=new Array();
	this.down=new Array();
	this.src=new Array();
	this.store=store;
	
	function store(src, down, over){
		var AL=this.src.length;
		this.src[AL]=new Image(); 
		if(src.length>0)
			this.src[AL].src=src;
		this.over[AL]=new Image(); 
		if(over.length>0)
			this.over[AL].src=over;
		this.down[AL]=new Image(); 
		if(down.length>0)
			this.down[AL].src=down;
	}
}

var ih = new imageholderclass();
var mouseisdown=0;

function preloader(t){
	for(i=0;i<t.length;i++){
		if((t[i].getAttribute('srcover')||t[i].getAttribute('srcdown'))){
			storeimages(t[i]);
			var checker='';
			checker=(t[i].getAttribute('srcover'))?checker+'A':checker+'';
			checker=(t[i].getAttribute('srcdown'))?checker+'B':checker+'';
			
			switch(checker){
			case 'A' : mouseover(t[i]);mouseout(t[i]); break;
			case 'B' : mousedown(t[i]); mouseup2(t[i]); break;
			case 'AB' : mouseover(t[i]);mouseout(t[i]); mousedown(t[i]); mouseup(t[i]); break;
			default : return;			
			}
			
			if(t[i].src){t[i].setAttribute("oldsrc",t[i].src);}
		}
	}
}
function mouseup(t){
	var newmouseup;
	if(t.onmouseup){
		t.oldmouseup=t.onmouseup;
		newmouseup=function(){mouseisdown=0;this.src=this.getAttribute("srcover");this.oldmouseup();}

	}
	else{newmouseup=function(){mouseisdown=0;this.src=this.getAttribute("srcover");}}
	t.onmouseup=newmouseup;
}

function mouseup2(t){
	var newmouseup;
	if(t.onmouseup){
		t.oldmouseup=t.onmouseup;
		newmouseup=function(){mouseisdown=0;this.src=this.getAttribute("oldsrc");this.oldmouseup();}
		}
	else{newmouseup=function(){mouseisdown=0;this.src=this.getAttribute("oldsrc");}}
	t.onmouseup = newmouseup;
}

function mousedown(t){
	var newmousedown;
	if(t.onmousedown){
		t.oldmousedown=t.onmousedown;
		newmousedown=function(){if(mouseisdown==0){this.src=this.getAttribute("srcdown");this.oldmousedown();}}
	}
	else{newmousedown=function(){if(mouseisdown==0){this.src=this.getAttribute("srcdown");}}}
	t.onmousedown=newmousedown;
}

function mouseover(t){
	var newmouseover;
	if(t.onmouseover){
		t.oldmouseover=t.onmouseover;
		newmouseover=function(){this.src=this.getAttribute("srcover");this.oldmouseover();}
	}
	else{newmouseover=function(){this.src=this.getAttribute("srcover");}}
	t.onmouseover=newmouseover;
}

function mouseout(t){
	var newmouseout;
	if(t.onmouseout){
		t.oldmouseout=t.onmouseout;
		newmouseout=function(){this.src=this.getAttribute("oldsrc");this.oldmouseout();}
	}
	else{newmouseout=function(){this.src=this.getAttribute("oldsrc");}}
	t.onmouseout=newmouseout;
}

function storeimages(t){
	var s=(t.getAttribute('src'))?t.getAttribute('src'):'';
	var d=(t.getAttribute('srcdown'))?t.getAttribute('srcdown'):'';
	var o=(t.getAttribute('srcover'))?t.getAttribute('srcover'):'';
	ih.store(s,d,o);
}

function preloadimgsrc(){
	if(!document.getElementById) return;
	var it=document.getElementsByTagName('IMG');
	var it2=document.getElementsByTagName('INPUT');
	preloader(it);
	preloader(it2);
}

if(window.addEventListener){window.addEventListener("load", preloadimgsrc, false);} 
else{
	if(window.attachEvent){window.attachEvent("onload", preloadimgsrc);}
	else{if(document.getElementById){window.onload=preloadimgsrc;}}
}

function Menu(label, mw, mh, fnt, fs, fclr, fhclr, bg, bgh, halgn, valgn, pad, space, to, sx, sy, srel, opq, vert, idt, aw, ah) 
{
    this.version = "020320 [Menu; mm_menu.js]";
    this.type = "Menu";
    this.menuWidth = mw;
    this.menuItemHeight = mh;
    this.fontSize = fs;
    this.fontWeight = "plain";
    this.fontFamily = fnt;
    this.fontColor = fclr;
    this.fontColorHilite = fhclr;
    this.bgColor = "#000000";
    this.menuBorder = 1;
    this.menuBgOpaque=opq;
    this.menuItemBorder = 1;
    this.menuItemIndent = idt;
    this.menuItemBgColor = bg;
    this.menuItemVAlign = halgn;
    this.menuItemHAlign = valgn;
    this.menuItemPadding = pad;
    this.menuItemSpacing = space;
    this.menuLiteBgColor = "#000000";
    this.menuBorderBgColor = "#777777";
    this.menuHiliteBgColor = bgh;
    this.menuHilitePadding = 50;
    this.menuContainerBgColor = "#000000";
    this.childMenuIcon = "arrows.gif";
    this.submenuXOffset = sx;
    this.submenuYOffset = sy;
    this.submenuRelativeToItem = srel;
    this.vertical = vert;
    this.items = new Array();
    this.actions = new Array();
    this.hBarSpace = new Array();
    this.childMenus = new Array();
    this.hideOnMouseOut = true;
    this.hideTimeout = to;
    this.addMenuItem = addMenuItem;
    this.writeMenus = writeMenus;
    this.MM_showMenu = MM_showMenu;
    this.onMenuItemOver = onMenuItemOver;
    this.onMenuItemAction = onMenuItemAction;
    this.hideMenu = hideMenu;
    this.hideChildMenu = hideChildMenu;
    if (!window.menus) window.menus = new Array();
    this.label = label;
    window.menus[this.label] = this;
    window.menus[window.menus.length] = this;
    if (!window.activeMenus) window.activeMenus = new Array();
}

function addMenuItem(label, action) {
    this.items[this.items.length] = label;
    this.actions[this.actions.length] = action;
    //this.hBarSpace[this.hBarSpace.length] = hBarSpace;
}


function FIND(item) {
    if( window.mmIsOpera ) return(document.getElementById(item));
    if (document.all) return(document.all[item]);
    if (document.getElementById) return(document.getElementById(item));
    return(false);
}

function writeMenus(container) {
    if (window.triedToWriteMenus) return;
    var agt = navigator.userAgent.toLowerCase();
    window.mmIsOpera = agt.indexOf('opera') != -1;
    if (!container && document.layers) {
        window.delayWriteMenus = this.writeMenus;
        var timer = setTimeout('delayWriteMenus()', 500);
        container = new Layer(100);
        clearTimeout(timer);
    } else if (document.all || document.hasChildNodes || window.mmIsOpera) {
        document.writeln('<span id="menuContainer"></span>');
        container = FIND("menuContainer");
    }

    window.mmHideMenuTimer = null;
    if (!container) return; 
    window.triedToWriteMenus = true; 
    container.isContainer = true;
    container.menus = new Array();
    for (var i=0; i<window.menus.length; i++) 
        container.menus[i] = window.menus[i];
    window.menus.length = 0;
    var countMenus = 0;
    var countItems = 0;
    var top = 0;
    var content = '';
    var lrs = false;
    var theStat = "";
    var tsc = 0;
    if (document.layers) lrs = true;
    for (var i=0; i<container.menus.length; i++, countMenus++) {
        var menu = container.menus[i];
        if (menu.bgImageUp || !menu.menuBgOpaque) {
            menu.menuBorder = 0;
            menu.menuItemBorder = 0;
        }
        if (lrs) {
            var menuLayer = new Layer(100, container);
            var lite = new Layer(100, menuLayer);
            lite.top = menu.menuBorder;
            lite.left = menu.menuBorder;
            var body = new Layer(100, lite);
            body.top = menu.menuBorder;
            body.left = menu.menuBorder;
        } else {
            content += ''+
            '<div id="menuLayer'+ countMenus +'" style="position:absolute;z-index:1;left:0px;top:'+ (i * 100) +'px;visibility:hidden;color:' +  menu.menuBorderBgColor + ';margin-bottom:10px;border:1px;">\n'+
            '  <div id="menuLite'+ countMenus +'" style="position:absolute;z-index:1;left:'+ menu.menuBorder +'px;top:'+ menu.menuBorder +'px;visibility:hide;background-image: url(\''+cartridgesImageBaseURL+'/images/menu-back.jpg\');background-color:#fff;background-repeat: no-repeat;background-position:bottom;display: block;padding-bottom:10px;cursor:pointer;" onmouseout="mouseoutMenu();" onmouseover="MM_swapImage(\'' + menu.label + '\',\'\',\''+cartridgesImageBaseURL+'/images/btn-'+ menu.label +'-on.gif\',1)">\n'+
            '    <div id="menuFg'+ countMenus +'" style="position:absolute;left:'+ menu.menuBorder +'px;top:'+ menu.menuBorder +'px;visibility:hide;margin-bottom:10px;">\n'+
            '';
        }
        var x=i;
        for (var i=0; i<menu.items.length; i++) {
            var item = menu.items[i];
            var childMenu = false;
            var defaultHeight = menu.fontSize+2*menu.menuItemPadding;
            if (item.label) {
                item = item.label;
                childMenu = true;
            }
            menu.menuItemHeight = menu.menuItemHeight || defaultHeight;
            var itemProps = '';
            if( menu.fontFamily != '' ) itemProps += 'font-family:' + menu.fontFamily +';';
            itemProps += 'font-weight:' + menu.fontWeight + ';fontSize:' + menu.fontSize + 'px;';
            if (menu.fontStyle) itemProps += 'font-style:' + menu.fontStyle + ';';
            if (document.all || window.mmIsOpera) 
                itemProps += 'font-size:' + menu.fontSize + 'px;" onmouseover="onMenuItemOver(null,this);" onclick="onMenuItemAction(null,this);';
            else if (!document.layers) {
                itemProps += 'font-size:' + menu.fontSize + 'px;';
            }
            var l;
            if (lrs) {
                var lw = menu.menuWidth;
                if( menu.menuItemHAlign == 'right' ) lw -= menu.menuItemPadding;
                l = new Layer(lw,body);
            }
            var itemLeft = 0;
            var itemTop = i*menu.menuItemHeight;
            if( !menu.vertical ) {
                itemLeft = i*menu.menuWidth;
                itemTop = 0;
            }
            var dTag = '<div id="menuItem'+ countItems +'" style="position:absolute;left:' + itemLeft + 'px;top:'+ itemTop +'px;'+ itemProps +'">';
            var dClose = '</div>'
            if (menu.bgImageUp) dTag = '<div id="menuItem'+ countItems +'" style="background:url('+menu.bgImageUp+');position:absolute;left:' + itemLeft + 'px;top:'+ itemTop +'px;'+ itemProps +'">';
            
            var left = 0, top = 0, right = 0, bottom = 0;
            left = 1 + menu.menuItemPadding + menu.menuItemIndent;
            right = left + menu.menuWidth - 2*menu.menuItemPadding - menu.menuItemIndent;
            if( menu.menuItemVAlign == 'top' ) top = menu.menuItemPadding;
            if( menu.menuItemVAlign == 'bottom' ) top = menu.menuItemHeight-menu.fontSize-1-menu.menuItemPadding;
            if( menu.menuItemVAlign == 'middle' ) top = ((menu.menuItemHeight/2)-(menu.fontSize/2)-1);
            bottom = menu.menuItemHeight - 2*menu.menuItemPadding;
            var textProps = 'position:absolute;left:' + left + 'px;top:' + top + 'px;';
            if (lrs) {
                textProps +=itemProps + 'right:' + right + ';bottom:' + bottom + ';';
                dTag = "";
                dClose = "";
            }
            
            if(document.all && !window.mmIsOpera) {
                item = '<div align="' + menu.menuItemHAlign + '">' + item + '</div>';
            } else if (lrs) {
                item = '<div style="text-align:' + menu.menuItemHAlign + ';">' + item + '</div>';
            } else {
                var hitem = null;
                if( menu.menuItemHAlign != 'left' ) {
                    if(window.mmIsOpera) {
                        var operaWidth = menu.menuItemHAlign == 'center' ? -(menu.menuWidth-2*menu.menuItemPadding) : (menu.menuWidth-6*menu.menuItemPadding);
                        hitem = '<div id="menuItemHilite' + countItems + 'Shim" style="position:absolute;top:1px;left:' + menu.menuItemPadding + 'px;width:' + operaWidth + 'px;text-align:' 
                            + menu.menuItemHAlign + ';visibility:visible;>' + item + '</div>';
                        item = '<div id="menuItemText' + countItems + 'Shim" style="position:absolute;top:1px;left:' + menu.menuItemPadding + 'px;width:' + operaWidth + 'px;text-align:' 
                            + menu.menuItemHAlign + ';visibility:visible;">' + item + '</div>';
                    } else {
                        hitem = '<div id="menuItemHilite' + countItems + 'Shim" style="position:absolute;top:1px;left:1px;right:-' + (left+menu.menuWidth-3*menu.menuItemPadding) + 'px;text-align:' 
                            + menu.menuItemHAlign + ';visibility:visible;">' + item + '</div>';
                        item = '<div id="menuItemText' + countItems + 'Shim" style="position:absolute;top:1px;left:1px;right:-' + (left+menu.menuWidth-3*menu.menuItemPadding) + 'px;text-align:' 
                            + menu.menuItemHAlign + ';visibility:visible;">' + item + '</div>';
                    }
                } else hitem = null;
            }
            if(document.all && !window.mmIsOpera) item = '<div id="menuItemShim' + countItems + '" style="position:absolute;left:0px;top:0px;">' + item + '</div>';
            var dText   = '<div id="menuItemText'+ countItems +'" style="' + textProps + 'color:'+ menu.fontColor +';">'+ item +'&nbsp</div>\n'
                        + '<div id="menuItemHilite'+ countItems +'" style="' + textProps + 'color:'+ menu.fontColorHilite +';visibility:hidden;">' 
                        + (hitem||item) +'&nbsp</div>';
            if (childMenu) content += ( dTag + dText + '<div id="childMenu'+ countItems +'" style="position:absolute;left:0px;top:3px;"><img src="'+ menu.childMenuIcon +'"></div>\n' + dClose);
            else content += ( dTag + dText + dClose);
            if (lrs) {
                l.document.open("text/html");
                l.document.writeln(content);
                l.document.close(); 
                content = '';
                theStat += "-";
                tsc++;
                if (tsc > 50) {
                    tsc = 0;
                    theStat = "";
                }
                status = theStat;
            }
            countItems++;  
        }
        if (lrs) {
            var focusItem = new Layer(100, body);
            focusItem.visiblity="hidden";
            focusItem.document.open("text/html");
            focusItem.document.writeln("&nbsp;");
            focusItem.document.close(); 
        } else {
          content += '    <div id="focusItem'+ countMenus +'" style="position:absolute;left:0px;top:0px;visibility:hide;" onclick="onMenuItemAction(null,this);">&nbsp;</div>\n';
          content += '   </div>\n  </div>\n</div>\n';
        }
        i=x;
    }
    if (document.layers) {      
        container.clip.width = window.innerWidth;
        container.clip.height = window.innerHeight;
        container.onmouseout = mouseoutMenu;
        container.menuContainerBgColor = this.menuContainerBgColor;
        for (var i=0; i<container.document.layers.length; i++) {
            proto = container.menus[i];
            var menu = container.document.layers[i];
            container.menus[i].menuLayer = menu;
            container.menus[i].menuLayer.Menu = container.menus[i];
            container.menus[i].menuLayer.Menu.container = container;
            var body = menu.document.layers[0].document.layers[0];
            body.clip.width = proto.menuWidth || body.clip.width;
            body.clip.height = proto.menuHeight || body.clip.height;
            for (var n=0; n<body.document.layers.length-1; n++) {
                var l = body.document.layers[n];
                l.Menu = container.menus[i];
                l.menuHiliteBgColor = proto.menuHiliteBgColor;
                l.document.bgColor = proto.menuItemBgColor;
                l.saveColor = proto.menuItemBgColor;
                l.onmouseover = proto.onMenuItemOver;
                l.onclick = proto.onMenuItemAction;
                l.mmaction = container.menus[i].actions[n];
                l.focusItem = body.document.layers[body.document.layers.length-1];
                l.clip.width = proto.menuWidth || body.clip.width;
                l.clip.height = proto.menuItemHeight || l.clip.height;
                if (n>0) {
                    if( l.Menu.vertical ) l.top = body.document.layers[n-1].top + body.document.layers[n-1].clip.height + proto.menuItemBorder + proto.menuItemSpacing;
                    else l.left = body.document.layers[n-1].left + body.document.layers[n-1].clip.width + proto.menuItemBorder + proto.menuItemSpacing;
                }
                l.hilite = l.document.layers[1];
                if (proto.bgImageUp) l.background.src = proto.bgImageUp;
                l.document.layers[1].isHilite = true;
                if (l.document.layers.length > 2) {
                    l.childMenu = container.menus[i].items[n].menuLayer;
                    l.document.layers[2].left = l.clip.width -13;
                    l.document.layers[2].top = (l.clip.height / 2) -4;
                    l.document.layers[2].clip.left += 3;
                    l.Menu.childMenus[l.Menu.childMenus.length] = l.childMenu;
                }
            }
            if( proto.menuBgOpaque ) body.document.bgColor = proto.bgColor;
            if( proto.vertical ) {
                body.clip.width  = l.clip.width +proto.menuBorder;
                body.clip.height = l.top + l.clip.height +proto.menuBorder;
            } else {
                body.clip.height  = l.clip.height +proto.menuBorder;
                body.clip.width = l.left + l.clip.width  +proto.menuBorder;
                if( body.clip.width > window.innerWidth ) body.clip.width = window.innerWidth;
            }
            var focusItem = body.document.layers[n];
            focusItem.clip.width = body.clip.width;
            focusItem.Menu = l.Menu;
            focusItem.top = -30;
            focusItem.captureEvents(Event.MOUSEDOWN);
            focusItem.onmousedown = onMenuItemDown;
            if( proto.menuBgOpaque ) menu.document.bgColor = proto.menuBorderBgColor;
            var lite = menu.document.layers[0];
            if( proto.menuBgOpaque ) lite.document.bgColor = proto.menuLiteBgColor;
            lite.clip.width = body.clip.width +1;
            lite.clip.height = body.clip.height +1;
            menu.clip.width = body.clip.width + (proto.menuBorder * 3) ;
            menu.clip.height = body.clip.height + (proto.menuBorder * 3);
        }
    } else {
        if ((!document.all) && (container.hasChildNodes) && !window.mmIsOpera) {
            container.innerHTML=content;
        } else {
            container.document.open("text/html");
            container.document.writeln(content);
            container.document.close(); 
        }
        if (!FIND("menuLayer0")) return;
        var menuCount = 0;
        for (var x=0; x<container.menus.length; x++) {
            var menuLayer = FIND("menuLayer" + x);
            container.menus[x].menuLayer = "menuLayer" + x;
            menuLayer.Menu = container.menus[x];
            menuLayer.Menu.container = "menuLayer" + x;
            menuLayer.style.zindex = 1;
            var s = menuLayer.style;
            s.pixeltop = -300;
            s.pixelleft = -300;
            s.top = '-300px';
            s.left = '-300px';

            var menu = container.menus[x];
            menu.menuItemWidth = menu.menuWidth || menu.menuIEWidth || 140;
            if( menu.menuBgOpaque ) menuLayer.style.backgroundColor = menu.menuBorderBgColor;
            var top = 0;
            var left = 0;
            menu.menuItemLayers = new Array();
            for (var i=0; i<container.menus[x].items.length; i++) {
                var l = FIND("menuItem" + menuCount);
                l.Menu = container.menus[x];
                l.Menu.menuItemLayers[l.Menu.menuItemLayers.length] = l;
                if (l.addEventListener || window.mmIsOpera) {
                    l.style.width = menu.menuItemWidth + 'px';
                    l.style.height = menu.menuItemHeight + 'px';
                    l.style.pixelWidth = menu.menuItemWidth;
                    l.style.pixelHeight = menu.menuItemHeight;
                    l.style.top = top + 'px';
                    l.style.left = left + 'px';
                    if(l.addEventListener) {
                        l.addEventListener("mouseover", onMenuItemOver, false);
                        l.addEventListener("click", onMenuItemAction, false);
                        l.addEventListener("mouseout", mouseoutMenu, false);
                    }
                    if( menu.menuItemHAlign != 'left' ) {
                        l.hiliteShim = FIND("menuItemHilite" + menuCount + "Shim");
                        l.hiliteShim.style.visibility = "inherit";
                        l.textShim = FIND("menuItemText" + menuCount + "Shim");
                        l.hiliteShim.style.pixelWidth = menu.menuItemWidth - 2*menu.menuItemPadding - menu.menuItemIndent;
                        l.hiliteShim.style.width = l.hiliteShim.style.pixelWidth;
                        l.textShim.style.pixelWidth = menu.menuItemWidth - 2*menu.menuItemPadding - menu.menuItemIndent;
                        l.textShim.style.width = l.textShim.style.pixelWidth;   
                    }
                } else {
                    l.style.pixelWidth = menu.menuItemWidth;
                    l.style.pixelHeight = menu.menuItemHeight;
                    l.style.pixelTop = top;
                    l.style.pixelLeft = left;
                    if( menu.menuItemHAlign != 'left' ) {
                        var shim = FIND("menuItemShim" + menuCount);
                        shim[0].style.pixelWidth = menu.menuItemWidth - 2*menu.menuItemPadding - menu.menuItemIndent;
                        shim[1].style.pixelWidth = menu.menuItemWidth - 2*menu.menuItemPadding - menu.menuItemIndent;
                        shim[0].style.width = shim[0].style.pixelWidth + 'px';
                        shim[1].style.width = shim[1].style.pixelWidth + 'px';
                    }
                }
                if( menu.vertical ) top = top + menu.menuItemHeight+menu.menuItemBorder+menu.menuItemSpacing;
                else left = left + menu.menuItemWidth+menu.menuItemBorder+menu.menuItemSpacing;
                l.style.fontSize = menu.fontSize + 'px';
                l.style.backgroundColor = menu.menuItemBgColor;
                l.style.visibility = "inherit";
                l.saveColor = menu.menuItemBgColor;
                l.menuHiliteBgColor = menu.menuHiliteBgColor;
                l.mmaction = container.menus[x].actions[i];
                l.hilite = FIND("menuItemHilite" + menuCount);
                l.focusItem = FIND("focusItem" + x);
                l.focusItem.style.pixelTop = -30;
                l.focusItem.style.top = '-30px';
                var childItem = FIND("childMenu" + menuCount);
                if (childItem) {
                    l.childMenu = container.menus[x].items[i].menuLayer;
                    childItem.style.pixelLeft = menu.menuItemWidth -11;
                    childItem.style.left = childItem.style.pixelLeft + 'px';
                    childItem.style.pixelTop = (menu.menuItemHeight /2) -4;
                    childItem.style.top = childItem.style.pixelTop + 'px';
                    l.Menu.childMenus[l.Menu.childMenus.length] = l.childMenu;
                }
                l.style.cursor = "hand";
                menuCount++;
            }
            if( menu.vertical ) {
                menu.menuHeight = top-1-menu.menuItemSpacing;
                menu.menuWidth = menu.menuItemWidth;
            } else {
                menu.menuHeight = menu.menuItemHeight;
                menu.menuWidth = left-1-menu.menuItemSpacing;
            }

            var lite = FIND("menuLite" + x);
            var s = lite.style;
            s.pixelHeight = menu.menuHeight +(menu.menuBorder * 2);
            s.height = s.pixelHeight + 'px';
            s.pixelWidth = menu.menuWidth + (menu.menuBorder * 2);
            s.width = s.pixelWidth + 'px';
            if( menu.menuBgOpaque ) s.backgroundColor = menu.menuLiteBgColor;

            var body = FIND("menuFg" + x);
            s = body.style;
            s.pixelHeight = menu.menuHeight + menu.menuBorder;
            s.height = s.pixelHeight + 'px';
            s.pixelWidth = menu.menuWidth + menu.menuBorder;
            s.width = s.pixelWidth + 'px';
            if( menu.menuBgOpaque ) s.backgroundColor = menu.bgColor;

            s = menuLayer.style;
            s.pixelWidth  = menu.menuWidth + (menu.menuBorder * 4);
            s.width = s.pixelWidth + 'px';
            s.pixelHeight  = menu.menuHeight+(menu.menuBorder*4);
            s.height = s.pixelHeight + 'px';
        }
    }
    if (document.captureEvents) document.captureEvents(Event.MOUSEUP);
    if (document.addEventListener) document.addEventListener("mouseup", onMenuItemOver, false);
    if (document.layers && window.innerWidth) {
        window.onresize = NS4resize;
        window.NS4sIW = window.innerWidth;
        window.NS4sIH = window.innerHeight;
        setTimeout("NS4resize()",500);
    }
    document.onmouseup = mouseupMenu;
    window.mmWroteMenu = true;
    status = "";
}

function NS4resize() {
    if (NS4sIW != window.innerWidth || NS4sIH != window.innerHeight) window.location.reload();
}

function onMenuItemOver(e, l) {
    MM_clearTimeout();
    l = l || this;
    var a = window.ActiveMenuItem;
    if (document.layers) {
        if (a) {
            a.document.bgColor = a.saveColor;
            if (a.hilite) a.hilite.visibility = "hidden";
            if (a.Menu.bgImageOver) a.background.src = a.Menu.bgImageUp;
            a.focusItem.top = -100;
            a.clicked = false;
        }
        if (l.hilite) {
            l.document.bgColor = l.menuHiliteBgColor;
            l.zIndex = 1;
            l.hilite.visibility = "inherit";
            l.hilite.zIndex = 2;
            l.document.layers[1].zIndex = 1;
            l.focusItem.zIndex = this.zIndex +2;
            alert("here");
        }
        if (l.Menu.bgImageOver) l.background.src = l.Menu.bgImageOver;
        l.focusItem.top = this.top;
        l.focusItem.left = this.left;
        l.focusItem.clip.width = l.clip.width;
        l.focusItem.clip.height = l.clip.height;
        l.Menu.hideChildMenu(l);
    } else if (l.style && l.Menu) {
        if (a) {
            a.style.backgroundColor = a.saveColor;
            if (a.hilite) a.hilite.style.visibility = "hidden";
            if (a.hiliteShim) a.hiliteShim.style.visibility = "inherit";
            if (a.Menu.bgImageUp) a.style.background = "url(" + a.Menu.bgImageUp +")";;
        } 
        l.style.backgroundColor = l.menuHiliteBgColor;
        l.zIndex = 1;
        if (l.Menu.bgImageOver) l.style.background = "url(" + l.Menu.bgImageOver +")";
        if (l.hilite) {
            l.hilite.style.visibility = "inherit";
            if( l.hiliteShim ) l.hiliteShim.style.visibility = "visible";
        }
        l.focusItem.style.pixelTop = l.style.pixelTop;
        l.focusItem.style.top = l.focusItem.style.pixelTop + 'px';
        l.focusItem.style.pixelLeft = l.style.pixelLeft;
        l.focusItem.style.left = l.focusItem.style.pixelLeft + 'px';
        l.focusItem.style.zIndex = l.zIndex +1;
        l.Menu.hideChildMenu(l);
    } else return;
    window.ActiveMenuItem = l;
}

function onMenuItemAction(e, l) {
    l = window.ActiveMenuItem;
    if (!l) return;
    hideActiveMenus();
    if (l.mmaction) eval("" + l.mmaction);
    window.ActiveMenuItem = 0;
}

function MM_clearTimeout() {
    if (mmHideMenuTimer) clearTimeout(mmHideMenuTimer);
    mmHideMenuTimer = null;
    mmDHFlag = false;
}



function MM_startTimeout() {
    if( window.ActiveMenu ) {
        mmStart = new Date();
        mmDHFlag = true;
        mmHideMenuTimer = setTimeout("mmDoHide()", window.ActiveMenu.Menu.hideTimeout);
    }
    
}

function mmDoHide() {
    if (!mmDHFlag || !window.ActiveMenu) return;
    var elapsed = new Date() - mmStart;
    var timeout = window.ActiveMenu.Menu.hideTimeout;
    if (elapsed < timeout) {
        mmHideMenuTimer = setTimeout("mmDoHide()", timeout+100-elapsed);
        return;
    }
    showInputs();
    MM_swapImgRestore();
    mmDHFlag = false;
    hideActiveMenus();
    window.ActiveMenuItem = 0;
}


function MM_showMenu(menu, x, y, child, imgname) {
    if (!window.mmWroteMenu) return;
    MM_clearTimeout();
    if (menu) {
        var obj = FIND(imgname) || document.images[imgname] || document.links[imgname] || document.anchors[imgname];
        x = moveXbySlicePos (x, obj);
        y = moveYbySlicePos (y, obj);
    }
    if (document.layers) {
        if (menu) {
            var l = menu.menuLayer || menu;
            l.top = l.left = 1;
            hideActiveMenus();
            if (this.visibility) l = this;
            window.ActiveMenu = l;
        } else {
            var l = child;
        }
        if (!l) return;
        for (var i=0; i<l.layers.length; i++) {                
            if (!l.layers[i].isHilite) l.layers[i].visibility = "inherit";
            if (l.layers[i].document.layers.length > 0) MM_showMenu(null, "relative", "relative", l.layers[i]);
        }
        if (l.parentLayer) {
            if (x != "relative") l.parentLayer.left = x || window.pageX || 0;
            if (l.parentLayer.left + l.clip.width > window.innerWidth) l.parentLayer.left -= (l.parentLayer.left + l.clip.width - window.innerWidth);
            if (y != "relative") l.parentLayer.top = y || window.pageY || 0;
            if (l.parentLayer.isContainer) {
                l.Menu.xOffset = window.pageXOffset;
                l.Menu.yOffset = window.pageYOffset;
                l.parentLayer.clip.width = window.ActiveMenu.clip.width +2;
                l.parentLayer.clip.height = window.ActiveMenu.clip.height +2;
                if (l.parentLayer.menuContainerBgColor && l.Menu.menuBgOpaque ) l.parentLayer.document.bgColor = l.parentLayer.menuContainerBgColor;
        
            }
        }
        l.visibility = "inherit";
        if (l.Menu) l.Menu.container.visibility = "inherit";
    } else if (FIND("menuItem0")) {
        var l = menu.menuLayer || menu; 
        hideActiveMenus();
        if (typeof(l) == "string") l = FIND(l);
        window.ActiveMenu = l;
        var s = l.style;
        s.visibility = "inherit";
        if (x != "relative") {
            s.pixelLeft = x || (window.pageX + document.body.scrollLeft) || 0;
            s.left = s.pixelLeft + 'px';
        }
        if (y != "relative") {
            s.pixelTop = y || (window.pageY + document.body.scrollTop) || 0;
            s.top = s.pixelTop + 'px';
        }
        l.Menu.xOffset = document.body.scrollLeft;
        l.Menu.yOffset = document.body.scrollTop;
	    hideInputs();
    }
    if (menu) window.activeMenus[window.activeMenus.length] = l;
    MM_clearTimeout();
}

function onMenuItemDown(e, l) {
    var a = window.ActiveMenuItem;
    if (document.layers && a) {
        a.eX = e.pageX;
        a.eY = e.pageY;
        a.clicked = true;
    }
}

function mouseupMenu(e) {
    hideMenu(true, e);
    hideActiveMenus();
    return true;
}

function getExplorerVersion() {
    var ieVers = parseFloat(navigator.appVersion);
    if( navigator.appName != 'Microsoft Internet Explorer' ) return ieVers;
    var tempVers = navigator.appVersion;
    var i = tempVers.indexOf( 'MSIE ' );
    if( i >= 0 ) {
        tempVers = tempVers.substring( i+5 );
        ieVers = parseFloat( tempVers ); 
    }
    return ieVers;
}

function mouseoutMenu() {
    if ((navigator.appName == "Microsoft Internet Explorer") && (getExplorerVersion() < 4.5))
        return true;
    hideMenu(false, false);
    return true;
}

function showInputs()
{
	if(navigator.userAgent.indexOf('MSIE 6.0')!=-1)
	{
		var inputs = document.getElementsByTagName("SELECT");
		for(var i=0;i<inputs.length;i++)
		{
			inputs[i].style.visibility='visible';
		}
	}
}

function hideInputs()
{
	if(navigator.userAgent.indexOf('MSIE 6.0')!=-1)
	{
		var inputs = document.getElementsByTagName("SELECT");
		for(var i=0;i<inputs.length;i++)
		{
			inputs[i].style.visibility='hidden';
		}
	}
}

function findParentWithLeft(ele)
{
	while(ele.parentNode!=null)
	{
		ele=ele.parentNode;
		if(ele.style.left!='')
			return ele.style.left;
	}
	return null;
}

function findParentWidthTop(ele)
{
	while(ele.parentNode!=null)
	{
		ele=ele.parentNode;
		if(ele.style.top!='')
			return ele.style.top;
	}
	return null;
}

function hideMenu(mouseup, e) {
    var a = window.ActiveMenuItem;
    if (a && document.layers) {
        a.document.bgColor = a.saveColor;
        a.focusItem.top = -30;
        if (a.hilite) a.hilite.visibility = "hidden";
        if (mouseup && a.mmaction && a.clicked && window.ActiveMenu) {
            if (a.eX <= e.pageX+15 && a.eX >= e.pageX-15 && a.eY <= e.pageY+10 && a.eY >= e.pageY-10) {
                setTimeout('window.ActiveMenu.Menu.onMenuItemAction();', 500);
            }
        }
        a.clicked = false;
        if (a.Menu.bgImageOver) a.background.src = a.Menu.bgImageUp;
    } else if (window.ActiveMenu && FIND("menuItem0")) {
        if (a) {
            a.style.backgroundColor = a.saveColor;
            if (a.hilite) a.hilite.style.visibility = "hidden";
            if (a.hiliteShim) a.hiliteShim.style.visibility = "inherit";
            if (a.Menu.bgImageUp) a.style.background = "url(" + a.Menu.bgImageUp +")";
        }
    }
    if (!mouseup && window.ActiveMenu) {
        if (window.ActiveMenu.Menu) {
            if (window.ActiveMenu.Menu.hideOnMouseOut) MM_startTimeout();
            return(true);
            
        }
    }
    return(true);
    
}

function hideChildMenu(hcmLayer) {
    MM_clearTimeout();
    var l = hcmLayer;
    for (var i=0; i < l.Menu.childMenus.length; i++) {
        var theLayer = l.Menu.childMenus[i];
        if (document.layers) theLayer.visibility = "hidden";
        else {
            theLayer = FIND(theLayer);
            theLayer.style.visibility = "hidden";
            if( theLayer.Menu.menuItemHAlign != 'left' ) {
                for(var j = 0; j < theLayer.Menu.menuItemLayers.length; j++) {
                    var itemLayer = theLayer.Menu.menuItemLayers[j];
                    if(itemLayer.textShim) itemLayer.textShim.style.visibility = "inherit";
                }
            }
        }
        theLayer.Menu.hideChildMenu(theLayer);
    }
    if (l.childMenu) {
        var childMenu = l.childMenu;
        if (document.layers) {
            l.Menu.MM_showMenu(null,null,null,childMenu.layers[0]);
            childMenu.zIndex = l.parentLayer.zIndex +1;
            childMenu.top = l.Menu.menuLayer.top + l.Menu.submenuYOffset;
            if( l.Menu.vertical ) {
                if( l.Menu.submenuRelativeToItem ) childMenu.top += l.top + l.parentLayer.top;
                childMenu.left = l.parentLayer.left + l.parentLayer.clip.width - (2*l.Menu.menuBorder) + l.Menu.menuLayer.left + l.Menu.submenuXOffset;
            } else {
                childMenu.top += l.top + l.parentLayer.top; 
                if( l.Menu.submenuRelativeToItem ) childMenu.left = l.Menu.menuLayer.left + l.left + l.clip.width + (2*l.Menu.menuBorder) + l.Menu.submenuXOffset;
                else childMenu.left = l.parentLayer.left + l.parentLayer.clip.width - (2*l.Menu.menuBorder) + l.Menu.menuLayer.left + l.Menu.submenuXOffset;
            }
            if( childMenu.left < l.Menu.container.clip.left ) l.Menu.container.clip.left = childMenu.left;
            var w = childMenu.clip.width+childMenu.left-l.Menu.container.clip.left;
            if (w > l.Menu.container.clip.width)  l.Menu.container.clip.width = w;
            var h = childMenu.clip.height+childMenu.top-l.Menu.container.clip.top;
            if (h > l.Menu.container.clip.height) l.Menu.container.clip.height = h;
            l.document.layers[1].zIndex = 0;
            childMenu.visibility = "inherit";
        } else if (FIND("menuItem0")) {
            childMenu = FIND(l.childMenu);
            var menuLayer = FIND(l.Menu.menuLayer);
            var s = childMenu.style;
            s.zIndex = menuLayer.style.zIndex+1;
            if (document.all || window.mmIsOpera) {
                s.pixelTop = menuLayer.style.pixelTop + l.Menu.submenuYOffset;
                if( l.Menu.vertical ) {
                    if( l.Menu.submenuRelativeToItem ) s.pixelTop += l.style.pixelTop;
                    s.pixelLeft = l.style.pixelWidth + menuLayer.style.pixelLeft + l.Menu.submenuXOffset;
                    s.left = s.pixelLeft + 'px';
                } else {
                    s.pixelTop += l.style.pixelTop;
                    if( l.Menu.submenuRelativeToItem ) s.pixelLeft = menuLayer.style.pixelLeft + l.style.pixelLeft + l.style.pixelWidth + (2*l.Menu.menuBorder) + l.Menu.submenuXOffset;
                    else s.pixelLeft = (menuLayer.style.pixelWidth-4*l.Menu.menuBorder) + menuLayer.style.pixelLeft + l.Menu.submenuXOffset;
                    s.left = s.pixelLeft + 'px';
                }
            } else {
                var top = parseInt(menuLayer.style.top) + l.Menu.submenuYOffset;
                var left = 0;
                if( l.Menu.vertical ) {
                    if( l.Menu.submenuRelativeToItem ) top += parseInt(l.style.top);
                    left = (parseInt(menuLayer.style.width)-4*l.Menu.menuBorder) + parseInt(menuLayer.style.left) + l.Menu.submenuXOffset;
                } else {
                    top += parseInt(l.style.top);
                    if( l.Menu.submenuRelativeToItem ) left = parseInt(menuLayer.style.left) + parseInt(l.style.left) + parseInt(l.style.width) + (2*l.Menu.menuBorder) + l.Menu.submenuXOffset;
                    else left = (parseInt(menuLayer.style.width)-4*l.Menu.menuBorder) + parseInt(menuLayer.style.left) + l.Menu.submenuXOffset;
                }
                s.top = top + 'px';
                s.left = left + 'px';
            }
            childMenu.style.visibility = "inherit";
        } else return;
        window.activeMenus[window.activeMenus.length] = childMenu;
    }
}

function hideActiveMenus() {
    if (!window.activeMenus) return;
    for (var i=0; i < window.activeMenus.length; i++) {
        if (!activeMenus[i]) continue;
        if (activeMenus[i].visibility && activeMenus[i].Menu && !window.mmIsOpera) {
            activeMenus[i].visibility = "hidden";
            activeMenus[i].Menu.container.visibility = "hidden";
            activeMenus[i].Menu.container.clip.left = 0;
        } else if (activeMenus[i].style) {
            var s = activeMenus[i].style;
            s.visibility = "hidden";
            s.left = '-200px';
            s.top = '-200px';
        }
    }
    if (window.ActiveMenuItem) hideMenu(false, false);
    window.activeMenus.length = 0;
    MM_swapImgRestore();
}

function moveXbySlicePos (x, img) { 
    if (!document.layers) {
        var onWindows = navigator.platform ? navigator.platform == "Win32" : false;
        var macIE45 = document.all && !onWindows && getExplorerVersion() == 4.5;
        var par = img;
        var lastOffset = 0;
        while(par){
            if( par.leftMargin && ! onWindows ) x += parseInt(par.leftMargin);
            if( (par.offsetLeft != lastOffset) && par.offsetLeft ) x += parseInt(par.offsetLeft);
            if( par.offsetLeft != 0 ) lastOffset = par.offsetLeft;
            par = macIE45 ? par.parentElement : par.offsetParent;
        }
    } else if (img.x) x += img.x;
    return x;
}

function moveYbySlicePos (y, img) {
    if(!document.layers) {
        var onWindows = navigator.platform ? navigator.platform == "Win32" : false;
        var macIE45 = document.all && !onWindows && getExplorerVersion() == 4.5;
        var par = img;
        var lastOffset = 0;
        while(par){
            if( par.topMargin && !onWindows ) y += parseInt(par.topMargin);
            if( (par.offsetTop != lastOffset) && par.offsetTop ) y += parseInt(par.offsetTop);
            if( par.offsetTop != 0 ) lastOffset = par.offsetTop;
            par = macIE45 ? par.parentElement : par.offsetParent;
        }       
    } else if (img.y >= 0) y += img.y;
    return y;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf('?'))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf('#')!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) 
   if ((obj=MM_findObj(args[i]))!=null) { 
    v=args[i+2];
    if (obj.style) 
    { 
        obj=obj.style; 
        v=(v=='show') ? 'visible' : ((v=='hide') ? 'hidden' :v ); 
    }
    obj.visibility=v; 
   }
}
function MM_findObj(n, d) { //v4.01
  var p,i,x; 
  if(!d)
   d=document; 
  if((p=n.indexOf('?'))>0&&parent.frames.length) 
  {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
  }
  if(!(x=d[n])&&d.all)
   x=d.all[n];
  for (i=0;!x&&i<d.forms.length;i++)
   x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++)
   x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById)
   x=d.getElementById(n);
  return x;
}

		SELECTEDSTYLE = 0;
		ENABLEDSTYLE  = 1;
		DISABLEDSTYLE = 2;
		SELECTEDDISABLEDSTYLE = 3;
		
		TEXTVALUE=0;
		IMAGEVALUE=1;
	
		products = null;
		actions  = null;
		
		function Value(v,t,d,id,head,cleartext)
		{
			this.value = v;
			this.type = t;
			this.desc=d;
			this.id=id;
			this.head=head;
			this.cleartext=cleartext;
		}
	
		function Product(a,p,sn,color,ai)
		{
			this.attributes=a;
			this.id=p;
			this.styleNumber=sn;
			this.color=col;
			this.assetid=ai;
		}

		/* 
			Matches 2 given sets of values against each other. The second set may contain 
			null values wich are ignored while doing the match. 
		*/
		function match(set,attributeSet)
		{
			if(set.length != attributeSet.length)
				return false;
			var result=true;
			for(var i=0;i<set.length;i++)
			{
				if(attributeSet[i]!=null)
				{
					if(attributeSet[i]!=set[i].value)
						result=false;
				}
				if(result==false)
					break;
			}
			return result;
		}

		/*
			Converts a given model of values into an accessor model.
		*/
		function convertIntoAccessorModel(model)
		{
			rows=new Array(model.length);
			for(rowindex=0;rowindex<model.length;rowindex++)
			{
				cols=new Array(model[rowindex].length);
				for(colindex=0;colindex<model[rowindex].length;colindex++)
				{
					cols[colindex]=0;
				}
				rows[rowindex]=cols;
			}
			return rows;
		}

		/*
			Enables the products attribute values in the accessor model
		*/
		function enableProductInAccessorModel(attr,srcmodel,model,rowi)
		{
				row=srcmodel[rowi];
				for(colindex=0;colindex<row.length;colindex++)
				{
					if(row[colindex].value==attr[rowi].value)
						model[rowi][colindex]=1;
				}
		}

		var newrow=-1;
		var query;
		var selectedQuery;
		
		function findStyleNumber(query)
		{
			for(i=0;i<products.length;i++)
			{
				if(match(products[i].attributes,query))
				{
					return products[i].styleNumber;
				}
			}
			return null;
		}
		
		function findMasterId(query)
		{
			for(i=0;i<products.length;i++)
			{
				if(match(products[i].attributes,query))
				{
					return products[i].masterid;
				}
			}
			return null;
		}
		
		function findColor(query)
		{
			for(i=0;i<products.length;i++)
			{
				if(match(products[i].attributes,query))
				{
					return products[i].color;
				}
			}
			return null;
		}
		
		function findAssetIdFromProductId(id)
		{
			for(i=0;i<products.length;i++)
			{
				var actp = products[i];
				if(products[i].color==id)
				{
					return products[i].assetid;
				}
			}
			return null;			
		}
		
		var bagbuttontext = '';
		
		function processModel(row,col)
		{
			accessorModel=convertIntoAccessorModel(model);
			if(query[0] != null)
			{
				sn = findStyleNumber(query);
				if(sn!=null)
				{
					if(document.getElementById("styleNumber")!=null)
					{
						document.getElementById("styleNumber").innerHTML=sn;
					}
				}
				else
				{
					document.getElementById("styleNumber").innerHTML="&nbsp;";
				}
				if(document.getElementById("productfulllink"))
				{
					var productfullhref = document.getElementById("productfulllink").href;
					if(productfullhref.indexOf('&color')!=-1)
					{
						productfullhref = productfullhref.substring(0,productfullhref.indexOf('&color'));
					}
					productfullhref = productfullhref + "&color="+getColorFromQuery();
					document.getElementById("productfulllink").href = productfullhref; 
				}
			}
			else
			{
				document.getElementById("styleNumber").innerHTML="&nbsp;";
			}
			enableAttributesForAllProductsByQuery(query);
		try {
			for(rowindex=0;rowindex<model.length;rowindex++)
			{
				line=model[rowindex];
				for(colindex=0;colindex<line.length;colindex++)
				{
					if(accessorModel[rowindex][colindex]==1)
					{
						document.getElementById(rowindex+"_"+colindex).className=cssStyles[rowindex][ENABLEDSTYLE];
					}
					else
					{
						document.getElementById(rowindex+"_"+colindex).className=cssStyles[rowindex][DISABLEDSTYLE];
					}
					if(line[colindex].value==query[rowindex])
					{
						if(document.getElementById(rowindex+"_"+colindex).className==cssStyles[rowindex][DISABLEDSTYLE] ||
						document.getElementById(rowindex+"_"+colindex).className==cssStyles[rowindex][SELECTEDDISABLEDSTYLE])
							document.getElementById(rowindex+"_"+colindex).className=cssStyles[rowindex][SELECTEDDISABLEDSTYLE];
						else
							document.getElementById(rowindex+"_"+colindex).className=cssStyles[rowindex][SELECTEDSTYLE];
					}
				}
			}
			}
			catch(e){}
			setAllRowHeads();
			if(queryFilled())
			{
				setAddToCartButtonState(true);
				for(i=0;i<products.length;i++)
				{
					if(match(products[i].attributes,query))
					{
						document.forms["productform"].pid.value=products[i].id;
						//document.productform.pid.value=products[i].id;
						
					}
				}				
			}
			else
			{
				bagbuttontext = "Select a ";
				for(var i=0;i<model.length;i++)
				{
					if(query[i] == null)
					{
						if(i!=0)
						{
							var text = model[i][0]['head'];
						}
						else
						{
							var text = "Color";
						}
						bagbuttontext = bagbuttontext + text + " & ";
					}
					else
					{
						cols=model[i];
						for(var j=0;j<cols.length;j++)
						{
							try{
							if(document.getElementById(i+"_"+j).className==cssStyles[i][SELECTEDDISABLEDSTYLE])
							{
								if(i!=0)
								{
									var text = model[i][0]['head'];
								}
								else
								{
									var text = "Color";
								}
								bagbuttontext = bagbuttontext + text + " & ";
								break;
							}
							}
							catch(e){}
						}
					}
				}
				bagbuttontext = bagbuttontext.substring(0,bagbuttontext.length-3);
				//bagbuttontext = bagbuttontext + "!";
				setAddToCartButtonState(false);
			}
			if(document.getElementById('quickerror') != null)
				document.getElementById('quickerror').className="quicknoerror";
		}

		function getSwatchName()
		{
			var l=model[0];
			for(var index=0;index<l.length;index++)
			{
				if(selectedQuery[0]==l[index].value)
				{
					swatchName=l[index].cleartext;
				}
			}
			return swatchName;
		}
		
		function enableSelected(row,col)
		{
			for(var i =0;i<this.query.length;i++)
			{
				selectedQuery[i]=query[i];
			}
			selectedQuery[row]=model[row][col].value;
			var l=model[0];
			for(var index=0;index<l.length;index++)
			{
				if(selectedQuery[0]==l[index].value)
				{
					document.getElementById("rowheadtext0").innerHTML=l[index].cleartext;
					swatchName=l[index].cleartext;
				}
			}
			sn = findStyleNumber(selectedQuery);
			if(sn!=null)
			{
				if(document.getElementById("styleNumber")!=null)
				{
					document.getElementById("styleNumber").innerHTML=sn;
				}
			}
			else
			{
				document.getElementById("styleNumber").innerHTML="&nbsp;";
			}
			accessorModel=convertIntoAccessorModel(model);
			enableAttributesForAllProductsByQuery(selectedQuery);
			try {
			for(rowindex=0;rowindex<model.length;rowindex++)
			{
				line=model[rowindex];
				for(colindex=0;colindex<line.length;colindex++)
				{
					if(accessorModel[rowindex][colindex]==1)
					{
						document.getElementById(rowindex+"_"+colindex).className=cssStyles[rowindex][ENABLEDSTYLE];
					}
					else
					{
						document.getElementById(rowindex+"_"+colindex).className=cssStyles[rowindex][DISABLEDSTYLE];
					}
					if(line[colindex].value==selectedQuery[rowindex])
					{
						if(document.getElementById(rowindex+"_"+colindex).className==cssStyles[rowindex][DISABLEDSTYLE] ||
						document.getElementById(rowindex+"_"+colindex).className==cssStyles[rowindex][SELECTEDDISABLEDSTYLE])
							document.getElementById(rowindex+"_"+colindex).className=cssStyles[rowindex][SELECTEDDISABLEDSTYLE];
						else
							document.getElementById(rowindex+"_"+colindex).className=cssStyles[rowindex][SELECTEDSTYLE];
					}
					if(line[colindex].value==query[rowindex])
					{
						if(document.getElementById(rowindex+"_"+colindex).className==cssStyles[rowindex][DISABLEDSTYLE] ||
						document.getElementById(rowindex+"_"+colindex).className==cssStyles[rowindex][SELECTEDDISABLEDSTYLE])
							document.getElementById(rowindex+"_"+colindex).className=cssStyles[rowindex][SELECTEDDISABLEDSTYLE];
						else
							document.getElementById(rowindex+"_"+colindex).className=cssStyles[rowindex][SELECTEDSTYLE];
					}
				}
			}
			
			}
			catch(e){}
		}

		function disableSelected(row,col)
		{
			accessorModel=convertIntoAccessorModel(model);
			enableAttributesForAllProductsByQuery(query);
			var l=model[0];
			for(var index=0;index<l.length;index++)
			{
				if(query[0]==l[index].value)
				{
					document.getElementById("rowheadtext0").innerHTML=l[index].cleartext;
					swatchName=l[index].cleartext;
				}
			}
			sn = findStyleNumber(query);
			if(sn!=null)
			{
				if(document.getElementById("styleNumber")!=null)
				{
					document.getElementById("styleNumber").innerHTML=sn;
				}
			}
			else
			{
				document.getElementById("styleNumber").innerHTML="&nbsp;";
			}
			try{
			for(rowindex=0;rowindex<model.length;rowindex++)
			{
				line=model[rowindex];
				for(colindex=0;colindex<line.length;colindex++)
				{
					if(accessorModel[rowindex][colindex]==1)
					{
						document.getElementById(rowindex+"_"+colindex).className=cssStyles[rowindex][ENABLEDSTYLE];
					}
					else
					{
						document.getElementById(rowindex+"_"+colindex).className=cssStyles[rowindex][DISABLEDSTYLE];
					}
					if(line[colindex].value==query[rowindex])
					{
						if(document.getElementById(rowindex+"_"+colindex).className==cssStyles[rowindex][DISABLEDSTYLE] ||
						document.getElementById(rowindex+"_"+colindex).className==cssStyles[rowindex][SELECTEDDISABLEDSTYLE])
							document.getElementById(rowindex+"_"+colindex).className=cssStyles[rowindex][SELECTEDDISABLEDSTYLE];
						else
							document.getElementById(rowindex+"_"+colindex).className=cssStyles[rowindex][SELECTEDSTYLE];
					}
				}
			}
			}
			catch(e){}
		}

		/*
			This function is called on a mouse click
		*/
		function enableMI(row,col)
		{
			// look if there is something selected in this row
			newrow=row;
			cols=model[row];
			//if(document.getElementById(row+"_"+col).className==cssStyles[row][DISABLEDSTYLE] || document.getElementById(row+"_"+col).className==cssStyles[row][SELECTEDDISABLEDSTYLE])
				//return;
//			if(query[row]==model[row][col].value)
//				query[row]=null;
//			else
				query[row]=model[row][col].value;
			if(row==0)
			{
				setRecentlyViewedCookie(findMasterId(query),findColor(query));
			}
			eval(actions[row][col]);
			processModel(row,col);
		}
		
		function setAllRowHeads()
		{
			try{
			for(var i=0;i<query.length;i++)
			{
				if(i==0 )
				{
					if(query[0]!=null)
					{
						var row=model[0];
						for(var index=0;index<row.length;index++)
						{
							if(query[0]==row[index].value)
							{
								document.getElementById("rowheadtext"+i).innerHTML=row[index].cleartext;
								swatchName=row[index].cleartext;
							}
						}
					}
					else
					{
						document.getElementById("rowheadtext"+i).innerHTML="";
					}
				}
				else
				{
					if(query[i]!=null)
					{
						var row=model[i];
						for(var index=0;index<row.length;index++)
						{
							if(query[i]==row[index].value)
							{
								document.getElementById("rowheadtext"+i).innerHTML=row[index].cleartext;
							}
						}
						// document.getElementById("rowheadtext"+i).innerHTML=query[i];
					}
					else
					{
						document.getElementById("rowheadtext"+i).innerHTML="";
					}
				}
			}
			}
			catch(e){}
		}
		
		/*
			Sets the query's attributes selected style.
		*/
		function setSelectedStyleForQuery(query,srcmodel)
		{
			for(rows=0;rows<query.length;rows++)
			{
				row=srcmodel[rows];
				for(colindex=0;colindex<row.length;colindex++)
				{
					//alert("row " + rows + " col " + colindex + " value " + row[colindex].value + " compare " + query[rows]);
					if(row[colindex].value==query[rows])
					{
						document.getElementById(rows+"_"+colindex).className=cssStyles[rows][SELECTEDSTYLE];
					}
				}
			}
		}

		/*
			Matches all existing products against a given query
		*/
		function enableAttributesForAllProductsByQuery(q)
		{
			for(var j=0;j<query.length;j++)
			{
				var oldval=q[j];
				q[j]=null;
				for(i=0;i<products.length;i++)
				{
					if(match(products[i].attributes,q))
					{
						enableProductInAccessorModel(products[i].attributes,model,accessorModel,j);
					}
				}
				q[j]=oldval;
			}
		}
  
		function setAddToCartButtonState(enabled)
		{
			if((document.getElementById("disablesCartImage") != null) && (document.getElementById("addToCartImage1") != null) )
			{
				if(enabled)
				{
					document.getElementById("disablesCartImage").style.display="none";
					document.getElementById("addToCartImage1").style.display="block";
				}
				else
				{
					document.getElementById("disablesCartImage").style.display="block";
					document.getElementById("addToCartImage1").style.display="none";
				}
			}
		}
		
		function queryFilled()
		{
			for(var i=0;i<query.length;i++)
			{
				if(query[i]==null)
				{
					return false;
				}
			}
			for(i=0;i<products.length;i++)
			{
				if(match(products[i].attributes,query))
				{
					return true;
				}
			}
			return false;
		}

		/*
			Initialzes the query.
		*/
		function initQuery()
		{
			/*query=new Array(model.length);
			if (model.length>0)
			{
				query[0] = model[0][1]['value'];
				for(i=1;i<model.length;i++)
				{
					if (model[i].length == 1)
					{
						query[i] = model[i][0]['value'];
					} else {
						query[i]=null;
					}
				}
			}*/
			/* Kay Test */
			query=new Array(model.length);
			selectedQuery=new Array(model.length);
			for(i=0;i<model.length;i++)
			{
				query[i]=null;
				selectedQuery[i]=null;
			}
			enableAttributesForAllProductsByQuery(query);
		}

		function showLargeImage(assetid, id)
		{
			try{
			var presentationManager = fluid.application;
			var presentation = presentationManager.getPresentation(assetid);
			presentation.selectCategory("VARIATION", id);
			}catch(error){}
		}
	
		function getColorFromQuery()
		{
			if(query[0]!=null)
			{
				row=model[0];
				for(colindex=0;colindex<row.length;colindex++)
				{
					if(row[colindex].value==query[0])
						return row[colindex].id;
				}
			}
			return null;
		}
		
		function resetLargeImage()
		{
			if(query[0]!=null)
			{
				row=model[0];
				for(colindex=0;colindex<row.length;colindex++)
				{
					if(row[colindex].value==query[0])
						showLargeImage(findAssetIdFromProductId(row[colindex].id),row[colindex].id);
				}
			}
		}
		
		function initActions()
		{
			actions=new Array();
			for(rowindex=0;rowindex<model.length;rowindex++)
			{
				actions[rowindex]=new Array(model[rowindex].length);
				for(colindex=0;colindex<model[rowindex].length;colindex++)
				{
					actions[rowindex][colindex]="noaction()";
				}
			}
		}
		
		function noaction()
		{
		}
	
/************************************************
 * Returns the width of the windows scrollers 
 ************************************************/
function getScrollerWidth() {
    var scr = null;
    var inn = null;
    var wNoScroll = 0;
    var wScroll = 0;

    // Outer scrolling div
    scr = document.createElement('div');
    scr.style.position = 'absolute';
    scr.style.top = '-1000px';
    scr.style.left = '-1000px';
    scr.style.width = '100px';
    scr.style.height = '50px';
    // Start with no scrollbar
    scr.style.overflow = 'hidden';

    // Inner content div
    inn = document.createElement('div');
    inn.style.width = '100%';
    inn.style.height = '200px';

    // Put the inner div in the scrolling div
    scr.appendChild(inn);
    // Append the scrolling div to the doc
    document.body.appendChild(scr);

    // Width of the inner div sans scrollbar
    wNoScroll = inn.offsetWidth;
    // Add the scrollbar
    scr.style.overflow = 'auto';
    // Width of the inner div width scrollbar
    wScroll = inn.offsetWidth;

    // Remove the scrolling div from the doc
    document.body.removeChild(
        document.body.lastChild);

    // Pixel width of the scroller
    return (wNoScroll - wScroll);
}

function setRecentlyViewedCookie(masterid, colorid)
{
    var cookieName = "TBLRecentlyViewed1";
    var cookieValue = "";
    if (masterid != null && colorid != null)
    {
        var expires = new Date ();
        var days = 28;
        expires.setTime(expires.getTime() + days * (24 * 60 * 60 * 1000));
//        expires.setTime(expires.getTime());
        var carr = new Array();
       	var products = getProductsFromCookie();
       	var colors = getColorsFromCookie();
        if(products.length>0)
        {
        	var pos=getPosition(products,masterid);
        	if(pos==-1)
        	{
        		// product not found
        		if(products.length>5)
        		{
        			// must delete first entry in products and colors
        			products.shift();
        			colors.shift();
        		}
        		// must append new masterid and colorid
        		products.push(masterid);
        		colors.push(colorid);
        	}
        	else
        	{
        		// product found
        		if(pos!=products.length-1)
        		{
        			// product is in the middle
        			if(eraseTrailingColon(colors[pos])==colorid)
        			{
        				// product with same color is there
        				// must repositioned to the end
        				for(var i=pos;i<products.length-1;i++)
        				{
        					products[i]=products[i+1];
        					colors[i]=colors[i+1];
        				}
        				// delete last element
        				products.pop();
        				colors.pop();
        			}
        			else
        			{
        				// product with different color is there
        				// product can be append at the end
		        		if(products.length>5)
        				{
        					// must delete first entry in products and colors
	        				products.shift();
    	    				colors.shift();
        				}
        			}
        			// must append new masterid and colorid
  	    			products.push(masterid);
       				colors.push(colorid);
        		}
        		else
        		{
        			// product is at the end
        			colors[pos]=colorid;
        		}
        		// test if last product is a double entry
        		var lastproduct = products[products.length-1];
        		var lastcolor = colors[colors.length-1];
        		var lastPos = getPosition2(products,colors,lastproduct,lastcolor);
        		if(lastPos!=products.length-1)
        		{
        			// there is a further position than the last one for this entry
        			// move the following entries a position back
       				for(var i=lastPos;i<products.length-1;i++)
       				{
       					products[i]=products[i+1];
       					colors[i]=colors[i+1];
       				}
       				// pops the last entry
					products.pop();
					colors.pop();        			
        		}
        	}
			for(var i=0;i<products.length;i++)
			{
				carr.push(eraseTrailingColon(products[i]),eraseTrailingColon(colors[i]));
			}
		}
		else
		{
			carr.push(masterid,colorid);			
		}
		var cookieToSet=eraseTrailingColon(carr.join(":"));
		if(cookieToSet != null)
		{
	       	setCookie(cookieName,cookieToSet,expires, "/");
	    }
    }
}

function getPosition(products,masterid)
{
	var pos=-1;
	for(var i=products.length-1;i>-1;i--)
	{
		if(eraseTrailingColon(products[i])==masterid)
		{
			return i;
		}		
	}
	return pos;
}

function getPosition2(products,colors,productid,colorid)
{
	var pos=-1;
	for(var i=0;i<products.length;i++)
	{
		if(eraseTrailingColon(products[i])==productid)
		{
			if(eraseTrailingColon(colors[i])==colorid)
			{
				return i;
			}
		}		
	}
	return pos;
}

function eraseTrailingColon(s)
{
	if(s != undefined)
	{
		if(s.indexOf(':')==0)
			return s.substring(1);
		else
			return s;
	}
	return null;
}

function getProductsFromCookie()
{
    var cookieName = "TBLRecentlyViewed1";
	var products= new Array();
    var cookieValue = getCookie(cookieName);
	if(cookieValue != null)
	{
		var carr = cookieValue.split(":");
		for(var i=0;i<carr.length;i+=2)
		{
			products.push(carr[i]);
		}
	}
	return products;
}

function getColorsFromCookie()
{
    var cookieName = "TBLRecentlyViewed1";
	var colors=new Array();
    var cookieValue = getCookie(cookieName);
	if(cookieValue != null)
	{
		var carr = cookieValue.split(":");
		for(var i=0;i<carr.length;i+=2)
		{
			colors.push(carr[i+1]);
		}
	}
	return colors;
}

function setCookie ( name, value, expires, path, domain, secure )
{
  var cookie_string = name + "=" + escape ( value );

  if ( expires )
  {
    cookie_string += "; expires=" + expires.toGMTString();
  }

  if ( path )
        cookie_string += "; path=" + escape ( path );

  if ( domain )
        cookie_string += "; domain=" + escape ( domain );
  
  if ( secure )
        cookie_string += "; secure";
  
  document.cookie = cookie_string;
}

function getCookie(Name)
{
    var re = new RegExp(Name+'=[^;]+', 'i');
    if (document.cookie.match(re))
    {
        return unescape(document.cookie.match(re)[0].split('=')[1]);
    }
    return null;
};



