/*
* Lert v1.0
* by Jeffrey Sambells - http://JeffreySambells.com
* For more information on this script, visit http://JeffreySambells.com/openprojects/lert/
* Licensed under the Creative Commons Attribution 2.5 License - http://creativecommons.org/licenses/by/2.5/
* Icons from Tango Desktop Project http://tango.freedesktop.org/Tango_Desktop_Project
*/
function Lert(message, buttons, options) {
	this.message_ = message;
	this.buttons_ = buttons;
	this.defaultButton_ = options.defaultButton || this.buttons_[0];
	this.icon_ = options.icon || null;
}

Lert.prototype.display = function() {
	var body = document.getElementsByTagName ('BODY')[0];
	var pageScroll = getPageScroll();   
	var pageSize = getPageSize();
    
	//create the overlay if necessary
	var overlay = document.getElementById('lertOverlay');
	if(!overlay) {
		var overlay = document.createElement("div");
		overlay.setAttribute('id','lertOverlay');
		overlay.style.display = 'none';		
		body.appendChild(overlay);
	}

	//position and show the overlay
	overlay.style.height=pageSize[1]+'px';
	overlay.style.display='block';
	

	//create the container if necessary
	var container = document.getElementById('lertContainer');
	if(!container) {
		var container = document.createElement("div");
		container.setAttribute('id','lertContainer');
		container.style.display = 'none';
		body.appendChild(container);
	}

	//position and show the container
	container.style.top = ( pageScroll[1] + (pageSize[3] / 3) ) + 'px';
	container.style.display = 'block';

	//create the window
	var win = document.createElement('div');
	win.setAttribute('id','lertWindow');

	//create the optional icon
	if(this.icon_ != null) {
		var icon = document.createElement('img');
		icon.setAttribute('src',this.icon_);
		icon.setAttribute('id','lertIcon');
		icon.setAttribute('alt','');
		win.appendChild(icon);
	}

	//create the message space
	var message = document.createElement('p');
	message.setAttribute('id','lertMessage');
	message.innerHTML = this.message_;
	win.appendChild(message);

	//create the button space
	var buttons = document.createElement('div');
	buttons.setAttribute('id','lertButtons');

	var oldKeyDown = document.onkeydown;

	//add each button
	for(i in this.buttons_) {
		var button = this.buttons_[i];
		if(button.getDom) {
			var domButton = button.getDom(function() {
				container.style.display = 'none';
				overlay.style.display = 'none';
				document.onkeydown=oldKeyDown;
				container.innerHTML = '';
				button.onclick_;
			},this.defaultButton_);
			buttons.appendChild(domButton);
		}
	}
	win.appendChild(buttons);

	document.onkeydown = this.keyboardControls;

	//append the window
	container.appendChild(win);
	
	document.getElementById('lertDefaultButton').focus();		
}

Lert.prototype.keyboardControls = function(e) {
	if (e == null) { keycode = event.keyCode; } // ie
	else { keycode = e.which; } // mozilla
	if(keycode==13) 
	{ 
	    document.getElementById('lertDefaultButton').onclick(); 
	}
}

function LertButton(label, event, options) {
	this.label_ = label;
	this.onclick_ = event;
	this.eventClick = function() {};
}

LertButton.prototype.getDom = function(eventCleanup,defaultButton) {
	var button = document.createElement('a');
	button.setAttribute('href','javascript:void(0);');
	button.className = 'lertButton';
	if(this == defaultButton) button.setAttribute('id','lertDefaultButton');
	button.innerHTML = this.label_;

	var eventOnclick =  this.onclick_;
	button.onclick = function() {
		eventCleanup();
		eventOnclick();
	}
	this.eventClick = button.onclick;
	return button;
}

//
// getPageScroll()
// Returns array with x,y page scroll values.
// Core code from - quirksmode.org
function getPageScroll(){

	var yScroll;

	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
	} else if (document.body) {// all other Explorers
		yScroll = document.body.scrollTop;
	}

	arrayPageScroll = new Array('',yScroll)
	return arrayPageScroll;
}

