//JavaScript in support of Ordering
//SMW FCOM 8/2007

        //Places on overlay in the event that .Net client side validation fails
        //intended for use in the OnClientClick event
        function ValidationSummaryOverlay(OverlayTargetElementId, OverlayMessageElementId, TuneX, TuneY)
        {
            if ( ! Page_ClientValidate() )
            {
                InfoOverlay(OverlayTargetElementId, OverlayMessageElementId, TuneX, TuneY);
            }
        }

        var LastOverlayMessageElementId = null;

        //Absolutely places a preexisting page element assumed style display:none adjacent
        //to an existing target elements top left corner
        function InfoOverlay(OverlayTargetElementId, OverlayMessageElementId, TuneX, TuneY)
        {
            
            if ( LastOverlayMessageElementId != null )
            {
                InfoOverlayClose(LastOverlayMessageElementId);
            }
        
            var overlayTargetElement = document.getElementById(OverlayTargetElementId);
            
	        //target element X Y page coordinates
            //var arrayX0Y1 = Position.page(overlayTargetElement);
            //12.18.2007 Removing for now because it doesn't work
            // and causes debugging reset
            // 1.16.2008 restored what I commented out
            
            var arrayX0Y1 = Position.cumulativeOffset(overlayTargetElement);
            overlayTargetElementX = arrayX0Y1[0];
            overlayTargetElementY = arrayX0Y1[1];
            
            var overlayMessageElement = document.getElementById(OverlayMessageElementId);
            
            overlayMessageElement.style.display = "block";
		    overlayMessageElement.style.top = ( overlayTargetElementY + TuneY ) +  "px";
		    overlayMessageElement.style.left = ( overlayTargetElementX + TuneX )+  "px";
		    //overlayMessageElement.style.z-index = "1";	already commented out
		    
		    //alert('OverlayTargetElementId=' + OverlayTargetElementId + 'overlayTargetElementY=' + overlayTargetElementY + ', overlayTargetElementX=' + overlayTargetElementX  );
		    
		    LastOverlayMessageElementId = OverlayMessageElementId;
		    
        }
        
        function InfoOverlayClose(OverlayMessageElementId)
        {
            var overlayMessageElement = document.getElementById(OverlayMessageElementId);
            overlayMessageElement.style.display = "none";
        }
         
        // Potential for collision with the calling user control PaymentOptionCreditCard
        // because the credit card order there comes from t0201WOPaymentType while the order here
        // is hardcoded
        function CreditCardSecurityCodeInfoOverlay(OverlayTargetElementId, CardSelectorId)
        {
            var OverlayMessageElementId = 'WhatIsThisVerificationCodeMC';
        
            var cardSelector = document.getElementById(CardSelectorId);            
        
            switch ( cardSelector.selectedIndex )
            {
                case 0:
                    OverlayMessageElementId = 'WhatIsThisVerificationCodeMC';
                    break;                
                case 1:
                    OverlayMessageElementId = 'WhatIsThisVerificationCodeAMEX';
                    break;
                case 2:
                    OverlayMessageElementId = 'WhatIsThisVerificationCodeVISA';
                    break; 
                 // Leons doesn't have Discover cards
                //case 3:
                //    OverlayMessageElementId = 'WhatIsThisVerificationCodeDiscover';
                //    break; 
                                   
            }
        
            InfoOverlay(OverlayTargetElementId, OverlayMessageElementId,0,-200);
        }

        function OverlayMessageDiv ( destinationContainerId, destinationOverLayClassName, messageContainerId )
        {
            //Change class of destination container
		    var destinationContainerElement = document.getElementById(destinationContainerId);
		    destinationContainerElement.className = destinationOverLayClassName;
        
	        //destination container page coordinates
	        var destinationContainerX=destinationContainerElement['offsetLeft'];
            var destinationContainerY=destinationContainerElement['offsetTop'];
            var destinationContainerWidth=destinationContainerElement['offsetWidth'];	
            
	        //Left content edge, floats with window size
	        var pageWrapperElement = document.getElementById('PageWrapper');
	        var pageWrapperX = pageWrapperElement['offsetLeft'];  
	        
	        var messageContainerElement = document.getElementById(messageContainerId);
		    
		    indicatorElement.style.display = "block";
		    indicatorElement.style.top = (destinationContainerY + 220) +  "px";
		    indicatorElement.style.left = (pageWrapperX + destinationContainerX + Math.round(destinationContainerWidth/2)) +  "px";	                         
        }
        
	    function ShoppingCartLineAjaxChange(itemElementId, itemIdAsString, itemElementClassName, indicatorElementId ) 
	    {
	    	var itemElement = document.getElementById(itemElementId);
	    	
            //Item div page coordinates
            var itemElementIdWidth=itemElement['offsetWidth'];	    
            var arrayX0Y1 = Position.cumulativeOffset(itemElement);
            var itemElementIdX= arrayX0Y1[0];
            var itemElementIdY = arrayX0Y1[1];	 	    
	    
	        var manager = Sys.WebForms.PageRequestManager.getInstance();
            if ( ! manager.get_isInAsyncPostBack() )
            {   

	            //Wash out item Div
		        itemElement.className = itemElementClassName;	    
    	    
	            var indicatorElement = document.getElementById(indicatorElementId);
    		    
		        indicatorElement.style.display = "block";
		        indicatorElement.style.top = (itemElementIdY - 95) +  "px";
		        indicatorElement.style.left = (itemElementIdX + Math.round(itemElementIdWidth/2) - 30) +  "px";

            }
            else
            {
	            var indicatorElement = document.getElementById("PleaseWait");
    		    
		        indicatorElement.style.display = "block";
		        indicatorElement.style.top = (itemElementIdY - 95) +  "px";
		        indicatorElement.style.left = (itemElementIdX + Math.round(itemElementIdWidth/2) - 30) +  "px";            
            }
	    
	    }         
        
        function pageLoad()
        {
            var manager = Sys.WebForms.PageRequestManager.getInstance();
            manager.add_initializeRequest(OnInitializeRequest);
            manager.add_endRequest(EndRequestHandler);
        }
        
        function EndRequestHandler(sender, args)
        {
           setStyleByClass('span','FCOM_Not_Waiting','display','block');setStyleByClass('span','FCOM_Waiting','display','none'); 
        }
        
        //Blocks additional AJAX postbacks while one is in progress
        function OnInitializeRequest(sender, args)
        {
            var manager = Sys.WebForms.PageRequestManager.getInstance();
            if ( manager.get_isInAsyncPostBack() )
            {   
                args.set_cancel(true);
                //alert('Please wait while your previous request finishes.');
            }
            
            SwitchToPleaseWaitCSSs();
        }
        
        function SwitchToPleaseWaitCSSs()
        {
            setStyleByClass('span','FCOM_Not_Waiting','display','none');
            setStyleByClass('span','FCOM_Waiting','display','block');
        }
        
        // setStyleByClass: given an element type and a class selector,
        // style property and value, apply the style.
        // args:
        //  t - type of tag to check for (e.g., SPAN)
        //  c - class name
        //  p - CSS property
        //  v - value
        var ie = (document.all) ? true : false;

        function setStyleByClass(t,c,p,v){
	        var elements;
	        if(t == '*') {
		        // '*' not supported by IE/Win 5.5 and below
		        elements = (ie) ? document.all : document.getElementsByTagName('*');
	        } else {
		        elements = document.getElementsByTagName(t);
	        }
	        for(var i = 0; i < elements.length; i++){
		        var node = elements.item(i);
		        for(var j = 0; j < node.attributes.length; j++) {
			        if(node.attributes.item(j).nodeName == 'class') {
				        if(node.attributes.item(j).nodeValue == c) {
					        eval('node.style.' + p + " = '" +v + "'");
				        }
			        }
		        }
	        }
        }     
