﻿// JScript File

var ShopOpen = false;
var ShopClosedMessage = 'Sorry, online purchasing is not currently available. \n\nIf you would like to place an order, please call us on 01737 55 77 37 or email info@essentiallywine.com\n\nPlease come back in October when our fully functional website launches.';

var pb_ProductType = '-1';
var pb_PriceMin = -1;
var pb_PriceMax = -1;
var pb_Brand = '-1';
var pb_OrderBy;
var pb_PageSize;
var pb_PageNumber;
var pb_DisplayType;
var pb_Keywords = '';

var GoodCharacters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 ';

function createRequestObject() 
{
	var ro;
	var browser = navigator.appName;
	if(browser == "Microsoft Internet Explorer")
		ro = new ActiveXObject("Microsoft.XMLHTTP");
	else
		ro = new XMLHttpRequest();
	return ro;
}

var http = createRequestObject();
			    

function sndReq(action) 
{	
	//alert(action);
	http = createRequestObject();
	http.open('get', action);
	http.onreadystatechange = handleResponse;
	http.send(null);
}

function handleResponse() 
{
    if(http.readyState == 4){
	    var response = http.responseText;
	    //alert(response.length)
	    //alert(response);
		if (response.substr(0, 5) == 'News:')
				loadNews(response.substring(5));
		else if (response.substr(0, 12) == 'ArchiveNews:')
				loadArchiveNews(response.substring(12));
		else if (response.substr(2, 14) == 'ProductBrowse:')
				loadProductBrowser(response.substring(16));
		else if (response.substr(0, 16) == 'RelatedProducts:')
		        loadRelatedProducts(response.substring(16));
		else if (response.substr(0, 25) == 'NewsletterSignUpComplete:')
		        newsLetterComplete(response.substring(25));
		else if (response.substr(0, 16) == 'ImageProperties:')
		        fillImageSettings(response.substring(16));
		else if (response.substr(0, 14) == 'ContactUsForm:')
		        CompletedContactUsForm(response.substring(14));
		else if (response.substr(0, 17) == 'NewsletterSignUp:')
		        CompletedSignUpForm(response.substring(17)); 
		else if (response.substr(0, 8) == 'RSSFeed:')		
		        LoadRSS(response.substring(8)); 
		        
	}
}

function GetXMLObject(xml)
{
    var doc;
    if (window.ActiveXObject)
    { 
        doc=new ActiveXObject("Microsoft.XMLDOM");
        doc.async="false";
        doc.loadXML(xml);
    }
    else
    {
        var parser=new DOMParser();
        doc=parser.parseFromString(xml,"text/xml");
    }
    return doc;
}

function GetRSSWidgetContent(widgetID)
{
    sndReq('/XML/getRSSContent.aspx?ControlType=widget&ControlID=' + widgetID + '&url=' + document.getElementById('drpRSSWidget' + widgetID).value);
}

function GetRSSControlContent(controlID)
{
    sndReq('/XML/getRSSContent.aspx?ControlType=control&ControlID=' + controlID + '&url=' + document.getElementById('drpRSSControl' + controlID).value);
}

function LoadRSS(s)
{
    ss = s.split('|||');
    var ControlType = ss[0];
    var ControlID = ss[1];
    var Max = ss[2];
    var X = ss[3];
    var cl;

        
    
    var xml = GetXMLObject(X);
      
    var root = xml.getElementsByTagName('rss')[0];
    var channels = root.getElementsByTagName("channel");
    var items = channels[0].getElementsByTagName("item");

    if (ControlType == 'widget')
        cl = document.getElementById('clRSSWidget' + ControlID);
    else
        cl = document.getElementById('clRSSControl' + ControlID);
        
    cl.innerHTML = '<table>';
    
    for (i=0; i<items.length; i++)
    {
        if (i>=Max) break;
        if (items[i].getElementsByTagName("description")[0].firstChild) desc = items[i].getElementsByTagName("description")[0].firstChild.nodeValue;
        title = items[i].getElementsByTagName("title")[0].firstChild.nodeValue;
        link = items[i].getElementsByTagName("link")[0].firstChild.nodeValue;
        if (ControlType == 'widget')
        {   
            desc = ResetImageWidth(desc) ;                   
            fillRSSWidget(cl, title, desc, link);            
        }
        else
            fillRSSControl(cl, title, desc, link);
    }
    cl.innerHTML += '</table>';
       
}

function ResetImageWidth(str)
{
  var nStr= str.replace("<img", "<img width='170' style='border:1px solid #CCCCCC;padding:2px;' ");
  return nStr;
}

function fillRSSWidget(cell, t, d, l)
{
    var s = "<tr valign=top><td>";
    s += "<table><tr><td valign='top' width='10px' style='padding-top:5px'><img src='/images/news/NewsBullet.gif'></td><td width='190px'><a href='" + l +  "'>" + t + "</a></td></tr>";
    s += "<tr><td></td><td valign='top'>" + d + "</td></tr></table>";
    s += "</td></tr>";
    
    cell.innerHTML += s;
}

