var contype=0;
//var franchise=0;
var firstd=0;
var thisz=0;
var xmin=1;
var xmax=6;
var defx=4;
var pix=new Array;
var pixc=new Array;
var pixid=new Array;
var zoomt=new Array;
var pnots='';
var perror='';
var phelp='';
var pixf = '';
var pixl=pix.length-1;
var kkk='';
var pixs=0
ws=0;
var specOK=1;
var pixt='/x';
var sels=new Array;
var selsc=new Array;
var selsd=new Array;
var sets=new Array;
var selv=new Array;
var perm=new Array;
var resu=new Array;
var cboff=1;
var keysareon=0;
var defcad=readCookie('defcad');
if (!defcad) defcad=2;
OA=new Array()
RA=new Array()
RAstat=new Array()
FA=new Array()
navdir='_pjl/'
// querystring parser
$.urlParam = function(name){
var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href);
if (!results) { return 0; }
return results[1] || 0;}

//cache all pix
$(document).ready(function(){
	if ($.urlParam('quickcode')) {
		$('a.pjl_cb').colorbox({width:"794px",open:true,scrolling:false,title:true,inline:true, href:"#popholder"});
	} else {
		$('a.pjl_cb').colorbox({width:"798px",scrolling:false,title:true,inline:true, href:"#popholder"});
	}
	$('input.qsearch').colorbox({width:"798px",scrolling:false,title:true,inline:true, href:"#popholder"});
	
	if($(window).height()<=630) {pnoth('Get the best from this site','sts','error')}

});
function loadstuff () {
	k = ''
	document.write('<div style="display:none"'+k+'</div>')
	// read csv file for field codes
	// set known constants about the layout of the file
	var fccd=0; //line that holds the column descriptions
	fcfl=2; //first line of data
	
/*  CSV VERSION*/
	$.get(navdir+'code.csv?'+new Date().getTime(), function(data) {
	dl = jQuery.csv()(data);
	/*$.get(navdir+'code.txt?'+new Date().getTime(), function(data) {
	dl0=data.split('\r\n');
	dl= new Array;
	nn=dl0.length
	for (n=0;n<nn;n++) {
		dl[n]=dl0[n].split('\n')[0].split('\t')
	}
	*/
		// process column headers in case they have been rearranged
		for (fcd in dl[fccd]) {
			bob1 = 'fc_'+dl[fccd][fcd]+'='+fcd;
			bob2 = 'fc_'+dl[fccd][fcd].replace(' ','_')+'='+fcd;
			eval('fc_'+dl[fccd][fcd].replace(' ','_')+'='+fcd);
		}
		//Position	Fields	Codes	Description	Directory
		for (l in dl) {
			if ((l-fcfl)>-2&&l<(dl.length-1)) {
				//df=dl[l].split(','); //data fields for this record
				//dfp=dl[l-1].split(',');//data fields for previous record
				// populate the selector arrays
				if (dl[l][fc_Position]!=dl[l-1][fc_Position]) {
					sels.push(dl[l][fc_Fields]);
					sets.push(0);
					selv.push(0);
					// create array to hold values for this field type
					for (n=0;n<=fcd;n++) {
						eval('fd'+n+'_'+dl[l][fc_Fields]+' =new Array');
						eval('fd'+n+'_'+dl[l][fc_Fields]+'.push(\'[All]\')');
					}
				}
					try {
						ss=dl[l][fc_Description].substring(0,6)
						if(ss!='Oakleyxxxxx') {
							for (n=0;n<=fcd;n++) {
								eval('fd'+n+'_'+dl[l][fc_Fields]+'.push(\''+dl[l][n]+'\')');
							}
						}
					} catch(e) {}
				}
			}
		k=''
		kk=''
		kkk='<br/>'
		for ( x in sels ) { 
			// insert items for popup spatial selector
			if (x>=xmin&&x<xmax) {
				//k+='<div class="pjlxy"><div style="width: 253px; float: left;" class="pjlxx" title="Click here for guided selection of '+sels[x]+'" onClick="pj_help(\'n'+x+'-\');">'+pcase(sels[x])+'</div>';
				k+='<div class="pjlxy"><div class="pjlxx" title="Click here for guided selection of '+sels[x]+'" onClick="pj_help(\'n'+x+'-\');">'+pcase(sels[x])+'</div>';
				for (y in (eval('fd3_'+sels[x]))) {
					if (y>0) {
					//	k+='<div style="width:240px;float:left" onClick="popselc(this)" title = "Use your scroll wheel to skim options for '+pcase(sels[x])+' -click a selected item to de-select" id="sel_'+x+'_'+y+'" class="selx">'+eval('fd3_'+sels[x])[y]+'</div>'
						k+='<div  onClick="popselc(this)" title = "Use your scroll wheel to skim options for '+pcase(sels[x])+' -click a selected item to de-select" id="sel_'+x+'_'+y+'" class="selx">'+eval('fd3_'+sels[x])[y]+'</div>'
					}
					sets[x]++
					if(!FA[x]) FA[x]=new Array();
					FA[x][y] =0;
				}
				k+='</div>';
			}
			// insert items for dropdown menu selector
			if (x>=xmin&&x<xmax&&makemenu) {
					kk+='<li class="topLevel active" id="n'+x+'-"><a class="sf-with-ul" title="Click here for guided selection of '+sels[x]+'" href="javascript:pj_help(\'n'+x+'-\');">'+sels[x]+'<br/><div id="menubreak">&nbsp;</div><span id="sel_n'+x+'-" class="sel">'+eval('fd3_'+sels[x])[0]+'</span></a><ul style="display: none; visibility: hidden;">'
				for (y in (eval('fd3_'+sels[x]))) {
					kk+='<li class="" id="n'+x+'-'+y+'"><a title="'+eval('fd3_'+sels[x])[y]+'"  href="javascript:pj_sel(\''+x+'-'+y+'\');"><span id="spn'+x+'-'+y+'">'+eval('fd3_'+sels[x])[y]+'</span></a></li>'
				}
				kk+='</ul></li>';
			}
			// insert items for popup dropdown selector
			if (x>=xmin&&x<xmax) {
				kkk+='<div style="width: 253px; float: left;" class="pjlxx" title="Click here for guided selection of '+sels[x]+'" onClick="pj_help(\'n'+x+'-\');">'+pcase(sels[x])+'</div>';
				kkk+='<select id="n_'+x+'_--" onChange="popseld(this)">'
				for (y in (eval('fd3_'+sels[x]))) {
						kkk+='<option value="'+y+'" title = "Select option for '+pcase(sels[x])+'" id="sel_'+x+'_'+y+'_" class="selxx">'+eval('fd3_'+sels[x])[y]+'</option>'
				}
				kkk+='</select><br/>'
			}
		}
		$('#popsel2').html(k);
		//$('#nav').html(kk);
		if (makemenu) makemenu=kk;
	});
	// Now get the data about what permutations are the biz
	$.get(navdir+'perm.txt?'+new Date().getTime(), function(data) {
//		z2=data.split('\r\n')
		if (data.indexOf('\r\n') < 0) {z2=data.split('\n')} else {z2=data.split('\r\n')}
		zlen=z2.length;
/*		if (zlen<2) {
		z2=data.split('\n')
		zlen=z2.length;}*/
		for  (z=0;z<zlen;z++) {
			tp=z2[z].split('\t');
			tpl=tp.length
			for (kk=0;kk<tpl;kk++) {tp[kk]=parseInt(tp[kk])+1}
			RA[z]=tp;
			if(!perm[tp[0]]) perm[tp[0]]=new Array();
			if(!perm[tp[0]][tp[1]]) perm[tp[0]][tp[1]]=new Array();
			if(!perm[tp[0]][tp[1]][tp[2]]) perm[tp[0]][tp[1]][tp[2]]=new Array();
			if(!perm[tp[0]][tp[1]][tp[2]][tp[3]]) perm[tp[0]][tp[1]][tp[2]][tp[3]]=new Array();
			if(!perm[tp[0]][tp[1]][tp[2]][tp[3]][tp[4]]) perm[tp[0]][tp[1]][tp[2]][tp[3]][tp[4]]=new Array();
			perm[tp[0]][tp[1]][tp[2]][tp[3]][tp[4]][tp[5]]=1;
		}
		$.fn.superfish
		//franchise=RA[0][0]-1
		if ($.urlParam('quickcode')) {
			
			newsel(0);
			document.search.quickcode.value=$.urlParam('quickcode');
			qc()
		} else {
			newsel(0);
		}
		wheelset();
		
	})
	
}

