var arctiva = {};

arctiva.init = function() {
	//this.arctiva = new arctiva.main();
	arctiva.main();
	try {
	  document.execCommand("BackgroundImageCache", false, true);
	} catch(err) {}
	
	//preload product drop-down image
	var dropdown = new Image();
	dropdown.src = 'http://assets-static.lemansnet.com/sites/arctiva/img/navigation/products/dropdown.gif';
	
};

/** 
 * Arctiva Main Class
 */
arctiva.main = function() {
	arctiva.main.setViewport();
	arctiva.main.setListeners();
	arctiva.main.setFlashObjects();
	
	if($('news')) {
		arctiva.main.setNews();
	}
};

/**
 * Place Setters here
 */

/* Hide the horizontal scroll if the document is larger than the content area */
arctiva.main.setViewport = function(e) {
	var dims = document.viewport.getDimensions();
	
	// Set Footer Extension
	var contentArea;
	contentArea = $('main_content').getHeight();
	contentArea += 55;
	var h = 74;
	if((dims.height - contentArea) > 74) {
		h = dims.height - contentArea;
	}
	if($('flashHolder')) {
		if(dims.height < 708) {
			h = 708 - contentArea;
		}
	}
	h = h + 'px';
	$('extension').setStyle({height: h});
};

arctiva.main.clearZipCode = function() { if ($F('zip_code')=='Zip'){$('zip_code').value='';} };

arctiva.main.numbersOnly = function(e) {
	var charCode = (e.which) ? e.which : e.keyCode;
	if (charCode > 31 && (charCode < 48 || charCode > 57)){ e.stop(); }
};

arctiva.main.validateDealerLocator = function(e) {
	if ($F('zip_code')=='' || $F('zip_code')=='Zip'){ 
		$('dealer_locator_error').show();
		e.stop();
	}
};

arctiva.main.validateCatalogRequest = function(e) {
	var valid = true;
	$('invalid_email_error').hide();
	$('catalog_request_error').hide();
	if ($F('email').search(/[a-z_]*[a-z0-9._%-]?[a-z0-9]+@[a-z0-9][a-z0-9._-]+\.[a-z0-9]+/i) == -1){
		$('invalid_email_error').show();
		valid = false;
	}
	if ($F('first_name')=='' || $F('last_name')=='' || $F('address1')=='' || $F('city')=='' || $F('state')=='' || $F('zip_code')==''){ 
		$('catalog_request_error').show();
		valid = false;
	}
	if(!valid){ e.stop(); }
};

arctiva.main.validateContact = function(e) {
	var valid = true;
	$('invalid_email_error').hide();
	$('contact_error').hide();
	if ($F('name')=='' || $F('message')==''){ 
		$('contact_error').show();
		valid = false;
	}
	if (($F('email').search(/[a-z_]*[a-z0-9._%-]?[a-z0-9]+@[a-z0-9][a-z0-9._-]+\.[a-z0-9]+/i) == -1)){
		$('invalid_email_error').show();
		valid = false;
	}
	if(!valid){ e.stop(); }
};

arctiva.main.showTermsOfUse = function(e) {
	$('terms_of_use_box').show();
	if($('state') && navigator.appName == "Microsoft Internet Explorer") {
		$('state').hide(); // Hide <select> element
	}
	e.stop();
};

arctiva.main.hideTermsOfUse = function(e) {
	$('terms_of_use_box').hide();
	
	if($('state') && navigator.appName == "Microsoft Internet Explorer") {
		$('state').show(); // Show <select> element
	}
	e.stop();
};

arctiva.main.showPartNumbers = function(e) {
	$('part_numbers_box').show();
	e.stop();
};

arctiva.main.hidePartNumbers = function(e) {
	$('part_numbers_box').hide();
	e.stop();
};

