var headline_rotatespeed = 5000;
var headline_continuousrotation = 1;
var headline_fadeduration = 1;


resizeSpeed = 9;  // Lightbox resize speed

/*
function contact() {
	Modalbox.show('/contact', { title: "Contact Fulcrum Acoustic", width:550, overlayClose:true, afterLoad: function() {
		inspectMBheight();
	}});
}
*/

// rounded corners
document.observe('dom:loaded', function(e) {
	$$('.nm_currentPage_blog #pagecontent img').invoke( 'corner', {
		spriteSource : '/styles/images/roundedsprite.png',
		height:    6,
		width:     6,
		topleft    : '0 0',
		topright   : '-6px 0',
		bottomleft : '0 -6px',
		bottomright: '-6px -6px'
	});
	
	$$('.nm_currentPage_news #pagecontent img').invoke( 'corner', {
		spriteSource : '/styles/images/roundedsprite.png',
		height:    6,
		width:     6,
		topleft    : '0 0',
		topright   : '-6px 0',
		bottomleft : '0 -6px',
		bottomright: '-6px -6px'
	});
	
	$$('.nm_currentPage_technologies #underthehoodwrapper img').invoke( 'corner', {
		spriteSource : '/styles/images/roundedsprite.png',
		height:    6,
		width:     6,
		topleft    : '0 0',
		topright   : '-6px 0',
		bottomleft : '0 -6px',
		bottomright: '-6px -6px'
	});
	
	initDropDown("menublock"  , {              				

                reveal : Effect.Appear.bindAsEventListener(Effect, {
				duration: .3,
				transition: Effect.Transitions.sinoidal
                }),
                
                disappear : Effect.SlideUp.bindAsEventListener(Effect, {
				duration: .5,
				delay: 0,
				transition: Effect.Transitions.sinoidal
				}),
				
				revealDelay: .3, // in seconds, defaults to .3 
				clickEffect : Effect.Pulsate.bindAsEventListener(Effect, {
					duration: .3,
					pulses: 1,

					// callbacks: (could also specify 'beforeStart' below)
					// 'e' is the event obj, and 'e.element' is the clicked <a> node:
					afterFinish: function(e) {
						// whatever effect for removing current dropdown:
						e.element.up( '.wrapper').fade({
							duration: .2
						});
						if (e.element.pathname == "/contact") {
						//	fulcrum.contact();
						}
						else {
							// whatever final function you want:
							window.location = e.element.href;
						}
					}
					})
        });

	if ($(document.body).hasClassName('nm_currentPage_news') || $(document.body).hasClassName('nm_currentPage_blog')) {
		webkit.modinit('fbshare');
		if ($('newsstory')) {
			webkit.modinit('lightbox');
		}
		else if ($('newswrapper')) {
			// more links			
			$$('#newswrapper .morelink').each(function(o) {
				o.observe('mouseover', function(e) {				
					new Effect.Morph(o.id, { style:'background:#7d7d7d;color:#ffffff', duration:0.25});
				});
				
				o.observe('mouseout', function(e) {
					new Effect.Morph(o.id, { style:'background:#eeeeee;color:#336ebb', duration:0.25});	
				});
				
				o.observe('click', function(e) {
					e.stop();
					var foldnum = o.id.replace(/^foldlink_/,'');
					$('fold_' + foldnum).removeClassName('displaynone');
					$('morewrapper_' + foldnum).addClassName('displaynone');
					new Effect.ScrollTo('fold_' + foldnum, { duration:0.5 });
				});
			});
		}
	}	
	else if ($(document.body).hasClassName("nm_currentPage_downloads")) {
		fulcrum.downloadsObservers();
	}
	else if ($(document.body).hasClassName("nm_currentPage_home")) {
		webkit.homeBanners();
		fulcrum.moreNews();
	}
	else if ($(document.body).hasClassName("nm_currentPage_contact") && $('salesreps')) {
		webkit.modinit('modalbox');
		fulcrum.salesRepObservers();
	}
	else if ($(document.body).hasClassName('nm_currentPage_technologies')) {
		webkit.modinit('lightbox');		
	}

	// contact Modalbox form
	webkit.contactNavButton('menu_GeneralInquiries', '/contact');

	// newsletter form
	$('emaillist').observe('click', function(e) {
		e.stop();
		Modalbox.show('/emaillist', { title: 'Fulcrum Acoustic Newsletter Settings', width:600});
	});
	
	// search
	$('searchbutton').observe('click', function(e) {
		fulcrum.startSearch();
	});
	
	$('s').observe('keypress', function(e) {
		var key = e.which || e.keyCode;
		if (key == Event.KEY_RETURN) {
			fulcrum.startSearch();
		}
	});

	$('searchform').observe('submit', function(e) {
		e.stop();
	});
	
});

