function toggle_visibility(id1) {
	var e = document.getElementById(id1);
	if((e.style.display == 'none') || (e.style.display == ''))
		e.style.display = 'block';
	else
		e.style.display = 'none';
}

function toggle_retsearch(id1, id2) {
	var e = document.getElementById(id1);
	var f = document.getElementById(id2);
	if((e.style.display == 'none') || (e.style.display == ''))
	{
		e.style.display = 'block';
		f.className = 'retsubbg';
	}
	else
	{
		e.style.display = 'none';
		f.className = '';
	}
}

function init_retsearch(id1, id2) {
	var e = document.getElementById(id1);
	var f = document.getElementById(id2);
	if((e.style.display == 'none') || (e.style.display == ''))
	{
		e.style.display = 'none';
	}
	else
	{
		f.className = 'retsubbg';
	}
}

function submitOnEnter(evt, id1) {
	var el = document.getElementById(id1);
	var key;
	if (evt.which) key = evt.which;
	if (evt.keyCode) key = evt.keyCode;
	if (key == 13) el.submit();
}

function toggle_none(id1) {
	var e = document.getElementById(id1);
	if(e.style.display == 'none')
		e.style.display = '';
	else
		e.style.display = 'none';
}

function toggle_filter(show_gen) {
	var e = document.getElementById('searchsetsub');
	var f = document.getElementById('headform');
	var g = document.getElementById('swhaothers');
	var rettoggtxt = document.getElementById('rettoggtxt');

	if (e.style.display == 'block')
	{
		e.style.display = 'none';
		f.style.paddingBottom = '35px';
		if (g)
			g.style.display = 'none';
		rettoggtxt.style.textDecoration = 'underline';
		rettoggtxt.style.color = '#6671af';
	}
	else
	{
		e.style.display = 'block';
		if (!show_gen)
			f.style.paddingBottom = '85px';
		else
			f.style.paddingBottom = '135px';
		if (g)
			g.style.display = 'block';
		rettoggtxt.style.textDecoration = 'none';
		rettoggtxt.style.color = '#444';
	}
}

function toggle_filter_home() {
	var e = document.getElementById('searchsethm');
	var rettoggtxt = document.getElementById('rettoggtxt');

	if (e.style.display == 'block')
	{
		e.style.display = 'none';
		//f.style.marginTop = '0px';
		rettoggtxt.style.textDecoration = 'underline';
		rettoggtxt.style.color = '#6671af';
	}
	else
	{
		e.style.display = 'block';
		//f.style.height = '90px';
		rettoggtxt.style.textDecoration = 'none';
		rettoggtxt.style.color = '#444';
	}
}


function setHomeFocus() {
	var e = document.getElementById('id_username');

	if (e)
	{
		e.focus();
	}
}


function switch_display(id1, id2) {
	//id1 will be displayed
	//id2 will be hidden
	var e = document.getElementById(id1);
	var f = document.getElementById(id2);

	if (e)
	{
		e.style.display = 'inline';
	}
	if (f)
	{
		f.style.display = 'none';
	}
}


function showMyDiv(idname, classname) {
	var e = document.getElementById(idname);
	var farray = getElementsByClassName(classname);
	var f;
	for(var i=0,j=farray.length; i<j; i++)
	{
		f = farray[i];
		f.className = 'myoff'
		f.style.display = 'none';
	}
	e.style.display = 'block';
	this.className = 'myon'
}

// going to need an onload func, to set the default nav/div on for My Vin page
function changeMyVin(divion, divcoff, navion, navcoff, navcon) {
	var e = document.getElementById(navion);
	var f = document.getElementById(divion);
	var navoffarr = getElementsByClassName(navcoff);
	var navonarr = getElementsByClassName(navcon);
	var divcarr = getElementsByClassName(divcoff);
	var g;
	var h;
	var r;
	for(var i=0,j=navoffarr.length; i<j; i++)
	{
		g = navoffarr[i];
		g.className = 'myoff'
	}
	for(var p=0,q=navonarr.length; p<q; p++)
	{
		r = navonarr[p];
		r.className = 'myoff'
	}
	for(var m=0,n=divcarr.length; m<n; m++)
	{
		h = divcarr[m];
		h.className = 'mysub'
		h.style.display = 'none';
	}
	e.className = 'myon';
	f.style.display = 'block';
}


