//-----------------tools.js----------------------//
tools = {

	init : function(){

	},

	isIE : navigator.userAgent.indexOf("MSIE") != -1 ? true : false,

	collectFormVals : function(form,method){
		var form_length = form.length;
		var qstring;
		for(i=0;i<form_length;i++){
			if(form.elements[i].name != '' && form.elements[i].name){
				if (i > 0) {
					qstring += "&" + form.elements[i].name + '=' + form.elements[i].value;
				}else{
					qstring = form.elements[i].name + '=' + form.elements[i].value;
				}
			}
		}

		return qstring;

	},

	getById : function(ele){
		return document.getElementById(ele) ? document.getElementById(ele) : false;
	},

	getByTag : function(ele){
		return document.getElementsByTagName(ele);
	},

	addEvent : function(element, type, handler){
		if (document.addEventListener) {
			element.addEventListener(type, handler, false);
		} else if (document.attachEvent) {
			element.attachEvent("on" + type, handler);
		} else {
			addEvent = new Function;
		}
	},

	createElement : function(pEle,nEle,attrib_arr,attval_arr,eleCont,visible){
		if(visible != 'hidden'){
			visible = 'visible';
		}

		var arr_length = attrib_arr.length;

		var parentEle = document.getElementById(pEle);
		var newEle 	= document.createElement(nEle);

		for (i = 0; i < arr_length; i++) {
			newEle.setAttribute(attrib_arr[i], attval_arr[i]);
		}

		try {
			newEle.style.visibility = visible;
			newEle.style.overflow = "hidden";
			newEle.innerHTML = eleCont;
		}catch(e){}
		
		try {
			parentEle.appendChild(newEle);
			return newEle;
		}catch(e){}


	},

	removeElement : function(pEle,remEle){
		var parentEle = document.getElementById(pEle);
		var removeEle	= document.getElementById(remEle);
		try{
			parentEle.removeChild(removeEle);
		}catch(e){}
	},

	centerEle : function(retEle){
		eleHeight = retEle.offsetHeight;
		eleWidth = retEle.offsetWidth;
		var windowH =document.documentElement.clientHeight
		var parentEleH = Math.round((windowH)/2);
		var parentEleW = Math.round(document.documentElement.offsetWidth/2);
		var vertical = Math.round(eleHeight/2);
		var horizontal = Math.round(eleWidth/2);
		var eleY = parentEleH - vertical;
		var eleX = parentEleW - horizontal;
		var yoffset =   document.documentElement.scrollTop || document.body.scrollTop;
		var realY = eleY + (yoffset);
		try {
			retEle.style.top = realY > 0 ? realY + "px" : "10px";
			retEle.style.left = eleX + "px";
		}catch(e){}
	},

	showTransBack : function(){

		var ele = tools.createElement('wrapper','div',['id'],['browser_back'],'');

		var isWebkit = navigator.userAgent.indexOf("Safari") != -1 ? 1 : 0;
		var isFirefox = navigator.userAgent.indexOf("Firefox") != -1 ? 1 : 0;

		var iheight;
		if (isWebkit == 1) {
			iheight = window.innerHeight || document.documentElement.clientHeight;
		}else if(isFirefox == 1){
			iheight = window.innerHeight || document.documentElement.clientHeight;
		}else{
			iheight = document.documentElement.clientHeight || document.body.clientHeight;
		}

		var yoffset;
		if (isWebkit == 1) {
			yoffset = document.body.scrollTop || document.documentElement.scrollTop;
		}else if(isFirefox == 1){
			yoffset = document.body.scrollTop || document.documentElement.scrollTop;
		}else{
			yoffset = yoffset = document.body.clientHeight || document.documentElement.scrollTop;
		}

		var fheight = document.documentElement.scrollHeight > iheight ? document.documentElement.scrollHeight : iheight;

		ele.style.height = fheight + yoffset +  "px";
		ele.style.width  = document.documentElement.offsetWidth + "px";


	},

	tooltip : function(e,menu,ani,type,target){
		type = type ? type : '';
		var timer = window.setInterval(function(){
			clearInterval(timer);
			timer = null;
			menu.style.visiblity = "visible";
			menu.style.position = 'absolute';
			menu.style.zIndex = '500000';

			var wrapper = tools.getById('wrapper');
			var subnav = tools.getById('sub_nav_outer');
			menu.style.left = site.dim.getSize(target).left + site.dim.getSize(wrapper).left + 20 + 'px';
			if(type != 'dates'){
				menu.style.top = site.dim.getSize(subnav).top + site.dim.getSize(target).top  - (site.dim.getSize(menu).h + site.dim.getSize(target).h) + 'px';
			}

			if(tools.isIE){
				menu.style.top = (site.dim.getSize(target).top + 20)  - (site.dim.getSize(menu).h + site.dim.getSize(target).h) + 'px';
			}
			
			if (!tools.isIE) {
				if (e.type == 'mouseover') {
					var poffset = (menu.offsetLeft + site.dim.getSize(menu).w - document.documentElement.offsetWidth) - 10;
					if (poffset > 0) {
						menu.style.left = site.dim.getSize(target).left + site.dim.getSize(wrapper).left - poffset + 'px';
					}
				}
			}

			/*menu.style.left = site.dim.getCoords(e).x - 10 + 'px';
            menu.style.top = site.dim.getCoords(e).y - site.dim.getSize(menu).h + site.dim.getCoords(e).yoffset - 15 + 'px';*/

			if (ani != false) {
				var eff = new animation();
				eff.animate(menu, "height", 0, admin.dim.getSize(menu).h);
				eff.animate(menu, "width", 0, admin.dim.getSize(menu).w);
			}
		}, 200)
	},

	striper : function(tid,color1,color2){
		var tableRows	= document.getElementsByTagName("TR")

		for(var i=0, node; node = tableRows[i++];) {
			node.style.backgroundColor = i%2 == 0 ? color1 : color2;
		}
	},

	highlightTools : function(){
		var rows = document.getElementsByTagName('LI');
		for (var i = 0, node; node = rows[i++];) {

			node.onmouseover = function(){
				alert(this.id)
			}
		}

	},

	regExCheck : function(strMatch,strItem){

		if(strItem){
			var pattern = new RegExp("(^|\\s)"+ strMatch +"(\\s|$)");
			return pattern.test(strItem.className);
		}

	},

	preloadImages : function(imgs) {
		if(document.images){
			if (!document.img_arr) {
				document.img_arr = new Array();
				var i;
				var img_arr_lng = document.img_arr.length;

				for (i = 0; i < imgs.length; i++) {
					if (imgs[i].indexOf("#") != 0) {
						document.img_arr[img_arr_lng] = new Image;
						document.img_arr[img_arr_lng++].src = imgs[i];
					}
				}
			}
		}
	},

	createEvent : function(findEle,func, type){
		for (var i=0, node; node = site.allEle[i++];) {
			(function() {
				if (tools.regExCheck(findEle, node)) {
					tools.addEvent(node, type, func);
				}
			})()

		}
	},

	getTarget : function(ev){
		var e = tools.ev(ev);
		var eleId = e.target ? e.target.id : e.srcElement.id;
		var eleClass = e.target ? e.target.className : e.srcElement.className;
		var eleinner = e.target ? e.target.innerHTML : e.srcElement.innerHTML;
		var eletitle = e.target ? e.target.title : e.srcElement.title;
		var elevalue = e.target ? e.target.value : e.srcElement.value;
		eleId = eleId.replace(/del_/,"");
		return {
			obj: e.target ? e.target : e.srcElement,
			objid: eleId,
			objclass: eleClass,
			objinner: eleinner,
			objtitle : eletitle,
			objval: elevalue
		};
	},

	getAttributes : function(ev){
		var e = tools.ev(ev);
		var eleId = e.target ? e.target : e.srcElement;
		var ele = eleId.className.split('-');

		return {
			section: ele[1],
			action: ele[0]
		};
	},

	getString : function(){
		var tempqstring	= location.search;
		var qstring		= tempqstring.replace("?","");

		return qstring;
	},

	getPage : function(){
		var tempqstring	= location.search;
		var qstring		= tempqstring.replace("?","");
		var params 		= qstring.split("&");
		if (params[0]) {
			var ret =  params[0];
		}
		return ret;
	},

	getView : function(){
		var tempqstring	= location.href;
		var params 		= tempqstring.split("/");
		if (params[5]) {
			var ret =  params[5];
		}
		return ret;
	},

	isNest: function(handler,ev){
		var e = tools.ev(ev);

		if(e.type != 'mouseout' && e.type != 'mouseover'){
			return false;
		}

		var reltg = e.relatedTarget ? e.relatedTarget : e.type == 'mouseout' ? e.toElement : e.fromElement;
		while (reltg && reltg != handler){
			reltg = reltg.parentNode;
		}
		return (reltg != handler);

	},

	getElementsByClass : function(searchClass, tag) {
		var returnArray = [];
		tag = tag || '*';
		var els = document.getElementsByTagName(tag);
		var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|$)');
		for (var i = 0; i < els.length; i++) {
			if ( pattern.test(els[i].className) ) {
				returnArray.push(els[i]);
			}
		}
		return returnArray;
	},

	curry : function(fn, scope) {
		var scope = scope || window;
		var args = Array.prototype.slice.call(arguments,2);
		alert(args)
		return function() {
			fn.apply(scope, args);
		};
	},

	exec : function(callback, args) {
		var name = this;
		callback.apply(name, args);
	},

	ev : function(ev){
		var e = tools.isIE ? window.event : ev;
		return e;
	},

	stopPropagation : function(ev){
		var e = tools.ev(ev);
		e.cancelBubble = true;
		e.returnValue = false;
	},

	extractnumber : function(value){
		var n = parseInt(value);
		return n == null || isNaN(n) ? 0 : n;
	}

}