$(document).bind('cbox_complete', function(el){
	if(!keysareon) {keysareon=1;keyson();}
	$('#zoom').attr('src',pic(thisz,'jpg'));
	$('#zoomt').html(pcaptionf(thisz));
	cboff=0;
	
});
function trick (src) {
	location.href='#nn'+src
	//$('#h_iframe').attr('src','_pjl/h2.html#'+src)
	thisz=src
	if(!firstd) {firstd=1;$('#popsel').html(kkk);}
		$('#zoom').attr('src',pic(thisz,'jpg'));
		$('#zoomt').html(pcaptionf(thisz));
		/*	$('#zoom').attr('src',pic(src,'jpg'));
	$('#zoomt').html(ttx);*/
	for ( x in pix ) { 
		if (src==pix[x]) {pixs=x;}
	}
	filt(fd2_Detail[RA[thisz][4]]);
	pnotx();
	if (readCookie('dyn_x')) {pnots=$.pnotify({pnotify_text: '<a onClick="alltips()">Show all tips.</a>',pnotify_title: '',pnotify_width: '130px',pnotify_history: false})}
	pnoth('Did you know?','dyn');

}

function dprevious() {
	nono=0
	pixs>pixl?pixs=pixl:pixs=pixs;
	if (pixf) {
		// keep scrolling until filter wins
		nono=1
		if (pixs ==0) {pixs=pixl} else {pixs--}
		while(pix[pixs].indexOf(pixf) < 0) {
			if (pixs==0) {pixs=pixl} else {pixs--}
		}
	} 
	if (nono==0) {
		if (pixs ==0) {pixs=pixl} else {pixs--}
	}
	//thisz=pixid[pixs];
	$('#zoom').attr('src',pix[pixs]);
	$('#zoomt').html(zoomt[pixs]);
	// update all cad links as required
	$('#pdfDown').attr('href',pic(thisz,'pdf'))
	if (tlCAD[defcad].ext=='xml') {
		$('#cadDownx').html('<span class="idr">'+pj_ins_idr(pic(thisz,'xml'),32,32,noidropicon,noidrophtml,idrcid)+'</span></span>'+tlCAD[defcad].desc+'</span>')
		//$('#'+thisid).html(pj_ins_idr(pic(def[tmpd][tmpdd],'xml'),32,32,noidropicon,noidrophtml,idrcid))
		$('#cadDownd').removeClass().addClass(tlCAD[defcad].ext+'Downd')
		$('#cadDown').attr('href','javascript:helpf(\'help_02\')')
		$('#cadDown').attr('target','')
	} else {
		$('#cadDownx').text('Download '+tlCAD[defcad].desc)
		$('#cadDownd').removeClass().addClass(tlCAD[defcad].ext+'Downd')
		$('#cadDown').attr('href',pic(thisz,tlCAD[defcad].ext))
		$('#cadDown').attr('target','_blank')
	}
	cadsel(thisz,2)
	cadsel(thisz,3)
	
}
function dnext() {
	nono=0
	pixs>pixl ? pixs=pixl:pixs=pixs;
	if (pixf) {
		// keep scrolling until filter wins
		nono=1
		if (pixs ==pixl) {pixs=0} else {pixs++}
		while(pix[pixs].indexOf(pixf) < 0) {
			if (pixs==pixl) {pixs=0} else {pixs++}
		}
	} 
	if (nono==0) {
		if (pixs ==pixl) {pixs=0} else {pixs++}
	}
	//thisz=pixid[pixs];
	$('#zoom').attr('src',pix[pixs]);
	$('#zoomt').html(zoomt[pixs]);
	// update all cad links as required
	$('#pdfDown').attr('href',pic(thisz,'pdf'))
	if (tlCAD[defcad].ext=='xml') {
		$('#cadDownx').html('<span class="idr">'+pj_ins_idr(pic(thisz,'xml'),32,32,noidropicon,noidrophtml,idrcid)+'</span></span>'+tlCAD[defcad].desc+'</span>')
		$('#cadDownd').removeClass().addClass(tlCAD[defcad].ext+'Downd')
		$('#cadDown').attr('href','javascript:helpf(\'help_02\')')
		$('#cadDown').attr('target','')
	} else {
		$('#cadDownx').text('Download '+tlCAD[defcad].desc)
		$('#cadDownd').removeClass().addClass(tlCAD[defcad].ext+'Downd')
		$('#cadDown').attr('href',pic(thisz,tlCAD[defcad].ext))
		$('#cadDown').attr('target','_blank')
	}
	cadsel(thisz,2)
	cadsel(thisz,3)
	
}
function filt(f) {
	$('.pj_fa').removeClass('on')
	$('.pj_fh').removeClass('on')
	$('.pj_fj').removeClass('on')
	$('.pj_fs').removeClass('on')
	$('.pj_fr').removeClass('on')
	pixf=f;
	if (f) {
		if(f=='silr') {
			$('.pj_fr').addClass('on')
		} else {
			$('.pj_f'+f.substr(0,1)).addClass('on')
		}
		dprevious()
		dnext()
		//thisz=pixid[pixs];
	} else {
		$('.pj_fa').addClass('on')
	}
}