function fillRSSControl(cell, t, d, l)
{
    var s = "<tr><td><table>"
    s += "<tr valign=top><td style='padding-left:6px'><img src='/images/news/NewsBullet.gif'>&nbsp;&nbsp;<a ";
    s += "href='" + l + "' target='_blank'>" + t + "</a></td></tr>";
    s += "<tr><td style='padding-left:19px; padding-top:2px; padding-bottom:5px;'>" + d; 
    s += "</td></tr></table></td></tr>";
    
    cell.innerHTML += s;
}

function loadRelatedProducts(doc)
{
    var xml = GetXMLObject(doc);
    var count = xml.childNodes[0].getAttribute('count')
    var preview = xml.childNodes[0].getAttribute('Preview')
    var AP = xml.childNodes[0].getAttribute('AliasPath')
    if (count == 0)
    {
        document.getElementById('rwProducts').style.display = 'none';
        document.getElementById('rwProductsHeader').style.display = 'none';
        document.getElementById('rwRelatedLink').style.display = 'none';
    }
    else
    {
        document.getElementById('rwProducts').style.display = 'block';
        document.getElementById('rwProductsHeader').style.display = 'block';
        document.getElementById('rwRelatedLink').style.display = 'block';
        LoadProductsGrid(xml.childNodes[0].childNodes);
        if (count > preview)
        {
            var table = document.createElement('table');
            table.width = '630';
            table.cellspacing = '0';
            table.padding = '0';
            var row = table.insertRow(table.rows.length);
            var cell = row.insertCell(0);
            cell.align = 'right';
            cell.innerHTML = '<a href="javascript:GetRandomAssociatedProducts(\''+ AP + '\', document.getElementById(\'hidExisting\').value);">Show all related products</a>';
            document.getElementById('clProducts').appendChild(table);
            document.getElementById('clProducts').id = 'clProductsOld';
            cell.id = 'clProducts'
            
        }
    }
}

function loadProductBrowser(doc)
{
    var xml = GetXMLObject(doc);
    var search = xml.childNodes[0].childNodes[0];
    var settings = xml.childNodes[0].childNodes[1];
    
    var AP = search.getAttribute("AliasPath");
    var keywords = search.getAttribute("Keywords");
    document.getElementById('clListProductTypes').innerHTML =  buildRefineString(search.childNodes[0].getElementsByTagName('Type'), 'ProductType', AP);  
    //alert('here');
    document.getElementById('clListPrices').innerHTML =  buildRefineString(search.childNodes[1].getElementsByTagName('Price'), 'Price', AP);  
    document.getElementById('clListBrands').innerHTML =  buildRefineString(search.childNodes[2].getElementsByTagName('Brand'), 'Brand', AP);  
    document.getElementById('clListOrder').innerHTML =  buildRefineString(search.childNodes[3].getElementsByTagName('Order'), 'Order', AP);  
    
    
    
    var StartNumber = settings.getAttribute('StartNumber');
    var EndNumber = settings.getAttribute('EndNumber');
    var TotalRecords = settings.getAttribute('TotalRecords');
    var currentpage = settings.getAttribute('currentpage');
    var PageSize = settings.getAttribute('PageSize');
    var DisplayMode = settings.getAttribute('DisplayMode');
    var TotalPages = settings.getAttribute('TotalPages');
    //var NoProducts = '<table align="center"><tr><td>No products found</td></tr></table>'
    var NoProducts = settings.getElementsByTagName('NoneFound')[0].firstChild.data;
    
    //alert(NoProducts);
    
    pb_DisplayType = DisplayMode;
    pb_PageSize = PageSize;
    pb_PageNumber = currentpage;
    pb_Keywords = keywords;
    
    buildKeywords(pb_Keywords, AP);
    
    //document.getElementById('txtRefineKeywords').value = pb_Keywords;
    document.getElementById('txtRefineKeywords').value = '';
    //if ((document.getElementById('txtQuickSearch')) && (pb_Keywords != '')) document.getElementById('txtQuickSearch').value  = pb_Keywords;
    
    if (TotalPages==0) TotalPages = 1;
    document.getElementById('ddlPageSize').value = pb_PageSize;
    document.getElementById('clResultsSummary').innerHTML = 'Showing <span class="ProductResultsSummaryNumbers">' + StartNumber + '-' + EndNumber + '</span> of <span class="ProductResultsSummaryNumbers">' + TotalRecords + '</span>';
    
    var p = BuildPaging(TotalPages, currentpage, 3, "...&nbsp;", "&nbsp;", AP)  
    document.getElementById('clPaging').innerHTML = p;
    document.getElementById('clPagingBottom').innerHTML = p;
    

    imgG = document.getElementById('imgBrowseGrid');
    imgL = document.getElementById('imgBrowseList');
    imgSpc = document.getElementById('imgBrowseSpc');
        
    if (TotalRecords !=0)
    {
        imgG.style.visibility = 'visible';
        imgL.style.visibility = 'visible';
        imgSpc.style.visibility = 'visible';
        if (DisplayMode.toLowerCase() == 'list')
        {
            imgG.src = '/siteimages/productInfo/btn_grid.gif';
            imgL.src = '/siteimages/productInfo/btn_list_over.gif';
            LoadProductsList(xml.childNodes[0].childNodes[2].childNodes);
        }
        else
        {
            imgG.src = '/siteimages/productInfo/btn_grid_over.gif';            
            imgL.src = '/siteimages/productInfo/btn_list.gif';
            LoadProductsGrid(xml.childNodes[0].childNodes[2].childNodes);
        }
    }
    else
    {
        imgG.style.visibility = 'hidden';
        imgL.style.visibility = 'hidden';
        imgSpc.style.visibility = 'hidden';
        document.getElementById('clProducts').innerHTML = NoProducts;
    }
    
    xml = null;
}

