﻿var AjaxArray = new Array()
var jsImagePath = '/siteimages/'
var Currency = '£';

function ShowLoading()
{
    if (document.getElementById('divLoading'))
        document.getElementById('divLoading').style.visibility = 'visible';
}

function TryHideLoading()
{
    var Pending = false;
    for (var i=0; i<AjaxArray.length; i++)
    {
        if (AjaxArray[i])
            Pending = true;
    }
    if (!Pending)
    {
        if (document.getElementById('divLoading'))
            document.getElementById('divLoading').style.visibility = 'hidden';
    }
}

function RequestItemStore(o, k)
{
    if (!k) k = '';
    this.Object = o;
    this.Key = k;
}

function createRequestObject() 
{
	var ro;
	var browser = navigator.appName;
	if(browser == "Microsoft Internet Explorer")
		ro = new ActiveXObject("Microsoft.XMLHTTP");
	else
		ro = new XMLHttpRequest();
	return ro;
}

    
function SetDateValue(cntrl, val)
{
    var mv = val.substr(0,2);
    var dv = val.substr(3,2);
    var yv = val.substr(6,4);
    var hv = val.substr(11,2);
    var minv = val.substr(14,2);
    
    document.getElementById(cntrl + 'Day').value = dv;
    document.getElementById(cntrl + 'Month').value = mv;
    document.getElementById(cntrl + 'Year').value = yv;
    document.getElementById(cntrl + 'Hour').value = hv;
    document.getElementById(cntrl + 'Min').value = minv;
}

function isDigit (c)
{
   return ((c >= "0") && (c <= "9"))
}
function isNumeric(sText)
{
    var ValidChars = "0123456789.";
    var IsNumber=true;
    var Char;
 
    for (i = 0; i < sText.length && IsNumber == true; i++) 
    { 
        Char = sText.charAt(i); 
        if (ValidChars.indexOf(Char) == -1) 
            IsNumber = false;
    }
    return IsNumber;
}

function isInteger (s)
{
   var i;

   if (isEmpty(s))
   if (isInteger.arguments.length == 1) return 0;
   else return (isInteger.arguments[1] == true);

   for (i = 0; i < s.length; i++)
   {
      var c = s.charAt(i);
      if (!isDigit(c)) return false;
   }

   return true;
}
function isEmpty(s)
{
   return ((s == null) || (s.length == 0))
}

function handleResponse() 
{
    var cnt = arguments[0];
    if ((AjaxArray[cnt]) && (AjaxArray[cnt].Object) && (AjaxArray[cnt].Key != 'dead'))
    {
        var http = AjaxArray[cnt].Object;
        if(http.readyState == 4){
	        var response = http.responseText;
	        //alert(response);
	        var oldkey = AjaxArray[cnt].Key;
		    AjaxArray[cnt].Key = 'dead';
	        CleanAjaxArray();
    	    //if (!HandleAjaxResponse(response))
		    //{
		        if (oldkey == 'CMSLoadPendingCustomers')
		        {
		            LoadPendingCustomers(response);
		        }
		        else if (oldkey == 'CMSLoadCustomers')
		        {
		            LoadCustomers(response);
		        }
		        else if (oldkey == 'PasswordReminder')
		        {
		            PasswordReminderResponse(response);
		        }
		        else if (oldkey == 'CheckEmail')
		        {
		            checkEmailReturned(response);
		        }
		        else if (oldkey == 'DownloadSort')
		        {
		            loadDownloads(response);
		        }
		        else if (oldkey == 'SumbitForm')
		        {
		            HandleSubmitForm(response);
		        }
		        else if (oldkey == 'CustomerAddresses')
		        {
		            LoadCustomerAddresses(response);
		        }
		        else if (oldkey == 'CheckEmail')
		        {
		            checkEmailReturned(response)
		        }
		        else if (response.substr(0, 11) == 'WidgetData:')
		        {
		            LoadWidgetData(response.substr(11));
		        } 
    else if (response.substr(0, 16) == 'BasketItemAdded:')
	    BasketItemAdded(response.substring(16)); 
    else if (response.substr(0, 15) == 'BasketContents:')
        LoadBasket(response.substring(15)); 
    else if (response.substr(0, 18) == 'BasketItemRemoved:')
        BasketItemRemoved(response.substring(18));
    else if (response.substr(0, 21) == 'BasketItemQtyUpdated:')
        BasketItemChanged(response.substring(21));
    else if (response.substr(0, 28) == 'BasketDeliveryMethodUpdated:')
        UpdateBasketTotals(response.substring(28));
    else if (response.substr(0, 20) == 'BasketCountriesList:')
        LoadBasketCountriesList(response.substring(20));
    else if (response.substr(0, 21) == 'BasketCountryUpdated:')
        LoadBasketCountry(response.substring(21));
    else if (response.substr(0, 11) == 'DHTMLAlert:')
        DisplayDHTMLAlert(response.substring(11));
    else if (response.substr(0, 13) == 'DHTMLConfirm:')
        DisplayDHTMLConfirm(response.substring(13));
    else if (response.substr(0, 19) == 'LoginRegisterCheck:')
        HandleLoginAndRegisterResponse(response.substring(19));
    else if (response.substr(0, 13) == 'OrderDetails:')
        LoadOrderDetails(response.substr(13))
    else if (response.substr(0, 17) == 'PasswordReminder:')
        PasswordReminderSubmitted(response.substr(17))
		        else if (response != '')
		            document.write(response);
		    //}
	    }
	    TryHideLoading();
	}
}