function wheelset() {
	$('#zoom').each(function(index) {wheelimg(this)});
	$('.pj_fa').each(function(index) {wheeldet(this)});
	$('.pj_fh').each(function(index) {wheeldet(this)});
	$('.pj_fs').each(function(index) {wheeldet(this)});
	$('.pj_fj').each(function(index) {wheeldet(this)});
	$('.pj_fr').each(function(index) {wheeldet(this)});
	for ( x in sels ) { 
		if (x>0&&x<=5) {
			for (y in (eval('fd3_'+sels[x]))) {
			k='sel_'+x+'_'+y
			wheelpopsel(k)
/*			$('#'+k).click(function(el) {
					popselc(this)
				});*/
		}
		//popseller(x,selv[x],1)
	}
	}
}
function popseld(el) {
	pj_sel(el.id.split('_')[1]+'-'+el.value)
	
}
function popselc(el) {
	x=parseInt(el.id.split('_')[1])
	y=parseInt(el.id.split('_')[2])
	pj_sel(x+'-'+y)
}
function wheelimg(el) {
$(el).unmousewheel
		$(el).mousewheel(function(event, delta) {
			ws=1;
			if(delta<=0) {dnext()} else {dprevious()};return false;
		});
}

function dup() {
	y=selv[defx]
	if (y<=1) {y=sets[defx]-1} else {y--}
	while(FA[defx][y]==-1) {if (y<=1) {y=sets[defx]+-1} else {y--}}
	popseller(defx,y)
}
function ddown() {
	y=selv[defx]
	if (y==sets[defx]-1) {y=1} else {y++}
	while(FA[defx][y]==-1) {if (y==sets[defx]-1) {y=1} else {y++}}
	popseller(defx,y)
}