//----------------dimensions.js-------------------//

var dimensions = function(){

	var dimensions = this;

	dimensions.getCoords = function(ev){
		var e = tools.ev(ev);
		var yoffset = document.documentElement.scrollTop || document.body.scrollTop;

		if (e) {
			var coords = {
				x: e.pageX ? e.pageX - window.pageXOffset : e.clientX,
				y: e.pageY ? e.pageY - window.pageYOffset : e.clientY,
				yoffset: yoffset
			}
		}else{
			var coords = {
				yoffset: yoffset
			}
		}
		return coords;
	}

	dimensions.getSize = function(ele){
		var dimensions = {
			w: ele.offsetWidth,
			h: ele.offsetHeight,
			left: tools.extractnumber(ele.offsetLeft),
			top: tools.extractnumber(ele.offsetTop)
		}
		return dimensions;
	}

}

//----------------cookie.js-------------------//

var cookie = function(key,exp,domain,path){
	var cookie =  this;

	cookie.read = function(){
		var value = document.cookie.match('(?:^|;)\\s*' + escape(cookie.key) + '=([^;]*)');
		return (value) ? decodeURIComponent(value[1]) : null;
	}

	cookie.write = function(value){
		value = encodeURIComponent(value);
		if(cookie.domain){
			value += '; domain=' + cookie.domain;
		}

		if (cookie.path) {
			value += '; path=' + cookie.path;
		}

		if (cookie.exp){
			var date = new Date();
			date.setTime(date.getTime() + cookie.exp * 24 * 60 * 60 * 1000);
			value += '; expires=' + date.toGMTString();
		}

		document.cookie = cookie.key + '=' + value;
		return this;
	}

	cookie.destroy = function(){
		cookie.write(cookie.key,'');
	}

	cookie.key 	  = key;
	cookie.domain = domain;
	cookie.path   = path;
	cookie.exp 	  = exp;

}


//-----------------dragger.js----------------------//

dragger = {

	start_x		: 0,
	start_y		: 0,
	x_offset 	: 0,
	y_offset 	: 0,
	dragEle 	: '',
	oldindex 	: 0,
	dim			: '',

	init : function(){
		dragger.dim = new dimensions();
		document.onmousedown = this.mousedown;
		document.onmouseup = this.mouseup;


	},

	mousedown : function(ev) {
		var e = tools.ev(ev);
		var target = e.target != null ? e.target : e.srcElement;

		if ((e.button == 1 && window.event != null || e.button == 0) && target.className.indexOf('drag') != -1) {
			//target = target.parentNode;
			dragger.start_x = dragger.dim.getCoords(e).x;
			dragger.start_y = dragger.dim.getCoords(e).y;

			dragger.x_offset = dragger.dim.getSize(target).left;
			dragger.y_offset = dragger.dim.getSize(target).top;

			dragger.oldindex = target.style.zIndex;
			target.style.zIndex = 1000010;

			dragger.dragEle = target;


			document.onmousemove = dragger.mousemove;

			document.body.focus();

			document.onselectstart = function () {
				return false;
			};

			target.ondragstart = function() {
				return false;
			};

			return false;
		}

	},

	mousemove : function(e){
		e = tools.ev(e);
		left = (dragger.x_offset + dragger.dim.getCoords(e).x - dragger.start_x)
		top  = (dragger.y_offset + dragger.dim.getCoords(e).y - dragger.start_y)

		dragger.dragEle.style.left = left +  'px';
		dragger.dragEle.style.top =  top + 'px';

	},

	mouseup : function(e){
		e = tools.ev(e);

		if (dragger.dragEle != null) {

			document.onmousemove = null;
			document.onselectstart = null;
			dragger.dragEle.ondragstart = null;
			dragger.dragEle = null;

		}
	}
}


//-----------------animation.js----------------------//