// if specret is checked, disable the myret select
function disMyRet() {
	var sp = document.getElementById('specret');
	var my = document.getElementById('myrets');
	
	if (sp && my) {
		if (sp.checked) {
			my.disabled=true;
			my.className = 'disableinput';
		}
		else {
			my.disabled=false;
			my.className = 'normal';
		}
	}
}


// disable myrets input ONLOAD if specret is checked
function disMyRetLoad() {
	var sp = document.getElementById('specret');
	var my = document.getElementById('myrets');

	if (sp && my) {
		if (sp.checked) {
			my.disabled=true;
			my.className = 'disableinput';
		}
		else {
			my.disabled=false;
			if (my.className != 'filtering') {
				my.className = 'normal';
			}
		}
	}
}

//function wfsInit() {
//	var sub = document.getElementById('searchsetsub');
//	var swhas = document.getElementById('swhaothers');
//
//	// Initialize the searchwha h1's (hide if filters are hidden)
//	if (sub.style.display != 'none') {
//		swhas.style.display = 'none';
//	}
//}

function wfsInit() {
	// Initialize the WFS search filters
	var retselect = document.getElementById('myrets');
	var locaddr = document.getElementById('q_addr');
	var locprox = document.getElementById('q_prox');
	var labaddr = document.getElementById('labaddr');
	var labprox = document.getElementById('labprox');
	var sub = document.getElementById('searchsetsub');
	var home = document.getElementById('home');
	var rettoggtxt = document.getElementById('rettoggtxt');

	//Make the Toggle link not look like a link
	if (((sub) && (sub.style.display == 'block')) || (home)) {
		rettoggtxt.style.textDecoration = 'none';
		rettoggtxt.style.color = '#444';
	}
	
	//Start with local's disabled
	locaddr.disabled = true;
	locprox.disabled = true;
	labaddr.className = 'dislabel';
	labprox.className = 'dislabel';
	if (locaddr.className != 'filtering') {
		locaddr.className = 'disableinput';
		locprox.className = 'disableinput';
	}
	
	//If "local" is selected, enable zip/prox fields
	curr_selected = retselect.options[retselect.selectedIndex].value
	if (curr_selected == "local") {
		locaddr.disabled = false;
		locprox.disabled = false;
		labaddr.className = 'enlabel';
		labprox.className = 'enlabel';
		if (locaddr.className != 'filtering') {
			locaddr.className = 'normal';
			locprox.className = 'normal';
		}
		else {
			locaddr.className = 'filtering';
			locprox.className = 'filtering';
		}
	}
	
}

function wfsInitHome() {
	// Initialize the WFS search filters
	var retselect = document.getElementById('myrets');
	var locaddr = document.getElementById('q_addr');
	var locprox = document.getElementById('q_prox');
	var labaddr = document.getElementById('labaddr');
	var labprox = document.getElementById('labprox');
	var sub = document.getElementById('searchsetsub');
	var home = document.getElementById('home');
	var rettoggtxt = document.getElementById('rettoggtxt');

	//Make the Toggle link not look like a link
	//if (((sub) && (sub.style.display == 'block')) || (home)) {
	//	rettoggtxt.style.textDecoration = 'none';
	//	rettoggtxt.style.color = '#444';
	//}
	
	//Start with local's disabled
	locaddr.disabled = true;
	locprox.disabled = true;
	labaddr.className = 'dislabel';
	labprox.className = 'dislabel';
	if (locaddr.className != 'filtering') {
		locaddr.className = 'disableinput';
		locprox.className = 'disableinput';
	}
	
	//If "local" is selected, enable zip/prox fields
	curr_selected = retselect.options[retselect.selectedIndex].value
	if (curr_selected == "local") {
		locaddr.disabled = false;
		locprox.disabled = false;
		labaddr.className = 'enlabel';
		labprox.className = 'enlabel';
		if (locaddr.className != 'filtering') {
			locaddr.className = 'normal';
			locprox.className = 'normal';
		}
		else {
			locaddr.className = 'filtering';
			locprox.className = 'filtering';
		}
	}
	
}