function wheelpopsel(k) {
	$('#'+k).unmousewheel;
	$('#'+k).mousewheel(function(event, delta) {
		x=parseInt(k.split('_')[1])
		y=selv[x]
		if(delta>=0) {
			if (y<=1) {y=sets[x]-1} else {y--}

			while(FA[x][y]==-1) {if (y<=1) {y=sets[x]-1} else {y--}}
			popseller(x,y)
		} else {
			if (y==sets[x]-1) {y=1} else {y++}
			while(FA[x][y]==-1) {if (y==sets[x]-1) {y=1} else {y++}}
			popseller(x,y)
		};return false;
	});
}
function popseller(x,y,skip) {
	thisx1 ='#sel_'+x+'_'+selv[x]
	thisx2 ='#sel_'+x+'_'+y
/*	$(thisx1).removeClass('popselon')
	$(thisx2).addClass('popselon')*/
	selv[x]=y
/*	for (xx in eval(sels[x])) {
		thisx ='.sel_'+x+'_'+xx
		if (xx==y) {$(thisx).addClass('popselon')} else {$(thisx).removeClass('popselon')}
	}*/
	//dummy action to cycle other images
	k=$('.zoom').attr('src')
	newsel(1)
	if (!skip) {
		if (k.indexOf('x')==-1) {k= k.replace('\/y','\/x');pixt='/x'} else {k= k.replace('\/x','\/y');pixt='/y'} 
	}
	//$('.zoom').attr('src',k);
}
function wheeldet(el) {
$(el).unmousewheel
		$(el).mousewheel(function(event, delta) {
			ws=1;
			if(delta<=0) {
				switch (pixf){
					case 'head':filt('jamb');break;
					case 'jamb':filt('sill');break;
					case 'sill':filt('silr');break;
					case 'silr':filt('');break;
					case '':filt('head');break;
				}
			} else {
				switch (pixf){
					case 'head':filt('');break;
					case 'jamb':filt('head');break;
					case 'sill':filt('jamb');break;
					case 'silr':filt('sill');break;
					case '':filt('silr');break;
				}
			}
			;return false;
		});
}
function thumbswap() {
	$('.pjlthumb').each(function(index) {
	k=$(this).attr('src')
	if (k.indexOf('x')==-1) {k= k.replace('\/y','\/x');pixt='/x'} else {k= k.replace('\/x','\/y');pixt='/y'} 
	$(this).attr('src',k);
	})
}
function pcase(txt) {
	if(!txt) txt=''
	return  txt.substr(0,1).toUpperCase()+txt.substr(1,100000);
}
function pj_sel(el) {
	// Force selector
	i=FA[el.split('-')[0]][el.split('-')[1]]
	//function pnot(ptitle,ptext,ptype,ppos,pstack,phide)
	//swap pix
	switch (i){
		//control is disabled - throw message
		case -1:
			if(perror) perror.pnotify_remove();
			perrormess='The option you just clicked is presently unavailable in combination with the other selections you have made<br><br>'
			perrormess+='Would you like to reset the other selectors?<br><br>'
			perrormess+='<input class="pjli yes" type="button" value="Yes" onClick="forcesel(\''+el+'\')"/>'
			perrormess+='<span style="float:right"><input class="pjli no" type="button" value="No" onClick="perror.pnotify_remove();"/></span>'
			perror=$.pnotify({
				pnotify_title: 'Invalid Selection',
				pnotify_text: perrormess,
				pnotify_type: 'error',
				pnotify_hide: 'false',
				pnotify_history: false
			});
			break;
		//control presently selected - switch to [All]
		case 1:selv[el.split('-')[0]]=0;newsel(1);
			cont=$('#spn'+el).html()
			par=el.split('-')[0]+'-'
			$('#sel_n'+par).html('[All]')
			$('#nav li.sfHover').hideSuperfishUl($('#nav')); 
			newsel(1);
			break;
		//default action - select control 
		default:selv[el.split('-')[0]]=parseInt(el.split('-')[1]);
			cont=$('#spn'+el).html()
			par=el.split('-')[0]+'-'
			$('#sel_n'+par).html(cont)
			$('#nav li.sfHover').hideSuperfishUl($('#nav')); 
			newsel(1);
			break;
	}
	return
}
function forcesel(el) {
for (x=xmin;x<xmax;x++) {
	selv[x]=0;
	$('#sel_n'+x+'-').html('[All]')
	sid='#sel_'+x+'_0_'
	$(sid).attr('selected',1);
}
selv[el.split('-')[0]]=parseInt(el.split('-')[1])
cont=$('#spn'+el).html()
$('#sel_'+el+'_').attr('selected',1);
par=el.split('-')[0]+'-'
$('#sel_n'+par).html(cont)
$('#nav li.sfHover').hideSuperfishUl($('#nav')); 
perror.pnotify_remove()
newsel(1)
}
//http://plugins.jquery.com/project/csv
jQuery.extend({
    csv: function(delim, quote, linedelim) {
        delim = typeof delim == "string" ? new RegExp( "[" + (delim || ","   ) + "]" ) : typeof delim == "undefined" ? ","    : delim;
        quote = typeof quote == "string" ? new RegExp("^[" + (quote || '"'   ) + "]" ) : typeof quote == "undefined" ? '"'    : quote;
        lined = typeof lined == "string" ? new RegExp( "[" + (lined || "\r\n") + "]+") : typeof lined == "undefined" ? "\r\n" : lined;

        function splitline (v) {
            // Split the line using the delimitor
            var arr  = v.split(delim),
                out = [], q;
            for (var i=0, l=arr.length; i<l; i++) {
                if (q = arr[i].match(quote)) {
                    for (j=i; j<l; j++) {
                        if (arr[j].charAt(arr[j].length-1) == q[0]) { break; }
                    }
                    var s = arr.slice(i,j+1).join(delim);
                    out.push(s.substr(1,s.length-2));
                    i = j;
                }
                else { out.push(arr[i]); }
            }

            return out;
        }

        return function(text) {
            var lines = text.split(lined);
            for (var i=0, l=lines.length; i<l; i++) {
                lines[i] = splitline(lines[i]);
            }
            return lines;
        };
    }
});
function setpref(el) {
	createCookie(el.id,el.checked)
	//alert(el.checked)
}
function pnoth(ptitle,el,ptype,phide,ppos,pstack) {
// push a notification based on a hidden div (el)
// and allow cookie to permanently hide
	if(phide!=false) phide=true
	if (!readCookie(el+'_x')){
		pnot(ptitle,$('#'+el).html(),ptype,phide,ppos,pstack)
	}
}

function pnot(ptitle,ptext,ptype,phide,ppos,pstack) {
	var stack_topleft = {"dir1": "down", "dir2": "right", "push": "top"};
	if(phide!=false) phide=true
	pnots=$.pnotify({
		pnotify_title: ptitle,
		pnotify_text: ptext,
		pnotify_type: ptype,
		pnotify_addclass: ppos,
		pnotify_stack: pstack,
		pnotify_hide: phide,
		pnotify_width: '550px',
		pnotify_history: false
	});
}
function pj_help(el) {
//alert('Help for '+el)
if(phelp) phelp.pnotify_remove();
x=parseInt(el.substring(1,2))
			phelp=$.pnotify({
				pnotify_title: 'Guided Selection of '+pcase(sels[x]),
				pnotify_text: $('#pn-'+el).html(),
				pnotify_history: false,
				pnotify_width: '550px',
				pnotify_hide: false
				
})
}

function helpf(el) {
ttl='Help : '+$('#'+el).attr('title')
pnoth(ttl,el,'',false)
//function pnothpnoth(ptitle,el,ptype,phide,ppos,pstack) {
}
function pnotx() {
	if(pnots) pnots.pnotify_remove();;
	if(pnots) $.pnotify_queue_remove;
}

function alltips() {
	pnotx()
	pnot('Did you know?',$('#dyn').html())
}
// Cookie handling functions
// Acknowledgement: from http://www.quirksmode.org/js/cookies.html
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}
$(document).bind('cbox_cleanup', function(){
	$('#dets').html(kk);
	$('a.pjl_cb').colorbox({width:"798px",scrolling:false,title:true,inline:true, href:"#popholder"});
	pnotx();
	cboff=1;
	if (tlCAD[defcad].ext=='xml') {xidrop()}
	wls=window.location.hash;
	//wls=window.location.hash.substr(1,2);
	if (wls.substr(1,2)=='nn') {window.location.hash='#n'+wls.substr(3,1000)} else {window.location.hash=''}
});



function dlxc(txt) {
	msg='Selected file is for options:'
	fdir=''
	fnm=''
	hhh=selv;
	for ( x in sels ) { 
			msg+=pcase(sels[x])+'=' +eval('fd3_'+sels[x])[selv[x]]+', '
			if (x>0) {
				xy=eval('fd2_'+sels[x])[selv[x]]
				xx=eval('fd4_'+sels[x])[hhh[x]]
				if (xx) { fdir+=xx+'/'}
				if(x<4) {fdir+=xy+'/'}
				fnm+=xy+'_'
			}
			
	}
	msg+='Placeholder action to download '+txt
	msg+='\nThis will also set the default preference for future downloads to '+txt
	//alert (msg)
}