// -----------------------------------------------------------------------------------

//
// getPageSize()
// Returns array with page width, height and window width, height
// Core code from - quirksmode.org
// Edit for Firefox by pHaez
//
function getPageSize(){

	var xScroll, yScroll;

	if (window.innerHeight && window.scrollMaxY) {
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}

	var windowWidth, windowHeight;
	if (self.innerHeight) {	// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}

	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else {
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight)
	return arrayPageSize;
}

function basketUpdate()
{    
    var basketItemsTable = document.getElementById('basketItems');    
    var inputs = basketItemsTable.getElementsByTagName('input');  
    var links = basketItemsTable.getElementsByTagName('a');  
    
    var displayMessage = false;    
    var message = '';
    
    for(i = 0; i < links.length; i++)
    {
        var quantityAvailable = parseInt(inputs[(i*3)].value);
        var quantityRequested = parseInt(inputs[(i*3)+1].value);      

        if(quantityRequested > quantityAvailable)
        {
            inputs[(i*3)+1].value = quantityAvailable;            
            message = message + 'Sorry, we only have ' + quantityAvailable + ' x ' + links[i].innerHTML + ' currently in stock!<BR><BR>';
            displayMessage = true;            
        }        
    }
    
    message = message + 'These have been added to your bag.';
    
    if(displayMessage)
    {
        HideSelects();
    
        var okButton = new LertButton('OK', function() {
            ShowSelects();
            __doPostBack('btnUpdateBasket','');
        });    
    
        var stockUnavailableLert = new Lert(
		message,
		[okButton],
		{	
		    defaultButton:okButton
		});
		stockUnavailableLert.display();				
    }
    else
    {
        __doPostBack('btnUpdateBasket','');
        return;
    }
}

function checkSpecialDeliveryCheckout()
{            
    var basketItemsTable = document.getElementById('basketItems');    
    var inputs = basketItemsTable.getElementsByTagName('input');  
    var links = basketItemsTable.getElementsByTagName('a');  
    
    var displayMessage = false;    
    var message = '';
    
    for(i = 0; i < links.length; i++)
    {
        var quantityAvailable = parseInt(inputs[(i*3)].value);
        var quantityRequested = parseInt(inputs[(i*3)+1].value);
        
        if(quantityRequested > quantityAvailable)
        {
            inputs[(i*3)+1].value = quantityAvailable;
            message = message + 'Sorry, we only have ' + quantityAvailable + ' x ' + links[i].innerHTML + ' currently in stock!<BR><BR>';            
            displayMessage = true;
        }        
    }
    
    message = message + 'These have been added to your bag.';    
    
    if(displayMessage)
    {
        HideSelects();
    
        var okButton = new LertButton('OK', function() {
            ShowSelects();
            __doPostBack('btnUpdateBasket','');
        });    
    
        var stockUnavailableLert = new Lert(
		message,
		[okButton],
		{	
		    defaultButton:okButton
		});
		stockUnavailableLert.display();	
		
		return;			
    }    

    var deliveryDropDown = document.getElementById('ddlDeliveryOptions');    

    if(deliveryDropDown.value != 'RM-SD')
    {
        __doPostBack('btnCheckout','');
        return;
    }    

    // Continue if special delivery has been selected.
    var basketItemsTable = document.getElementById('basketItems');    
    var inputs = basketItemsTable.getElementsByTagName('input');  
    var links = basketItemsTable.getElementsByTagName('a');  
    var spans = basketItemsTable.getElementsByTagName('span');  
    
    var messageIntro = 'Sorry, we only have :<BR /><BR />';
    var messageBody = '';
    var messageEnd = '';
    
    for(i = 0; i < links.length; i++)    
    {
        var quantityRequested = parseInt(inputs[(i*3)+1].value);            
        var quantityInStock = parseInt(spans[i*4].innerHTML);
        
        if(quantityRequested > quantityInStock)
        {
            messageBody = messageBody + quantityInStock + ' x ' + links[i].innerHTML + '<BR /><BR />';
        }        
    }
    
    if(messageBody.length > 1)
    {    
        HideSelects();

        messageEnd = 'available for next day delivery. Click "Amend Quantities" to update quantities for next day delivery, or click "Keep Existing" to leave quantities as they are and continue to checkout.';
    
        var amendButton = new LertButton('Amend Quantities', function() {
        
        ShowSelects();
            
        for(i = 0; i < links.length; i++)    
        {
            var quantityRequested = parseInt(inputs[(i*3)+1].value);            
            var quantityInStock = parseInt(spans[i*4].innerHTML);                                    
            
            if(quantityRequested > quantityInStock)
            {                
                inputs[(i*3)+1].value = quantityInStock;                                 
            }        
        }                
            __doPostBack('btnCheckout','');
            return false;
        });    
        
        var cancelButton = new LertButton('Keep Existing', function() {            
            ShowSelects();
            unfreezePage();
            __doPostBack('btnCheckout','');
        });        
    
        var specialDeliveryWarningLert = new Lert(
            messageIntro + messageBody + messageEnd,		
		    [cancelButton,amendButton],
		    {	
    		    defaultButton:amendButton
		    });            
		    
	    specialDeliveryWarningLert.display();
    }
    else
    {
        __doPostBack('btnCheckout','');
    }    
}

function checkSpecialDelivery()
{    
    var deliveryDropDown = document.getElementById('ddlDeliveryOptions');    

    // If not next day delivery selected, carry on with postback.
    if(deliveryDropDown.value != 'RM-SD')
    {
        __doPostBack('btnUpdateBasket','');
        return;
    }

    // Continue if special delivery has been selected.
    var basketItemsTable = document.getElementById('basketItems');    
    var inputs = basketItemsTable.getElementsByTagName('input');  
    var links = basketItemsTable.getElementsByTagName('a');  
    var spans = basketItemsTable.getElementsByTagName('span');  
    
    var messageIntro = 'Sorry, we only have :<BR /><BR />';
    var messageBody = '';
    var messageEnd = '';
    
    for(i = 0; i < links.length; i++)    
    {
        var quantityRequested = parseInt(inputs[(i*3)+1].value);            
        var quantityInStock = parseInt(spans[i*4].innerHTML);
        
        if(quantityRequested > quantityInStock)
        {
            messageBody = messageBody + quantityInStock + ' x ' + links[i].innerHTML + '<BR /><BR />';
        }        
    }
    
    if(messageBody.length > 1)
    {    
        HideSelects();

        messageEnd = 'available for next day delivery. Click Amend Quantities to update quantities for next day delivery, or click cancel to leave quantities as they are.';
    
        var amendButton = new LertButton('Amend Quantities', function() {
            
        ShowSelects();
            
        for(i = 0; i < links.length; i++)    
        {
            var quantityRequested = parseInt(inputs[(i*3)+1].value);            
            var quantityInStock = parseInt(spans[i*4].innerHTML);                                    
            
            if(quantityRequested > quantityInStock)
            {                
                inputs[(i*3)+1].value = quantityInStock;                                 
            }        
        }
        
            __doPostBack('btnUpdateBasket','');				      		        
            
            return false;
        });    
        
        var cancelButton = new LertButton('Keep Existing', function() {
            ShowSelects();            
            unfreezePage();
            __doPostBack('btnUpdateBasket','');
            return true;
        });        
    
        var specialDeliveryWarningLert = new Lert(
            messageIntro + messageBody + messageEnd,		
		    [cancelButton,amendButton],
		    {	
    		    defaultButton:amendButton
		    });            
		    
	    specialDeliveryWarningLert.display();
    }
    else
    {
        __doPostBack('btnUpdateBasket','');
    }    
}

function showStockUnavailable(maxQuantity)
{
    HideSelects();

    var okButton = new LertButton('OK', function() { ShowSelects(); unfreezePage(); return false; });
    
    var message = 'Sorry asdd, we only have ' + maxQuantity + ' of this item currently in stock! These have been added to your bag.';
    
    var stockUnavailableLert = new Lert(message, [okButton], { defaultButton:okButton });
		
	stockUnavailableLert.display();
}

function showBasketPopup(itemDescription, productDivID, btnID, maxQuantity, quantityInBasket)
{	
	var quantityTextBox = document.getElementById('txtQuantity');	
	var quantity = 0;		
	
	if(quantityTextBox)
	{
	    quantity = parseInt(document.getElementById('txtQuantity').value);
	}
	else
	{
	    quantity = 1;
	}	
	
	var quantityPlusBasket = quantity + quantityInBasket;
	
	var message = '';
	
	if(quantityPlusBasket > maxQuantity)
	{
	    if(quantityInBasket == maxQuantity)
	    {
	        // Can't add any more of this item to basket.
	        showStockUnavailable(maxQuantity);
	        return false;
	    }
	    else
	    {	
	        // Can't add as many as requested of this item to basket.
            message = 'Sorry, we only have ' + maxQuantity + ' of this item currently in stock! <BR>';       
            quantity = quantity - ((quantity + quantityInBasket) - maxQuantity);
        }
    }
	
    var cancelButton = new LertButton('Cancel', function() {
        ShowSelects();
        showFeature1();
        unfreezePage();
		return false;
	});
	
    var okButton = new LertButton('OK', function() {
        ShowSelects();
        addToBasket(productDivID);          
	__doPostBack(btnID,'');		
	showFeature1();
	});		
		
				
    message = message + '<BR>' + 'Would you like to add ' + quantity + ' x ' + itemDescription + ' to your bag?' + '<BR><BR>' 
    + 'Your bag will appear at the top of the screen.';
    
    var addToBagLert = new Lert(
		message,
		[okButton,cancelButton],
		{	
		    defaultButton:okButton
		});

    HideSelects();
    addToBagLert.display();            
    
}

function showProductGroupBasketPopup(btnID) {
    var variationsTable = document.getElementById('Variations');    
    //var inputs = variationsTable.getElementsByTagName('input');
    var links = variationsTable.getElementsByTagName('a');            
    var showLert = false;   
    var addItems = false;     
    var message = '';

    for (var i = 0; i < variationsTable.rows.length; i++) {
        var row = variationsTable.rows[i];

        var inputs = row.getElementsByTagName('input');

        if (inputs.length < 3) {
            // No quantity input because this item doesnt exist/out of stock/unavailable etc...
            continue;
        }
        else {
            var quantityAvailable = parseInt(inputs[0].value);
            var quantityInBasket = parseInt(inputs[1].value);
            var quantityTextboxValue = parseInt(inputs[2].value);

            if (quantityTextboxValue > 0) {
                if ((quantityTextboxValue + quantityInBasket) > quantityAvailable) {
                    // Can't add as many as requested of this item to basket.
                    message = message + 'Sorry, we only have ' + quantityAvailable + ' x ' + links[i - 1].innerHTML + ' currently in stock!<BR><BR>';
                    
                    inputs[2].value = quantityTextboxValue - ((quantityTextboxValue + quantityInBasket) - quantityAvailable);
                }

                showLert = true;
            }
        }
    }
    
    /*
    for(i = 0; i < links.length; i++)
    {        
        var quantityAvailable = parseInt(inputs[i*3].value);
        var quantityInBasket = parseInt(inputs[(i*3)+1].value);
        var quantityTextboxValue = parseInt(inputs[(i*3)+2].value);
               
        if(quantityTextboxValue > 0)
        {
            if((quantityTextboxValue + quantityInBasket) > quantityAvailable)
            {	            
                // Can't add as many as requested of this item to basket.
                message = message + 'Sorry, we only have ' + quantityAvailable + ' x ' + links[i].innerHTML + ' currently in stock!<BR><BR>';
                inputs[(i*3)+2].value = quantityTextboxValue - ((quantityTextboxValue + quantityInBasket) - quantityAvailable);                
            }
            
            showLert = true;
        }
    } 
    */           
    
    var itemsMessage = 'Would you like to add the following items to your bag?<BR>';

    for (var i = 0; i < variationsTable.rows.length; i++) {
        var row = variationsTable.rows[i];

        var inputs = row.getElementsByTagName('input');

        if (inputs.length < 3) {
            // No quantity input because this item doesnt exist/out of stock/unavailable etc...
            continue;
        }
        else {
            var quantityAvailable = parseInt(inputs[0].value);
            var quantityInBasket = parseInt(inputs[1].value);
            var quantityTextboxValue = parseInt(inputs[2].value);

            if (quantityTextboxValue > 0) {
                itemsMessage = itemsMessage + '<BR>' + quantityTextboxValue + ' x ' + links[i - 1].innerHTML;
                addItems = true;
            }
        }
    }
    
    
    /*
    for (i = 0; i < links.length; i++)
    {   
        var quantityTextboxValue = parseInt(inputs[(i*3)+2].value);
     
        if(quantityTextboxValue > 0)
        {                                    
            itemsMessage = itemsMessage + '<BR>' + quantityTextboxValue + ' x ' + links[i].innerHTML;
            addItems = true;
        }
    }        
    */
    
    HideSelects();
    
    if(addItems)
    {
        message = message + itemsMessage + '<BR><BR>Your bag will appear at the top of the screen.';
        
        var cancelButton = new LertButton('Cancel', function() {
            ShowSelects();
            showFeature1();
            unfreezePage();
		    return false;
	    });
    	
        var okButton = new LertButton('OK', function() {
		    ShowSelects();
		    addToBasket('slidingProduct1'); 		
		    __doPostBack(btnID,'');				    
	    });        
	    
        var addToBagLert = new Lert(
		    message,
		    [okButton,cancelButton],
		    {	
    		    defaultButton:okButton
	    	});    
        addToBagLert.display();	    
    }        
    else if(showLert)
    {
        var okButton = new LertButton('OK', function() {
            return false;
	    });                
        var addToBagLert = new Lert(
		    message,
		    [okButton],
		    {	
    		    defaultButton:okButton
	    	});    
        addToBagLert.display();	    	    
    }
}

function showRepeatOrderPopup()
{
    var orderItems = document.getElementById('tblOrderItems');        
    var inputs = orderItems.getElementsByTagName('input');
    var links = orderItems.getElementsByTagName('a');    
    var labels = orderItems.getElementsByTagName('label');    
    
    var showLert = false;
    var message = 'Sorry we only have <BR /><BR />';
 
    for(i = 0; i < links.length; i++)
    {        
        var available = parseInt(inputs[(i*2)].value);
        var quantityAvailable = parseInt(inputs[(i*2)+1].value);        
        var quantityRequested = parseInt(labels[i].innerHTML);        
        
        if(available == 0 && quantityRequested > quantityAvailable)
        {
            message = message + quantityAvailable + ' x ' + links[i].innerHTML + '<BR />';
            showLert = true;
        }
    }   
    
    if(showLert)
    {
        HideSelects();
    
        message = message + '<BR />' + 'currently available in stock!';
        var okButton = new LertButton('OK', function() {
            ShowSelects();
            return false;
	    });                
        var repeatOrderLert = new Lert(
		    message,
		    [okButton],
		    {	
    		    defaultButton:okButton
	    	});    
        repeatOrderLert.display();	    	                 
        return false;
    }        
    else    
    {
        __doPostBack('btnRepeatOrder','');
    }
}

function HideSelects()
{
    // Detect IE6
    var IE6 = false /*@cc_on || @_jscript_version < 5.7 @*/;

    // Need to hide drop downs as in IE6 it appears above all other elements including popup.
    if(IE6 == true)
    {           
        var selects = document.getElementsByTagName('select');
        
        for(i = 0; i < selects.length; i++)
        {
            selects[i].style.visibility = "hidden";
        }                 
    }
}

function ShowSelects()
{
    // Detect IE6
    var IE6 = false /*@cc_on || @_jscript_version < 5.7 @*/;
    
    if(IE6 == true)
    {        
        var selects = document.getElementsByTagName('select');
        
        for(i = 0; i < selects.length; i++)
        {
            selects[i].style.visibility = "visible";
        }        
    }
}

function freezePage()
{
	var overlay = document.getElementById('lertOverlayCheckout');
	var pageSize = getPageSize();
	overlay.style.height=pageSize[1]+'px';
	overlay.style.display='block';	
	//showFeature1();
}

function unfreezePage()
{
	var overlay = document.getElementById('lertOverlayCheckout');
	overlay.style.display='none';	
}

function clientTabChanged()
{
    document.getElementById('tabsChangeLoadingFloat').style.display = 'block';
    return true;
}

function showInternationalPopUp()
{   
    freezePage();   
    hideFlashFeatures();
    jQuery("#internationalContainer").fadeIn("fast");
}
function showMoreInfoPopUp() {
    HideSelects();

    var okButton = new LertButton('OK', function() { ShowSelects('test'); unfreezePage(); return false; });

    var message = '<div id="PromoInfo" >';
    message = message.concat("<img src='/assets/images/reskin/codesBig.gif' class='thanksBIG' /><p>If you have a discount code, please type into this box and click 'Apply'. We cannot apply discounts to an order after the order has been confirmed. Please note that only one discount code may be used per order. Beautybay.com reserves the right to refuse discount applications.</p>");
    message = message.concat('</div>');

    var nlLert = new Lert(message, [okButton], { defaultButton: okButton });
    nlLert.display();
   
}
function showNewsletterPopUp() {
    HideSelects();

    var okButton = new LertButton('OK', function() { ShowSelects('test'); unfreezePage(); return false; });

    var message = '<img src="/assets/images/reskin/thanksBIG.gif" class="thanksBIG" />Your email address has been successfully submitted. Look out for the next BeautyBay.com Bulletin with offers, news and much more.';

    var nlLert = new Lert(message, [okButton], { defaultButton: okButton });

    nlLert.display();
}
function showNewsletterErrorPopUp(message) {
    HideSelects();

    var okButton = new LertButton('OK', function() { ShowSelects(); unfreezePage(); return false; });
    
    var nlLert = new Lert(message, [okButton], { defaultButton: okButton });

    nlLert.display();
}
function hideInternationalPopup()
{
    jQuery("#internationalContainer").fadeOut("fast");    
    return false;    
}

function showPriceBandPopUp(productList, country)
{
    freezePage();   
    hideFlashFeatures();
    var removeButton = new LertButton('Remove', function() { 

        __doPostBack('ucHeader$btnRemoveInternationalUnavailable','');
    });                
    
    var keepButton = new LertButton('Keep', function() { 
        unfreezePage();        
        return false;
    });      

    var message = 'The following items are not available for delivery to ' + country
                + ':<BR><BR><strong>' + productList 
                + '</strong><BR>Click "Remove" to remove unavailable products from your basket, '
                + 'or click "Keep" to keep unavailable products in your basket.'
                + '<BR><BR>Please note, if you choose "Keep" you will need to either remove unavailable products '
                + 'or select a different delivery country in order to complete your purchase.';
              
    
    var url = String(window.location);

    var priceBandPopUp = new Lert(
	    message,
	    [removeButton, keepButton],
	    {	
		    defaultButton:keepButton
    	});    
    priceBandPopUp.display();
    
    return false;
}

function restoreHomePageTab()
{
	var hid = document.getElementById('currentlySelectedFeatured');
	
	var value = 1;
	
	if(hid)
	{
		value = hid.value;
	}
	
	eval('showFeature' + value + '();');
}
