
var w = window;
var d = document;
var location_hash = new Function("return window.location.hash.substring(1)");
var IE = d.all && !w.opera ? true : false;

var featured = function() {
    if (!d.getElementById('featured_products')) return;
    var random_box = d.getElementById('featured_products');
    var dls = random_box.getElementsByTagName('dl');
    var i = dls.length;
    var r = Math.floor(Math.random()*i);
    while (i--) {
        dl = dls[i];
        dl.style.display = i == r ? 'block' : 'none';
    };
};

var target_blank = function() {
    if (!d.getElementsByTagName('a')) return;
    var lns	= d.getElementsByTagName('a'),
    	lnk,
    	i = lns.length;
    while (i--) {
        lnk = lns[i];
        if (lnk.href && lnk.href.match(/^(http|https|mailto|ftp)/) && lnk.href.indexOf(location.hostname) == -1) { lnk.target = '_blank'; };
    };
};

var setup_state_links = function() {
    if (!d.getElementById('states_nav')) return;
    var ls = d.getElementById('states_nav').getElementsByTagName('a');
    var i = ls.length;
    while(i--) {
        l = ls[i];
        if (!l.getAttribute('href')) continue;
        l.onclick = function() {
            show_hide_reps(this.getAttribute('href').split('#')[1]);
            return false;
        };
    };
};

var show_hide_reps = function(t) {
    if (!d.getElementById('reps_list')) return;

    if (IE && d.getElementById('rep_locator')) {
        var o = d.getElementById('rep_locator');
        if (typeof(o.GetVariable) != 'undefined') {
            t = o.GetVariable('/:active_state');
        };
    };

    var tg = typeof(t) != 'undefined' ? true : false;

    var h = location_hash();
    var selected_area = d.getElementById('reps_list');
    var dls = selected_area.getElementsByTagName('li');
    var i = dls.length;
    var dl,
        dlid;
    while(i--) {
        dl = dls[i];
        if(!dl.getAttribute('id')) continue;
        dlid = dl.getAttribute('id');
        if (dlid == h && !tg) {
            dl.style.display = 'block';
            continue;
        };
        dl.style.display = t && dlid == t ? 'block' : 'none';
    };
    smoothScrollFlash(t);
};

function smoothScrollFlash(t) {
    if (typeof(t) == 'undefined') return;
	var destinationLink = d.getElementById(t);
	if (!destinationLink) return;
	var destx = destinationLink.offsetLeft;
	var desty = destinationLink.offsetTop;
	var thisNode = destinationLink;
	while (thisNode.offsetParent && (thisNode.offsetParent != d.body)) {
		thisNode = thisNode.offsetParent;
		destx += thisNode.offsetLeft;
		desty += thisNode.offsetTop;
	};
	clearInterval(ss_INTERVAL);
	var cypos = ss_getCurrentYPos();
	var ss_stepsize = parseInt((desty-cypos)/ss_STEPS);
	ss_INTERVAL = setInterval('ss_scrollWindow(' + ss_stepsize + ',' + desty + ',"' + t + '")',10);
};

function addEvent(obj, evType, fn) {
	if (obj.addEventListener) {
		obj.addEventListener(evType, fn, false);
		return true;
    } else if (obj.attachEvent) {
		var r = obj.attachEvent('on'+evType, fn);
		return r;
    } else {
		return false;
    };
};

var ss_INTERVAL;
var ss_STEPS = 15;

function ss_fixAllLinks() {
	var allLinks = d.getElementsByTagName('a');
    var i = allLinks.length;
	while (i--) {
    	var lnk = allLinks[i];
        if ((lnk.href && lnk.href.indexOf('#') != -1) && ( (lnk.pathname == location.pathname) || ('/'+lnk.pathname == location.pathname) ) && (lnk.search == location.search))	{
			addEvent(lnk, 'click', smoothScroll);
		};
	};
};

function smoothScroll(e) {
	if (window.event) {
		var target = window.event.srcElement;
	} else if (e) {
		var target = e.target;
    } else return;
	var anchor = target.hash.substr(1);
	var destinationLink = document.getElementById(anchor);
	if (!destinationLink) return true;
	var destx = destinationLink.offsetLeft;
	var desty = destinationLink.offsetTop;
	var thisNode = destinationLink;
	while (thisNode.offsetParent && (thisNode.offsetParent != document.body)) {
		thisNode = thisNode.offsetParent;
		destx += thisNode.offsetLeft;
		desty += thisNode.offsetTop;
	};
	clearInterval(ss_INTERVAL);
	var cypos = ss_getCurrentYPos();
	var ss_stepsize = parseInt((desty-cypos)/ss_STEPS);
	ss_INTERVAL = setInterval('ss_scrollWindow('+ss_stepsize+','+desty+',"'+anchor+'")',10);
	if (window.event) {
		window.event.cancelBubble = true;
		window.event.returnValue = false;
    };
	if (e && e.preventDefault && e.stopPropagation) {
		e.preventDefault();
		e.stopPropagation();
	};
};

function ss_scrollWindow(scramount, dest, anchor) {
	var wascypos = ss_getCurrentYPos();
	var isAbove = (wascypos < dest);
	window.scrollTo(0,wascypos + scramount);
	var iscypos = ss_getCurrentYPos();
	var isAboveNow = (iscypos < dest);
	if ((isAbove != isAboveNow) || (wascypos == iscypos)) {
		window.scrollTo(0,dest);
		clearInterval(ss_INTERVAL);
		if (!IE) location.hash = anchor;
	};
};

function ss_getCurrentYPos() {
	if (document.body && document.body.scrollTop)
	return document.body.scrollTop;
	if (document.documentElement && document.documentElement.scrollTop)
	return document.documentElement.scrollTop;
	if (window.pageYOffset)
	return window.pageYOffset;
	return 0;
};

var smart_top = function() {
    var viewport_height = (self.innerHeight) ? self.innerHeight : (d.documentElement && d.documentElement.clientHeight) ? d.documentElement.clientHeight : (d.body) ? d.body.clientHeight : 0;
    var page_height = d.getElementById('footer').offsetTop;
    var ttl = d.getElementById('top_link').getElementsByTagName('a')[0];
    if (page_height < viewport_height) ttl.style.visibility = 'hidden';
};

var malp = function() {
	if(!d.getElementsByTagName('span')[0]) return;
    var sps = d.getElementsByTagName('span'), spn,
    	txt, mlt, anc,
    	i = sps.length;
    while (i--) {
        spn	= sps[i];
        if (spn.className.indexOf('malp') == -1 || !spn.childNodes[0]) continue;
        txt = spn.childNodes[0];
        mlt = txt.nodeValue.replace(RegExp('-at-','i'), '@');
        anc	= d.createElement('a');
        anc.setAttribute('href', 'mailto:' + mlt);
        anc.appendChild(d.createTextNode(mlt));
        spn.removeChild(txt);
        spn.appendChild(anc);
    };
};