
function changeFieldSetCollapse(elem,dir,anim) {
	var s = {
		eO: .3,
		eT: 59,
		mH: 0
	}
	var etn = mHn = lTn = lHn = 0;
	
	/* this script is rather CSS-specific because of padding, etc */
	var midElem = elem.getElement('div.mid');
	var legendElem = elem.getElement('legend');
	
	if ( dir == 'init' ) {
		elem.tmInitPT = elem.getStyle('padding-top').toInt();
		midElem.tmInitH = midElem.getStyle('height').toInt();
		legendElem.tmExpandElem = elem;
		legendElem.addEvent('click',function() {
			//alert('clicky! '+this.tmExpandElem);
			changeFieldSetCollapse(this.tmExpandElem,'toggle',true);
		});
		legendElem.setStyle('cursor','pointer');
		changeFieldSetCollapse(elem,'closed',anim);
		return false;
	} else if ( dir == 'opened' ) {
		eOn = 1;
		eTn = elem.tmInitPT;
		mHn = midElem.tmInitH;
	} else if ( dir == 'closed' ) {
		eOn = s.eO;
		eTn = s.eT;
		mHn = s.mH;
	} else if ( dir == 'toggle' ) {
		if ( elem.tmIsCollapsed ) {
			changeFieldSetCollapse(elem,'opened',anim);
		} else {
			changeFieldSetCollapse(elem,'closed',anim);
		}
		return false;
	}
	
	elem.tmIsCollapsed = ( dir == 'closed' );
	
	if ( anim ) {
		var f1 = new Fx.Morph(elem, {duration: 'long', transition: Fx.Transitions.Sine.easeOut});
		f1.start({
			'opacity': eOn,
			'padding-top': eTn
		});
		var f2 = new Fx.Morph(midElem, {duration: 'long', transition: Fx.Transitions.Sine.easeOut});
		if ( elem.tmIsCollapsed ) {
			//nothing special
		} else {
			f2.addEvent('complete',function() {
				midElem.setStyle('height','auto');
			});
		}
		f2.start({
			'height': mHn
		});
	} else {
		elem.setStyle('opacity',eOn);
		elem.setStyle('padding-top',eTn);
		if ( elem.tmIsCollapsed ) {
			midElem.setStyle('height',0);
		} else {
			midElem.setStyle('height','auto');
		}
	}
	
	return false;
}

window.addEvent('domready',function() {

	if (
		( !window.tm.isFormOld('theQuoteForm') ) &&
		( !window.tm.isFormDisabled('theQuoteForm') )
	) {
		
		var i=0;
		var mp = $('moreParaLink');
		var s1 = $$('fieldset.wideBox');
		
		if ( mp && s1.length > 1 ) {
		
			s1.each( function( elem, num ) {
				if ( num < (s1.length - 2) ) changeFieldSetCollapse(s1[num+1],'init',false);
			});
			
			var s1 = $$('fieldset.wideBox');
			mpInner = mp.getElement('span span span');
			
			if (mpInner) {
				var moreParaLink = new Element('a',{href:'javascript:void;',html:'Provide more detailed info here',
					events: {
						click: function() {
							//var scroller = new Fx.Scroll(window).toElement(mp);
							if ( $('moreParaLink') ) $('moreParaLink').setStyle('display','none');
							s1.each( function( elem ) {
								if ( elem.tmIsCollapsed ) {
									changeFieldSetCollapse(elem,'opened',true);
								}
							});
						}
					}
				});
				mpInner.adopt(moreParaLink);
			}
		}
			
		var myFx = new Fx.Scroll(window).set(0,0);
			
		var com = $('inputCompany');
		var url = $('inputURL');
			
		if ( com && url ) {
			com.addEvent('keyup',function() {
				var oldVal = url.value;
				var newVal = com.value.toLowerCase();
				newVal = newVal.replace(/[^a-zA-Z0-9-.]+/,'');
				newVal = newVal.replace(/^w+\./,'');
				
				if ( /\.[a-z]+$/.test(newVal) ) {
					//has a suffix,
					//so don't add a suffix
				} else {
					//doesn't have a dom suffix
					//so strip .'s because they "must" be bogus...
					newVal = newVal.replace(/\.+/,'');
					newVal += '.com';
				}
				
				newVal = 'www.'+newVal;
				
				//this may look absolutely insane, but it actually works!
				//and for some weird reason, it's the only way that really does seem to work 100% of the time
				//it seems that when javascript gets flooded by keyup/keydown events, it starts skipping
				//handlers, and sometimes even individual statements... yikes.
				
				newVal = newVal.replace(/[^a-z0-9.-]+/,'');
				newVal = newVal.replace(/[^a-z0-9.-]+/,'');
				newVal = newVal.replace(/[^a-z0-9.-]+/,'');
				newVal = newVal.replace(/[^a-z0-9.-]+/,'');
				newVal = newVal.replace(/[^a-z0-9.-]+/,'');
				newVal.replace(/\.+/,'.');
				newVal.replace(/\.+/,'.');
				newVal.replace(/\.+/,'.');
				newVal.replace(/\.+/,'.');
				newVal.replace(/\.+/,'.');
				newVal.replace(/\.+/,'.');
				newVal.replace(/\.+/,'.');
				newVal.replace(/\.+/,'.');
				newVal.replace(/\.+/,'.');
				newVal = newVal.toLowerCase();
				if ( newVal == 'www..com' || newVal == 'www.com' ) newVal = 'www.companyname.com';
				url.value = newVal;
			});
		}
	}
	
	if ( $('inputColors') ) {
		var cPicker = new tmColorPicker('inputColors');
		//cPicker.setDisabled(true);
	}
	
	if (
		( !window.tm.isFormDisabled('theQuoteForm')  )
	) {
		if ( $('inputSubmit') ) {
			$('inputSubmit').addEvents({
				'mouseover':
					function() {
						var m = new Fx.Morph(this);
						m.start({
							'color':'#00ff00',
							'border-color':'#00ff00'
						});
					},
				'mouseleave':
					function() {
						var m = new Fx.Morph(this);
						m.start({
							'color':'#aaaaaa',
							'border-color':'#aaaaaa'
						});
					}
			});
		}
	}
	
	if ( $('inputTZ') ) {
		if ( $('inputTZ').selectedIndex <1 && !$('inputTZ').disabled ) {
			var tzUpdate = new Request.JSON({
				url:"/localeData/timeZones/"+window.tm.getTZO()+".json",
				onComplete: function(tzData) {
					var opts = [];
					var i = 0;
					for ( opt in tzData.data ) {
						opts[i] = new Element('option',{value:opt,html:tzData.data[opt]});
						i++;
					}
					var optGroup = new Element('optgroup',{label:tzData.string}).adopt(opts).inject($('inputTZ'),'top');
					$('inputTZ').selectedIndex = 0;
				},
			}).get();
		}
	}
	
	var cMenuID = 'inputCountry';
	if ($(cMenuID)) {
		$(cMenuID).addEvent('change',
			function() {
				var c = window.tm.selectedValue(this);
				if ( c == 'us' ) {
					$('inputRegion').removeClass('noRegion');
					$('inputLanguage').removeClass('noRegion');
				} else {
					$('inputRegion').addClass('noRegion');
					$('inputLanguage').addClass('noRegion');
				}
			}
		);
		$(cMenuID).fireEvent('change');
	}
});