function RemoveExistingAjaxRequestWithSameKey(key)
{
    if (key != '')
    {
        for (i in AjaxArray)
        {
            if ((AjaxArray[i]) && (AjaxArray[i].Key == key))
                AjaxArray[i].Key = 'dead';
        }
		CleanAjaxArray();
    }
}

function CleanAjaxArray()
{
    for (i in AjaxArray)
    {
        if ((AjaxArray[i] != null) && (AjaxArray[i].Key == 'dead'))
            AjaxArray[i] = null;
    }
}

function sndReq(action, key) 
{	
    ShowLoading();
    
    if (!key) key = '';
    
    //alert(action);
    
    RemoveExistingAjaxRequestWithSameKey(key);
    
    var cnt = AjaxArray.length;
	var http = createRequestObject();
	AjaxArray[cnt] = new RequestItemStore(http, key);
	
	var sp = action.split('?');
	var url = sp[0];
	var parameters = '';
	for (i=1; i<sp.length; i++)
	    parameters += sp[i];
	   
	http.onreadystatechange = function() { handleResponse(cnt); };
	http.open('POST', url, true);
	http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    http.setRequestHeader("Content-length", parameters.length);
    http.setRequestHeader("Connection", "close");
    http.send(parameters);
}

function AddWrapperDiv(el, wrapperID)
{
    if (el)
    {
        var wrapper = document.createElement('div'); 
        wrapper.appendChild(el.cloneNode(true)); 
        el.parentNode.replaceChild(wrapper, el);
        wrapper.setAttribute('id', wrapperID); 
        return wrapper;
    }
}

function getElementPosition(elemID)
{
    var offsetTrail = document.getElementById(elemID);
    var offsetLeft = 0;
    var offsetTop = 0;
    while (offsetTrail){
        offsetLeft += offsetTrail.offsetLeft;
        offsetTop += offsetTrail.offsetTop;
        offsetTrail = offsetTrail.offsetParent;
    }
    if (navigator.userAgent.indexOf('Mac') != -1 && typeof document.body.leftMargin != 'undefined'){
        offsetLeft += document.body.leftMargin;
        offsetTop += document.body.topMargin;
    }
    return {left:offsetLeft,top:offsetTop};
}

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 SetImagePath(cntrl, src)
{
    document.getElementById(cntrl).src = src;
}


function ImageLoadingError(i, Size, ID)
{
    i.src = jsImagePath + 'Browser/noimage_' + Size + '.gif';
    if (document.getElementById('divEnlargeImage' + ID)) document.getElementById('divEnlargeImage' + ID).style.display = 'none';
}