function fulcrum() {
	
	this.startSearch = function() {
		if ($('s').getValue()) {
			window.location = '/search/' + $('s').getValue();			
		}	
	}
	
	this.showcontact = function(contactform) {	
		if (contactform) {
			$('business').addClassName('displaynone');
			$('research').addClassName('displaynone');
			$('other').addClassName('displaynone');
			if ($('contactnoform')) {
				$('contactnoform').addClassName('displaynone');
			}
			new Effect.Appear(contactform, { duration: 0.5, afterFinish: function() {
				if (contactform == "business") {
					dest = "Business/Sales";
				}
				else if (contactform == "research") {
					dest = "Research and Development";
				}
				else {
					dest = "Fulcrum Acoustic";
				}
				$("MB_caption").update("Send Email to " + dest);
				Modalbox.resizeToContent();
			}});
		}
	}
	
	this.salesRepObservers = function() {
		// init observers when URL preset exists
		if (!$('usareps').hasClassName('displaynone')) {
			fulcrum.repUSObservers();
		}
		
		$('usa').observe('mouseover', function(e) {
			if (!$('usa').hasClassName('usaon')) {
				$('usa').addClassName('over');
			}
		});
		$('usa').observe('mouseout', function(e) {
			$('usa').removeClassName('over');
		});
		$('usa').observe('click', function(e) {
			e.stop();
			$('usa').removeClassName('over');
			if ($('usa').hasClassName('usaon')) {
				// already showing USA, do nothing
				return;
			}
			else {
				$('usa').addClassName('usaon');
				$('worldwide').removeClassName('worldwideon');
				fulcrum.showReps('usa');
			}
		});
		$('worldwide').observe('mouseover', function(e) {
			if (!$('worldwide').hasClassName('worldwideon')) {
				$('worldwide').addClassName('over');
			}
		});
		$('worldwide').observe('mouseout', function(e) {
			$('worldwide').removeClassName('over');
		});
		$('worldwide').observe('click', function(e) {
			e.stop();
			$('worldwide').removeClassName('over');
			if ($('worldwide').hasClassName('worldwideon')) {
				// already showing USA, do nothing
				return;
			}
			else {
				$('usa').removeClassName('usaon');				
				$('worldwide').addClassName('worldwideon');
				fulcrum.showReps('worldwide');
			}
		});
	}
	
	this.showReps = function(reps) {
		if ($('reps').hasClassName('displaynone')) {
			// hasn't been grown yet
			$('reps').setStyle({height:'10px'});
			$('reps').removeClassName('displaynone');
			new Effect.Morph('reps', { duration:0.75, style:'height:310px', afterFinish:function() {
				fulcrum.showRepsTrigger(reps);
			}});
		}
		else {
			fulcrum.showRepsTrigger(reps);
		}
	}

	this.showRepsTrigger = function(reps) {
		if ($('usareps').hasClassName('displaynone') && reps == "usa") {
			// show USA
			$('worldwidereps').addClassName('displaynone');
		}
		else if ($('worldwidereps').hasClassName('displaynone') && reps == "worldwide") {
			// show Worldwide
			$('usareps').addClassName('displaynone');
		}

		if (reps == "usa") {
			$('usareps').setStyle({display:'none'});
			$('usareps').removeClassName('displaynone');
			new Effect.Appear('usareps', { duration:0.5, afterFinish:function() {
				fulcrum.repUSObservers();
			}});
		}
		else if (reps == "worldwide") {
			$('worldwidereps').setStyle({display:'none'});					
			$('worldwidereps').removeClassName('displaynone');
			new Effect.Appear('worldwidereps', { duration:0.5, afterFinish:function() {
				fulcrum.repWWObservers();
			}});
		}
	}

	this.repUSObservers = function() {	
		$$('#salesreps #usimagemap area').each(function(o) {
			if (o.id) {
				$(o.id).observe('mouseover', function() {	
					//globalY.log('over ' + o.id);
					$('usmapoverlay').update('<div id="' + o.id + '" class="showregion"><a href = ""></a></div>');
					$(o.id).observe('mouseout', function() {
					//	globalY.log('out ' + o.id);
						if (!$('showusrep').innerHTML) {
							$('usmapoverlay').update('');						
						}
					});
					$(o.id).observe('click', function(e) {
						e.stop();				
						if ($('rep_' + o.id)) { return; }
						fulcrum.showRep(o.id);
					});		
				});	
			}		
		});
	}

	this.showRep = function(repID) {
		Modalbox.show('/contact/salesreps/showusrep/' + repID, { title: 'Sales rep', width:300, slideDownDuration:0, slideUpDuration:0, beforeLoad:function() {
			$("MB_window").addClassName('salesrepmb');
		}});
		/*
		if (webkit.cacheget('salesreps', repID)) {
			webkit.cacheoutput('salesreps', repID, 'showusrep');
		}
		else {
			new Ajax.Updater('showusrep', '/wp_templates/salesreps_template.php', {
				method:'post',
				parameters:'showrep=' + repID,
				onComplete:function() {
					webkit.cacheset('salesreps', repID, $('showusrep'));						
				}
			});	
		}
		*/
	}

	this.repWWObservers = function() {
		$$('#salesreps .wwcountry').each(function(o) {
			o.observe('click', function(e) {
				e.stop();
				if (webkit.cacheget('salesreps', o.id)) {
					webkit.cacheoutput('salesreps', o.id, $('showwwrep'));
					new Effect.Highlight('showwwrep', {duration:0.5, startcolor:'#336ebb', endcolor:'#cbcccb'});				
				}
				else {
					new Ajax.Updater('showwwrep', '/contact/salesreps/showwwrep/' + o.id.replace(/^country-/,'') + '/ajaxreload', {
						onComplete:function() {						
							webkit.cacheset('salesreps', o.id, $('showwwrep'));						
							new Effect.Highlight('showwwrep', { duration:0.5, startcolor:'#336ebb', endcolor:'#cbcccb'});
						}
					});
				}
			});
		});
	}

	this.openDir = function(ID) {
		if (!$(ID + '_wrapper').hasClassName('displaynone')) {
			new Effect.BlindUp(ID + '_wrapper', { duration:0.25, afterFinish:function() {
				$(ID + '_wrapper').addClassName('displaynone');
			}});
		//	console.log('close ' + ID);
		//	$(ID + '_wrapper').setStyle({display:'none'});
		}
		else {
			$(ID + '_wrapper').setStyle({display:'none'});
			$(ID + '_wrapper').removeClassName('displaynone');
			new Effect.BlindDown(ID + '_wrapper', { duration:0.25});
		//	console.log('open ' + ID);
		//	$(ID + '_wrapper').setStyle({display:'block'});
		}
		return;
	}

	this.moreNews = function() {
		var maxWidth = 330;
		var thisLength;
		$$('#morenews ul li a').each(function(o) {
			if (o.getWidth() > maxWidth) {
				thisLength = o.innerHTML.length;
				o.innerHTML = o.innerHTML.substr(0,(thisLength - 5)) + '...';
				fulcrum.moreNews();
			}
		});
	}
	
	this.downloadsObservers = function() {
		$$('#downloadswrapper a.folder').each(function(o) {
			o.observe('click', function(e) {
				e.stop();				
				fulcrum.openDir(o.id);
			});
		});
		
		$$('#displaymode #links a').each(function(o) {
			o.observe('click', function(e) {
				e.stop();
				if (o.id == "multifile") {
					fulcrum.downloadSwitcher(true);
				}
				else {
					fulcrum.downloadSwitcher(false);
				}
			});
		});
		
		$('downloadbutton').observe('click', function(e) {
			e.stop();
			fulcrum.downloadFiles();
		});
	}
	
	this.checkedFiles = $H();
	this.downloadSwitcher = function(isMulti) {
		if (isMulti) {
			$$('#downloadswrapper ul li .checkbox').each(function(o) {
				o.removeClassName('displaynone');
			});
			$('downloadbuttonwrapper').removeClassName('displaynone');			
			$('singlefile').removeClassName('activemode');
			$('multifile').addClassName('activemode');
			$('downloadswrapper').addClassName('multimode');
		}
		else {
			$$('#downloadswrapper ul li .checkbox').each(function(o) {
				o.addClassName('displaynone');
			});
			$('downloadbuttonwrapper').addClassName('displaynone');						
			$('singlefile').addClassName('activemode');
			$('multifile').removeClassName('activemode');
			$('downloadswrapper').removeClassName('multimode');
		}
		
		$$('#downloadswrapper .cbfolder').each(function(o) {
			o.observe('click', function(e) {				
				// select parentnode
				var parentli = o.parentNode;
				// select child list
				var thislist = parentli.select('li .checkbox');
				thislist.each(function(f) {
					var selectedfile = fulcrum.selectedFile(f);					
					if (!o.checked) {
						// remove checkmarks from child elements
						f.checked = false;
						if (f.hasClassName('cbfile')) {
							fulcrum.checkedFiles.set(selectedfile, false);																									
						}
					}
					else {
						// add checkmarks to child elements
						f.checked = true;
						if (f.hasClassName('cbfile')) {
							fulcrum.checkedFiles.set(selectedfile, true);
						}
					}					
				});				
			});
		});
		
		$$('#downloadswrapper .cbfile').each(function(o) {
			o.observe('click', function(e) {
				var selectedfile = fulcrum.selectedFile(o);				
				if (typeof fulcrum.checkedFiles.get(selectedfile) == "undefined" || fulcrum.checkedFiles.get(selectedfile) !== true) {
					fulcrum.checkedFiles.set(selectedfile, true);											
				}
				else {
					fulcrum.checkedFiles.set(selectedfile, false);											
				}				
			});
			if (isMulti) {
				// cancel clicks of files
				fulcrum.selectedFileNode(o).stopObserving('click');
				fulcrum.selectedFileNode(o).observe('click', function(e) {
					e.stop();
				});
			}
			else {
				fulcrum.selectedFileNode(o).stopObserving('click');
			}	
		});
	}
	
	this.selectedFile = function(node) {
		return fulcrum.selectedFileNode(node).href.replace(/^.+?\/nm_webkit\/libs\/download\.php\?file=/,'');
	}
	
	this.selectedFileNode = function(node) {
		var parentli = node.parentNode;
		var thisfile = parentli.select('a');
		return thisfile[0];
	}
	
	this.downloadFiles = function() {
		var totalfiles = fulcrum.checkedFiles.keys().length;
		if (!totalfiles) {
			$('downloadfeedback').update('ERROR: please select at least one file/folder');
			return;
		}
		var qs = 'downloadfiles=true&totalfiles=' + totalfiles;
		fulcrum.checkedFiles.each(function(pair,idx) {
			if (pair.value == true) {
				qs += '&file_' + idx + '=' + pair.key;
			}
		});
		$('downloadfeedback').update('Please wait while your files are being prepared...');
		new Ajax.Request('/downloads/', {
			method:'post',
			parameters:qs,
			onComplete:function(transport) {
			//	globalY.log(transport.responseText);
				if (!transport.responseText.match(/^zip failure:/)) {
					$('downloadfeedback').update('Your download is in progress, please find the file "fulcrumdownload.zip" in your downloads folder');								
					new Effect.Pulsate('downloadfeedback', { pulses:3, duration:3, from:0.3, afterFinish:function() {
						new Effect.Fade('downloadfeedback', { duration:1, afterFinish:function() {
							$('downloadfeedback').update('');
							$('downloadfeedback').setStyle({display:''});
						}});
					}});
					window.location = '/nm_webkit/libs/download.php?file=/downloadtmp/' + transport.responseText + '/fulcrumdownload.zip';		
				}
			}
		});
	}
}

var fulcrum = new fulcrum();