function wfsToggleLocal() {
	// Enable/Disable WFS local inputs
	var retselect = document.getElementById('myrets');
	var locaddr = document.getElementById('q_addr');
	var locprox = document.getElementById('q_prox');
	var labaddr = document.getElementById('labaddr');
	var labprox = document.getElementById('labprox');
	
	//If "local" is selected, enable zip/prox fields
	curr_selected = retselect.options[retselect.selectedIndex].value
	if (curr_selected == "local") {
		locaddr.disabled = false;
		locprox.disabled = false;
		labaddr.className = 'enlabel';
		labprox.className = 'enlabel';
		if (locaddr.className != 'filtering') {
			locaddr.className = 'normal';
			locprox.className = 'normal';
		}
	}
	else {
		locaddr.disabled = true;
		locprox.disabled = true;
		locaddr.className = 'disableinput';
		locprox.className = 'disableinput';
		labaddr.className = 'dislabel';
		labprox.className = 'dislabel';
	}	
}

function wfsRestrictMy() {
	// Do not allow anonymous user to select anything other than All or Local Retailers
	var retselect = document.getElementById('myrets');
	
	//If "all" or "local" aren't selected, reset to "all"
	curr_selected = retselect.options[retselect.selectedIndex].value
	if ((curr_selected != "local") && (curr_selected != "")) {
		if (!curr_selected.match("specret-"))
			retselect.selectedIndex = 0;
	}	
}

function wfsRestrictMyLocal() {
	// Do not allow anonymous user to select anything other than "All Retailers"
	var retselect = document.getElementById('myrets');
	
	//If "all" isn't selected, reset to "all"
	curr_selected = retselect.options[retselect.selectedIndex].value
	if (curr_selected != "") {
		if (!curr_selected.match("specret-"))
			retselect.selectedIndex = 0;
	}	
}

// disable one of the Retailer Filters' inputs ONLOAD
function wfsRetInit() {
	var locaddr = document.getElementById('q_addr');
	var locprox = document.getElementById('q_prox');
	var myrets = document.getElementById('myrets');
	var tdmy = document.getElementById('retmy');
	var tdloc = document.getElementById('retlocal');
	var retloch3a = document.getElementById('retloch3a');
	var retmyh3a = document.getElementById('retmyh3a');
	var mydisnote = document.getElementById('mydisnote');
	var locdisnote = document.getElementById('locdisnote');
		
	if (locaddr && locprox && myrets) {
		if ((myrets.className != 'filtering') && (locaddr.className != 'filtering')) {
			myrets.disabled=true;
			myrets.className = 'disableinput';
			locaddr.disabled=false;
			locprox.disabled=false;
			locaddr.className = 'normal';
			locprox.className = 'normal';
			
			tdloc.style.background = '#dcd4b3';
			tdmy.style.background = '#d2caac';
			tdloc.style.borderTop = '1px solid #fff';
			tdloc.style.borderBottom = '1px solid #dcd4b3';
			tdmy.style.borderTop = '1px solid #d2caac';
			tdmy.style.borderBottom = '1px solid #fff';
			
			retloch3a.style.textDecoration = 'none';
			retmyh3a.style.textDecoration = 'underline';
			mydisnote.style.display = 'inline';
			locdisnote.style.display = 'none';
		}
		else if (myrets.className == 'filtering') {
			myrets.disabled=false;
			locaddr.disabled=true;
			locprox.disabled=true;
			locaddr.className = 'disableinput';
			locprox.className = 'disableinput';
			
			tdloc.style.background = '#d2caac';
			tdmy.style.background = '#dcd4b3';
			tdloc.style.borderTop = '1px solid #d2caac';
			tdloc.style.borderBottom = '1px solid #fff';
			tdmy.style.borderTop = '1px solid #fff';
			tdmy.style.borderBottom = '1px solid #dcd4b3';
			
			retloch3a.style.textDecoration = 'underline';
			retmyh3a.style.textDecoration = 'none';
			mydisnote.style.display = 'none';
			locdisnote.style.display = 'inline';
		}		
		else if (locaddr.className == 'filtering') {
			myrets.disabled=true;
			myrets.className = 'disableinput';
			locaddr.disabled=false;
			locprox.disabled=false;

			tdloc.style.background = '#dcd4b3';
			tdmy.style.background = '#d2caac';
			tdloc.style.borderTop = '1px solid #fff';
			tdloc.style.borderBottom = '1px solid #dcd4b3';
			tdmy.style.borderTop = '1px solid #d2caac';
			tdmy.style.borderBottom = '1px solid #fff';

			retloch3a.style.textDecoration = 'none';
			retmyh3a.style.textDecoration = 'underline';
			mydisnote.style.display = 'inline';
			locdisnote.style.display = 'none';
		}		
	}
	else {
		tdloc.style.background = '#dcd4b3';
		tdmy.style.background = '#d2caac';
		tdloc.style.borderTop = '1px solid #fff';
		tdloc.style.borderBottom = '1px solid #dcd4b3';
		tdmy.style.borderTop = '1px solid #d2caac';
		tdmy.style.borderBottom = '1px solid #fff';
	}	
}

