Pent = {


/*
	Main initialize function to be run on page load
*/
Init: function(){
	
	// Run bootstrap functions
	this.sIFR(GLOBALS['nav']);
	this.Highlight.Navigation();
	
	// Make sure Flash is installed
	var flashVersion = deconcept.SWFObjectUtil.getPlayerVersion();
	if (!flashVersion['major'] > 0) {
		$('notice').innerHTML = $('notice').innerHTML + '<div class="notice"><div class="wrapper"><p>Parts of this site require Adobe Flash to operate correctly. You can download it from <a href="http://www.adobe.com/software/flashplayer/">adobe.com</a>.</p></div></div>';
	}
	
	// Insert Flash Logo
	if (!GLOBALS['nav'][1]) swflogo = 'home';
	else swflogo = GLOBALS['nav'][1];
	var so = new SWFObject("/assets/swf/logo_"+swflogo+".swf", "sonance_logo", "75", "75", "8", "#FFFFFF");
	so.addParam("scale", "noscale");
	so.addParam("Play", 1);
	so.useExpressInstall('/assets/swf/expressinstall.swf');
	so.write('logo');
	
	// Add event to Copyright & Internet Selling Policy
	Event.observe('quicknav_copyright', 'click', function(){Pent.Toggle.Copyright();});
	Event.observe('quicknav_policy', 'click', function(){Pent.Toggle.Policy();});
	
	// Make Dealer Login open in a new window
	$('quicknav_dealer-login').target = '_blank';
	
},


/*
	sIFR (image-flash font replacement technique)
*/
sIFR: function() {
	if(typeof sIFR == "function"){
		if($('title')){
			sIFR.replaceElement(named({
				sSelector:"h1#title",
				sFlashSrc:"/assets/swf/futura.swf",
				sColor:$('title').getStyle('color').parseColor().toUpperCase(),
				sLinkColor:"#000000",
				sBgColor:"#EEEEEE",
				sHoverColor:"#CCCCCC",
				sCase:"upper",
				sWmode:"transparent"
			}));
		}
		// Get copy colors
		/*
		summary_color = $('content').getStyle('color').parseColor().toUpperCase();
		body_color = $('body').getStyle('color').parseColor().toUpperCase();
		sIFR.replaceElement(named({
			sSelector:"div#content p.summary",
			sFlashSrc:"/assets/swf/futura.swf",
			sColor:body_color,
			sLinkColor:"#3B3B3B",
			sHoverColor:"#3B3B3B",
			sWmode:"transparent"
		}));*/
	}
},



Toggle: {
	
	
	
	Effect: function(obj){
		switch (obj.effect) {
			case 'appear':
				Effect.Appear(obj.element, {duration: 0.75});
				break;
			case 'fade':
				Effect.Fade(obj.element, {duration: 0.15});
				break;
			default: alert('No effect chosen. Define either "appear" or "fade".');
		}
	},
	
	
	
	Year: function(obj){
		//alert(obj.year.innerHTML);
		for(i=0;obj.years.length>i;i++){
			if(obj.years[i].id == obj.year.innerHTML || obj.years[i].id == obj.year) this.Effect({element: obj.years[i].id, effect: 'appear'}); // includes '.innerHTML' conditional because HTML version of menu doesn't seem to work without it -- strange!
			else this.Effect({element: obj.years[i].id, effect: 'fade'});
		}
		// Change hash to year so specific years can be bookmarked
		if(!obj.year.innerHTML) location.hash = obj.year;
	},
	
	
	
	InitYear: function(obj){
		if (obj.toggle) {
			for (i=0;i<obj.toggle.length;i++) {
				obj.toggle[i].setStyle({display: 'none'});
				if (obj.initial == 'hash') {
					if (location.hash) {
						if (location.hash == '#'+obj.toggle[i].id) this.Effect({element: obj.toggle[i], effect: obj.toggle_on});
					} else if (i==0) this.Effect({element: obj.toggle[i], effect: obj.toggle_on});
				} else if (obj.initial) {
					if (i==obj.initial) this.Effect({element: obj.toggle[i], effect: obj.toggle_on});
				} else if (i==0) this.Effect({element: obj.toggle[i], effect: obj.toggle_on});
			}
		}
		if (obj.trigger) {
			for (i=0;i<obj.trigger.length;i++) {
				obj.trigger[i].onclick = function(){
					Pent.Toggle.Year({year: this, years: obj.toggle});
				};
			}
		}
	},
	
	
	
	Filters: function(obj)
	{
		readHashHistory();
		
		if (obj.trigger) {
			for (i=0;i<obj.trigger.length;i++) {
				obj.trigger[i].onclick = function()
				{
					if (toggleSingle(this)) {
						Pent.Ajax.Browse.Start();
						setHashHistory();
						setTimeout("Pent.Ajax.Browse.Results()",1000);
					}
				};
			}
		}
		if (obj.reset) {
			obj.reset.onclick = function()
			{
				if (obj.trigger) {
					for (i=0;i<obj.trigger.length;i++) {
						if ((obj.trigger[i].className.indexOf('all') != -1) && (obj.trigger[i].className.indexOf('active') == -1)) {
							//alert(obj.trigger[i].innerHTML);
							Pent.Ajax.Browse.Start();
							toggleSingle(obj.trigger[i]);
							setHashHistory();
							setTimeout("Pent.Ajax.Browse.Results()",1000);
						}
					}
				}
			};
		}
		
		function readHashHistory()
		{
			if (location.hash != '#') {
				if (hashValue = location.hash) {
					filters = hashValue.substr(1).split(',');
					for (i=0;i<filters.length;i++) {
						filter = $('value'+filters[i]+'_node');
						filter.up(0).down(0).next(0).removeClassName('active');
						filter.addClassName('active');
					}
				}
			}
		}
		
		function setHashHistory()
		{
			filters = $('product_filter').getElementsByClassName('active');
			filter = '';
			for (i=0;i<filters.length;i++) {
				if (filters[i].id.substr(0,5) == 'value') {
					if (i>0 && filter != '') filter += ',';
					filter += filters[i].id.substr(5,(filters[i].id.length)-10);
				}
			}
			location.replace('#'+filter);
		}
		
		function toggleSingle(element_obj)
		{
			element = element_obj;
			filter_class = element.className;
			filter = element.id;
			elements = document.getElementsByClassName(element.parentNode.id);
			if (!element.hasClassName('active')) {
				for (i=0;i<elements.length;i++) {
					elements[i].removeClassName('active');
				}
				element.up(0).down(0).next(0).removeClassName('active');
				element.addClassName('active');
				return true;
			}
		}
		
		function toggleMultiple(element_obj)
		{
			element = element_obj;
			filter_class = element.className;
			filter = element.id;
			meta_value = element.id.substring(5);
			meta_category = element.up(0).id;
			elements = document.getElementsByClassName(meta_category);
			//alert(meta_category);

			// If the user clicks the 'All filters' filter, deactivate all individual filters
			if(element.hasClassName('all')) for (i=0;i<elements.length;i++) elements[i].removeClassName('active');
			// But if the user clicks an individual filter, deactivate the 'All filters' filter
			else element.up(0).down(0).next(0).removeClassName('active');
			
			// If the filter is active, deactivate it
			if(element.hasClassName('active') && !element.hasClassName('all')){
				// Make sure we aren't clicking on the 'All' filter
				element.removeClassName('active'); // deactivate
				// Check to see if any filters are active
				for(i=0;i<elements.length;i++) if(elements[i].hasClassName('active')) var hasfilter = (i = elements.length); // Stop the FOR loop if a filter is found
				// If no filters are active, activate All filters
				if(!hasfilter) element.up(0).down(0).next(0).addClassName('active');
			}
			
			// Else, if the filter is inactive, make it active
			else {
				element.addClassName('active');
				// Check to see if ALL filters are active
				for(i=0;i<elements.length;i++) if(!elements[i].hasClassName('active')) var allfilters = (i = elements.length); // Stop the FOR loop if a filter is deactivated
				// If all filters are active, activate the 'All filters' filter -- with a little delay
				if(!allfilters) setTimeout("element.up(0).down(0).next(0).addClassName('active'); for(i=0;i<elements.length;i++) elements[i].removeClassName('active');",500);
			}

		}
		
	},
	
	
	
	Detail: function(obj) {
		toggle();
		if (obj.trigger) {
			for(i=0;i<obj.trigger.length;i++) {
				obj.trigger[i].onmouseover = function()
				{
					toggle(this.id);
				};
			}
		}
		
		function toggle(node) {
			// Toggle product detail image/description
			
			// Hide all but one [specified] detail image
			$S('#product_thumbnails li').each(function(element){
				$(element).className = '';
				$('detail_'+element.id).setStyle({display: 'none'});
				if (node == '' || !node) node = element.id;
			});
			
			// Toggle the detail image thumbnail highlight
			$('detail_'+node).setStyle({display: 'block'});
			$(node).className = 'on';
		}
		
	},
	
	
	
	Copyright: function() {
		
		if ($('quickcontent_copyright').getStyle('display') == 'none') {
			if ($('quickcontent').getStyle('display') != 'none') {
				Effect.BlindUp('quickcontent',{duration: .5});
				Effect.Fade('quickcontent',{duration: .5});
			}
			Effect.BlindDown('quickcontent_copyright',{duration: .5});
			Effect.Appear('quickcontent_copyright',{duration: .5});
		}
		else {
			Effect.BlindUp('quickcontent_copyright',{duration: .5});
			Effect.Fade('quickcontent_copyright',{duration: .5});
		}
		
	},
	
	
	
	Policy: function() {
		
		if ($('quickcontent').getStyle('display') == 'none') {
			if ($('quickcontent_copyright').getStyle('display') != 'none') {
				Effect.BlindUp('quickcontent_copyright',{duration: .5});
				Effect.Fade('quickcontent_copyright',{duration: .5});
			}
			Effect.BlindDown('quickcontent',{duration: .5});
			Effect.Appear('quickcontent',{duration: .5});
		}
		else {
			Effect.BlindUp('quickcontent',{duration: .5});
			Effect.Fade('quickcontent',{duration: .5});
		}
		
	}
	
	
	
},



Ajax: {
	
	
	
	Browse: {
		
		
		
		Results: function(page_num) {
			
			meta_categories = $('product_filter').getElementsByClassName('metadata');
			meta_values = new Array();
			for(i=0;i<meta_categories.length;i++){
				meta_values[i] = meta_categories[i].getElementsByClassName('active');
			}
			
			//meta_values = $('product_filter').getElementsByClassName('active');
			//if (pagenum) alert(pagenum);
			//if (page_num > 0) alert(page_num);
			//else alert('nope');
			var param = new Object;
			if(typeof(window['ieVersion']) != "undefined") param.ie = ieVersion; // Pass ieVersion to help determine if alpha PNGs are supported
			param.type = GLOBALS['nav'][2];
			param.page = 1;
			param.ajaxy = 1;
			if(page_num > 0) param.page = page_num;
			//else param.page = page_num;
			if(!param.filters) param.filters = '';
			
			
			for(i=0;i<meta_values.length;i++){
				if(i != 0) param.filters += ';';
				for(i2=0;i2<meta_values[i].length;i2++){
					if(i2 != 0) param.filters += ',';
					param.filters += meta_values[i][i2].id;
				}
				//if(!i_count) param.filters += meta_categories[i].id;
				//param.filters += meta_values[i].id;
			}
			var url = '/assets/ajax/browse_results.php';
			var target = 'product_results';
			var myAjax = new Ajax.Updater(target, url, {method: 'post', parameters: $H(param).toQueryString(), onComplete: Pent.Ajax.Browse.Finish});
			//alert($H(param).toQueryString());
		},
		
		
		
		Start: function() {
			if ($('browser_help_text').visible()) $('browser_help_text').hide();
			Effect.Fade('product_results', {duration: 0.25});
			$("filter_results").innerHTML = '<a id="browser_help" href="javascript:toggleHelp()">Help</a> Results: <img src="/assets/img/progressbar.gif" alt="progress bar" />';
		},
		
		
		
		Finish: function() {
			Effect.Appear('product_results', {duration: 0.25});
			$("filter_results").innerHTML = '<a id="browser_help" href="javascript:toggleHelp()">Help</a> Results: '+$('filter_results_values').innerHTML;
			//ieAlphaImageLoader();
		},
		
		
		
		LoadPage: function(page) {
			Pent.Ajax.Browse.Start();
			//alert(page);
			setTimeout("Pent.Ajax.Browse.Results("+page+")",1000);
		}
		
		
		
	},
	
	
	
	Search: {
		
		Results: function()
		{
			var t;
			if ($('liveinput_container')) $('liveinput_container').innerHTML = '<input type="text" id="liveinput" value="Live search..." /> <input type="reset" id="resetinput" value="Reset Search" />';
		
			$("filter_results").innerHTML = 'Results: '+$('filter_results_values').innerHTML+' (all)';
		
			Event.observe('liveinput', 'focus', toggleValueFocus, false);
			Event.observe('liveinput', 'blur', toggleValueBlur, false);
			Event.observe('liveinput', 'keyup', start, false);
			Event.observe('resetinput', 'click', function(){
				$('liveinput').value = 'Live search...';
				start();
			}, false);
			
			function start()
			{
				clearTimeout(t);
				$("filter_results").innerHTML = 'Results: <img src="/assets/img/progressbar.gif" alt="progress bar" />';
				t = setTimeout('Pent.Ajax.Search.Start()',750);
			}
			
			function toggleValueFocus() {
				if ($('liveinput').value == 'Live search...') $('liveinput').value = '';
			}
			function toggleValueBlur() {
				if ($('liveinput').value == '') $('liveinput').value = 'Live search...';
			}
		
		},
		
		Start: function()
		{
			var param = new Object;
			if ($('liveinput').value != 'Live search...') param.keyword = $('liveinput').value;
			param.ajaxy = 1;
			var url = '/assets/ajax/index_livesearch.php';
			var target = 'datagrid';
			var myAjax = new Ajax.Updater(target, url, {method: 'post', parameters: $H(param).toQueryString(), onComplete: Pent.Ajax.Search.Stop});
		},
		
		Stop: function()
		{
			if ($('liveinput').value == 'Live search...' || $('liveinput').value == '') all = ' (all)';
			else all = '';
			$("filter_results").innerHTML = 'Results: '+$('filter_results_values').innerHTML+all;
		}
		
	}
	
	
	
},



Highlight: {
	
	
	
	Navigation: function() {
		navID = 'nav';
		if (GLOBALS['nav'].length>1) {
			for (var i=1;i<GLOBALS['nav'].length;i++) {
				navID += '_'+GLOBALS['nav'][i];
				if ($(navID)) $(navID).className += ' on';
				if ($(navID+'_overview') && !GLOBALS['nav'][i+1]) $(navID+'_overview').className += ' on';
			}
		} else {
			$(navID+'_home').className += ' on';
		}
	}
	
	
	
}



};
// END Pent object








function toggleContent(node, opennode, effect) {
	var i = 1;
	//if (!opennode) opennode = 1;
	$S(node).each(function(element){
		if (i == opennode) {
			//element.style.display = 'block';
			Effect.Appear(element);
		} else {
			if (effect) {
				Effect.Fade(element);
			} else {
				element.setStyle({display: 'none'});
			}
		}
		i++;
	});
}