function ________Initialise_constants() {}
//Stuff here that initializes
// Set classes to be used for icons and popup stuff (see css)
	var pj_zoom = 'pj_zoom';
	var pj_icon = 'pj_icons pj_';
	// class used for intrapage links
	var pj_ip = 'pj_intrapage';
	var pj_a_ip = 'a[class=' + pj_ip + ']';
	// class that identifies Article Index Page Links
	var pj_a_ai = 'a[class=toclink]';
	var pj_quit = pj_icon + 'quitt';
	var pj_cad1 = 'pj_cad1';
	var pj_cad2 = 'pj_cad2';
	var pj_cad3 = 'pj_cad3';
	// metadata that holds replacement title, and delimiting string used
	var pj_rt = 'meta[name*=description]';
	var pj_rtds = '++';
//CAD Links
	var tlCAD = new Array();
	var nCADS = 5;
	for (nn=1;nn<=nCADS;nn++) {tlCAD[nn]= new Array();					}
	tlCAD[1].ext='pdf';
	tlCAD[1].cls=pj_icon + 'pdf';
	tlCAD[1].desc='Acrobat PDF';
	tlCAD[2].ext='dwg';
	tlCAD[2].cls=pj_icon + 'dwg';
	tlCAD[2].desc='AutoCAD DWG';
	tlCAD[3].ext='dwf';
	tlCAD[3].cls=pj_icon + 'dwf';
	tlCAD[3].desc='AutoDesk DWF';
	//Idrop temporarily disabled
	tlCAD[4].ext='xml';
	tlCAD[4].cls=pj_icon + 'xml';
	tlCAD[4].desc='iDrop for AutoCAD and ArchiCAD';
	tlCAD[4].extd='i-drop/dwg';
	tlCAD[5].ext='rfa';
	tlCAD[5].cls=pj_icon + 'rvt';
	tlCAD[5].desc='Revit RFA';/*
	tlCAD[6].ext='mod';
	tlCAD[6].cls=pj_icon + 'mod';
	tlCAD[6].desc='ArchiCAD MOD';
	tlCAD[7].ext='mcd';
	tlCAD[7].cls=pj_icon + 'mcd';
	tlCAD[7].desc='Vectorworks MCD';
	tlCAD[8].ext='dxf';
	tlCAD[8].cls=pj_icon + 'dxf';
	tlCAD[8].desc='AutoCAD DXF';
	*/
	var axo = false;
	//var axo = true;
	var idrcid="clsid:21E0CB95-1198-4945-A3D2-4BF804295F78";
	if (window.ActiveXObject) {
		axo = true;
		// check browser version for 64 bit idrop
		var appVersionName = navigator.appVersion;
		if(appVersionName.indexOf ("x64") != -1 ) {
			//clsid for 64-bit control
			idrcid="clsid:32290CD1-D585-4803-AF20-F16E20FF377A";
		}
	}
function ________Path_Infomation() {}
	//Important path information stored here
	var baseCAD= '_CADstuff/';
	var baseCTRLPOP= '_CADstuff/jpg/';
	var baseCTRL= 'images/stories/details/';
	var basePREV= 'images/stories/preview/';
	var baseTHMB= 'images/stories/thumb/';
	var baseext = '.gif';
	var baseextPOP = '.jpg';
	var prevCTRL =baseCAD+ 'jpg/';
	var prevext = '.jpg';
	var noidropicon='_pjl/xml_.png';
	var noidrophtml='noidrop.html';
	var noidrophtml='javascript:helpf(\'help_02\')';
	var pj_i = 0
	var pj_cadthis = '';