function GetImageDisplay(Image, URL, ProductName, Size, Alt, ID, showhover) {
    var hov = '';
    if (showhover)
        hov = ' onmouseover="ShowImageOver(event, \'' + Image + '\')" onmousemove="MoveImageOver(event, 15, 15);" onmouseout="HideImageOver()"';

    if (!ID) ID = '';
    if (URL != '')
    {
        if (Image != '')
            Image = '<a href="' + URL + '"><img src="/getfile/' + Image + '/ProductImage.aspx?maxsidesize=' + Size + '"  class="ProductImage" alt="' + Alt + '" onerror="ImageLoadingError(this, ' + Size + ', \'' + ID + '\');" ' + hov + ' ></a>';
        else
            Image = '<a href="' + URL + '"><img src="' + jsImagePath + 'Browser/noimage_' + Size + '.gif" border="0" alt="' + Alt + '" onerror="ImageLoadingError(this, ' + Size + ', \'' + ID + '\');" ></a>'
    }
    else
    {
        if (Image != '')
            Image = '<img src="/getfile/' + Image + '/ProductImage.aspx?maxsidesize=' + Size + '"  class="ProductImage" alt="' + Alt + '" onerror="ImageLoadingError(this, ' + Size + ', \'' + ID + '\');"  >'
        else
            Image = '<img src="' + jsImagePath + 'Browser/noimage_' + Size + '.gif" border="0" alt="' + Alt + '" onerror="ImageLoadingError(this, ' + Size + ', \'' + ID + '\');"  >'
    }
    return Image;
}

function ReplaceTag(str, origtext, newtext)
{
    if (origtext != newtext)
        str = doReplace(str, origtext, newtext);
    return str;
}