function buildKeywords(kw, AP)
{
    var k = kw.split('|||||');
    var ret = '';
    var lnk = '';
    for (i in k)
    {
        if (k[i] != '')
        {
            lnk += k[i] + '|||||';
            ret += '<a href=\'javascript:ChangeProductBrowsing("' + lnk + '","Keywordscl","' + AP + '");\' >' + k[i] + '</a> > ';
        }
    }
    //alert(ret);
    if (ret != '') 
    {
        ret = ret.substr(0, ret.length-3);
        document.getElementById('spnWordLinks').innerHTML = ret + '<br>';
        document.getElementById('spnClearKeywordsLink').innerHTML = '&nbsp;/&nbsp;<a href=\'javascript:ChangeProductBrowsing("","Keywordscl","' + AP + '");\' >clear keywords</a>';
    }
    else
    {
        document.getElementById('spnWordLinks').innerHTML = '';
        document.getElementById('spnClearKeywordsLink').innerHTML = '';
    }
}

function BuildPaging(TotalPages, CurrentPage, EitherSide, Gap, Spacer, AP)
{
    var p = '';
    if (CurrentPage != 1)
        p = '<a href="Javascript:ChangeProductBrowsing(\'' + ((CurrentPage*1)-(1*1)) + '\', \'Page\', \'' + AP + '\')"><img src="/siteimages/productInfo/btn_prv.gif" border="0"></a>&nbsp;';
    else
        p = '<img src="/siteimages/productInfo/btn_prv_dis.gif" border="0">&nbsp;';
        
    p+= Spacer;
        
    p+= AddPage(1, CurrentPage, AP) + Spacer;
    
    //alert('here');
    
    
    if (TotalPages <= (EitherSide+5))
    {
        //1, 2, 3, 4, 5
        for (i=2; i<TotalPages; i++)
            p+= AddPage(i, CurrentPage, AP) + Spacer;
    }
    else
    {
        if (CurrentPage < (EitherSide+3))
        {
            //1, 2, 3, 4 ... 10
            
            for (i=2; i<(EitherSide+4); i++)
                p+= AddPage(i, CurrentPage, AP) + Spacer;
            if (CurrentPage == (EitherSide+3)) 
            {
                for (x=1; x<=EitherSide; x++)
                    p+= AddPage((EitherSide+x+3), CurrentPage, AP) + Spacer;
            }
            p+= Gap;
        }
        else if (CurrentPage > (TotalPages-(EitherSide+2)))
        {
            //1...7, 8, 9, 10
            p+= Gap;
            if (CurrentPage == (TotalPages-(EitherSide+2))) 
            {
                for (x=1; x<=EitherSide; x++)
                    p+= AddPage((TotalPages-(EitherSide+(5-x))), CurrentPage, AP) + Spacer;
            }
            for (i=TotalPages-(EitherSide+2); i<TotalPages; i++)
                p+= AddPage(i, CurrentPage, AP) + Spacer;
        }
        else
        {
            //1...3, 4, 5...10
            p+= Gap;
            //alert(CurrentPage);
            for (i=CurrentPage-EitherSide; i<((CurrentPage*1)+(EitherSide+1)); i++)
                p+= AddPage(i, CurrentPage, AP) + Spacer;
                
            p+= Gap;
        }
    }

    
    if (TotalPages != 1) p+= AddPage(TotalPages, CurrentPage, AP) + Spacer;
        
    if (CurrentPage != TotalPages)
        p += '&nbsp;<a href="Javascript:ChangeProductBrowsing(\'' + ((CurrentPage*1)+(1*1)) + '\', \'Page\', \'' + AP + '\')"><img src="/siteimages/productInfo/btn_next.gif" border="0"></a>'
    else
        p += '&nbsp;<img src="/siteimages/productInfo/btn_next_dis.gif" border="0">'
        
    return p
    
}

function AddPage(no, currentpage, AP)
{

    if (no == currentpage)
        return '<span class="ProductPagingSelected">' + no + '</span>';
    else
        return '<a href="Javascript:ChangeProductBrowsing(\'' + no  + '\', \'Page\', \'' + AP + '\')">' + no + '</a>';
}