function ________Selector(){}
function newsel(ver,specdet) {
// for all selector processes
	// check default CAD setting must be
	//consider default displayed thumbs
	def=new Array;
	hits=0;
	pixc=[];
	this0=-1;
	thisz4=RA[thisz][4]
	thisz5=RA[thisz][5]
	this1=-1;
	this2=-1;
	//reset all filters to disabled:xy loop through filters by type
	for (x=xmin;x<xmax;x++) {for (y=1;y<sets[x];y++) {
		FA[x][y]=-1;
	}}
	//for quicker processing assess active filters before entering big loop
	var AF=new Array;
	var AFlen=0;
	 //-filter is active if not "All"  that is if selv[x]!=0
	for (x=xmin;x<xmax;x++) {if(selv[x]) {
			AF.push(new Array(x,selv[x]));
			AFlen++;
	}}
	//proceed  if filters are active otherwise return to default set
	if(AFlen||!AFlen) {for (z=0;z<(zlen-1);z++) {
	//loop through all results 
		// record deemed valid until we prove otherwise
		ok=1;
		//test record against each active filter
		for(f=0;f<AFlen;f++) {
			if(RA[z][AF[f][0]-1]!==AF[f][1]) {
			// matches this filter as AF[0][0]= filter ID and AF[0][1] = filter value
				ok=0;
			}
		}
		if (ok) {
			// fill up default array
			if (!def[RA[z][xmax-2]]) def [RA[z][xmax-2]]=new Array;
			if (!def[RA[z][xmax-2]][RA[z][xmax-1]]) def [RA[z][xmax-2]][RA[z][xmax-1]]=z;
			// this0 is default setting for perfect match of current pic
			if (this0===-1) {if (RA[z][4]==thisz4&&RA[z][5]==thisz5) this0=z;};
// deleted pixc cache push			if (this0===-1) {if (RA[z][4]==thisz4&&RA[z][5]==thisz5) this0=z;pixc.push(z)};
			// this1 is the last matching last gasp fallback for current pic
			if (RA[z][4]==thisz4) this1=z;
			// this2 is last gasp fallback for current pic
			if (this2===-1) this2=z;
			
		}
		RAstat[z]=ok;
		// test each filter set against record
		for (x=xmin;x<xmax;x++) {
			ok=1;
			for(f=0;f<AFlen;f++) {
				if(AF[f][0]!=x) {
				// test active filters that are NOT for this filter set
				// 
					if(RA[z][AF[f][0]-1]!==AF[f][1]) {
						ok=0;
					}
				} 
					if (RA[z][AF[f][0]-1]!=AF[f][1]) {
						// matches this filter as AF[f][0]= filter ID and AF[f][1] = filter value
					}
			} 
			if (ok) {
				myx=parseInt(x)
				myy=RA[z][x-1]
				try {FA[myx][myy]=0;} catch (e) {};
			}
		}
	}} else {
		//procedure for setting defaults
		//yet to do!!!
	}
	for (x=xmin;x<xmax;x++) {
	}
	for (x=xmin;x<xmax;x++) {for (y=1;y<sets[x];y++) {
		fid='#n'+x+'-'+y
		sid='#sel_'+x+'_'+y
		if(selv[x]===y) {
			FA[x][y]=1
			$(fid).addClass('pjsel');
			$(sid).addClass('pjsel0');
			$(sid+'_').addClass('pjsel00');
			$(sid+'_').attr('selected',1);
		} else{
			$(fid).removeClass('pjsel');
			$(sid).removeClass('pjsel0');
			$(sid+'_').removeClass('pjsel00');
		}
		if(FA[x][y]===-1) {
			$(fid).addClass('pjdis');
			$(sid).addClass('pjdis0');
			$(sid+'_').addClass('pjdis00');
			if(!ver) {
				$(fid).addClass('pjhid');
				$(sid).addClass('pjhid0');
				$(sid+'_').addClass('pjhid00');
			}
		} else {
			$(fid).removeClass('pjdis');
			$(sid).removeClass('pjdis0');
			$(sid+'_').removeClass('pjdis00');
		}
	}}
	pixl=-1;
	pix=[]
	pixid=[]
	zoomt=[]
	kk='<table width="100%"><tr>';
	fcnt=0;
	tofilt=0
	// check details selectors to handle header filters
	for (y in FA[5]) {
	// this loop checks if detail filter is selected
	if (FA[5][y]==1) {
			$('#pj_f'+y).removeClass('pjhid')
			tofilt=y
			fcnt=1
		} else {
			$('#pj_f'+y).addClass('pjhid')
			$('#pj_f'+y).css('width','0%')
		}
	}
	if (fcnt != 1) {
	// if no detail filter check details excluded by other selections
		for (y in FA[5]) {
			// check details selectors to handle header filters
			if (FA[5][y]==-1) {
				$('#pj_f'+y).addClass('pjhid')
				$('#pj_f'+y).css('width','0%')
			} else {
				$('#pj_f'+y).removeClass('pjhid')
				fcnt--
			}
		}
	}
	ww='20%'
	if (fcnt==1||fcnt==-1) {
	// Hide 'all details' option if filter is selected or there is only one legit type
	$('#pj_f0').addClass('pjhid')
	$('#pj_f0').css('width','0px')
	ww='525px'
} else{
	$('#pj_f0').css('width','525px')
	if (fcnt==-3||fcnt==-4) {
		ww=parseInt(-100/fcnt)+'%'
	}
}
	for (d in def) {
		dcnt=0;
		$('#pj_f'+d).css('width',ww);
		// Variations here to combine sill and rebated sill
		if(d<3) {
			kkk=kk+'<td class="xhead dts" width="33%">'+fd3_Detail[d]+'s (';
		} else {
			kkk=kk+'<td class="xhead dts_" width="16%">'+fd3_Detail[d]+'s (';
		}
		kk=')<br/><br/><br/>';

		for(dd in def[d]) {
			kk+='<div class="pj_tile" id="pj_tile_'+d+'_'+dd+'">'
			kk+='<a name="r_'+def[d][dd]+'"></a>'
			kk+='<a name="rr_'+def[d][dd]+'"></a>'
			// looking for a quickcode here!
			if (specdet) {
				if (specdet==RA[def[d][dd]][5]) {
					hits++;
					lasthit=def[d][dd]
				}
			}
			
			//kk+=pcaption(def[d][dd])+'<br/>'
			pix.push(pic(def[d][dd],'jpg'))
			pixid.push(def[d][dd])
			zoomt.push(pcaptionf(def[d][dd]))
			//kk+='<a title="Click for more detail" id="a_'+d+'__'+dd+'|'+def[d][dd]+'"class="pjl_cb" onClick="trick('+def[d][dd]+')"><img style="background:#00ff00" height="200" width="141" src="'+pic(def[d][dd],'gif')+'"></a>'
			kk+='<a title="Click for more detail" id="a_'+d+'__'+dd+'|'+def[d][dd]+'"class="pjl_cb" onClick="trick('+def[d][dd]+')">'+pcaption(def[d][dd])+'<br/><img height="200" width="141" src="'+pic(def[d][dd],'gif')+'"></a>'
			
			
			kk+='<br/><a title="Acrobat PDF" TARGET="_blank" class="pj_pdf" href="'+pic(def[d][dd],'pdf')+'"><img src="_pjl/pdf_.png" height="32px" width="32px"/></a>';
			if (tlCAD[defcad].ext=='xml') {
				// insert idrop link?
				kk+='<span id="pj_idr_'+d+'_'+dd+'">'
				kk+='&nbsp;&nbsp;&nbsp;<a title="'+tlCAD[defcad].desc+'" TARGET="_blank" class="'+tlCAD[defcad].cls+'" href="'+pic(def[d][dd],tlCAD[defcad].ext)+'"><img src="_pjl/'+tlCAD[defcad].ext+'_.png" height="32px" width="32px"/></a>';
				kk+='</span>'
			} else {
			// insert second link for default CAD setting 
			kk+='&nbsp;&nbsp;&nbsp;<a title="'+tlCAD[defcad].desc+'" TARGET="_blank" class="'+tlCAD[defcad].cls+'" href="'+pic(def[d][dd],tlCAD[defcad].ext)+'"><img src="_pjl/'+tlCAD[defcad].ext+'_.png" height="32px" width="32px"/></a>';
			}
			

			kk+='&nbsp;&nbsp;&nbsp;<a title="Click for enlargement and more formats" class="pjl_cb" id="pjl_more|'+def[d][dd]+'" onClick="trick('+def[d][dd]+')"><img src="_pjl/more_.png" height="32px" width="32px"/></a></div>';
			pixl++;
			dcnt++;
		}
		kk=kkk+dcnt+kk;
		$('#pj_f'+d+'a').html(fd3_Detail[d].replace('Detail','')+'('+(dcnt)+')')
		kk+='</td>';
	}
	kk+='</tr></table>';
	dcm= pixl==0 ? ' Detail' : ' Details' ;
	dcm+=' Found';
	if (cboff) {$('#dets').html(kk);}
	$('#detcount').html((pixl+1)+dcm);
	$('#pj_f0a').html('All ('+(pixl+1)+')')
	$('#detinfo').html('');
	$('a.pjl_cb').colorbox({width:"794px",scrolling:false,title:true,inline:true, href:"#popholder"});
	$('a.pjl_cb').mouseenter(function() {thisz=this.id.split('|')[1];})
	// idrop loader on tile mouseover
	if (tlCAD[defcad].ext=='xml') {xidrop()}
	
	//kk+=pj_ins_idr(pic(def[d][dd],'xml'),32,32,noidropicon,noidrophtml,idrcid);
/*	if (tofilt) {
		filt(fd2_Detail[tofilt])
	} else {filt('')}*/
	pk=pic(thisz,'')+'\n'
	if (this0!=-1) {
		thisz=this0;
	} else {
		if (this1!=-1) {
			thisz=this1;
		} else {
			filt('');
			thisz=this2;
		}
	}
	pk+=pic(thisz,'')+'\n'
	$('#zoom').attr('src',pic(thisz,'jpg'));
	$('#zoomt').html(pcaptionf(thisz));
	$('#pdfDown').attr('href',pic(thisz,'pdf'))
	if (tlCAD[defcad].ext=='xml') {
		$('#cadDownx').html('<span class="idr">'+pj_ins_idr(pic(thisz,'xml'),48,48,noidropicon,noidrophtml,idrcid)+'</span></span>'+tlCAD[defcad].desc+'</span>')
		//$('#'+thisid).html(pj_ins_idr(pic(def[tmpd][tmpdd],'xml'),32,32,noidropicon,noidrophtml,idrcid))
		$('#cadDownd').removeClass().addClass(tlCAD[defcad].ext+'Downd')
		$('#cadDown').attr('href','javascript:helpf(\'help_02\')')
		$('#cadDown').attr('target','')
	} else {
		$('#cadDownx').text('Download '+tlCAD[defcad].desc)
		$('#cadDownd').removeClass().addClass(tlCAD[defcad].ext+'Downd')
		$('#cadDown').attr('href',pic(thisz,tlCAD[defcad].ext))
		$('#cadDown').attr('target','_blank')
	}
	cadsel(thisz,2)
	cadsel(thisz,3)	
	//cache other pix:
	pcache='';
	cachecap=43;
	cachecnt=0;
	for (px in pixid) {
			cachecnt++;
			if(cachecnt<cachecap) {pcache+='<div style="background:url(\''+pic(pixid[px],'jpg')+'\')"></div>'}
	}
	//for (px in pixc) {
		//pcache+='<div style="background:url(\''+pic(pixc[px],'jpg')+'\')"></div>'
	//}
	$('#pixc').html(pcache)
	if (specdet) {
		if(hits==1) {
			specOK=0
			trick(lasthit)
		} else {
			//we go either nothing or everything.  Display error message
			location.href='#qc';
			pnoth('Invalid Quick Code','bqc','error')
		}
		
	}
	
	$('#nav').removeClass('pjhid')
}
function consume_alert() {
	if (_alert) return;
	_alertalert = window.alert;
	window.alert = function(message) {
		$.pnotify({
			pnotify_title: 'Alert',
			pnotify_text: message
		});
	};
}
var _alert;
function selset() {
	for (x=xmin;x<xmax;x++) {
		if (selv[x]) {
			
		} else {
			$('#sel_n'+x+'-').html('[All]')
		}
	}
	selv[el.split('-')[0]]=parseInt(el.split('-')[1])
	cont=$('#spn'+el).html()
	par=el.split('-')[0]+'-'
	$('#sel_n'+par).html(cont)
	$('#nav li.sfHover').hideSuperfishUl($('#nav')); 
	perror.pnotify_remove()
	newsel(1)
}