arctiva.main.setColorway = function(e) {
	e.stop();
	var newRank = Event.element(e).id.split('_')[1];
	var relatedProducts = $('complete_the_look').getElementsByClassName('png_image');
	var relatedLinks = $('complete_the_look').getElementsByTagName('a');
	$('feature_image').src = $('feature_image').src.replace(/rank=\d.+/, "rank="+newRank);
	for (var i=0; i<relatedProducts.length; i++){
		var hasRank = false;
		var rank = relatedProducts[i].id.split('_')[1];
		var prod = relatedProducts[i].id.split('_')[0];
		prod = prod.substring(4, prod.length);
		
		rank = rank.substring(1, (rank.length - 1));
		rank = rank.gsub(', ', ',');
		rank = rank.split(',');

		for(var x=0; x<rank.length; x++) {
			if(rank[x] == newRank * 10) {
				hasRank = true;
			}
		}
		if(hasRank)
		{
			if(relatedProducts[i].src) {
				relatedProducts[i].src = relatedProducts[i].src.replace(/rank=\d.+/, 'rank='+newRank+'0'); 
			} else {
				relatedProducts[i].style.filter = relatedProducts[i].style.filter.replace(/rank=\d.+/, 'rank=' + newRank + '0'); 
			}
			relatedLinks[i].href = relatedLinks[i].href.replace(/rank=\d.+/, 'rank='+newRank); 
		}	else {
			if(prod == 6464 || prod == 6465 || prod == 6466)
			{
				if(relatedProducts[i].src) {
					relatedProducts[i].src = relatedProducts[i].src.replace(/rank=\d.+/, 'rank=1100'); 
				} else {
					relatedProducts[i].style.filter = relatedProducts[i].style.filter.replace(/rank=\d.+/, 'rank=1100');
				}
				relatedLinks[i].href = relatedLinks[i].href.replace(/rank=\d.+/, 'rank=110'); 
			} else {
				if(relatedProducts[i].src) {
					relatedProducts[i].src = relatedProducts[i].src.replace(/rank=\d.+/, 'rank=1000'); 
				} else {
					relatedProducts[i].style.filter = relatedProducts[i].style.filter.replace(/rank=\d.+/, 'rank=1000');
				}
				relatedLinks[i].href = relatedLinks[i].href.replace(/rank=\d.+/, 'rank=100'); 
			}		
		}
	}
	e.stop();
};

arctiva.main.loadScript = function(url, callback, onError, timeout) {
        try {
				var timeout = (timeout && parseInt(timeout,10) > 0)?parseInt(timeout,10):1500;
				var script = document.createElement("script");
				if(!arctiva.timer){
					arctiva.timer = [];
				}
				script.src = url;
				script.type = "text/javascript";
				$$("head")[0].appendChild(script);  // add script tag to head element

				if(callback) {
					arctiva.timer[url + '_ttd'] = 0;
					arctiva.timer[url] = setInterval(function() {
							if(document.readyState == 'loaded' || document.readyState == 'complete') {
								clearInterval(arctiva.timer[url]);
								callback();
							}
							arctiva.timer[url + '_ttd'] += 10;
							if(arctiva.timer[url + '_ttd'] > timeout){
								clearInterval(arctiva.timer[url]);
								if(onError)onError();
							}
					}, 10);
					
					script.onreadystatechange = function () {
						if(script.readyState == 'loaded' || script.readyState == 'complete') {
							clearInterval(arctiva.timer[url]);
							callback();
						}
					};
					
					script.onload = function () {
							clearInterval(arctiva.timer[url]);
							callback();
							return;
					};

				}
        } catch (e) {
				if(onError){
					onError();
				}else{
					alert(e);
				}
        }
}

arctiva.main.playVideo = function(e) {
	if(e)e.stop();

	var videoModal = $('videoLink');
	var loaded = (videoModal.loaded)?true:false;
	
	if(!loaded){
		videoModal.loaded = true;
		arctiva.main.loadScript('http://assets-static.lemansnet.com/common/js/jwplayer/jwplayer.js?ver=5.7', arctiva.main.playVideo);
		$('modalMask').observe('click', function(){
			this.style.display="none";
			$('modalDiv').style.display="none";
		});
		$('closeModal').observe('click', function(){
			$('modalMask').style.display="none";
			$('modalDiv').style.display="none";
		});
	}

	if(typeof jwplayer !== "undefined"){ //if the user clicks more than once before the script loads
				
		jwplayer('modalContent').setup({
		    'flashplayer': 'http://assets-static.lemansnet.com/common/js/jwplayer/player.swf',
		    'id': 'playerID',
		    'width': '640',
		    'height': '432',
		    'autostart': true,
		    'file': videoModal.href
		});
		var modalDiv = $('modalDiv');
		var modalWidth = modalDiv.getWidth(); //includes 10px margin on each side
		var modalHeight = modalDiv.getHeight();
		var docHeight = $$('body')[0].getHeight();
		var vpDims = document.viewport.getDimensions();
		var winHeight = vpDims['height'];
		var winWidth = vpDims['width'];
		var maskHeight = (docHeight > winHeight)?docHeight:winHeight;
		var modalTop = document.viewport.getScrollOffsets()['top'] + ((winHeight - modalHeight) / 2);
		var modalLeft = (winWidth - modalWidth) / 2;
		
		$('modalMask').setStyle({height: maskHeight + 'px', display: 'block'});
		
		modalDiv.setStyle({top: modalTop + 'px', left: modalLeft + 'px', display: 'block'});
	}
	return false;
};