function ShowHideRefineSearch()
{
    var div = document.getElementById('divRefineSearch');
    var img = document.getElementById('imgRefineSearch');
    
    if (div.style.display == 'block')
    {
        div.style.display = 'none';
        img.src = '/siteimages/productInfo/btn_refineResults_open.gif';
        img.onmouseout = function() {SetImagePath("imgRefineSearch", "/siteimages/productInfo/btn_refineResults_open.gif");};
        img.onmouseover = function() {SetImagePath("imgRefineSearch", "/siteimages/productInfo/btn_refineResults_open_over.gif");};
    }
    else
    {
        div.style.display = 'block';
        img.src = '/siteimages/productInfo/btn_refineResults_close.gif';
        img.onmouseout = function() {SetImagePath("imgRefineSearch", "/siteimages/productInfo/btn_refineResults_close.gif");};
        img.onmouseover = function() {SetImagePath("imgRefineSearch", "/siteimages/productInfo/btn_refineResults_close_over.gif");};
    }
}

function SetImagePath(cntrl, src)
{
    //alert(cntrl);
    document.getElementById(cntrl).src = src;
}

function LoadProductsGrid(ps)
{
    var Template = document.getElementById('hidLayoutGrid').innerHTML;
    var TemplateRec = document.getElementById('hidLayoutGridRecommended').innerHTML;
    var TemplateProm = document.getElementById('hidLayoutGridPromotion').innerHTML;
    var Columns = document.getElementById('hidGridItemsPerRow').value;
    var col = 0
    var table = document.createElement('table');
    //table.width = '647';
    table.width = '630';
    table.cellspacing = '0';
    table.padding = '0';
    var row = table.insertRow(table.rows.length);
    
    for (i=0; i< ps.length; i++)
    {
        //s += ps[i].getAttribute("Name") + '<br>';
        var sName = doReplace(ps[i].getAttribute("ShortName"), 'ampis', '&');
        var Name = doReplace(ps[i].getAttribute("Name"), 'ampis', '&');
        var Price = ps[i].getAttribute("Price");
        var ProductID = ps[i].getAttribute("ProductID");
        var Image = ps[i].getAttribute("Image");
        var AP = ps[i].getAttribute("AliasPath");
        var Stock = ps[i].getAttribute("StockText");
        var SKU = ps[i].getAttribute("SKU");
        var Description = doReplace(ps[i].getAttribute("Description"), 'ampis', '&');
        var Accred1 = ps[i].getAttribute("AccredLogo1");
        var Accred2 = ps[i].getAttribute("AccredLogo2");
        var Gallery = ps[i].getAttribute("ImageGallery");
        var Recommened = ps[i].getAttribute("Recommended");
        var current = Template;
        if (Recommened.toLowerCase() == "true") current = TemplateRec
        
        if (document.getElementById('hidExisting')) document.getElementById('hidExisting').value += ProductID + ',';
        
        nGallery = ''
        if (Image != '')
            nGallery = '<a href="javascript:ShowImage(\'' + Image + '\')"><img alt="Enlarge Image" border="0" src="/siteimages/productInfo/icon_enlarge_grid.gif"></a>&nbsp;&nbsp;' 
            
        if (Gallery != '')
            nGallery += '<a href="javascript:ShowGallery(\'' + Gallery + '\')"><img alt="View Product Gallery" border="0" src="/siteimages/productInfo/icon_imgGallery_grid.gif"></a>' 
        
        Gallery = nGallery
 
        Image = GetImageDisplay(Image, AP, Name);
            
        current = doReplace(current, '%%ProductName%%', sName);
        current = doReplace(current, '%%Price%%', Price);        
        current = doReplace(current, '%%ProductID%%', ProductID);
        current = doReplace(current, '%%Image%%', Image);        
        current = doReplace(current, '%%Path%%', AP);
        current = doReplace(current, '%%Stock%%', Stock);        
        current = doReplace(current, '%%SKU%%', SKU);
        current = doReplace(current, '%%Description%%', Description);        
        current = doReplace(current, '%%Accreditation1%%', Accred1);
        current = doReplace(current, '%%Accreditation2%%', Accred2);
        current = doReplace(current, '%%Gallery%%', Gallery);
        //alert(current);
        if (col == Columns)
        {
            row = table.insertRow(table.rows.length);
            col = 0;
        }
        var cell = row.insertCell(col);
        cell.innerHTML = current;
        cell.width = '210';
        cell.align = 'center';
        cell.vAlign = 'top';
        col++;
    } 
    while (col < Columns)
    {
        var cell = row.insertCell(col);
        cell.innerHTML = '';
        //cell.width = '200';
        cell.width = '215';
        col++
    }
    document.getElementById('clProducts').innerHTML = '';
    document.getElementById('clProducts').appendChild(table);
}

