var Site = {
	
	start: function(){
		Site.fixPNGs();
		Site.scrollit();
		Site.login();
		Site.quoteform();
	},
	
	fixPNGs: function(){
		//for the record, fuck Microsoft's shitty products.
		if(typeof document.body.style.maxHeight=='undefined'){
			$$('.pngfix').each(function(el){
				el.setStyle('behavior','url(/iepngfix.htc)');
			});
			$('get-started').setStyle('display','none');
		}
	},
	
	scrollit: function(){
		var scroll = new Fx.Scroll2('innerwrapper', {
			//link: 'cancel',
			duration: 1500,
			//offset: {'x': -20, 'y': -20}, // some padding
			transition: Fx.Transitions.Cubic.easeInOut
		});

		$$('.anchorlink').addEvent('click', function() {
			var target = document.getElement(this.get('href'));
			if (target) scroll.toElement(target);
			return false;
		});
	},
	
	login: function(){
		$('login').setStyle('height','auto');
		var mySlide = new Fx.Slide('login');  //starts the panel in closed state
 
    	//Show-Hide login panel when you click the link "Login" on top of the page
    	$('toggleLogin').addEvent('click', function(e){
			e = new Event(e);
			mySlide.toggle(); //show-hide login panel
			e.stop();
		});
 
		//Hide login panel when you click the button close on the upper-right corner of the login panel
    	$('closeLogin').addEvent('click', function(e){
			e = new Event(e);
			mySlide.slideOut(); //Hide login panel
			e.stop();
		});
		
		$('loginform').addEvent('submit', function(e) {
			if(e!=undefined){ e.stop(); }
			var responseField = $('responseField').empty();
			//responseField.set('morph', {duration: 500,link: 'cancel'}).morph('.ajax-loading');	
			this.set('send', {onComplete: function(response) { 
				response = JSON.decode(response);
				if(response.success==1){
					$('loginfrm').reset();
					responseField.set('morph', {duration: 500,link: 'cancel'}).morph('.ajax-response-ok');
				}else{
					responseField.set('morph', {duration: 500,link: 'cancel'}).morph('.ajax-response-error');
				}
				responseField.set('html', response.msg);
			}}).send.delay(1000,this);
		});
	},
	
	quoteform: function(){
		$('quoteform').addEvent('submit', function(e) {
			if(e!=undefined){ e.stop(); }
			var quoteresponse = $('quoteresponse').empty();
			$$('.invalid_field').set('text','');
			$$('.invalid_field').removeClass('invalid_field');	
			this.set('send', {onComplete: function(response) { 
				response = JSON.decode(response);
				$each(response, function(item, status) {
					if(status=='success'){
						$each(item, function(value, key) {
							var thespan = $(key).getNext('span');
							if(thespan){
								thespan.set('text', value);
								thespan.set('class', 'valid_field');
							}
						})
					}else if(status=='failure'){
						$each(item, function(value, key) {
						    if(key=='captcha'){
						        Recaptcha.reload();
						        var thespan = $('captcha').getNext('span');
						    }else{
						        var thespan = $(key).getNext('span');
						    }
							if(thespan){
								thespan.set('text', value);
								thespan.set('class', 'invalid_field');
							}
						})
					}else if(status == 'complete'){
						$('quoteform').reset();
						quoteresponse.set('text','Thank you. We will respond promptly.');
					}
				});
			}}).send.delay(1000,this);
		});
	}
}

window.addEvent('domready', function(){
	Site.start();
});

window.addEvent('load', function(){
	$('wrapper').setStyle("display","block");
})

var RecaptchaOptions = {
	theme : 'clean'
};

/* A workaround for IE issues in mootools 1.2.1
 * - Recreates FX.Scroll() but utilises 1.2.0's getPosition/getOffset routines.
 */
Fx.Scroll2 = new Class({
 
    'Extends': Fx.Scroll,
 
    'styleString': Element.getComputedStyle,
    'styleNumber': function(element, style) {
        return this.styleString(element, style).toInt() || 0;
    },
    'borderBox': function(element) {
        return this.styleString(element, '-moz-box-sizing') == 'border-box';
    },
    'topBorder': function(element) {
        return this.styleNumber(element, 'border-top-width');
    },
    'leftBorder': function(element) {
        return this.styleNumber(element, 'border-left-width');
    },
    'isBody': function(element) {
        return (/^(?:body|html)$/i).test(element.tagName);
    }, 
    'toElement': function(el) {
        var offset   = {x: 0, y: 0};
        var element  = $(el);
       
        if (this.isBody(element)) {
            return offset;
        }
        var scroll = element.getScrolls();
               
        while (element && !this.isBody(element)){
            offset.x += element.offsetLeft;
            offset.y += element.offsetTop;
           
            if (Browser.Engine.gecko){
                if (!this.borderBox(element)){
                    offset.x += this.leftBorder(element);
                    offset.y += this.topBorder(element);
                }
                var parent = element.parentNode;
                if (parent && this.styleString(parent, 'overflow') != 'visible'){
                    offset.x += this.leftBorder(parent);
                    offset.y += this.topBorder(parent);
                }
            } else if (Browser.Engine.trident || Browser.Engine.webkit){
                offset.x += this.leftBorder(element);
                offset.y += this.topBorder(element);
            }
 
            element = element.offsetParent;
            if (Browser.Engine.trident) {
                while (element && !element.currentStyle.hasLayout) {
                    element = element.offsetParent;
                }
            }
        }
        if (Browser.Engine.gecko && !this.borderBox(element)){
            offset.x -= this.leftBorder(element);
            offset.y -= this.topBorder(element);
        }
       
        var relative = this.element;
        var relativePosition = (relative && (relative = $(relative))) ? relative.getPosition() : {x: 0, y: 0};
        var position = {x: offset.x - scroll.x, y: offset.y - scroll.y};
       
        return this.start(position.x - relativePosition.x, position.y - relativePosition.y);
    }
});