function animation(callbackFunction){

	var that = this;

	that.duration = 500;
	that.fps	  = 100;
	that.tick	  = 0;

	that.animate = function(ele, elm, start, target){
		var fps = Math.round(1000 / that.fps)
		var unit = (elm == 'opacity') ? '' : 'px';
		ele.style[elm] = start + unit;

		ele.style.overflow = "hidden";
		ele.style.visibility = "visible";
		var startTime = (new Date()).getTime();
		that.tmr = setInterval(function(){
			that.step(that.duration, startTime, target, unit, elm, ele, start)
		}, fps);
	}

	that.step = function(duration, startTime, target, unit, elm, ele, start){
		elapsedTime = (new Date()).getTime();
		if (elapsedTime > duration + startTime) {
			clearInterval(that.tmr);
			that.tmr = null;
			if (ele.style[elm] != target) {
				ele.style[elm] = target + unit;
			}
			ele.style.overflow = "hidden";
			that.callback();
		}else{
			var curTime = elapsedTime - startTime;
			var curPos = curTime / duration;
			var diff = (target - start);
			var ease = that.ease(curPos);
			//var val = ease * diff + start;
			var val = diff * ease + start
			that.increase(ele, elm, val, unit);
		}
	};

	that.ease = function(curPos){
		return (-(Math.cos(Math.PI * curPos) - 1) / 2);
	};

	that.increase = function(ele, elm, val, unit){
		ele.style[elm] = val + unit;
	};

	that.callback = callbackFunction || function(){};

}

//-----------------ajax.js----------------------//

function xhr(surl,postback){
	var xhr = this;

	xhr.call = function(qstring,method,message) {
		xmlHttp=xhr.GetXmlHttpObject()
		var url= urlCall + "?" + qstring
		xmlHttp.onreadystatechange = function(){
			if(xmlHttp.readyState == 1 || xmlHttp.readyState == 2 || xmlHttp.readyState == 3){
				if (!tools.getById("load")) {
					var loading = tools.createElement('wrapper', 'img', ['src','id','class'], ['/images/ajax-loader.gif','load','product_load'], '');
					if (loading) {
						loading.style.position = 'absolute';
						loading.style.zIndex = '1000000';
						tools.centerEle(loading);
					}
				}
			}

			if(xmlHttp.readyState == 4){
				tools.removeElement('wrapper','load')
				tools.exec(xhr.callback, [xmlHttp.responseText, xmlHttp.status, xmlHttp.responseXML]);
			}
		}
		if(method != 'post'){
			xmlHttp.open("GET", url, true);
			xmlHttp.send(null);
		}else{
			xmlHttp.open("POST",urlCall,true)
			xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
			xmlHttp.send(qstring)

		}
	}

	xhr.GetXmlHttpObject = function(){
		return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
	}

	var urlCall = surl;
	xhr.callback =  postback || function(){};

}

//-----------------ajax.js----------------------//

ajax = {
	xmlHttp : '',
	callback : '',

	callAjax : function(surl,qstring,method,postback) {
		ajax.xmlHttp=this.GetXmlHttpObject()
		qstring = qstring != '' ? '?' + qstring : qstring;
		var url= surl + qstring
		ajax.xmlHttp.onreadystatechange = function(){
			if(ajax.xmlHttp.readyState == 1 || ajax.xmlHttp.readyState == 2 || ajax.xmlHttp.readyState == 3){
				if (!tools.getById("load")) {
					var loading = tools.createElement('wrapper', 'img', ['src','id'], ['/images/ajax-loader.gif','load'], '');
					loading.style.position = 'absolute';
					loading.style.zIndex = '1000000';
					tools.centerEle(loading);
				}
			}

			if(ajax.xmlHttp.readyState == 4){
				tools.removeElement('wrapper','load')
				ajax.callback(ajax.xmlHttp.responseText,ajax.xmlHttp.status,ajax.xmlHttp.responseXML);
			}
		}
		if(method != 'post'){
			ajax.xmlHttp.open("GET", url, true);
			ajax.xmlHttp.send(null);
		}else{
			//qstring = encodeURIComponent(qstring)
			ajax.xmlHttp.open("POST",surl,true)
			ajax.xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
			ajax.xmlHttp.send(qstring)

		}

		ajax.callback =  postback || function(){};

	},

	cancel : function(){
		tools.removeElement('wrapper','load');
		delete ajax.xmlHttp;
		ajax.xmlHttp = null;
	},

	GetXmlHttpObject : function(){
		return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
	}


}


//-----------------dealer.js----------------------//

function dealer(cont){

	var dealer = this;
	dealer.geocoder='';
	dealer.options = {};
	dealer.container = cont;
	dealer.map = '';
	dealer.latlng = '';
	dealer.data = '';
	dealer.markers = {};
	dealer.i = 0;

	dealer.init = function(){
		dealer.geocoder = new google.maps.Geocoder();
		dealer.latlng = new google.maps.LatLng(0, 0);
		dealer.options = {
			zoom: 1,
			center: dealer.latlng,
			mapTypeId: google.maps.MapTypeId.ROADMAP
		};
		tools.getById('dealer_search').onclick = dealer.search;
	}

	dealer.load = function(){
		dealer.render();
	}

	dealer.search = function(){
		var address = tools.getById('address').value;
		dealer.getgeocode(address);

		for(i=0;i<dealer.i;i++){
			if(dealer.markers[i]){
				dealer.markers[i].set_map(null);
			}
		}

	}

	dealer.create = function(lat,lon,data){
		var marker = new google.maps.Marker({
			position: new google.maps.LatLng(parseFloat(lat),parseFloat(lon)),
			map: dealer.map
		});
		dealer.i++;
		dealer.markers[i] = marker;
		google.maps.event.addListener(marker, "click", function() {
			var infowindow = new google.maps.InfoWindow({
				content: data
			});
			infowindow.open(dealer.map,marker);
		});
		return marker;
	}

	dealer.toggle = function(){}

	dealer.getgeocode = function(address){
		if (dealer.geocoder) {
			dealer.geocoder.geocode({
				'address': address
			}, dealer.handle);
		}
	}

	dealer.handle = function(results,status){
		if(status == google.maps.GeocoderStatus.OK){
			/*dealer.map.set_center(results[0].geometry.location);
            dealer.map.set_zoom(10);*/
			/*var test = new google.maps.LatLngBounds(results[0].geometry.location);
            dealer.map.set_center(test.getCenter());
            dealer.map.fitBounds(test);*/
			var bounds = new google.maps.LatLngBounds(results[0].geometry.location);

			var prox = tools.getById('distance').value;
			var ajax = new xhr('/index.php');
			ajax.call('action=dealer_search&mode=results&coords=' + results[0].geometry.location + '&prox=' + prox,'post','Searching dealers...');
			ajax.callback = function(ret){
				var resp = eval("(" + ret + ")");
				var dealer_cnt = resp.response.length;
				for(i=0;i<dealer_cnt;i++){
					var lat = resp.response[i].values[0].lat;
					var lon = resp.response[i].values[0].lon;
					var data = '<strong>' + resp.response[i].values[0].name + '</strong><br/>' +  resp.response[i].values[0].address + '<br/>' + resp.response[i].values[0].city+ ' ' + resp.response[i].values[0].state + ', ' + resp.response[i].values[0].zip + '<br/>' ;

					if(resp.response[i].values[0].phone){
						data += resp.response[i].values[0].phone + '<br/>'
					}

					if(resp.response[i].values[0].email){
						data += resp.response[i].values[0].email + '<br/>'
					}

					if(resp.response[i].values[0].url){
						data += resp.response[i].values[0].url + '';
					}

					data += '<div class="clear"></div>';
					dealer.create(lat,lon,data);
					bounds.extend(new google.maps.LatLng(lat,lon));
					dealer.map.set_center(bounds.getCenter());
					dealer.map.fitBounds(bounds);
				}
			}
		}
	}

	dealer.render = function(){
		dealer.map = new google.maps.Map(dealer.container,dealer.options);
	}

}