function LoadProductsList(ps)
{
    var Template = document.getElementById('hidLayoutList').innerHTML;
    var TemplateRec = document.getElementById('hidLayoutListRecommended').innerHTML;
    var TemplateProm = document.getElementById('hidLayoutListPromotion').innerHTML;

    var table = document.createElement('table');
    table.width = '655';
    table.border = '0';
    
    
    for (i=0; i< ps.length; i++)
    {
        //s += ps[i].getAttribute("Name") + '<br>';
        var Name = doReplace(ps[i].getAttribute("Name"), 'ampis', '&');
        var Price = ps[i].getAttribute("Price");
        var ProductID = ps[i].getAttribute("ProductID");
        var Image = ps[i].getAttribute("Image");
        var AP = ps[i].getAttribute("AliasPath");
        var Stock = ps[i].getAttribute("StockText");
        var SKU = ps[i].getAttribute("SKU");
        var Description = doReplace(ps[i].getAttribute("Description"), 'ampis', '&');
        var Accred1 = ps[i].getAttribute("AccredLogo1");
        var Accred2 = ps[i].getAttribute("AccredLogo2");
        var AccredD1 = ps[i].getAttribute("AccredDesc1");
        var AccredD2 = ps[i].getAttribute("AccredDesc2");
        var Gallery = ps[i].getAttribute("ImageGallery");
        var Recommened = ps[i].getAttribute("Recommended");
        var current = Template;
        if (Recommened.toLowerCase() == "true") current = TemplateRec
        
        if (Accred1 != "")
            Description += "<br><br><img alt='" + AccredD1 + "' src='/getfile/" + Accred1 + "/AccredLogo.aspx?MaxSideSize=50' />&nbsp;&nbsp;";

        if (Accred2 != "")
            Description += "<img alt='" + AccredD2 + "' src='/getfile/" + Accred2 + "/AccredLogo.aspx?MaxSideSize=50' />";
        
        nGallery = ''
        if (Image != '')
            nGallery = '<a href="javascript:ShowImage(\'' + Image + '\')"><img alt="Enlarge Image" border="0" src="/siteimages/productInfo/icon_enlarge.gif"></a>&nbsp;&nbsp;' 
               
        if (Gallery != '')
            nGallery += '<a href="javascript:ShowGallery(\'' + Gallery + '\')"><img alt="View Product Gallery" border="0" src="/siteimages/productInfo/icon_imgGallery.gif"></a>' 
        
        Gallery = nGallery
              
        Image = GetImageDisplay(Image, AP, Name); 
        
        current = doReplace(current, '%%ProductName%%', Name);
        current = doReplace(current, '%%Price%%', Price);        
        current = doReplace(current, '%%ProductID%%', ProductID);
        current = doReplace(current, '%%Image%%', Image);        
        current = doReplace(current, '%%Path%%', AP);
        current = doReplace(current, '%%Stock%%', Stock);        
        current = doReplace(current, '%%SKU%%', SKU);
        current = doReplace(current, '%%Description%%', Description);        
        current = doReplace(current, '%%Accreditation1%%', Accred1);
        current = doReplace(current, '%%Accreditation2%%', Accred2);
        current = doReplace(current, '%%Gallery%%', Gallery);
        
        var row = table.insertRow(table.rows.length);
        var cell = row.insertCell(0)
        cell.innerHTML = current;
        cell.align = 'center';
        cell.width= '655'
        
    } 
    document.getElementById('clProducts').innerHTML = '';
    document.getElementById('clProducts').appendChild(table);
}


function ShowImage(img)
{
    window.open('/ShowImage.aspx?Image=' + img, "", "resizable=1,HEIGHT=550,WIDTH=550");
}

function SearchTextKeyPressed(txt, ev)
{
    
    if (ev.keyCode==13) 
        DoQuickSearch(txt.id);
    
}

function SearchTextBlur(txt)
{
    if (txt.value == '')
        txt.value = 'enter keywords';
}

function SearchTextGetFocus(txt)
{
    if (txt.value == 'enter keywords')
        txt.value = '';
}

function DoQuickSearch(txt)
{
    var search = document.getElementById(txt).value;
    if (search == 'enter keywords') search = '';
    document.location = '/search.aspx?keywords=' + search;
}

function ShowGallery(gal)
{
   window.open('/ShowGallery.aspx?Gallery=' + gal, "", "resizable=0,HEIGHT=500,WIDTH=910");
}

function GetImageDisplay(Image, AP, ProductName)
{
    if (Image != '')
        Image = '<a href="' + AP + '.aspx"><img src="/getfile/' + Image + '/ProductImage.aspx?maxsidesize=150"  class="ProductImage" alt="More Info" ></a>'
    else
        Image = '<a href="' + AP + '.aspx"><img src="/siteimages/productInfo/noimage_150.gif" border="0" alt="More Info" ></a>'
        
    return Image;
}

function doReplace(str, origtext, newtext)
{
    var i = 0
    while (i < str.length)
    {
        if (str.substr(i, origtext.length) == origtext)
        {
            str = str.substr(0, i) + newtext + str.substr(i+origtext.length)
            i += (newtext.length - origtext.length)            
        }
        i++
    }
    return str;
}