// Toggle which Retailer Filter is enabled
function wfsRetDis(whichreton) {		
	var locaddr = document.getElementById('q_addr');
	var locprox = document.getElementById('q_prox');
	var myrets = document.getElementById('myrets');
	var tdmy = document.getElementById('retmy');
	var tdloc = document.getElementById('retlocal');
	var retloch3a = document.getElementById('retloch3a');
	var retmyh3a = document.getElementById('retmyh3a');
	var mydisnote = document.getElementById('mydisnote');
	var locdisnote = document.getElementById('locdisnote');
	
	if (whichreton == 'local') {
		myrets.disabled=true;
		myrets.className = 'disableinput';
		locaddr.disabled=false;
		locprox.disabled=false;
		locaddr.className = 'normal';
		locprox.className = 'normal';

		tdloc.style.background = '#dcd4b3';
		tdmy.style.background = '#d2caac';
		tdloc.style.borderTop = '1px solid #fff';
		tdloc.style.borderBottom = '1px solid #dcd4b3';
		tdmy.style.borderTop = '1px solid #d2caac';
		tdmy.style.borderBottom = '1px solid #fff';

		retloch3a.style.textDecoration = 'none';
		retmyh3a.style.textDecoration = 'underline';
		mydisnote.style.display = 'inline';
		locdisnote.style.display = 'none';
	}
	else {
		myrets.disabled=false;
		myrets.className = 'normal';
		locaddr.disabled=true;
		locprox.disabled=true;
		locaddr.className = 'disableinput';
		locprox.className = 'disableinput';	

		tdloc.style.background = '#d2caac';
		tdmy.style.background = '#dcd4b3';
		tdloc.style.borderTop = '1px solid #d2caac';
		tdloc.style.borderBottom = '1px solid #fff';
		tdmy.style.borderTop = '1px solid #fff';
		tdmy.style.borderBottom = '1px solid #dcd4b3';

		retloch3a.style.textDecoration = 'underline';
		retmyh3a.style.textDecoration = 'none';
		mydisnote.style.display = 'none';
		locdisnote.style.display = 'inline';
	}
}


// modify URL querystring
function modURL() {
	var url = document.location.href;
}


function turnOnMy(mynavon, mydivon) {
	var e = document.getElementById(mynavon);
	var f = document.getElementById(mydivon);
	e.className = 'myon';
	f.style.display = 'block';	
}


function getElementsByClassName(classname) {
  var a = [];
  var re = new RegExp('(^| )'+classname+'( |$)');
  var els = document.getElementsByTagName("*");
  for(var i=0,j=els.length; i<j; i++)
	if(re.test(els[i].className))a.push(els[i]);
  return a;
}


function toggle_class(classname) {
	var elarray = getElementsByClassName(classname);
	var e;
	for(var i=0,j=elarray.length; i<j; i++)
	{
		e = elarray[i];
		if((e.style.display == 'none') || (e.style.display == ''))
		{
			if (typeof(navigator.appName) != "undefined")
			{
				if (navigator.appName=="Microsoft Internet Explorer")
				{
					e.style.display = 'block';
				}
				else
				{
					e.style.display = 'table';
				}
			}
			else
			{
				e.style.display = 'block';
			}
		}
		else
		{
			e.style.display = 'none';
		}
	}
}


