//
// common.js
//

// Author: Colin Jaggs
// Date: 6th October 2004
// Description: Common JS functions use throughout the site

// common variables
var popUpWin = false;
var xOffset = 10, yOffset = 10;
var floatingLayers = new Array();

// ensure site is not loaded inside a frame
if (top.location.href != location.href && location.href.indexOf("/admin-") < 0) top.location.href = location.href;

// close any existing popup windows
function closePopups()
{
	if (popUpWin) popUpWin.close();
}

function popUpPage(url)
{
	if (popUpWin.open) popUpWin.close();
	
	popUpWin = window.open(url, "popupwin", "width=650,height=500,scrollbars=1,toolbar=1")
}

// cross browser function to find an element by id
function objectById(id)
{ 
	if (document.getElementById) return document.getElementById(id); 
	else if (document.all) return document.all[id]; 
	else if (document.layers) return document.layers[id]; 
} 

// textbox focus and blur events (change active css)
function focusTxt(obj) { obj.className = obj.className + " Selected"; }
function blurTxt(obj) { obj.className = obj.className.replace(" Selected", ""); }

// inline cv2 help on card payment form
function showCV2Help()
{
	if (objectById('cv2Help').style.display == "none") objectById('cv2Help').style.display = "";
	else objectById('cv2Help').style.display = "none";
}

// change manufacturer selection in product search
function changeManufacturer(sender)
{
	// determine url without the current attribute filter, and append the new value if one is selected
	eval("var url = attrFilterBaseUrl.replace(/&Manufacturer=[0-9]+/, \"\")");
	if (sender.selectedIndex > 0) url += "&Manufacturer=" + sender.options[sender.selectedIndex].value;
	location.href = url;
}

// change attribute selection in product search
function changeAttributeFilter(sender, keyName)
{
	// determine url without the current attribute filter, and append the new value if one is selected
	eval("var url = baseUrl.replace(/&P." + keyName + "=[0-9]+/, \"\")");
	if (sender.selectedIndex > 0) url += "&P." + keyName + "=" + sender.options[sender.selectedIndex].value;
	location.href = url;
}

// change the number of results per page on product search
function changeRPP(sender, defaultRPP)
{
	// determine url without the RPP selection
	eval("var url = attrFilterBaseUrl.replace(/&RPP=[0-9]+/, \"\")");
	//if (sender.options[sender.selectedIndex].value != defaultRPP) url += "&RPP=" + sender.selectedIndex;
	url += "&RPP=" + sender.selectedIndex;
	if (typeof(updSrch) != "undefined") updSrch(url); else location.href = url;
}

// change the sort order on product search
function changeSortBy(sender, defaultSort)
{
	// determine url without the sort by selection
	eval("var url = attrFilterBaseUrl.replace(/&Sort=[0-9]+/, \"\")");
	if (sender.options[sender.selectedIndex].value != defaultSort) url += "&Sort=" + sender.selectedIndex;
	if (typeof(updSrch) != "undefined") updSrch(url); else location.href = url;
}

// custom validation function to manually call page validation without actually submitting a form
function validateGroup(group)
{
	Page_IsValid = false;
	if (typeof(WebForm_DoPostBackWithOptions) == "function")
	{
		WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("", "", true, group, "", false, false));
		return Page_IsValid;
	}
	else return true;
}

// toggle visibility of floating layer
function toggleFloatLayer(e, layer, state, offsetX, offsetY)
{
	offsetX = offsetX || 10;
	offsetY = offsetY || 10;

	if (objectById(layer))
	{
		if (state == 1)
		{
			// set x and y offsets
			xOffset = offsetX;
			yOffset = offsetY;

			// show the floating layer
			objectById(layer).style.display = "inline";
		}
		else objectById(layer).style.display = "none";
	}
}

function fixIEAlpha(img)
{
    var arVersion = navigator.appVersion.split("MSIE");
    var version = parseFloat(arVersion[1]);

    if ((version >= 5.5) && (version < 7.0) && (document.body.filters))
    {
        if (img.altsrc)
        {
            var tempImg = new Image(); tempImg.src = img.altsrc;        // preload image just in case
            img.src = img.altsrc;
        }
        else
        {
            var tempImg = new Image(); tempImg.src = img.src;        // preload image just in case
            img.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + img.src + "')";
            img.src = FolderRoot + "Images/Blank.gif";
        }
    }
}