function buildRefineString(collection, type, AP)
{
    var s = '';
    for (i=0; i<collection.length; i++)
    {
        var item = collection[i];
        var selected = item.getAttribute("selected");
        var txt = item.getAttribute("text");
        var value = item.getAttribute("value");
//alert(txt);
        
        txt = doReplace(txt, "ampis", "&");
        //value = doReplace(value, "&", "ampis");
        value = doReplace(value, "'", "\\'");
        
        if (selected == 'true')
        {
            s += '<span class="RefineSearchSelectedItem">' + txt + '</span>';
            switch (type.toLowerCase()){
                case ('producttype'):
                    pb_ProductType = value;
                    break;
                case ('brand'):
                    pb_Brand = value;
                    break;
                case ('order'):
                    pb_OrderBy = value;
                    break;
                case ('price'):
                    var pr = value.split(',');
                    pb_PriceMin = pr[0];
                    pb_PriceMax = pr[1];
                    break;
            }
        }
        else
            s += '<a href="javascript:ChangeProductBrowsing(\'' + value + '\', \'' + type + '\', \'' + AP + '\');">' + txt + '</a>';
            
        s += ',&nbsp;&nbsp;&nbsp;';
    }
    s = s.substring(0, s.length-19);

    return s;
}

function PageSizeChanged(ddl, AP)
{
    ChangeProductBrowsing(ddl.value, 'pagesize', AP);
}

function ChangeProductBrowsing(value, changewhat, AP)
{
    switch (changewhat.toLowerCase()){
        case ('producttype'):
            pb_ProductType = value;
            pb_PageNumber = 1;
            break;
        case ('brand'):
            pb_Brand = value;
            pb_PageNumber = 1;
            break;
        case ('order'):
            pb_OrderBy = value;
            break;
        case ('page'):
            pb_PageNumber = value;
            break;
        case ('pagesize'):
            pb_PageSize = value;
            pb_PageNumber = 1;
            break;
        case ('price'):
            var pr = value.split(',');
            pb_PriceMin = pr[0];
            pb_PriceMax = pr[1];
            pb_PageNumber = 1;
            break;
        case ('displaytype'):
            pb_DisplayType = value;
            break;
        case ('keywords'):
            nv =  trim(removeBadChars(value));
            if (nv != '') pb_Keywords += '|||||' + nv;
            break;
        case ('keywordscl'):
            pb_Keywords = trim(removeBadChars(value));
            break;
        }
        
    GetProductBrowser(AP, 'yes');
}

function removeBadChars(str)
{
    var ret = ''
    for (i=0; i<str.length; i++)
    {
        if (GoodCharacters.indexOf(str.substr(i, 1)) != -1)
            ret += str.substr(i, 1)
    }
    return ret;
}

 function trim (str) {
    return str.replace(/^s+/, '').replace(/s+$/, '');
 }


function GetRandomAssociatedProducts(alias, existing)
{
    document.getElementById('clProducts').innerHTML = '<br><img align="left" src="/siteimages/loading.gif"><br><br><br>';    
    sndReq('/XML/GetAssociatedProducts.aspx?AliasPath=' + alias + '&Existing=' + existing);    
}

function GetProductBrowser(alias, fromJS)
{
    document.getElementById('clProducts').innerHTML = '<br><img align="left" src="/siteimages/loading.gif"><br><br><br>';
    document.getElementById('clPagingBottom').innerHTML = '&nbsp;';
    
    var vars = '';
    if (fromJS =='yes')
    {
        pb_Brand = doReplace(pb_Brand, "\\'", "'");
        pb_ProductType = doReplace(pb_ProductType, "\\'", "'");
        vars += '&ProductType=' + pb_ProductType;
        vars += '&PriceMin=' + pb_PriceMin;
        vars += '&PriceMax=' + pb_PriceMax;
        vars += '&Brand=' + pb_Brand;
        vars += '&OrderBy=' + pb_OrderBy;
        vars += '&PageSize=' + pb_PageSize;
        vars += '&PageNumber=' + pb_PageNumber;
        vars += '&DisplayMode=' + pb_DisplayType;
        vars += '&Keywords=' + pb_Keywords;
    }
    
    sndReq('/XML/GetProductBrowser.aspx?AliasPath=' + alias + '&FromJS=' + fromJS + vars);
}

function loadArchiveNews(ns)
{
    n = ns.split('|||||');
    //alert(n[0]);
    document.getElementById(n[0]).innerHTML = n[1]; 
}

function loadNews(ns)
{
    
    n = ns.split('|||||');
    
    document.getElementById('clNews' + n[0]).innerHTML = n[2]; 
    
    if (n[1] == 'full')
        document.getElementById('imgNews' + n[0]).src = '/siteimages/faq_minus.gif'
    else
    {
        document.getElementById('imgNews' + n[0]).src = '/siteimages/faq_plus.gif'
        document.getElementById('clNews' + n[0]).innerHTML = '<p>' + document.getElementById('clNews' + n[0]).innerHTML + '</p>'
    }
        
    
}


function CopyAdd(src, dest)
{
    SetVal(src, dest, 'Add1');
    SetVal(src, dest, 'Add2');
    SetVal(src, dest, 'Add3');
    SetVal(src, dest, 'Add4');
    SetVal(src, dest, 'PostCode');
}

function SetVal(src, dest, cntrl)
{
    document.getElementById(dest + cntrl).value = document.getElementById(src + cntrl).value;
}