function popUp(URL) {
	//Idea by:  Nic Wolfe (Nic@TimelapseProductions.com)
	//Web URL:  http://fineline.xs.mw
	day = new Date();
	id = day.getTime();
	eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=675,height=500');");
}

function printerPop(URL) {
	//Idea by:  Nic Wolfe (Nic@TimelapseProductions.com)
	//Web URL:  http://fineline.xs.mw
	day = new Date();
	id = day.getTime();
	eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=1,scrollbars=1,location=0,statusbar=1,menubar=1,resizable=1,width=800,height=600');");
}


function printpage()
{
  window.print();  
}


function preloadImages() {
	if (document.images) 
	{
	   var logo = new Image();
	   logo.src = "../images/vin_logo_mir_tag2.png";
	}	
}


function getImageDimension(path, id)
{
	var img = new Image();
	img.src = path;
	if (img.height >= img.width)
		document.getElementById(id).height = "105";
	else
		document.getElementById(id).width = "105";
}


function ResizeImage(image, maxwidth, maxheight)
{
	if (image.className == "Thumbnail")
	{
		w = image.width;
		h = image.height;

		if( w == 0 || h == 0 )
		{
			image.width = maxwidth;
			image.height = maxheight;
		}
		else if (w > h)
		{
			if (w > maxwidth) image.width = maxwidth;
		}
		else
		{
			if (h > maxheight) image.height = maxheight;
		}

		image.className = "ScaledThumbnail";
	}
}


function switch_local(id1) {
	var ontab = 'localtabon';
	var offtab = 'localtaboff';
	var loclinks = 'locallinks';

	
	// Turn all ON tabs to OFF
	var ons = getElementsByClassName(ontab);
	for(i=0; i<ons.length; i++)
	{
		if (ons[i].className == ontab) {
			ons[i].className = offtab;
		}

	}


	// Turn newly clicked tab to ON
	var curr = document.getElementById(id1);
	curr.className = ontab;

	// Turn OFF all link area divs
	var links = getElementsByClassName(loclinks);
	for(i=0; i<links.length; i++) {
		links[i].style.display = 'none';
	}
		
	// Turn ON correct link area
	var linke;
	if (curr.id == 'trad') {
		linke = document.getElementById('traders');	
		linke.style.display = 'block';
	}
	else if (curr.id == 'cost') {
		linke = document.getElementById('costco');	
		linke.style.display = 'block';
	}
	else if (curr.id == 'bevm') {
		linke = document.getElementById('bevmo');	
		linke.style.display = 'block';
	}
	else if (curr.id == 'albe') {
		linke = document.getElementById('albertsons');	
		linke.style.display = 'block';
	}
	else if (curr.id == 'safe') {
		linke = document.getElementById('safeway');	
		linke.style.display = 'block';
	}
	else if (curr.id == 'allz') {
		linke = document.getElementById('allrets');	
		linke.style.display = 'block';
	}
}

function unfill(obj, val) {
	if (obj.value == val) {
		obj.value = "";
	}
}

function refill(obj, val) {
	if (obj.value == "") {
		obj.value = val;
	}
}

function unfillkeyw(obj, val) {
	if (obj.value == val) {
		obj.value = "";
		obj.className = 'searchbox';
	}
}

function refillkeyw(obj, val) {
	if (obj.value == "") {
		obj.value = val;
		obj.className = 'searchboxblur';
	}
}