function qsEnt(e)
{
	var keyCode;
	if (window.event) keyCode = window.event.keyCode;
	else if (e) keyCode = e.which;

	if (keyCode == 13)
	{
		qsGo();
		return false;
	}
	else return true;
}

function qsGo()
{
	var url = HTTPHost + "/product-list";
	if ((document.forms[0].txtSearch.value != "") && (document.forms[0].txtSearch.value != "Enter your search keywords here")) url += "?Text=" + document.forms[0].txtSearch.value.replace(/[\<\%\&\@\#\=\+\>]*/g, "").replace(/\s+/g, " ").replace(/^\s+/, "").replace(/\s+$/, "");
	location.href = url;
}


/*
 * jQuery Autocomplete plugin 1.1
 *
 * Copyright (c) 2009 Jörn Zaefferer
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 *
 * Revision: $Id: jquery.autocomplete.js 15 2009-08-22 10:30:27Z joern.zaefferer $
 * Extended by Colin Jaggs 2010 to include result summary below list
 */

eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}(';(5($){$.1e.24({1q:5(2c,3){6 2d=1c 2c=="2l";3=$.24({},$.T.2p,{1i:2d?2c:Z,7:2d?Z:2c,22:2d?$.T.2p.22:10,B:3&&!3.2j?10:4d},3);3.1V=3.1V||5(f){a f};3.1X=3.1X||3.2M;a o.K(5(){2S $.T(o,3)})},w:5(26){a o.1g("w",26)},1A:5(26){a o.1l("1A",[26])},2D:5(){a o.1l("2D")},2N:5(3){a o.1l("2N",[3])},2U:5(){a o.1l("2U")}});$.T=5(h,3){6 H={3d:38,3n:40,3O:46,3Q:9,3V:13,3b:27,3D:4e,3l:33,3k:34,36:8};6 $h=$(h).4c("1q","4b").J(3.30);6 1p;6 1f="";6 1I=$.T.32(3);6 1s=0;6 2h;6 1r={1Q:t};6 l=$.T.3M(3,h,2z,1r);6 1Z;$.2A.3x&&$(h.3I).1g("49.1q",5(){4(1Z){1Z=t;a t}});$h.1g(($.2A.3x?"4a":"4f")+".1q",5(u){1s=1;2h=u.3e;4g(u.3e){11 H.3d:u.1D();4(l.S()){l.3T()}j{19(0,E)}12;11 H.3n:u.1D();4(l.S()){l.3X()}j{19(0,E)}12;11 H.3l:u.1D();4(l.S()){l.3S()}j{19(0,E)}12;11 H.3k:u.1D();4(l.S()){l.3U()}j{19(0,E)}12;11 3.1n&&$.1v(3.U)==","&&H.3D:11 H.3Q:11 H.3V:4(2z()){u.1D();1Z=E;a t}12;11 H.3b:l.P();12;4l:2F(1p);1p=2t(19,3.22);12}}).3F(5(){1s++}).48(5(){1s=0;4(!1r.1Q){2X()}}).3J(5(){4(1s++>1&&!l.S()){19(0,E)}}).1g("1A",5(){6 1e=(1R.e>1)?1R[1]:Z;5 2G(q,7){6 w;4(7&&7.e){1m(6 i=0;i<7.e;i++){4(7[i].w.N()==q.N()){w=7[i];12}}}4(1c 1e=="5")1e(w);j $h.1l("w",w&&[w.7,w.f])}$.K(1a($h.Q()),5(i,f){2I(f,2G,2G)})}).1g("2D",5(){1I.1C()}).1g("2N",5(){$.24(3,1R[1]);4("7"2V 1R[1])1I.1y()}).1g("2U",5(){l.20();$h.20();$(h.3I).20(".1q")});5 2z(){6 F=l.F();4(!F)a t;6 v=F.w;1f=v;4(3.1n){6 C=1a($h.Q());4(C.e>1){6 3K=3.U.e;6 1G=$(h).1o().G;6 2B,1N=0;$.K(C,5(i,1J){1N+=1J.e;4(1G<=1N){2B=i;a t}1N+=3K});C[2B]=v;v=C.2K(3.U)}v+=3.U}$h.Q(v);1K();$h.1l("w",[F.7,F.f]);a E}5 19(4j,3L){4(2h==H.3O){l.P();a}6 R=$h.Q();4(!3L&&R==1f)a;1f=R;R=1H(R);4(R.e>=3.2Q){$h.J(3.2R);4(!3.2g)R=R.N();2I(R,2Z,1K)}j{2b();l.P()}};5 1a(f){4(!f)a[""];4(!3.1n)a[$.1v(f)];a $.4h(f.2w(3.U),5(1J){a $.1v(f).e?$.1v(1J):Z})}5 1H(f){4(!3.1n)a f;6 C=1a(f);4(C.e==1)a C[0];6 1G=$(h).1o().G;4(1G==f.e){C=1a(f)}j{C=1a(f.17(f.39(1G),""))}a C[C.e-1]}5 2i(q,2P){4(3.2i&&(1H($h.Q()).N()==q.N())&&2h!=H.36){$h.Q($h.Q()+2P.39(1H(1f).e));$(h).1o(1f.e,1f.e+2P.e)}};5 2X(){2F(1p);1p=2t(1K,4i)};5 1K(){6 4m=l.S();l.P();2F(1p);2b();4(3.2Y){$h.1A(5(w){4(!w){4(3.1n){6 C=1a($h.Q()).1T(0,-1);$h.Q(C.2K(3.U)+(C.e?3.U:""))}j{$h.Q("");$h.1l("w",Z)}}})}};5 2Z(q,7){4(7&&7.e&&1s){2b();l.42(7,q);2i(q,7[0].f);l.21()}j{1K()}};5 2I(y,1M,3C){4(!3.2g)y=y.N();6 7=1I.3a(y);4(7&&7.e){1M(y,7)}j 4((1c 3.1i=="2l")&&(3.1i.e>0)){6 1E={47:+2S 45()};$.K(3.1E,5(3v,28){1E[3v]=1c 28=="5"?28():28});$.4k({4v:"53",52:"1q"+h.54,3p:3.3p,1i:3.1i,7:$.24({q:1H(y),55:3.B},1E),1M:5(7){6 1k=3.23&&3.23(7)||23(7);1I.1B(y,1k);1M(y,1k)}})}j{l.3B();3C(y)}};5 23(7){6 1k=[];6 2r=7.2w("\\n");1m(6 i=0;i<2r.e;i++){6 D=$.1v(2r[i]);4(D){D=D.2w("|");1k[1k.e]={7:D,f:D[0],w:3.1W&&3.1W(D,D[0])||D[0]}}}a 1k};5 2b(){$h.V(3.2R)}};$.T.2p={30:"56",3N:"51",2R:"50",3G:"4V",3g:["4U [3o] 4W 4X [3y]"],2e:\'3c\',1u:t,2Q:1,22:58,2g:t,1w:E,1P:t,1x:10,B:4Z,2Y:t,1E:{},2s:E,2M:5(D){a D[0]},1X:Z,2i:t,I:0,1n:t,U:", ",1V:5(f,y){a f.17(2S 4Y("(?![^&;]+;)(?!<[^<>]*)("+y.17(/([\\^\\$\\(\\)\\[\\]\\{\\}\\*\\.\\+\\?\\|\\\\])/31,"\\\\$1")+")(?![^<>]*>)(?![^&;]+;)","31"),"<2W>$1</2W>")},2j:E,2k:57};$.T.32=5(3){6 7={};6 e=0;5 1w(s,2m){4(!3.2g)s=s.N();6 i=s.3s(2m);4(3.1P=="1J"){i=s.N().1A("\\\\b"+2m.N())}4(i==-1)a t;a i==0||3.1P};5 1B(q,f){4(e>3.1x){1C()}4(!7[q]){e++}7[q]=f}5 1y(){4(!3.7)a t;6 18={},35=0;4(!3.1i)3.1x=1;18[""]=[];1m(6 i=0,37=3.7.e;i<37;i++){6 15=3.7[i];15=(1c 15=="2l")?[15]:15;6 f=3.1X(15,i+1,3.7.e);4(f===t)2L;6 1O=f.5b(0).N();4(!18[1O])18[1O]=[];6 D={f:f,7:15,w:3.1W&&3.1W(15)||f};18[1O].2C(D);4(35++<3.B){18[""].2C(D)}};$.K(18,5(i,f){3.1x++;1B(i,f)})}2t(1y,25);5 1C(){7={};e=0}a{1C:1C,1B:1B,1y:1y,3a:5(q){4(!3.1x||!e)a Z;4(!3.1i&&3.1P){6 1h=[];1m(6 k 2V 7){4(k.e>0){6 c=7[k];$.K(c,5(i,x){4(1w(x.f,q)){1h.2C(x)}})}}a 1h}j 4(7[q]){a 7[q]}j 4(3.1w){1m(6 i=q.e-1;i>=3.2Q;i--){6 c=7[q.5a(0,i)];4(c){6 1h=[];$.K(c,5(i,x){4(1w(x.f,q)){1h[1h.e]=x}});a 1h}}}a Z}}};$.T.3M=5(3,h,l,1r){6 A={z:"59"};6 m,g=41,W=-1,7,y="",2o=E,r,p,L;5 44(){4(!2o)a;r=$("<3E/>").P().J(3.3N).16("4n","5e").1U(2u.3j);p=$("<5d/>").1U(r).3H(5(u){4(1d(u).3P&&1d(u).3P.4S()==\'3R\'){g=$("1b",p).V(A.z).4x(1d(u));L.V(A.z);$(1d(u)).J(A.z)}}).3J(5(u){$(1d(u)).J(A.z);l();h.3F();a t}).4w(5(){1r.1Q=E}).4y(5(){1r.1Q=t});4(3.I>0)r.16("I",3.I);L=$("<3E/>").P().J(3.3G).1U(r).3H(5(u){g=-1;$("1b",p).V(A.z);$(o).J(A.z)});2o=t}5 1d(u){6 r=u.1d;4z(r&&r.4B!="3R")r=r.4A;4(!r)a[];a r}5 O(1S){$("1b",p).V(A.z);L.V(A.z);43(1S);4(g>-1){6 2O=m.1T(g,g+1).J(A.z);4(3.2j){6 M=0;m.1T(0,g).K(5(){M+=o.1t});4((M+2O[0].1t-p.1F())>p[0].4T){p.1F(M+2O[0].1t-p.4u())}j 4(M<p.1F()){p.1F(M)}}}j{L.J(A.z)}};5 43(1S){g+=1S;4(3.1u&&W){4(g<-1){g=m.Y()-1}j 4(g>=m.Y()){g=-1}}j{4(g<0){g=m.Y()-1}j 4(g>=m.Y()){g=0}}}5 3Z(2T){a 3.B&&3.B<2T?3.B:2T}5 3Y(){p.3w();6 B=3Z(7.e);1m(6 i=0;i<B;i++){4(!7[i])2L;6 2E=3.2M(7[i].7,i+1,B,7[i].f,y);4(2E===t)2L;6 1b=$("<1b/>").3f(3.1V(2E,y)).J(i%2==0?"4p":"4o").1U(p)[0];$.7(1b,"3A",7[i])}m=p.4q("1b");4(3.2s){m.1T(0,1).J(A.z);g=0}j g=41;4($.1e.2f)p.2f()}a{42:5(d,q){44();7=d;y=q;3Y()},3X:5(){4(1L(g))g=-1;O(1)},3T:5(){4(1L(g))g=(W&&3.1u)?0:-1;O(-1)},3S:5(){4(1L(g))g=(W&&3.1u)?0:-1;4(g==-1){O(m.Y())}j 4(g==0&&W&&3.1u){O(-1)}j 4(g!=0&&g-8<0){O(-g)}j{O(-8)}},3U:5(){4(1L(g))g=-1;4(g==-1){O(1)}j 4(g!=m.Y()-1&&g+8>m.Y()){O(m.Y()-1-g)}j{O(8)}},P:5(){r&&r.P();m&&m.V(A.z);L&&L.P();g=-1;W=-1},S:5(){a r&&r.4r(":S")},4t:5(){a o.S()&&(m.3z("."+A.z)[0]||3.2s&&m[0])},21:5(){6 M=$(h).M();r.16({I:1c 3.I=="2l"||3.I>0?3.I:$(h).I(),3W:M.3W+h.1t,2J:M.2J}).21();4(3.2j){p.1F(0);p.16({3m:3.2k,4s:\'4C\'});4($.2A.4D&&1c 2u.3j.4N.3m==="29"){6 1Y=0;m.K(5(){1Y+=o.1t});6 2H=1Y>3.2k;p.16(\'4M\',2H?3.2k:1Y);4(!2H){m.I(p.I()-3i(m.16("3h-2J"))-3i(m.16("3h-4O")))}}}4(3.2e==\'3c\'||(3.2e==\'4P\'&&7.e>3.B)||(3.2e==\'4R\'&&7.e<3.B)){L.3f(3.3g.2K("<4Q/>").17("[3o]",3.B).17("[4L]",(3.B>7.e?7.e:3.B)).17("[3y]",7.e).17("[4K]",y)).21();4($.1e.2f)L.2f();W=1}j{L.P();W=-1}},F:5(){6 F=m&&m.3z("."+A.z).V(A.z);a F&&F.e&&$.7(F[0],"3A")},3B:5(){p&&p.3w()},20:5(){r&&r.4F()}}};$.1e.1o=5(G,X){4(G!==29){a o.K(5(){4(o.2n){6 1j=o.2n();4(X===29||G==X){1j.4E("2q",G);1j.l()}j{1j.4G(E);1j.4H("2q",G);1j.4J("2q",X);1j.l()}}j 4(o.3r){o.3r(G,X)}j 4(o.2a){o.2a=G;o.3u=X}})}6 14=o[0];4(14.2n){6 2y=2u.1o.4I(),3t=14.f,2v="<->",2x=2y.3q.e;2y.3q=2v;6 1z=14.f.3s(2v);14.f=3t;o.1o(1z,1z+2x);a{G:1z,X:1z+2x}}j 4(14.2a!==29){a{G:14.2a,X:14.3u}}}})(5c);',62,325,'|||options|if|function|var|data|||return||||length|value|active|input||else||select|listItems||this|list||element||false|event||result||term|ACTIVE|CLASSES|max|words|row|true|selected|start|KEY|width|addClass|each|summary|offset|toLowerCase|moveSelect|hide|val|currentValue|visible|Autocompleter|multipleSeparator|removeClass|summaryVisible|end|size|null||case|break||field|rawValue|css|replace|stMatchSets|onChange|trimWords|li|typeof|target|fn|previousValue|bind|csub|url|selRange|parsed|trigger|for|multiple|selection|timeout|autocomplete|config|hasFocus|offsetHeight|summarySelectable|trim|matchSubset|cacheLength|populate|caretAt|search|add|flush|preventDefault|extraParams|scrollTop|cursorAt|lastWord|cache|word|hideResultsNow|isNaN|success|progress|firstChar|matchContains|mouseDownOnSelect|arguments|step|slice|appendTo|highlight|formatResult|formatMatch|listHeight|blockSubmit|unbind|show|delay|parse|extend||handler||param|undefined|selectionStart|stopLoading|urlOrData|isUrl|showSummary|bgiframe|matchCase|lastKeyPressCode|autoFill|scroll|scrollHeight|string|sub|createTextRange|needsInit|defaults|character|rows|selectFirst|setTimeout|document|teststring|split|textLength|range|selectCurrent|browser|wordAt|push|flushCache|formatted|clearTimeout|findValueCallback|scrollbarsVisible|request|left|join|continue|formatItem|setOptions|activeItem|sValue|minChars|loadingClass|new|available|unautocomplete|in|strong|hideResults|mustMatch|receiveData|inputClass|gi|Cache|||nullData|BACKSPACE|ol||substring|load|ESC|always|UP|keyCode|html|summaryText|padding|parseInt|body|PAGEDOWN|PAGEUP|maxHeight|DOWN|MaxResults|dataType|text|setSelectionRange|indexOf|orig|selectionEnd|key|empty|opera|DataLength|filter|ac_data|emptyList|failure|COMMA|div|focus|summaryClass|mouseover|form|click|seperator|skipPrevCheck|Select|resultsClass|DEL|nodeName|TAB|LI|pageUp|prev|pageDown|RETURN|top|next|fillList|limitNumberOfItems||NaN|display|movePosition|init|Date||timestamp|blur|submit|keypress|off|attr|150|188|keydown|switch|map|200|crap|ajax|default|wasVisible|position|ac_odd|ac_even|find|is|overflow|current|innerHeight|mode|mousedown|index|mouseup|while|parentNode|tagName|auto|msie|move|remove|collapse|moveStart|createRange|moveEnd|Term|DisplayedLength|height|style|right|tooMany|br|notEnough|toUpperCase|clientHeight|Showing|ac_summary|results|of|RegExp|100|ac_loading|ac_results|port|abort|name|limit|ac_input|180|400|ac_over|substr|charAt|jQuery|ul|absolute'.split('|'),0,{}))