function doReplace(str, origtext, newtext)
{
    if (!newtext) newtext = '';
    if (str)
    {
        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 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 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)
{
    document.write(getloadflashtext(id, file, width, height, flashvars));
}

function getloadflashtext(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="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" wmode="transparent" '
		+ '	pluginspage="http://www.macromedia.com/go/getflashplayer" /> '
		+ '		</OBJECT> ';
		return s;
}

function SetVal(src, dest, cntrl)
{
    document.getElementById(dest + cntrl).value = document.getElementById(src + cntrl).value;
}

function validateText(txtbox, fieldName, validationCell, IsWizard)
{
    if (document.getElementById(txtbox).value == '')
    {
        document.getElementById(validationCell).innerHTML = 'Please enter a valid ' + fieldName;
        if (IsWizard) document.getElementById(txtbox).className = 'TextFormEntryInvalid';
        return false;
    }
    document.getElementById(validationCell).innerHTML = '&nbsp;';
    if (IsWizard) document.getElementById(txtbox).className = 'TextFormEntry';
    return true;
}

function checkTextBoxIsValid(txtbox, fieldName, validationCell, IsWizard)
{
    var val = validateText(txtbox, fieldName, validationCell, IsWizard);
    if (IsPageValid)
        IsPageValid = val;
}

function checkDropDownIsValid(dd, fieldName, validationCell)
{
    if (document.getElementById(dd).value == '-1')
    {
        document.getElementById(validationCell).innerHTML = 'Please enter a valid ' + fieldName;
        document.getElementById(dd).className = 'TextFormEntryInvalid';
        IsPageValid = false;
    }
    else
    {
        document.getElementById(validationCell).innerHTML = '&nbsp;';
        document.getElementById(dd).className = 'TextFormEntry';
    }
}

function checkTitleFormEntry(drp, txt, cl)
{
    d = document.getElementById(drp);
    t = document.getElementById(txt);
    c = document.getElementById(cl);
    //d.className = 'TextFormEntry';
    //t.className = 'TextFormEntry';
    c.innerHTML = '&nbsp;';   
    if (d.value == '-1')
    {
        c.innerHTML = 'Please select a title';
        //d.className = 'TextFormEntryInvalid';
        IsPageValid = false;
    }
    
    if ((d.value == 'Other') && (t.value == ''))
    {
        c.innerHTML = 'Please select a title';
        //t.className = 'TextFormEntryInvalid';
        IsPageValid = false;   
    }
}

function validateMoney(monid, fieldName, validationCell, IsWizard)
{
    return validateNumber(monid + '_txtValue', fieldName, validationCell, IsWizard);
}

function getMoneyControlValue(monid)
{
    var val = document.getElementById(monid + '_txtValue').value*1;
    var mul = document.getElementById(monid + '_drpValue').value*1;
    var res = val*mul;
    return res;
}
function validateEmailForm(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 checkDateSelected(Day, Month, Year, allowAllBlank, validationCell)
{
    var drpD = document.getElementById(Day);
    var drpM = document.getElementById(Month);
    var drpY = document.getElementById(Year);
    document.getElementById(validationCell).innerHTML = '&nbsp;'
    
    var isAllBlank = true;
    if ((drpD.value != '-') || (drpM.value != '-') || (drpY.value != '-'))
        isAllBlank = false;
    
    if (isAllBlank && allowAllBlank)
       return;
    else
    {
        if ((drpD.value == '-') || (drpM.value == '-') || (drpY.value == '-'))
        {
            document.getElementById(validationCell).innerHTML = 'Please select a complete date';
            IsPageValid = false;
        }
    } 
}

function drpDayDateValidate(Day, Month, Year, validationCell)
{
    document.getElementById(validationCell).innerHTML = '&nbsp;'
    var drpD = document.getElementById(Day);
    var drpM = document.getElementById(Month);
    var drpY = document.getElementById(Year);
    
    if (drpM.value != '-')
    {
        var max = GetMonthMaxDay(drpM.value, drpY.value);
        if (drpD.value > max)
            drpD.value = max;
    }
}

function GetMonthMaxDay(month, year)
{
    var max = 31;
    if ((month == 4) || (month == 6) || (month == 9) || (month == 11))
        max = 30;
    
    if (month == 2)
    {
        if (year == '-')
            max = 28;
        else
        {
            if (year%4 == 0)
                max = 29;
            else
                max = 28;
        }
    }
    
    return max;
}


function isInteger (s)
{
   var i;

   if (isEmpty(s))
   if (isInteger.arguments.length == 1) return 0;
   else return (isInteger.arguments[1] == true);

   for (i = 0; i < s.length; i++)
   {
      var c = s.charAt(i);
      if (!isDigit(c)) return false;
   }

   return true;
}
function isEmpty(s)
{
   return ((s == null) || (s.length == 0))
}

function isDigit (c)
{
   return ((c >= "0") && (c <= "9"))
}
function TextBoxValueUpDown(id, dir)
{
    var txt = document.getElementById(id);
    var val = txt.value;
    if ((!isInteger(val)) || ((val * 1) + (dir * 1) < 1))
        txt.value = '1';
    else
        txt.value = (val * 1) + (dir * 1);
}

function getInnerText (node) 
{
	if (typeof node.textContent != 'undefined') {
		return node.textContent;
	}
	else if (typeof node.innerText != 'undefined') {
		return node.innerText;
	}
	else if (typeof node.text != 'undefined') {
		return node.text;
	}
	else {
		switch (node.nodeType) {
			case 3:
			case 4:
				return node.nodeValue;
				break;
			case 1:
			case 11:
				var innerText = '';
				for (var i = 0; i < node.childNodes.length; i++) {
					innerText += getInnerText(node.childNodes[i]);
				}
				return innerText;
				break;
			default:
			return '';
		}
	}
}

function EndsWith(string, search)
{
    return ( string.substr(string.length-search.length, search.length) == search)
}


function StartsWith(string, search)
{
    return ( string.substr(0, search.length) == search)
}

function RemoveFromEnd(string, remove)
{
    if (EndsWith(string, remove))
        string = string.substr(0, string.length-remove.length);
    
    return string;
}

function GetQueryString(qs)
{
    var U = document.URL ;
    var sp = U.split(qs + '=');
    if (sp.length<2)
        return "";
        
    sp = sp[1].split('&')
    return sp[0];
}

function queryString(ji) 
{
    hu = window.location.search.substring(1);
    gy = hu.split("&");
    for (i=0;i<gy.length;i++) 
    {
        ft = gy[i].split("=");
            if (ft[0] == ji) return ft[1];
    }
    return "";
}

var DownloadSortColumn = 'DownloadName';
var DownloadSortDirection = 1;

function ChangeDownloadSort(srtcol)
{
    if (DownloadSortColumn == srtcol)
        DownloadSortDirection = -DownloadSortDirection;
    else
        DownloadSortDirection = 1;
    DownloadSortColumn = srtcol;
    
    var cols = ['DownloadName','Version','DocumentCreatedWhen'];
    
    for (var i=0; i<cols.length; i++)
    {
        var im = document.getElementById('imgsrt' + cols[i]);
        if (cols[i] == DownloadSortColumn)
        {
            if (DownloadSortDirection > 0)
                im.src = '/siteimages/downarrow.gif';
            else
                im.src = '/siteimages/uparrow.gif';
            im.style.display = 'inline';
        }
        else
            im.style.display = 'none';
    }
    
    sndReq('/xml/getDownloads.aspx?SortColumn=' + DownloadSortColumn + '&SortDirection=' + DownloadSortDirection, 'DownloadSort');
}

function loadDownloads(doc)
{
    var x = GetXMLObject(doc).childNodes[0];
    var tbl = document.getElementById('tblDownloads');
    while (tbl.rows.length > 1)
        tbl.deleteRow(1);
        
    for (var i=0; i< x.childNodes.length; i++)
    {
        var n = getInnerText(x.childNodes[i].childNodes[0]);
        var d = getInnerText(x.childNodes[i].childNodes[1]);
        var v = getInnerText(x.childNodes[i].childNodes[2]);
        var r = getInnerText(x.childNodes[i].childNodes[3]);
        var f = getInnerText(x.childNodes[i].childNodes[4]);
        var rw = tbl.insertRow(tbl.rows.length);
        
        var cl = rw.insertCell(0);
        cl.className = 'TableCell';
        cl.style.paddingLeft = '10px';
        var c = '<table cellpadding="0" cellspacing="0">';
        c += '<tr>';
        c += '<td style="padding-bottom:10px"><a href="/getattachment/' + f + '/' + n + '.aspx" target="_blank">' + n + '</a></td>';
        c += '</tr>';
        c += '<tr>';
        c += '<td>' + d + '</td>';
        c += '</tr>';
        c += '</table>';
        cl.innerHTML = c;
        cl = rw.insertCell(1);
        cl.className = 'TableCell';
        cl.style.textAlign = 'center';
        cl.innerHTML = v;
        cl = rw.insertCell(2);
        cl.className = 'TableCell';
        cl.style.textAlign = 'center';
        cl.innerHTML = r;
        
        
    }
}
        
        function drpWhatContactFormChanged(cid)
        {
            var drp = document.getElementById('drpWhat' + cid);
            var div = document.getElementById('divOtherReferrer' + cid);
            if (drp.value.substr(0,1) == '+')
                div.style.display = 'block';
            else
            {
                div.style.display = 'none';
                document.getElementById('txtOther' + cid).value = '';
            }
        }
        
        function SubmitEmailForm(cid, title)
        {
            ClearValidationFields();
            AddValidationField('text', 'txtFirstName' + cid, '', 'Please enter a First Name');
            AddValidationField('email', 'txtEmail' + cid, '', 'Please enter a valid Email Address');
            AddValidationField('dropdown', 'drpWhat' + cid, '', 'Please let us know where you heard about us');
            
            var drpW = document.getElementById('drpWhat' + cid);
            if (drpW.value.substr(0,1) == '+')
                   AddValidationField('text', 'txtOther' + cid, '', 'Please let us know where you heard about us');
            
            if (doValidation())
            {
                document.getElementById('divContactFormConfirm' + cid).innerHTML = 'Please wait...';
                document.getElementById('divContactFormConfirm' + cid).style.display = 'block';
            
                var f = document.getElementById('txtFirstName' + cid).value;
                var s = document.getElementById('txtSurname' + cid).value;
                var e = document.getElementById('txtEmail' + cid).value;
                var t = document.getElementById('txtTel' + cid).value;
                var c = document.getElementById('txtComments' + cid).value;
                var r = drpW.value;
                var o = document.getElementById('txtOther' + cid).value;
            
                f = doReplace(doReplace(f, '&', '##amp##'), '?', '##qm##');
                s = doReplace(doReplace(s, '&', '##amp##'), '?', '##qm##');
                e = doReplace(doReplace(e, '&', '##amp##'), '?', '##qm##');
                t = doReplace(doReplace(t, '&', '##amp##'), '?', '##qm##');
                c = doReplace(doReplace(c, '&', '##amp##'), '?', '##qm##');
                r = doReplace(doReplace(r, '&', '##amp##'), '?', '##qm##');
                o = doReplace(doReplace(o, '&', '##amp##'), '?', '##qm##');
                title = doReplace(doReplace(title, '&', '##amp##'), '?', '##qm##');
            
                document.getElementById('divContactForm' + cid).style.display = 'none';
                var url = '/XML/EmailForm.aspx?cid=' + cid +
                                             '&title=' + title +
                                             '&f=' + f +
                                             '&s=' + s +
                                             '&e=' + e +
                                             '&t=' + t +
                                             '&c=' + c +
                                             '&r=' + r +
                                             '&other=' + o +
                                             '&ref=' + GetJSReferringURL();
                sndReq(url, 'SumbitForm');
            }
        }
        
        function GetJSReferringURL()
        {
            var url = document.location + '';
            url = doReplace(url, 'http://', '');
            url = url.substr(url.indexOf('/'));
            return url;
        }
        
        function SubmitQuoteForm(cid, title)
        {        
            ClearValidationFields();
            AddValidationField('text', 'txtFirstName' + cid, '', 'Please enter a First Name');
            AddValidationField('email', 'txtEmail' + cid, '', 'Please enter a valid Email Address');
            AddValidationField('text', 'txtLocation' + cid, '', 'Please enter a site location');
            AddValidationField('dropdown', 'drpArea' + cid, '', 'Please select an area of Knotweed');
            AddValidationField('dropdown', 'drpWhat' + cid, '', 'Please let us know where you heard about us');

            
            var drpW = document.getElementById('drpWhat' + cid);
            if (drpW.value.substr(0,1) == '+')
                   AddValidationField('text', 'txtOther' + cid, '', 'Please let us know where you heard about us');
            
            if (doValidation())
            {
                document.getElementById('divContactFormConfirm' + cid).innerHTML = 'Please wait...';
                document.getElementById('divContactFormConfirm' + cid).style.display = 'block';
            
                var f = document.getElementById('txtFirstName' + cid).value;
                var s = document.getElementById('txtSurname' + cid).value;
                var comp = document.getElementById('txtCompany' + cid).value;
                var e = document.getElementById('txtEmail' + cid).value;
                var t = document.getElementById('txtTel' + cid).value;
                var m = document.getElementById('txtMobile' + cid).value;
                var l = document.getElementById('txtLocation' + cid).value;
                var area = document.getElementById('drpArea' + cid).value;
                var cont = document.getElementById('drpContact' + cid).value;
                var c = document.getElementById('txtComments' + cid).value;
                var r = drpW.value;
                var o = document.getElementById('txtOther' + cid).value;
                title = doReplace(doReplace(title, '&', '##amp##'), '?', '##qm##');
            
                f = doReplace(doReplace(f, '&', '##amp##'), '?', '##qm##');
                s = doReplace(doReplace(s, '&', '##amp##'), '?', '##qm##');
                comp = doReplace(doReplace(comp, '&', '##amp##'), '?', '##qm##');
                e = doReplace(doReplace(e, '&', '##amp##'), '?', '##qm##');
                t = doReplace(doReplace(t, '&', '##amp##'), '?', '##qm##');
                m = doReplace(doReplace(m, '&', '##amp##'), '?', '##qm##');
                l = doReplace(doReplace(l, '&', '##amp##'), '?', '##qm##');
                area = doReplace(doReplace(area, '&', '##amp##'), '?', '##qm##');
                cont = doReplace(doReplace(cont, '&', '##amp##'), '?', '##qm##');
                c = doReplace(doReplace(c, '&', '##amp##'), '?', '##qm##');
                r = doReplace(doReplace(r, '&', '##amp##'), '?', '##qm##');
                o = doReplace(doReplace(o, '&', '##amp##'), '?', '##qm##');
            
                document.getElementById('divContactForm' + cid).style.display = 'none';
                var url = '/XML/QuoteForm.aspx?cid=' + cid +
                                             '&title=' + title +
                                             '&f=' + f +
                                             '&s=' + s +
                                             '&comp=' + comp +
                                             '&e=' + e +
                                             '&t=' + t +
                                             '&m=' + m +
                                             '&l=' + l +
                                             '&area=' + area +
                                             '&cont=' + cont +
                                             '&c=' + c +
                                             '&r=' + r +
                                             '&o=' + o +
                                             '&ref=' + GetJSReferringURL();
                sndReq(url, 'SumbitForm');
            }
        }
        
        function HandleSubmitForm(resp)
        {
            var x = GetXMLObject(resp).childNodes[0];
            var cid = x.getAttribute('cid');
            var redir = x.getAttribute('redir');
            var FormName = getInnerText(x.childNodes[0]);
           
            if (redir != '')
            {
                document.location = redir + '?Ref=' + FormName;   
            }
            else
            {
               try
                {
                    _gaq.push(['_trackEvent', 'ContactForm', FormName]);
                }
                catch (ex)
                {
                    alert('Google analytics not found - Sumbission not logged');
                }
                var h = getInnerText(x.childNodes[1]);
            
                document.getElementById('divContactFormConfirm' + cid).innerHTML = h;
                document.getElementById('divContactFormConfirm' + cid).style.display = 'block';
            }
        }
        
        function ShowToolTip(e, c)
        {
            MoveImageOver(e, 10, 10);
            document.getElementById('clImageOver').innerHTML = '<span style="color:#ffffff;">' + c + '</span>';
            document.getElementById('divImageOver').style.visibility = 'visible';
        }

        function ShowImageOverWithText(e, img, txt) 
        {
            document.getElementById('clImageOver').innerHTML = '<img style="border: solid 5px #ffffff" src="/getfile/' + img + '/Product.aspx?MaxSideSize=250" /><div style="color:#ffffff; padding: 5px 0 0 0">' + txt + '</div>';
            MoveImageOver(e, 10, 10);
            document.getElementById('divImageOver').style.visibility = 'visible';
        }

        function ShowImageOver(e, img, isSwatch, oid, vid) {
            var osx = null, osy = null;
            if ((isSwatch) || ((document.getElementById('chkShowHoverImages')) && (document.getElementById('chkShowHoverImages').checked)) || (!document.getElementById('chkShowHoverImages')))
            {
                if (isSwatch)
                {
                    var i=0;
                    while (SwatchList[i].Name != 'OptionSwatch_' + oid + '_' + vid)
                        i++;
                        
                    osx = 15;
                    osy = 15;
                    var h = '<table cellpadding="0" cellspacing="0"><tr><td style="color:#ffffff; padding-bottom: 5px">' + SwatchList[i].Cost + '</td></tr><tr><td>';
                    h += '<img style="border: solid 5px #ffffff" src="/getfile/' + img + '/Product.aspx?MaxSideSize=250" />';
                    h += '</td></tr><tr><td style="color:#ffffff; padding-top: 5px">' + SwatchList[i].Description + '</td></tr></table>';
                    document.getElementById('clImageOver').innerHTML = h;
                }
                else
                    document.getElementById('clImageOver').innerHTML = '<img style="border: solid 5px #ffffff" src="/getfile/' + img + '/Product.aspx?MaxSideSize=250" />';
                
                MoveImageOver(e, osx, osy);
                document.getElementById('divImageOver').style.visibility = 'visible';
            }
        }
        
        function HideImageOver()
        {
            var div = document.getElementById('divImageOver');
            div.style.visibility = 'hidden';
        }
        
        function MoveImageOver(e, osx, osy)
        {
            if (!osx) osx = 15;
            if (!osy) osy = -125;
            var div = document.getElementById('divImageOver');
            var top = mouseY(e) + osy;
            var left = mouseX(e) + osx;
            var maxPosY = GetWndCliSiz('Height') + GetScrollY() - div.offsetHeight - 1;
            var maxPosX = GetWndCliSiz('Width') + GetScrollX() - div.offsetWidth - 1;
            
            if (top > maxPosY) top = maxPosY;
            if (left > maxPosX) left = maxPosX;
            
            div.style.left = left + 'px';
            div.style.top = top + 'px';
        
        }
        
        function mouseX(evt) 
        {
            if (evt.pageX) 
                return evt.pageX;
            else if (evt.clientX)
                return evt.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
            else return null;
        }

        function mouseY(evt) 
        {
            if (evt.pageY) 
                return evt.pageY;
            else if (evt.clientY)
                return evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
            else return null;
        }
        function GetScrollY()
        {
            db = document.documentElement;
	        return(window.pageYOffset || (db ? (db.scrollTop || 0) : 0));
        }
        function GetScrollX()
        {
            db = document.documentElement;
	        return(window.pageXOffset || (db ? (db.scrollLeft || 0) : 0));
        }

        function GetWndCliSiz(s)
        {
	        var db, y = window["inner" + s], sC = "client" + s, sN = "number";
	        if(typeof y == sN)
	        {
		        var y2;
		        return(
			        // Gecko or Opera with scrollbar
			        // ... quirks mode
			        ((db = document.body) && typeof(y2 = db[sC]) == sN && y2 &&  y2 <= y) ? y2 
			        // ... strict mode
			        : ((db = document.documentElement) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
			        // No scrollbar, or clientarea size == 0, or other browser (KHTML etc.)
			        : y
		        );
	        }
	        // IE
	        return(
		        // document.documentElement.client+s functional, returns > 0
		        ((db = document.documentElement) && (y = db[sC])) ? y
		        // ... not functional, in which case document.body.client+s 
		        // is the clientarea size, fortunately
		        : document.body[sC]
	        );
        }
        
        function ImageError(obj, size)
        {
            obj.src = '/siteimages/NoProductImage.jpg';
            obj.style.width = size + 'px';
            obj.onmouseover = function () {};
            obj.onmousemove = function () {};
            obj.onmouseout = function () {};
            obj.onclick = function () {};
        }
        
        function SendFeedback()
{
    if (document.getElementById('txtFeedbackComments').value == '')
    {
        alertDHTML('ContactUsMessageSendingErrorNoComment');
    }
    else
    {
        sndReq('/XML/SendFeedback.aspx?Comments=' + document.getElementById('txtFeedbackComments').value + '&SendCopy=' + document.getElementById('chkSendCopy').checked);
        document.getElementById('txtFeedbackComments').value = '';
    }

}



function PasswordReminder() {
    //window.open('/Account/PasswordReminder.aspx');
    document.getElementById('divPasswordReminderMessage').innerHTML = '';
    document.getElementById('divPasswordReminderSendButton').style.display = 'block';
    document.getElementById('divPasswordReminderCloseButton').style.display = 'none';
    document.getElementById('divPasswordReminderForm').style.display = 'block';
    document.getElementById('divPasswordReminderComplete').style.display = 'none';
    initMask();
    StartMask('divPasswordReminder')
}

function SendReminder() {
    sndReq('/XML/SendPasswordReminder.aspx?Email=' + document.getElementById('txtPasswordReminderEmail').value);
}

function PasswordReminderSubmitted(doc) {
    var sp = doc.split('|||');
    if (sp[0] == 'true') {
        document.getElementById('txtPasswordReminderEmail').value = '';
        document.getElementById('divPasswordReminderSendButton').style.display = 'none';
        document.getElementById('divPasswordReminderCloseButton').style.display = 'block';
        document.getElementById('divPasswordReminderForm').style.display = 'none';
        document.getElementById('divPasswordReminderComplete').style.display = 'block';
        document.getElementById('divPasswordReminderComplete').innerHTML = sp[1];
    }
    else {
        document.getElementById('divPasswordReminderMessage').innerHTML = sp[1];
    }
}

function RecommendToFriend(ProductName, URL) {
    document.getElementById('clTAFTitle').innerHTML = 'Tell&nbsp;a&nbsp;friend:&nbsp;' + ProductName;
    document.getElementById('txtTAFSubject').value = ProductName;
    TAFProductName = ProductName;
    TAFURL = URL;
    initMask();
    StartMask('divTellAFriend');
}

function SubmitTAF() {
    IsPageValid = true;
    checkTextBoxIsValid('txtTAFYourName', 'name', 'clValYourName');
    checkEmailAddressIsValidGeneric('txtTAFYourEmail', 'Email address', 'clValYourEmail');

    checkTextBoxIsValid('txtTAFFriendName', 'name', 'clValFriendName');
    checkEmailAddressIsValidGeneric('txtTAFFriendEmail', 'Email address', 'clValFriendEmail');

    checkTextBoxIsValid('txtTAFSubject', 'subject', 'clValTAFSubject');
    checkTextBoxIsValid('txtTAFComments', 'comment', 'clValTAFComments');

    if (IsPageValid) {
        CancelTAF();
        sndReq('/XML/SendRecommendation.aspx?YourName=' + document.getElementById('txtTAFYourName').value +
        '&YourEmail=' + document.getElementById('txtTAFYourEmail').value +
        '&FriendName=' + document.getElementById('txtTAFFriendName').value +
        '&FriendEmail=' + document.getElementById('txtTAFFriendEmail').value +
        '&Subject=' + document.getElementById('txtTAFSubject').value +
        '&Comments=' + doReplace(document.getElementById('txtTAFComments').value, '&', '[ampis]') +
        '&URL=' + TAFURL +
        '&ProductName=' + TAFProductName);

        document.getElementById('txtTAFFriendName').value = '';
        document.getElementById('txtTAFFriendEmail').value = '';
        document.getElementById('txtTAFSubject').value = '';
        document.getElementById('txtTAFComments').value = '';
    }
}

function SendFeedback() {
    if (document.getElementById('txtFeedbackComments').value == '') {
        alertDHTML('ContactUsMessageSendingErrorNoComment');
    }
    else {
        sndReq('/XML/SendFeedback.aspx?Comments=' + document.getElementById('txtFeedbackComments').value + '&SendCopy=' + document.getElementById('chkSendCopy').checked);
        document.getElementById('txtFeedbackComments').value = '';
    }

}