function removeBasketItem(ID, Qty)
{
    if (confirm('Are you sure you wish to remove this item from your basket?'))
        document.location = '/stationery/order.aspx?DelID=' + ID + "&DelQty=" + Qty;
}

function PDF(pth)
{
    window.open(pth, '_blank', 'height=500, width=470, fullscreen=0, status=0, toolbar=0, menubar=0, titlebar=0, scrollbars=1' );
}

function loadflash(id, file, width, height, flashvars)
{
        var s = '<OBJECT id="'+ id +'" codeBase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" '
		+ '	height="' + height + '" width="' + width + '" align="middle" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" '
		+ '		VIEWASTEXT> '
		+ '		<PARAM NAME="_cx" VALUE="25268"> '
		+ '		<PARAM NAME="_cy" VALUE="15081"> '
		+ '		<PARAM NAME="FlashVars" VALUE="' + flashvars + '"> '
		+ '		<PARAM NAME="Movie" VALUE="' + file + '"> '
		+ '		<PARAM NAME="Src" VALUE="' + file + '"> '
		+ '		<PARAM NAME="WMode" VALUE="Window"> '
		+ '		<PARAM NAME="Play" VALUE="-1"> '
		+ '		<PARAM NAME="Loop" VALUE="-1"> '
		+ '		<PARAM NAME="Quality" VALUE="High"> '
		+ '		<PARAM NAME="SAlign" VALUE=""> '
		+ '		<PARAM NAME="Menu" VALUE="-1"> '
		+ '		<PARAM NAME="Base" VALUE=""> '
		+ '		<PARAM NAME="AllowScriptAccess" VALUE="Always"> '
		+ '		<PARAM NAME="Scale" VALUE="ShowAll"> '
		+ '		<PARAM NAME="DeviceFont" VALUE="0"> '
		+ '		<PARAM NAME="EmbedMovie" VALUE="0"> '
		+ '		<PARAM NAME="SWRemote" VALUE=""> '
		+ '		<PARAM NAME="MovieData" VALUE=""> '
		+ '		<PARAM NAME="SeamlessTabbing" VALUE="1"> '
		+ '		<PARAM NAME="Profile" VALUE="0"> '
		+ '		<PARAM NAME="ProfileAddress" VALUE=""> '
		+ '		<PARAM NAME="ProfilePort" VALUE="0"> '
		+ '		<PARAM NAME="wmode" VALUE="transparent"> '
		+ '		<embed  '
		+ '	src="' + file + '" quality="high" width="' + width + '"  '
		+ '	height="' + height + '" name="' + id + '" align="middle"  '
		+ '	allowScriptAccess="always" FlashVars="' + flashvars + '"  '
		+ '	type="application/x-shockwave-flash"  '
		+ '	pluginspage="http://www.macromedia.com/go/getflashplayer" /> '
		+ '		</OBJECT> '
		
		document.write(s)
}

function loadflashBanner(img)
{		
 var s='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="942" height="139">'
  + '  <param name="movie" value="/CMSTemplates/EC/Flash/BannerImport.swf"> '
  + '  <param name="quality" value="high"> '
  + '  <param name="flashVars" value="bannerimage='+img+'"> '
  + '  <embed src="/CMSTemplates/EC/Flash/BannerImport.swf" width="942" height="139" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" flashvars="bannerimage='+img+'"></embed> '
  + '  </object> '
		document.write(s)
}

function ShowFAQ(id, l)
{
    var open=true;
    if (document.getElementById('FAQ' + id).style.display == 'block')
        open=false;
       
    ls = l.split(',');
    for (i=0; i<ls.length-1; i++)
    {
        document.getElementById('FAQ' + ls[i]).style.display = 'none';
        document.getElementById('imgFaq' + ls[i]).src = '/siteimages/faq_plus.gif';
    }
         
    if (open)
    {   
        document.getElementById('FAQ' + id).style.display = 'block';
        document.getElementById('imgFaq' + id).src = '/siteimages/faq_minus.gif';
    }
}

function ShowNews(newsid, nodeid, lnews, lnode)
{  
     
    var wasopen = false
    if (document.getElementById('imgNews' + newsid).src.indexOf('faq_plus.gif') == -1)
        wasopen = true;
    
    lsO = lnode.split(',');
    lsE = lnews.split(',');
    
    for (i=0; i<lsE.length-1; i++)
    {
        if (document.getElementById('imgNews' + lsE[i]).src.indexOf('faq_plus.gif') == -1)
        {
            //Call Summary Info for ls[i] and close it, as it is open
            document.getElementById('imgNews' + lsE[i]).src = '/siteimages/faq_plus.gif';
            sndReq('/XML/GetNews.aspx?Type=summary&NewsID=' + lsE[i] + '&NodeID=' + lsO[i]);      
        }
    }
    
    if (!wasopen)
    {
       document.getElementById('imgNews' + newsid).src == '/siteimages/faq_plus.gif'
       document.getElementById('clNews' + newsid).innerHTML = '<img src="/siteimages/loading.gif">'
       sndReq('/XML/GetNews.aspx?Type=full&NewsID=' + newsid + '&NodeID=' + nodeid); 
       
    }
    
    
}