//Get DOM elements based on the given CSS Selector - V 1.00.A Beta
//http://www.openjs.com/scripts/dom/css_selector/
function getElementsBySelector(all_selectors) {
	var selected = new Array();
	if(!document.getElementsByTagName) return selected;
	all_selectors = all_selectors.replace(/\s*([^\w])\s*/g,"$1");//Remove the 'beutification' spaces
	var selectors = all_selectors.split(",");
	// Grab all of the tagName elements within current context	
	var getElements = function(context,tag) {
		if (!tag) tag = '*';
		// Get elements matching tag, filter them for class selector
		var found = new Array;
		for (var a=0,len=context.length; con=context[a],a<len; a++) {
			var eles;
			if (tag == '*') eles = con.all ? con.all : con.getElementsByTagName("*");
			else eles = con.getElementsByTagName(tag);

			for(var b=0,leng=eles.length;b<leng; b++) found.push(eles[b]);
		}
		return found;
	}

	COMMA:
	for(var i=0,len1=selectors.length; selector=selectors[i],i<len1; i++) {
		var context = new Array(document);
		var inheriters = selector.split(" ");

		SPACE:
		for(var j=0,len2=inheriters.length; element=inheriters[j],j<len2;j++) {
			//This part is to make sure that it is not part of a CSS3 Selector
			var left_bracket = element.indexOf("[");
			var right_bracket = element.indexOf("]");
			var pos = element.indexOf("#");//ID
			if(pos+1 && !(pos>left_bracket&&pos<right_bracket)) {
				var parts = element.split("#");
				var tag = parts[0];
				var id = parts[1];
				var ele = document.getElementById(id);
				if(!ele || (tag && ele.nodeName.toLowerCase() != tag)) { //Specified element not found
					continue COMMA;
				}
				context = new Array(ele);
				continue SPACE;
			}

			pos = element.indexOf(".");//Class
			if(pos+1 && !(pos>left_bracket&&pos<right_bracket)) {
				var parts = element.split('.');
				var tag = parts[0];
				var class_name = parts[1];

				var found = getElements(context,tag);
				context = new Array;
 				for (var l=0,len=found.length; fnd=found[l],l<len; l++) {
 					if(fnd.className && fnd.className.match(new RegExp('(^|\s)'+class_name+'(\s|$)'))) context.push(fnd);
 				}
				continue SPACE;
			}

			if(element.indexOf('[')+1) {//If the char '[' appears, that means it needs CSS 3 parsing
				// Code to deal with attribute selectors
				if (element.match(/^(\w*)\[(\w+)([=~\|\^\$\*]?)=?['"]?([^\]'"]*)['"]?\]$/)) {
					var tag = RegExp.$1;
					var attr = RegExp.$2;
					var operator = RegExp.$3;
					var value = RegExp.$4;
				}
				var found = getElements(context,tag);
				context = new Array;
				for (var l=0,len=found.length; fnd=found[l],l<len; l++) {
 					if(operator=='=' && fnd.getAttribute(attr) != value) continue;
					if(operator=='~' && !fnd.getAttribute(attr).match(new RegExp('(^|\\s)'+value+'(\\s|$)'))) continue;
					if(operator=='|' && !fnd.getAttribute(attr).match(new RegExp('^'+value+'-?'))) continue;
					if(operator=='^' && fnd.getAttribute(attr).indexOf(value)!=0) continue;
					if(operator=='$' && fnd.getAttribute(attr).lastIndexOf(value)!=(fnd.getAttribute(attr).length-value.length)) continue;
					if(operator=='*' && !(fnd.getAttribute(attr).indexOf(value)+1)) continue;
					else if(!fnd.getAttribute(attr)) continue;
					context.push(fnd);
 				}

				continue SPACE;
			}

			//Tag selectors - no class or id specified.
			var found = getElements(context,element);
			context = found;
		}
		for (var o=0,len=context.length;o<len; o++) selected.push(context[o]);
	}
	return selected;
}


function dedupe_list()
{
	var count = 0;
	var mainlist = document.form1.mainlist.value;
	mainlist = mainlist.replace(/\r/gi, "\n");
	mainlist = mainlist.replace(/\n+/gi, "\n");
	
	var listvalues = new Array();
	var newlist = new Array();
	
	listvalues = mainlist.split("\n");
	
	var hash = new Object();
	
	for (var i=0; i<listvalues.length; i++)
	{
		if (hash[listvalues[i].toLowerCase()] != 1)
		{
			newlist = newlist.concat(listvalues[i]);
			hash[listvalues[i].toLowerCase()] = 1
		}
		else { count++; }
	}
	document.form1.mainlist.value = newlist.join("\r\n");
	alert('Removed ' + count + ' duplicate values from list. . .');
}