/*
-----------------------------------------------
BobsHeating.com
Script: bobs.util.js
Author: Ben Glassman
Organization: Vermont Design Works
Created: 18 Nov 2010
----------------------------------------------- */

var bobs = {};

bobs.util = {
	init:function() {
		bobs.util.mailtoFix('REMOVETHISBEFORESENDING');
		bobs.util.preparePopups();
		bobs.util.prepareImages();
		bobs.util.prepareExploreNav();
		if ($jq('#btn-facebook').length && $jq('#btn-twitter').length) {
			vdwPngRollover.init({ containerIds : ['btn-facebook', 'btn-twitter'], preloadImgs : ['/assets/templates/main/images/btn-facebook-on.png', '/assets/templates/main/images/btn-twitter-on.png']});
		}
		bobs.util.autoPopulate('input.populate');
		bobs.util.prepareServiceLandingLinks();
	},
	mailtoFix:function(stringToRemove) {
		var links = document.getElementsByTagName('a');
		var removeText = new RegExp(stringToRemove);
		for (var i = 0; i < links.length; i++) {
			if (links[i].href.indexOf('mailto:') != -1) {
				links[i].href = links[i].href.replace(removeText, '');
				links[i].firstChild.nodeValue = links[i].firstChild.nodeValue.replace(removeText, '');
				links[i].firstChild.nodeValue = links[i].firstChild.nodeValue.replace(/mailto:/, '');
			}
		}
	},
	popUp:function(winURL, name, parameters) {
		window.open(winURL, name, parameters);
	},
	preparePopups:function() {
		if (!document.getElementsByTagName) return false;
		var lnks = document.getElementsByTagName("a");
		for (var i=0; i<lnks.length; i++) {
			if (lnks[i].className == "popup") {
				lnks[i].title+= " (opens in a new window)";
				lnks[i].onclick = function() {
					bobs.util.popUp(this.getAttribute("href"), "popup", "width=480,height=480");
					return false;
				}
			}
			else if (lnks[i].className == "video-popup") {
				lnks[i].title+= " (opens in a new window)";
				lnks[i].onclick = function() {
					bobs.util.popUp(this.getAttribute("href"), "video_popup", "width=680,height=440");
					return false;
				}
			}
			else if (lnks[i].className == "external") {
				lnks[i].title+= " (opens in a new window)";
				lnks[i].onclick = function() {
					bobs.util.popUp(this.getAttribute("href"), "external", "");
					return false;
				}
			}
			else if (lnks[i].className == "quiz-popup") {
				lnks[i].title+= " (opens in a new window)";
				lnks[i].onclick = function() {
					bobs.util.popUp(this.getAttribute("href"), "quiz_popup", "width=490,height=520");
					return false;
				}
			}
			else if (lnks[i].href != null && lnks[i].href.indexOf('.pdf') != -1) {
				lnks[i].title += " (opens in a new window)";
				lnks[i].onclick = function() {
					bobs.util.popUp(this.getAttribute("href"), "pdf", "");
					return false;
				}
			}
		}
	},
	trimString:function(str) {
		return str.replace(/^\s*\n*\r*|\s*\n*\r*$/g,'');
	},
	fadeUp:function(element, red, green, blue) {
		if (element.fade) {
			clearTimeout(element.fade);
		}
		element.style.backgroundColor = 'rgb('+red+','+green+','+blue+')';
		if (red == 255 && green == 255 && blue == 255) {
			return;
		}
		var newred = red + Math.ceil((255-red)/10);
		var newgreen = green + Math.ceil((255-green)/10);
		var newblue = blue + Math.ceil((255-blue)/10);
		var repeat = function() {
			bobs.util.fadeUp(element, newred, newgreen, newblue);
		}
		element.fade = setTimeout(repeat, 100);
	},
	prepareImages : function() {
		$jq('.image-right, .image-left').wrapInner('<div class="image_wrapper"></div>');
		$jq('.caption').each(function() {
			$jq(this).width($jq(this).parent().find('img').width());
		});
	},
	prepareExploreNav:function() {
		$navExplore = $jq('#nav-explore');
		$navTrigger = $jq('#nav-explore-wrapper');
		$trigger = $navTrigger.find('h2').eq(0).addClass('collapsed');
		$targets = $navExplore.find('li > ul').addClass('collapsed');
		$trigger.data('targets', $targets).click(function() {
			newClass = ($jq(this).attr('class') == 'collapsed') ? 'expanded' : 'collapsed';
			$targets.attr('class', newClass);
			$jq(this).attr('class', newClass);
		});
	},
	autoPopulate:function(input_sel) {	
		$jq(input_sel).each(function() {
			var populate_text = $jq('label[for="' + $jq(this).attr('id') + '"]').text();
			if (populate_text) {
				$jq(this).val(populate_text).data('populate_text', populate_text);				
				$jq(this).focus(function() {
					if ($jq(this).val() == $jq(this).data('populate_text')) {
						$jq(this).val('');
					}
				});
				$jq(this).blur(function() {
					if ($jq(this).val() == '') {
						$jq(this).val($jq(this).data('populate_text'));
					}
				});
			}
		});
	},
	prepareServiceLandingLinks : function() {
		if ($jq('body').eq(0).hasClass('service-landing-page')) {
			$jq('#secondary-content a, #left-column a').not($jq('#secondary-navigation a')).click(function() {
				bobs.util.popUp(this.href, "external", "");
				return false;
			});
		}
	}
}

$jq.preloadImages = function(images) {
	for(var i = 0; i < images.length; i++) {
		$jq("<img>").attr("src", images[i]);
	}
}

$jq(document).ready(function() { bobs.util.init(); });