//consume_alert()
function pic(z,ext) {
	//jpg/ahp48/door_fold/bi-folddoor/cav/ahp48_bi-folddoor_cav_bbw_head01.jpg 
	//jpg/ahp48/door_fold/bi-folddoor/cav/ahp48_bi-folddoor_cav_bbw_head01.jpg
	pp = new String(ext+'/');
	pp += fd2_Product[RA[z][0]]+'/'
	pp += fd4_Category[RA[z][1]]+'/'
	pp += fd2_Category[RA[z][1]]+'/'
	pp += fd2_Context[RA[z][2]]+'/'
	pp += fd2_Product[RA[z][0]]+'_'
	pp += fd2_Category[RA[z][1]]+'_'
	pp += fd2_Context[RA[z][2]]+'_'
	pp += fd2_Cladding[RA[z][3]]+'_'
	pp += fd2_Detail[RA[z][4]]
	pp += pad2(RA[z][5])+'.'+ext
	return(pp)
}
function cadsel(thisz,n) {
hrf=pic(thisz,tlCAD[n].ext)
$('#cadsel'+n).attr('href',hrf)
}

function pcaption(z) {
	pp = new String;
	if(z==-1) {
		pp = 'null';
	} else {
		pp += fd3_Detail[RA[z][4]]+' ';
		pp += pad2(RA[z][5]);
	}
	return(pp)
}
function pcaptionf(z) {
	pp = new String;
	if(z==-1) {
		pp = 'null';
	} else {
		pp += fd3_Detail[RA[z][4]]+' ';
		pp += pad2(RA[z][5])+'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="pj_fh">QuickCode=';
		pp += franchise;//fd5_Franchise[franchise];
		pp += fd5_Product[RA[z][0]];
		pp += fd5_Category[RA[z][1]]+'_';
		pp += fd5_Context[RA[z][2]];
		pp += fd5_Cladding[RA[z][3]];
		pp += fd5_Detail[RA[z][4]];
		pp += pad2(RA[z][5])+'</span>';
	}
	return(pp)
}


function pad2(number) {
	return (number < 10 ? '0' : '') + number
}
function checkthisz() {
	// verify if current image is valid for selectors enabled
}
function swapsel() {
	if (contype) {
		$('#slideButton').html('Drop')
		$('#popsel').css('display','none')
		$('#popsel2').css('display','block')
	} else {
		$('#slideButton').html('Spread')
		$('#popsel2').css('display','none')
		$('#popsel').css('display','block')
	}
	contype=1-contype
}