//-----------------site.js----------------------//

site = {

	allEle : '',
	id_arr : [],
	height_arr : [],
	hide_arr : [],
	view : '',
	history: [],
	hist_cnt : -1,
	back : false,
	start_height:'',
	dim:'',
	descrips: '',
	current_address : 'fedex_bill_address',
	timer : '',

	init : function(){
		this.allEle = tools.getByTag('*');
		this.compileFunctions();
		this.compileVariables();
		
		if(location.href.indexOf('shop') == -1){
			var ajax = new xhr('/index.php');
			ajax.call('action=quick_descrip&mode=results&type=product','post','Searching...');
			ajax.callback = function(ret){
				try{
				if (ret) {
					site.descrips = eval("(" + ret + ")");
				}
				}catch(e){}
			}
		}
		
		
	},

	compileFunctions : function(){
		tools.createEvent('rollover',site.rollover, 'mouseover');
		tools.createEvent('rollover',site.rollover, 'mouseout');
		tools.createEvent('cat_product',site._popup, 'click');
		tools.createEvent('cat_img_product',site._popup, 'click');
		tools.createEvent('close_table',site.collapse,'click');
		tools.createEvent('descrip',site.showdescrip,'mouseover');
		tools.createEvent('descrip',site.showdescrip,'mouseout');
		tools.createEvent('factory_tour',site.factory_tour,'click');
		tools.createEvent('anglers_album_pop',site.anglers_album,'click');

		if(tools.getById('model_btn') && tools.getById('series_btn')){
			tools.addEvent(tools.getById('model_btn'), 'click', site._search);
			tools.addEvent(tools.getById('series_btn'), 'click', site._search);
		}

		if(tools.getById('state') && tools.getById('providence')){
			tools.addEvent(tools.getById('state'), 'change', site._dealer_search_st);
			tools.addEvent(tools.getById('providence'), 'change', site._dealer_search_st);
			tools.addEvent(tools.getById('int_country'), 'change', site._dealer_search_st);
		}
		
		if(tools.getById('purchase_date')){
			tools.addEvent(tools.getById('purchase_date'),'keypress',site.validate_date);
		}
	},

	compileVariables : function(){
		site.view = tools.getView() ? tools.getView() : 'admin';
		var class_arr = tools.getElementsByClass('close_table');
		var class_arr_len = class_arr.length;

		for(i=0;i<class_arr_len;i++){
			site.id_arr[i] = class_arr[i].id.replace(/_close/,'_table');
			if (tools.getById(site.id_arr[i]).offsetHeight > 0) {
				site.height_arr[i] = tools.getById(site.id_arr[i]).offsetHeight;
			}
		}
	},
	
	validate_date : function(ev){
		var e = tools.ev(ev);
		var ele = e.target || e.srcElement;
		
		var holder = '';
		
		holder = ele.value.replace(/[-\.]+/, '/');
		holder = holder.replace(/[\(\)]+/, '');
		holder = holder.replace(/\/20(\d+)+/, '/$1');
		ele.value = holder;
		
		if(site.check_int(holder)){
			tools.getById('date_msg').innerHTML = 'Please us only numerical date';
			tools.getById('date_msg').className = 'highlighted';
		}else{
			tools.getById('date_msg').innerHTML = '';
		}
		
		if(ele.value.length > 8){
			tools.getById('date_msg').innerHTML = 'Please us only last two digit of year value';
			tools.getById('date_msg').className = 'highlighted';
		}
		
	},
	
	check_int : function(str) {
      return /[a-zA-Z]+/.test(str);
	},

	_popup : function(ev){
		e = tools.ev(ev);
		var shref;
		if(site.back){
			var i = site.hist_cnt - 1;
			shref = site.history[i];
		}else{
			var lhref;
			if(!tools.isIE){
				lhref = e.target.href  || e.target.parentNode.parentNode.href || e.target.parentNode.href;
			}else{
				thref = e.srcElement.href;
				lhref = thref.indexOf('.jpg') == -1 ? thref : e.srcElement.parentNode.parentNode.href || e.srcElement.parentNode.href;

			}
			shref = lhref.replace(/\/products\//,'/qproducts/');
		}

		if(!tools.getById('product_popover')){
			tools.showTransBack();
		}
		ajax.callAjax(shref,'','get');
		ajax.callback = function(ret){
			if(ret == ''){
				window.location = lhref;
			}
			var browser;
			if(!site.back){
				if(!tools.getById('product_popover')){
					browser = tools.createElement('wrapper', 'div', ['id'], ['product_popover'], ret, 'visible');
					tools.centerEle(browser);
					var anime = new animation();
					anime.animate(browser,'left',-(browser.offsetWidth),browser.offsetLeft);
					//anime.animate(browser,'width',0,browser.offsetWidth);
					site.history.push(shref);
					site.hist_cnt++;
					MagicZoom_findZooms();
				}else{
					browser = tools.getById('product_popover');
					site.history.push(shref);
					site.hist_cnt++;
					browser.innerHTML = ret;
					MagicZoom_findZooms();

				}
			}else{
				browser = tools.getById('product_popover');
				site.history.pop();
				site.hist_cnt--;
				browser.innerHTML = ret;
				site.back = false;
				MagicZoom_findZooms();
			}
            
			tools.createEvent('cat_product',site._popup, 'click');

			if(tools.getById('back')){
				if(site.hist_cnt > 0){
					tools.getById('back').style.display = 'block'
				}else{
					tools.getById('back').style.display = 'none'
				}
			}

			tools.getById('close').onclick = function(){
				site.history = [];
				site.back = false;
				site.hist_cnt = -1;
				ajax.cancel();
				tools.removeElement('wrapper', 'product_popover');
				tools.removeElement('wrapper', 'browser_back');
			}

			tools.getById('back').onclick =  site._back;

			MagicZoom_findZooms();
			for(i=0;i<site.allEle.length;i++){
				if(site.allEle[i].className == 'MagicZoomPup'){
					site.allEle[i].style.top = '-1000px'
				}
			}


		}
		return false;
	},

	_dealer_search_st : function(ev){
		var e = tools.ev(ev);
		if(e){
			var tar = e.target || e.srcElement;
			var input = tar.value;
			var type = tar.id;

			var ajax = new xhr('/index.php');
			ajax.call('action=dealer_search_by_state&mode=results&keyword=' + unescape(input) + '&type=' + type,'post','Searching...');
			ajax.callback = function(ret){
				var conts = '<span class="float_left bold dealer_res">Dealers located in: "' + input + '"</span> <img class="float_right close_deal pad_left pad_right" id="close_deal" src="/images/icons/close.gif" alt="close" /><span class="float_right pad_left pad_right" id="print">Print Dealer List</span><div class="clear margin_bottom"></div>';
				var srch = tools.createElement('wrapper', 'div', ['id'], ['dealer_popover'], '', 'visible');
				tools.centerEle(srch);
				var cls = tools.createElement('dealer_popover', 'span', ['id'], ['close_dealer'], conts, 'visible');
				var srch_inner = tools.createElement('dealer_popover', 'div', ['id'], ['dealer_popover_inner'], ret, 'visible');
				srch_inner.style.overflow = "auto";

				tools.addEvent(tools.getById('close_deal'),'click',function(){
					tools.removeElement('wrapper','dealer_popover');
				})
				
				tools.getById('print').style.color = "#7F3611";
				tools.getById('print').style.fontWeight = "bold";
				tools.getById('print').style.cursor = "pointer";

				tools.addEvent(tools.getById('print'),'click',function(){
					var test = window.open("","","width=10,height=10,scrollbars=yes,resizable=yes")
					
					var html = '<html>';
					html += '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"';
    				html += '"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">';
					html += '<html xmlns="http://www.w3.org/1999/xhtml">';
	    			html += '<head>';
					html += '<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />';
					html += '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';
					html += '<link rel="stylesheet" type="text/css" href="/css/master.css" />';
					html += '<link rel="stylesheet" type="text/css" href="/css/print.css" />';
					html += '<script type="text/javascript">window.onload = function(){timer = window.setInterval(function(){window.clearInterval(timer);timer=null;window.print();/*window.close()*/;},1000)}</script>';
					html += '</head>';
					html += '<body>';
					html += tools.getById('dealer_popover_inner').innerHTML;
					html += '</body>';
					html += '</html>';
					
					test.document.open()
					test.document.write(html)
					test.document.close()
				})
			}
		}
	},

	_search : function(ev){
		if(tools.getById('search_popover')){
			tools.removeElement('wrapper','search_popover');
		}

		var e = tools.ev(ev);
		var type;
		var input;
		if(e){
			var tar = e.target || e.srcElement;
			var input_nm = tar.id.replace(/_btn/,'_input');
			var input_obj = tools.getById(input_nm);

			type = tar.id.replace(/_btn/,'');
			input = input_obj.value;

			window.location = '#search-' + type + '|' + input;
		}else{
			var loc = String(window.location);
			var srch_str = loc.split('#')[1].split('-')[1].split('|');

			type = srch_str[0];
			input = srch_str[1];
		}

		var ajax = new xhr('/index.php');
		ajax.call('action=search&mode=results&keyword=' + unescape(input) + '&type=' + type,'post','Searching...');
		ajax.callback = function(ret){
			var conts = '<span class="float_left bold">Search results for: "' + input + '"</span><img  class="float_right" src="/images/icons/close.gif" alt="close" /><div class="clear margin_bottom"></div>';

			var srch = tools.createElement('wrapper', 'div', ['id'], ['search_popover'], '', 'visible');
			tools.centerEle(srch);
			var cls = tools.createElement('search_popover', 'span', ['id'], ['close_search'], conts, 'visible');
			var srch_inner = tools.createElement('search_popover', 'div', ['id'], ['search_inner'], ret, 'visible');

			srch_inner.style.overflow = 'auto';

			if(Number(srch_inner.scrollHeight) > Number(srch_inner.offsetHeight)){
				tools.getById('search_table').style.width = '420px';
			}

			tools.addEvent(cls,'click',function(){
				tools.removeElement('wrapper','search_popover');
				window.location = '#';
			})

			site.striper();
		}
	},

	_highlight_search : function(){
		var loc = String(window.location);
		var search_string = loc.split("#")[1].split('-')[1];

		var rows = document.getElementsByTagName('TR');

		if(rows.length > 0){
			for (var i=0, row; row = rows[i++];) {
				if(row.innerHTML.indexOf(search_string) != -1){
					row.style.backgroundColor = '#c9c2af';
					row.id = 'search_val';
					self.scrollTo(0,site.dim);
				}
			}
		}
	},

	_back : function(){
		site.back = true;
		site._popup();
	},

	rollover : function(ev){
		var e = tools.ev(ev);
		e = e.target || e.srcElement;
		var file = String(e.src);
		try {
			var path_pieces = file.split('/');
			var path_len = path_pieces.length;
			file = path_pieces[(path_len - 1)];
			var ext = file.split('.')[1];
			
			e.src = e.src.indexOf('_on') != -1 ? e.src.replace('_on.' + ext, '.' + ext) : e.src.replace('.' + ext, '_on.' + ext);
		}catch(e){}
	},

	scrollMe : function(){
		//speed, dragwidth, trackWidth, trackObj, upObj, downObj, dragObj, contentMaskObj, contentObj
		myScroll = new ScrollObj(10,109,410,"track","left","right","drag","mask","slider_content");
	},

	resizehome : function(){
		var ele = tools.getById('home_background');
		var ratio = document.body.offsetWidth / 1150;


		//tools.getById('home_wrapper').style.height = fheight + "px";
		ele.style.width  = 1150 * ratio + "px";
		ele.style.height = 932 * ratio + "px";

	},

	evenup : function(detail){
		var type = detail ? 'detail_' : '';

		var cleft_nm = type + 'content_left';
		var cright_nm = type + 'content_right';

		var cleft = tools.getById(cleft_nm);
		var cright = tools.getById(cright_nm);

		if(Number(cleft.offsetHeight) > Number(cright.offsetHeight)){
			cleft.style.borderRight = 'solid 1px #bdb4a0';
			cright.style.borderLeft = 'none';
		}else{
			cleft.style.borderRight = 'none';
			cright.style.borderLeft = 'solid 1px #bdb4a0';
		}

	},

	striper : function(){
		var tables = document.getElementsByTagName('TABLE');

		if(tables.length > 0){
			for (var i=0, table; table = tables[i++];) {
				(function() {
					var rows = table.getElementsByTagName('TR');
					for (var e=0, row; row = rows[e++];){
						(function() {
							var prev_color = row.style.backgroundColor;

							if(row.className != 'header'){
								row.onmouseover = function(){
									if(this.id != 'search_val'){
										this.style.backgroundColor = '#DFD7C3';
									}
								}

								row.onmouseout = function(){
									if(this.id != 'search_val'){
										this.style.backgroundColor = prev_color;
									}
								}
							}
						})();
					}
				})();
			}
		}
	},

	collapse : function(ev){
		var e = tools.ev(ev);
		var clele = tools.isIE ? e.srcElement : e.target;
		var eleId = tools.isIE ? e.srcElement.id.replace(/_close/,'_table') : e.target.id.replace(/_close/,'_table');
		var ele = tools.getById(eleId);
		var a = site.id_arr.indexOf(eleId);
		var height = site.height_arr[a];

		var start = site.dim.getSize(ele).h > 0 ? height : 0;
		var end = site.dim.getSize(ele).h > 0 ? 0 : height;

		site.hide_arr[a] = end != 0 ? 'show' : 'hide';

		var memory = new cookie(eleId,1000);
		memory.write(site.hide_arr[a]);

		var eff = new animation();
		eff.animate(ele, "height", start, end);
		eff.callback = function(){
			clele.src = site.hide_arr[a] == 'show' ? clele.src = '/images/icons/close.gif' : clele.src = '/images/icons/open.gif';
			if (site.dim.getSize(ele).h != 0) {
				ele.style.height = 'auto';
			}
			site.compileVariables(true);
		}
	},

	showdescrip : function(ev){
		var e = tools.ev(ev);
		var eleId = tools.isIE ? e.srcElement.parentNode.parentNode.id : e.target.parentNode.parentNode.id;
		var over = e.type == 'mouseover' ? 1 : 0;
		var par = !tools.isIE ? 'wrapper' : 'sub_nav'

		if(site.descrips[eleId]){
			if(over){
				
				var ele = tools.createElement(par, 'div', ['id'], ['descrip_outer'],'', 'visible');
				tools.createElement('descrip_outer', 'div', ['id'], ['descrips'],site.descrips[eleId], 'visible');
				tools.createElement('descrip_outer', 'div', ['id'], ['descrip_arrow'],'', 'visible');

				/*if(ie){
					var target = tools.getById(eleId);
					var wrapper = tools.getById('wrapper');
					var subnav = tools.getById('sub_nav_outer');
					ele.style.position = 'absolute';
					ele.style.zIndex = '500000';
					ele.style.left = site.dim.getSize(target).left + site.dim.getSize(subnav).left + 20 + 'px';
					ele.style.top = site.dim.getSize(target).top - 40;
					//ele.style.top = site.dim.getSize(subnav).top + site.dim.getSize(target).top  - (site.dim.getSize(ele).h + site.dim.getSize(target).h + 20) + 'px';
				}else{*/
					tools.tooltip(e, ele, false,'',tools.getById(eleId));
				//}
			}else{
				tools.removeElement(par,'descrip_outer');
			}
		}

	},


	factory_tour : function(){
		var conts = '<img class="float_right close_deal pad_left pad_right" id="close_deal" src="/images/icons/close.gif" alt="close" /><div class="clear margin_bottom"></div>';
		var holder = tools.getById('wrapper') ? 'wrapper' : 'home_wrapper';
		var ele = tools.createElement(holder, 'div', ['id', 'class'], ['factory_tour_outer','drag drag_bar'],conts, 'visible');
		tools.createElement('factory_tour_outer', 'div', ['id'], ['factory_tour_inner'],'', 'visible');
		tools.createElement('factory_tour_inner', 'div', ['id'], ['factory_tour_flash'],'Loading Tour. . .', 'visible');
		tools.centerEle(ele);

		site.addEv(tools.getById('close_deal'),'click',function(){
			tools.removeElement(holder,'factory_tour_outer');
		})

		var page = '';
		if(location.href.indexOf('fly_fishing') != -1){
			page = '_fly';
		}
		var ran = Math.floor(Math.random()*99999)
		swfobject.embedSWF("http://www.stcroixrods.com.php5-4.dfw1-1.websitetestlink.com/flash/factorytour/loader_2" + page + ".swf?" + ran, "factory_tour_flash", "480", "580", "9.0.0", "expressInstall.swf");

		dragger.init();
	},

	loading : function(){
		var loading = tools.createElement('wrapper', 'img', ['src','id'], ['/images/ajax-loader.gif','load'], '');
	},

	anglers_album : function(){
		var ajax = new xhr('/includes/anglers_album/form.php');
		ajax.call('','post','Loading Submission Form...');
		ajax.callback = function(ret){
			var conts = '<img class="float_right close_deal pad_left pad_right" id="close_deal" src="/images/icons/close.gif" alt="close" /><div class="clear margin_bottom"></div>';
			var ele = tools.createElement('wrapper', 'div', ['id'], ['anglers_album_form_outer'],conts, 'visible');
			var inner = tools.createElement('anglers_album_form_outer', 'div', ['id'], ['anglers_album_form_inner'],ret, 'visible');
			tools.centerEle(ele);

			site.addEv(tools.getById('submit_form'),'click', site.handle_anglers_album);

			inner.style.overflow = 'scroll';

			site.addEv(tools.getById('close_deal'),'click',function(){
				tools.removeElement('wrapper','anglers_album_form_outer');
			})
		}
	},

	fields : [],
	anglers_history : [],

	handle_anglers_album : function(){
		var form = tools.getById('trophy');
		var valid = site.validate_anglers_album(form)
		//valid = true;
		
		if(valid){
			site.fields = tools.collectFormVals(form, 'post');

			var ajax = new xhr('/includes/anglers_album/upload.php');
			ajax.call('','post','Loading Submission Form...');
			ajax.callback = function(ret){
				site.history.push(tools.getById('anglers_album_form_inner').innerHTML);
				tools.getById('anglers_album_form_inner').innerHTML = ret
			}
		}
	},

	insert_anglers_album : function(file){
		var qstring = site.fields.replace(/undefined&/, '');
		qstring = qstring.replace(/req_/g, '');

		var ajax = new xhr('/includes/anglers_album/insert.php');
		ajax.call(qstring + '&album_img=' + file,'post','Loading Submission Form...');
		ajax.callback = function(ret){
			//alert(ret);
		}
	},

	validate_anglers_album : function(form){
		var not_req = ['location', 'description', 'lure', 'date'];
		var err_arr = [];
		var form_length = form.length;
		var msg = '*The fields highlighted above need to be filled out or corrected.';
		for(i=0;i<form_length;i++){

			if(not_req.indexOf(form.elements[i].name) == -1){
				if(form.elements[i].value == ''){
					form.elements[i].style.borderColor = '#FF9933';
					form.elements[i].style.backgroundColor = '#fefefe';
					err_arr.push(form.elements[i].name);
				}else{
					if(form.elements[i].type && form.elements[i].type != 'submit'){
						form.elements[i].style.borderColor = '#AAAAAA';
					}
				}
			}
			
			if(form.elements[i].name == 'req_waiver_0' && form.elements[i].checked != true){
				form.elements[i].style.borderColor = '#FF9933';
				form.elements[i].style.backgroundColor = '#fefefe';
				err_arr.push(form.elements[i].name);
				msg = '*You need to accept the terms of service to submit a picture.'
			}
		}

		if(err_arr.length > 0){
			tools.getById('msg').innerHTML = msg;
			return false;
		}else{
			tools.getById('msg').innerHTML = '';
			return true;
		}
	},

	fedex_form : function(order_id, which){
		//if (!tools.isIE) {
			var ajax = new xhr('/shop/index.php');
			ajax.call('p=fedex&orderid=' + order_id + '&which=' + which, 'post', 'Loading...');
			ajax.callback = function(ret){
				var conts = '<span class="float_left bold dealer_res">Fedex Warranty</span> <img class="float_right close_deal pad_left pad_right" id="close_deal" src="/images/icons/close.gif" alt="close" /><div class="clear margin_bottom"></div>';
				var ele = tools.createElement('wrapper', 'div', ['id'], ['fedex_outer'], conts, 'visible');
				var inner = tools.createElement('fedex_outer', 'div', ['id'], ['fedex_inner'], ret, 'visible');
				tools.centerEle(ele);
				inner.style.overflow = "auto";
				site.addEv(tools.getById('wsrl_submit'), 'click', site.fedex_form_submit)
				
				site.addEv(tools.getById('wsgc_submit'), 'click', site.fedex_form_submit);
				
				tools.getById('fedex_address').onchange = function(){
					var aele = ['fedex_bill_address', 'fedex_ship_address'];
					var eleid = this.value;
					site.current_address = this.value;
					for (i = 0; i < aele.length; i++) {
						tools.getById(aele[i]).style.display = aele[i] == this.value ? 'block' : 'none';
					}
					
					
				}
				
				site.addEv(tools.getById('dates_avail'), 'click', site.getDates)
				site.addEv(tools.getById('pickupdate'), 'mousedown', site.getDates)
				
				site.addEv(tools.getById('isRe'), 'click', function(){
					if (tools.getById('isRe').checked === true) {
						tools.getById('isRes').style.display = 'block';
					}
					else {
						tools.getById('isRes').style.display = 'none';
					}
				})
				
				
				site.addEv(tools.getById('close_deal'), 'click', function(){
					tools.removeElement('wrapper', 'fedex_outer');
					tools.removeElement('wrapper', 'fedex_return_info');
				})
				
				site.addEv(tools.getById('wsrl'), 'click', function(){
					site.fedex_form(order_id);
				})
				
				site.addEv(tools.getById('wsgc'), 'click', function(){
					site.fedex_form(order_id);
				})
			}
		/*}else{
			window.open('/shop/index.php?p=fedex&orderid=' + order_id + '&which=' + which, '', 'width=630,height=610')
		}*/
	},

	fedex_form_submit : function(ev){
		var e = tools.ev(ev);
		
		var type_cross = !tools.isIE ? e.target.id : e.srcElement.id;
		var type = type_cross.split('_')[0];
		var form = tools.getById('fedex_form');
		qstring = tools.collectFormVals(form, 'get');
		
		valid = site.fedex_form_validate(form)

		if(valid){
			var ajax = new xhr('/shop/fedex/' + type + '.php');
			ajax.call(qstring + '&form=' + site.current_address,'post','Sending...');
			ajax.callback = function(ret){
				var conts = '<img class="float_right close_deal pad_left pad_right" id="close_fed_det" src="/images/icons/close.gif" alt="close" /><div class="clear margin_bottom"></div>';
				var ele = tools.createElement('wrapper', 'div', ['id'], ['fedex_return_info'], conts, 'visible');
				tools.createElement('fedex_return_info', 'div', ['id'], ['fedex_return_info_inner'], ret, 'visible');
			
				tools.centerEle(ele);
				
				tools.removeElement('wrapper', 'fedex_outer');

				site.addEv(tools.getById('close_fed_det'), 'click', function(){
					tools.removeElement('wrapper', 'fedex_return_info');
				})
			}
		}else{
			return false;
		}
	},

	fedex_form_validate : function(form){
		var not_req = ['billing_address[company]','billing_address[address2]','shipping_address[company]','shipping_address[address2]', 'submit', '', 'residentialaddress'];
		var err_arr = [];
		var form_length = form.length;
		for(i=0;i<form_length;i++){
			
			if(not_req.indexOf(form.elements[i].name) == -1){
				if(form.elements[i].value == ''){
					form.elements[i].style.borderColor = '#FF9933';
					form.elements[i].style.backgroundColor = '#fefefe';
					err_arr.push(form.elements[i].name);
				}else{
					form.elements[i].style.borderWidth = '1px';
					form.elements[i].style.borderColor = '#AAAAAA';
					form.elements[i].style.backgroundColor = '#ffffff';
				}
			}

			if(form.elements[i].name == 'billing_address[phone]' || form.elements[i].name == 'shipping_address[phone]'){
				form.elements[i].value = form.elements[i].value.replace(/[^0-9]/g, '');
			}

			if(form.elements[i].name == 'shipdate'){
				form.elements[i].value = form.elements[i].value.replace(/[^0-9\/]/g, '/');
			}

			if(form.elements[i].name == 'billing_address[email]' || form.elements[i].name == 'shipping_address[email]'){
				var pattern = new RegExp("^(.*)\@(.*)\\.(.*)$");
				valid = pattern.test(form.elements[i].value);
				if(!valid){
					form.elements[i].style.borderColor = '#FF9933';
					form.elements[i].style.backgroundColor = '#fefefe';
					err_arr.push(form.elements[i].name);
				}else{
					form.elements[i].style.borderColor = '#AAAAAA';
					form.elements[i].style.backgroundColor = '#ffffff';
				}
			}
		}

		if(err_arr.length > 0){
			tools.getById('msg').innerHTML = '*The fields highlighted below need to be filled out or corrected.';
			return false;
		}else{
			tools.getById('msg').innerHTML = '';
			return true;
		}

	},

	getDates : function(ev){
		var e = tools.ev(ev);
		var eleId = tools.isIE ? e.srcElement.id : e.target.id;
		var ajax = new xhr('/shop/fedex/dates_avail.php');
		ajax.call('','post','Loading...');
		ajax.callback = function(ret){
			var conts = '<div class="border_bottom" style="padding:3px; background-color:#eeeeee"><span class="float_left bold dealer_res">Dates Available</span> <img class="float_right close_deal pad_left pad_right" id="close_dates" src="/images/icons/close.gif" alt="close" /><div class="clear margin_bottom"></div></div>';
			var ele = tools.createElement('wrapper', 'div', ['id'], ['dates_cont'], conts, 'hidden');
			var inner = tools.createElement('dates_cont', 'div', ['id'], ['dates_cont_inner'], ret, 'hidden');

			if (!tools.isIE) {
				tools.tooltip(e, ele, false, 'dates', tools.getById(eleId));
				ele.style.top = tools.getById(eleId).offsetTop + 220 + 'px';
			}else{
				tools.getById("pickupdate").style.position = "relative";
				ele.style.top = tools.getById("pickupdate").offsetTop + (ele.offsetHeight/2) + 10 + "px";
				ele.style.left = tools.getById("pickupdate").offsetLeft + ele.offsetWidth + "px";
			}
			ele.style.visibility = 'visible';
			inner.style.visibility = 'visible';

			site.addEv(tools.getById('close_dates'),'click',function(){
				tools.removeElement('wrapper','dates_cont');
			});

			var dates = inner.childNodes;

			for (var i=0, node; node = dates[i++];) {

				site.addEv(node,'click',function(ev){
					e = tools.ev(e);
					tools.getById('pickupdate').value = !tools.isIE ? this.className : e.srcElement.className;
					tools.removeElement('wrapper','dates_cont');
				});

				/*site.addEv(node,'mouseover',function(){
					this.style.backgroundColor = '#D5CAB5';
				});

				site.addEv(node,'mouseout',function(){
					this.style.backgroundColor = '#ffffff';
				});*/

			}


		}
	},

	tick : 1,
	len : 6,
	opts : '',

	store_home_rotate : function(){
		var links = ['/shop/catalog/Priority_Fishing-17-1.html', '/shop/catalog/Sweatshirts-16-1.html', '/shop/catalog/Sweatshirts-16-1.html', '/shop/catalog/Womens-3-1.html', '/shop/catalog/Jackets-15-1.html', '/shop/catalog/Sport_Shirts-13-1.html']
		site.opts = tools.getById('home_page_links').getElementsByTagName('A');
		var opt_len = site.opts.length;

		site.timer = window.setInterval(function(){
			site.tick++;
			site.tick = site.tick > site.len ? 1 : site.tick;

			var ran = Math.floor(Math.random()*99999)
			tools.getById('store_home_img').src = "/shop/content/skins/stcroix/images/billboards/billboard_" + site.tick + ".jpg?" + ran;

			tools.getById('store_home_link').href = links[site.tick - 1];
			tools.getById(site.tick).className = 'over';
			if(site.tick == 1){
				tools.getById(site.len).className = '';
			}else{
				tools.getById(site.tick - 1).className = '';
			}

		},5000)

		for(i=0;i<opt_len;i++){
			site.opts[i].onclick = function(){
				clearInterval(site.timer);
				site.timer = null;
				var ran = Math.floor(Math.random()*99999)

				tools.getById(this.id).className = 'over';
				tools.getById('store_home_link').href = links[this.id - 1];
				tools.getById('store_home_img').src = "/shop/content/skins/stcroix/images/billboards/billboard_" + this.id + ".jpg?" + ran;

				for(i=0;i<site.opts.length;i++){
					if(site.opts[i].id != this.id){
						site.opts[i].className = '';
					}
				}
			}
		}
	},

	addEv : function(target, event, func){
		if(target){
			tools.addEvent(target, event, func);
		}
	},

	dominit : function(){
		site.dim = new dimensions;
		site.init();
		tools.init();

		if(tools.getById('mask')){
			site.scrollMe();
		}

		if(tools.getById('home_background')){
			site.resizehome();
		}

		if(tools.getById('store_home_img')){
			site.store_home_rotate();
		}

		if(tools.getById('content_left')){
			site.evenup(false);
		}else if(tools.getById('detail_content_left')){
			site.evenup(true);
		}

		if(tools.getById('map_cont')){
			var map = tools.getById('map_cont');
			var deal = new dealer(map);
			deal.init();
			deal.render();
		}

		site.striper();

		var loc = String(window.location);
		if(loc.indexOf('#search') != -1){
			site._search();
		}

		if(loc.indexOf('#model') != -1){
			site._highlight_search();
		}
	}


}

var domload = (function(i) {
	var u =navigator.userAgent;var e=/*@cc_on!@*/false; var st =
	setTimeout;if(/webkit/i.test(u)){
		st(function(){
			var dr=document.readyState;
			if(dr=="loaded"||dr=="complete"){
				i()
			}else{
				st(arguments.callee,10);
			}
		},10);
	}
	else if((/mozilla/i.test(u)&&!/(compati)/.test(u)) || (/opera/i.test(u))){
		document.addEventListener("DOMContentLoaded",i,false);
	} else if(e){
		(
			function(){
				var t=document.createElement('doc:rdy');try{
					t.doScroll('left');
					i();t=null;
				}catch(e){
					st(arguments.callee,0);
				}
			})();
	}else{
		window.onload=i;
	}
})(site.dominit);


/***********************************************
 * Unobtrusive Image Preloader script - by essential
 * This notice MUST stay intact for use
 ***********************************************/
var preload, myImages;
var img, iLen, x, y;
var isImage = [ {
	iSrc : [],
	iPath : []
}];

preload = (function() {
	myImages = function() {
		if ( document.images ) {
			img = ( document.getElementsByTagName ) ? document.getElementsByTagName("img") : document.images;
			iLen = img.length;
			try {
				for ( x = 0; x < iLen; x++ ) {
					isImage[0].iSrc[x] = new Image();
					for ( y in isImage[0].iSrc ) {
						isImage[0].iPath[y] = img[y].src;
					}
					isImage[0].iSrc[x].src = isImage[0].iPath[x];
					img[x].src = isImage[0].iSrc[x].src;
				} return true;
			}
			catch( e ) {}
		} return false;
	};
	return {
		myImages : myImages
	};
}());


/*window.onload = function(){
	preload.myImages;
}*/


window.onresize = function(){
	if(tools.getById('browser_back')){
		tools.removeElement('wrapper','browser_back');
		tools.showTransBack();
		tools.centerEle(tools.getById('product_popover'));
	}

	if(tools.getById('home_background')){
		site.resizehome();
	}
}

if (!Array.prototype.indexOf) {
    Array.prototype.indexOf = function(elt /*, from*/){
		var len = this.length;

		var from = Number(arguments[1]) || 0;
		from = (from < 0) ? Math.ceil(from) : Math.floor(from);
		if (from < 0)
			from += len;

		for (; from < len; from++) {
			if (from in this &&
				this[from] === elt)
				return from;
		}
		return -1;
    };
}


Function.prototype.partial = function(){
    var fn = this, args = Array.prototype.slice.call(arguments);
    return function(){
		var arg = 0;
		for ( var i = 0; i < args.length && arg < arguments.length; i++ )
			if ( args[i] === undefined )
				args[i] = arguments[arg++];
		return fn.apply(this, args);
    };
};