function ShowArchiveNews(cl, ap)
{
    document.getElementById(cl).innerHTML = '<img src="/siteimages/loading.gif">'
    sndReq('/XML/GetArchiveNews.aspx?Cell=' + cl + '&AP=' + ap); 
}

function ShowHideLeftNav(id)
{
    if (document.getElementById('divLeftNav' + id).style.display == 'block')
    {
        document.getElementById('imgMasterCatImg' + id).src = '/siteimages/leftnav/arrow_down.gif';
        document.getElementById('divLeftNav' + id).style.display = 'none'
    }
    else
    {
        document.getElementById('imgMasterCatImg' + id).src = '/siteimages/leftnav/arrow_up.gif';
        document.getElementById('divLeftNav' + id).style.display = 'block';
    }
}

function ShowAllLeftNav(ids)
{
    arr = ids.split(',');
    for (i=0; i<arr.length-1; i++)
    {
        document.getElementById('imgMasterCatImg' + arr[i]).src = '/siteimages/leftnav/arrow_up.gif';
        document.getElementById('divLeftNav' + arr[i]).style.display = 'block';
    }     
}

function NewsletterSignup(firstname, surname, email)
{
    
    sndReq('/Newsletter/Signup.aspx?f=' + firstname + '&s=' + surname + '&e=' + email);
}

function newsLetterComplete(v)
{
    window.document.hp.SetVariable("newsletter", v);
}

function AddItemToBasket(productID)
{
    InternalBasketAdd(productID, 1);
}

function AddToBasketWithQty(productID)
{   
    InternalBasketAdd(productID, document.getElementById('txtQty' + productID).value);
}

function InternalBasketAdd(productID, qty)
{
    if (!ShopOpen)
        alert(ShopClosedMessage);
    else
    {
        //do the add to basket
    }
}
    
    
function RecommendToFriend(ProductName, URL)
{
     window.open('/recommend.aspx?PName=' + ProductName + '&URL=' + URL, '_blank', 'height=440, width=440, fullscreen=0, status=0, toolbar=0, menubar=0, titlebar=0, scrollbars=0' );
}

function SubmitContactForm(frm)
{
    var Name = document.getElementById(frm + '_txtName').value;
    var Email = document.getElementById(frm + '_txtEmail').value;
    var Comments = document.getElementById(frm + '_txtComments').value;
    
    var NameValid = validateText(Name, 'name', frm + '_clNameValidate');
    var EmailValid = validateEmail(Email, 'email', frm + '_clEmailValidate');
    var CommentsValid = validateText(Comments, 'comment', frm + '_clCommentsValidate');
    
    if (NameValid && EmailValid && CommentsValid)
        sndReq('/XML/SubmitContactForm.aspx?Form=' + frm + '&Name=' + Name + '&Email=' + Email + '&Comments=' + doReplace(Comments, '?', '##'));
}

function SubmitNewsletterForm(frm)
{
    var FirstName = document.getElementById(frm + '_txtFirstName').value;
    var Surname = document.getElementById(frm + '_txtSurname').value;
    var Email = document.getElementById(frm + '_txtNewsletterEmail').value;
    
    var FirstNameValid = validateText(FirstName, 'firstname', frm + '_clFirstNameValidate');
    var SurNameValid = validateText(Surname, 'surname', frm + '_clSurnameValidate');
    var EmailValid = validateEmail(Email, 'email', frm + '_clNewsletterEmailValidate');
    
    if (FirstNameValid && SurNameValid && EmailValid)
        sndReq('/Newsletter/SignUp.aspx?Form=' + frm + '&f=' + FirstName + '&s=' + Surname + '&e=' + Email);
}

function CompletedSignUpForm(txt)
{
    var r = txt.split('|');
    frm = r[0];
    val = r[1];
    
    if (val == 'true')
    {
        document.getElementById(frm + '_msgNewsletterCompleted').style.display = 'block';
        document.getElementById(frm + '_FormNewsletter').style.display = 'none';
    }
    else
        document.getElementById(frm + '_clNewsletterEmailValidate').innerHTML = 'This email address is already signed up.'
    
}

function CompletedContactUsForm(frm)
{
    document.getElementById(frm + '_msgCompleted').style.display = 'block';
    document.getElementById(frm + '_FormContact').style.display = 'none';
}

function validateText(txt, fieldName, validationCell)
{
    if (txt == '')
    {
        document.getElementById(validationCell).innerHTML = 'Please enter a valid ' + fieldName;
        return false;
    }
    document.getElementById(validationCell).innerHTML = '&nbsp;';
    return true;
}

function validateEmail(txt, fieldName, validationCell)
{
    if ((txt.indexOf(".") > 2) && (txt.indexOf("@") > 0))
    {
        document.getElementById(validationCell).innerHTML = '&nbsp;';
        return true;
    }   
    document.getElementById(validationCell).innerHTML = 'Please enter a valid ' + fieldName;
    return false;
}
function showHideDiv(div)
{
	if (document.getElementById(div).style.display=='none')
		document.getElementById(div).style.display='block'
	else
		document.getElementById(div).style.display='none'
}