function keyson() {
$(document).bind('keydown', function(evt) {
		switch(evt.which) {
			//case 8:	;$.fn.colorbox.close();break;//backspace
			case 27:	$.fn.colorbox.close();break;// escape
			case 37:	dprevious();return false;break;// left arrow
			case 38:	dup();return false;break;// up arrow
			case 39:	dnext();return false;break;// right arrow
			case 40:	ddown();return false;break;// down arrow
		}

		})
}


function pj_ins_idr(i_file,i_width,i_height,i_icon,i_url,idrcid) {
// inserts idrop activex resource files
	var exttxt = '';
	//axo = true;
	if (axo) {
		exttxt += '\n<object classid="' + idrcid + '" width="' + i_width + '" height="' + i_height + '">\n';
		exttxt += '  <param name="background" value="' + i_icon + '">\n';
		exttxt += '  <param name="proxyrect" value="0,0, ' + i_width + ', ' + i_height + '">\n';
		exttxt += '  <param name="griprect" value="0, 0, ' + i_width + ', ' + i_height + '">\n';
		//exttxt += '  <param name="package" value="' + i_file + '.xml"/>\n';
		exttxt += '  <param name="package" value="' + i_file + '"/>\n';
		exttxt += '  <param name="validate" value="1">\n';
//		exttxt += '  <a href="' + i_url + '">\n    <img src="' + i_icon + '" Title="This `i-drop` control is presently disabled -Click for help" width="' + i_width + '" height="' + i_height + '" >\n</a>';
//		exttxt += '  <a class="pj_icons pj_xml" Title="This `i-drop` control is presently disabled -Click for help" href="' + i_url + '">i-drop for AutoCAD and ArchiCAD\n\n</a>\n';
		exttxt += '  <a class="pj_icons pj_xml" Title="This `i-drop` control is presently disabled -Click for help" href="' + i_url + '"><img src="'+i_icon+'" title="This `i-drop` control is presently disabled -Click to find out more"  width="' + i_width + '" height="' + i_height + '"></a>\n';
		exttxt += '</object>\n';
	}
	else {
//		exttxt += '  <a class="pj_icons pj_xml" Title="This `i-drop` control is presently disabled -Click for help" href="' + i_url + '">i-drop for AutoCAD and ArchiCAD\n\n</a>\n';
		exttxt += '  <a class="pj_icons pj_xml" Title="This `i-drop` control is presently disabled -Click for help" href="' + i_url + '"></a>\n';
		//exttxt += '  <a class="pj_icons pj_xml" href="' + i_url + '">\n<img src="' + i_icon + '" Title="This `i-drop` control is presently disabled -Click for help" width="' + i_width + '" height="' + i_height + '" >\n</a>\n';
	}
	return exttxt;
}


function dlx(val) {
	//sets default cad value and stores in cookie
	defcad=val;
	createCookie('defcad',defcad,90)
	dsc=tlCAD[4].desc
	if (tlCAD[defcad].ext=='xml') {
		$('#cadDownx').text(tlCAD[defcad].desc)
		$('#cadDownx').attr('title','Use the i-drop control to the right of the yellow arrow')
		$('#cadDown').attr('href','javascript:helpf(\'help_02\')')
		$('#cadDownd').removeClass().addClass(tlCAD[defcad].ext+'Downd')
		$('#cadDown').attr('href','javascript:helpf(\'help_02\')')
		$('#cadDown').attr('target','')
	} else {
		$('#cadDownx').text('Download '+tlCAD[defcad].desc)
		$('#cadDownd').removeClass().addClass(tlCAD[defcad].ext+'Downd')
		$('#cadDown').attr('href',pic(thisz,tlCAD[defcad].ext))
		$('#cadDown').attr('target','_blank')
	}
	txt='Your preferred download format has been changed to '+dsc+'.<br>The main detail page will now show direct links to '+dsc+' files'
	pnot('Default settings changed',txt)
	
	newsel(1)
	

	
	
	
}

function xidrop() {
// idrop loader on tile mouseover
$('div.pj_tile').mouseenter(function() {
	thisid =this.id.replace('pj_tile','pj_idr')
	tmpd=thisid.split('_')[2]
	tmpdd=thisid.split('_')[3]
	$('#'+thisid).html(pj_ins_idr(pic(def[tmpd][tmpdd],'xml'),32,32,noidropicon,noidrophtml,idrcid))
})}

function qc() {
	//process quickcodes
	// read value from field
	qcs=document.search.quickcode.value
	// remove non-alpha, non numeric characters
	qcs=qcs.replace(/[\W]/g,'').replace(/_/g,'').toUpperCase()
	//break it apart from right to left
	ql=qcs.length
	specdet=qcs.substr(ql-2,2)
	// rewrite in correct form
	qca=qcs.substr(0,5)+'_'+qcs.substr(5,5)
	if (qca=='ENTER_QUICK') {
		location.href='#qc';
		pnoth('Invalid Quick Code','bqc','error')
	} else {
		document.search.quickcode.value=qca
		ql=ql-2
		sln=sels.length
		ok=1;
		for (xx=0;xx<sln;xx++) {
			// use this to go backwards
			x=sln-xx-1
			selv[x]=0;
			//find out how long this field is.
			k=eval('fd5_'+sels[x])
			xlen=k[1].length
			t1=qcs.substr(ql-xlen,xlen)
			ql=ql-xlen
			for (y in k) {
					if(k[y]==t1) {
						// Check that filter isn't a dead bunny
						if(FA[x]) {
							if (FA[x][parseInt(y)]!=-1) selv[x]=parseInt(y);
						} else {
							selv[x]=parseInt(y);
						}
					}
			}
			cont=(eval('fd3_'+sels[x])[selv[x]])
			if (!selv[x]) ok=-1
			$('#sel_n'+x+'-').html(cont)
		}
		newsel(1,parseInt(specdet))
	}
}
	//N|6|DF1_CBH|01
function cboxoff() {
 if(window.location.hash.substr(1,2)!='nn'&&window.location.hash.substr(1,2)!='qc'&& !cboff) {$.fn.colorbox.close()}
}

var cboffpoll = setInterval('cboxoff()', 1000);