arctiva.main.setListeners = function() {
	Event.observe(window, 'resize', arctiva.main.setViewport);
	Event.observe('arctiva', 'mouseover', arctiva.main.handleWindowHover);
	Event.observe('products_link', 'click', function(e){e.stop();});
	Event.observe(document, 'arctivaEvt:resize', arctiva.main.setViewport);
	if ($('videoLink')){
		Event.observe('videoLink', 'click', arctiva.main.playVideo);
		$('videoLink').onclick = function(){return false;};
	}

	if ($('dealer_locator')){
		Event.observe('zip_code', 'focus', arctiva.main.clearZipCode); 
		Event.observe('zip_code', 'keypress', arctiva.main.numbersOnly); 
		Event.observe('dealer_locator_form', 'submit', arctiva.main.validateDealerLocator); 
	}
	if ($('catalog_request')){ 
		Event.observe('zip_code', 'keypress', arctiva.main.numbersOnly); 
		Event.observe('catalog_request_form', 'submit', arctiva.main.validateCatalogRequest); 
	}
	if ($('contact')){ 
		Event.observe('contact_form', 'submit', arctiva.main.validateContact); 
	}
	if ($('terms_of_use_box') && $('terms_link')){ 
		Event.observe('terms_link', 'click', arctiva.main.showTermsOfUse); 
		Event.observe('close_terms', 'click', arctiva.main.hideTermsOfUse); 
	}
	if ($('product')){ 
		if($('part_numbers_link')){
			Event.observe('part_numbers_link', 'click', arctiva.main.showPartNumbers); 
			Event.observe('close_part_numbers_link', 'click', arctiva.main.hidePartNumbers);
		}
		if ($('colorways_center')){
			var thumbnails = $('colorways_center').getElementsByTagName('a');
			for(var i=0; i<thumbnails.length; i++){
				Event.observe(thumbnails[i], 'click', arctiva.main.setColorway);
			}
		}
	}
};

arctiva.main.setFlashObjects = function() {
	if($('flashObject_splash')) {
		$('arctiva').removeClassName('action_shot');
		var flashvars = {};
		var params = { wmode: 'transparent' };
		var attributes = { id: 'flashObj_splash', wmode: 'transparent' };
		swfobject.embedSWF("http://assets-static.lemansnet.com/sites/arctiva/flash/splash.swf", "flashObject_splash", "1195", "708", "9.0.0", false, flashvars, params, attributes);
	}
	if($('flashObject_category')) {
		var flashvars = {};
		var params = { flashvars: '&isBrowser=true&cat=' + swfobject.getQueryParamValue("cat"), wmode: 'transparent' };
		var attributes = { id: 'flashObj_category', wmode: 'transparent' };
		swfobject.embedSWF("/_assets/sites/arctiva/flash/category.swf", "flashObject_category", "960", "370", "9.0.0", false, flashvars, params, attributes);
	}
};


arctiva.main.setNews = function() {
	d = document.getElementsByClassName('newsWrapper active');
	if(d.length <= 0) {
		document.getElementsByClassName('newsWrapper')[0].className = 'newsWrapper active';
		document.getElementsByClassName('newsStory')[0].className = 'newsStory active';
	}
	
	nws = document.getElementsByClassName('newsLink');
	for(x=0;x<nws.length;x++) {
		nws[x].onclick = function() {
			stories = document.getElementsByClassName('newsStory');
			items = document.getElementsByClassName('newsWrapper');
			for(i=0;i<stories.length;i++) {
				stories[i].className = "newsStory";
			}
			for(i=0;i<items.length;i++) {
				items[i].className = "newsWrapper";
				items[i].style.background = "";
			}
			document.getElementById(this.id + "_story").className = "newsStory active";
			document.getElementById(this.id + "_item").className = "newsWrapper active";
			document.getElementById(this.id + "_item").style.background = "url(http://assets-static.lemansnet.com/sites/arctiva/img/news/right_arrow.gif) center right no-repeat";
			return false;
		}
	}
}

/**
 * Place Handlers here
 */

arctiva.main.handleWindowHover = function(e) {
	var target = Event.element(e);
	if(target.id == 'products_link' || target.id == 'products_sub_menu' || target.className == 'submenu_link') {
		$('products_link').setStyle({backgroundColor: '#1c1c1c'});
		$('products_sub_menu').setStyle({display: 'block'});
	} else {
		$('products_link').setStyle({backgroundColor: 'transparent'});
		$('products_sub_menu').setStyle({display: 'none'});
	}
};

/**
 * Init
 */
Event.observe(window, "load", arctiva.init);

var fireResize = function() {
	var dims = document.viewport.getDimensions();
	
	// Set Footer Extension
	var contentArea;
	contentArea = $('main_content').getHeight();
	contentArea += 55;
	var h = 74;
	if((dims.height - contentArea) > 74) {
		h = dims.height - contentArea;
	}
	if($('flashHolder')) {
		if(dims.height < 708) {
			h = 708 - contentArea;
		}
	}
	h = h + 'px';
	$('extension').setStyle({height: h});
}



