function sendMessage() {
    var email = document.getElementById('email');
    var message = document.getElementById('message');
                          
    if (email.value == '' || email.value == 'you@example.com' || !validateEmailAddress(email.value)) {
        alert('Please fill in a valid email address.'); 
        return false;
    } else if (message.value == '') {
        alert('Please tell me what you want to say.'); 
        return false;
    }

    var xhr = new XMLHttpRequest(); 
    
    xhr.open('POST', 'http://www.forstylishdesign.com/xml/sendMessage/', true); 
    query = 'email='+encodeURI(email.value)+'&message='+encodeURI(message.value);

    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xhr.setRequestHeader('Content-Length', query.length);

    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4 && xhr.status == 200) {  
            var xmlDocument = xhr.responseXML;  
            var messages = xhr.responseXML.getElementsByTagName('message');
            document.getElementById('xml').innerHTML = '<p>' + messages[0].firstChild.data + '<br /><a href="#container">Return to homepage</a>.</p>';
        }
    }  

    xhr.send(query);
}

function checkEmailAddress(boolean) {
    var elm = document.getElementById('email');
    var error = document.getElementById('errorCheck');
    var defaultEmail = 'you@example.com';
                            
    if (!boolean && elm.value == defaultEmail) {
        elm.value = '';  
    } else if (boolean && elm.value == '') {
        elm.value = defaultEmail;
    } else if (!validateEmailAddress(elm.value)) {
        error.innerHTML = 'Tssk, that\'s an invalid e-mail address!';    
    } else {
        error.innerHTML = '';
    }
}

function validateEmailAddress(emailAddress) {
   return /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/.test(emailAddress);
}

window.onload = function() {
    HtinyScrolling.init(); scrollTips.init();
}

function gotoit(target){
    HtinyScrolling.scrollToIt(target);
}

var HtinyScrolling = {
    speed : 1,     
    maxStep: 140,
    brakeK: 6,
    hash:null,        
    currentBlock:null,
    requestedX:0,
    init: function() {
        var lnks = document.getElementsByTagName('a');   
        for (var i = 0, lnk; lnk = lnks[i]; i++) {   
            if ((lnk.href && lnk.href.indexOf('#') != -1) &&  ((lnk.pathname == location.pathname) ||
                ('/'+lnk.pathname == location.pathname) ) && (lnk.search == location.search)) {  
                addEvent(lnk, 'click', HtinyScrolling.initScroll,false);
                lnk.onclick=function(){return false;}
            }   
        }    
    },
    getTarget: function(target) {
        while (target.tagName.toLowerCase() != 'a')
            target = target.parentNode;
        return target;
    },
    getElementXpos: function(el){
        var x = 0;
        while(el.offsetParent) {  
            x += el.offsetLeft;    
            el = el.offsetParent;
        }    return x;
    },        
    getScrollLeft: function(){
        if (document.all) return (document.documentElement.scrollLeft) ? document.documentElement.scrollLeft : document.body.scrollLeft;
        else return window.pageXOffset;   
    },    
    getWindowWidth: function(){
        if (window.innerWidth) return window.innerWidth; 
        if (document.documentElement && document.documentElement.clientWidth) return document.documentElement.clientWidth;
    },
    getDocumentWidth: function(){
        if (document.width) return document.width;
        if (document.body.offsetWidth) return document.body.offsetWidth;
    },
    initScroll: function(e){
        var targ;  
        if (!e) var e = window.event;
        if (e.target) targ = e.target;
        else if (e.srcElement) targ = e.srcElement;  
        targ = HtinyScrolling.getTarget(targ);
        HtinyScrolling.hash = targ.href.substr(targ.href.indexOf('#')+1,targ.href.length); 
        HtinyScrolling.currentBlock = document.getElementById(HtinyScrolling.hash);   
        if(!HtinyScrolling.currentBlock) return;
        HtinyScrolling.requestedX = HtinyScrolling.getElementXpos(HtinyScrolling.currentBlock); 
        HtinyScrolling.scroll(targ); 
        return false;
    },
    scrollToIt: function(targ){
        target = document.getElementById(targ);
        HtinyScrolling.currentBlock = document.getElementById(targ);
        if (!HtinyScrolling.currentBlock) return;
        HtinyScrolling.requestedX = HtinyScrolling.getElementXpos(HtinyScrolling.currentBlock);
        HtinyScrolling.scroll(target);
        return false;
        
    }, 
    scroll: function(targ) {
        var left  = HtinyScrolling.getScrollLeft();
        if(HtinyScrolling.requestedX > left) {
            var endDistance = Math.round((HtinyScrolling.getDocumentWidth() - (left + HtinyScrolling.getWindowWidth())) / HtinyScrolling.brakeK);
            endDistance = Math.min(Math.round((HtinyScrolling.requestedX-left)/ HtinyScrolling.brakeK), endDistance);
            var offset = Math.min(Math.abs(Math.round((HtinyScrolling.requestedX-left)/ HtinyScrolling.brakeK)), HtinyScrolling.maxStep);
        } else {
            var offset = - Math.min(Math.abs(Math.round((HtinyScrolling.requestedX-left)/ HtinyScrolling.brakeK)), HtinyScrolling.maxStep);
        } 
        window.scrollTo(left + offset, 0);
        if (Math.abs(left-HtinyScrolling.requestedX) <= 1 || HtinyScrolling.getScrollLeft() == left) {
            HtinyScrolling.hash = null;
        } else { setTimeout(HtinyScrolling.scroll,HtinyScrolling.speed) };
    }
}

var scrollTips = {
    dx : null,
    init : function() {    
        if (window.addEventListener) {
            window.addEventListener("DOMMouseScroll", this.mouseScroll, false);
        } else { document.attachEvent("onmousewheel", this.mouseScroll) }; 
        var left = document.getElementById('left');
        addEvent(left,'mouseover', function() {this.dx=setInterval('scrollTips.arrowScroll(0)',100);return false;});
        addEvent(left,'mouseout', function() { clearInterval(this.dx); return false;});
        var right = document.getElementById('right');
        addEvent(right,'mouseover', function() {this.dx=setInterval('scrollTips.arrowScroll(1)',100);return false;});
        addEvent(right,'mouseout', function() { clearInterval(this.dx); return false;});
    },
    mouseScroll : function(e) {
        if (!e) var e = window.event;
            var scroll = e.detail ? e.detail * 20 : e.wheelDelta / -20;
        if (scroll>=0 ){  
            window.scrollBy(80,0);
        } else { window.scrollBy(-80,0) }; 
    },    
    arrowScroll: function(val) {
        if(val==1) {
            window.scrollBy(70,0);
        } else {
            window.scrollBy(-70,0)
        }
    }
}

function addEvent(obj, type, fn) {
    if (obj) {
        if (obj.addEventListener)
            obj.addEventListener(type, fn, false);
        else if (obj.attachEvent) {
            obj["e"+type+fn] = fn;
            obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
            obj.attachEvent("on"+type, obj[type+fn] );
        }
    }
}

function removeEvent(obj, type, fn) {
    if (obj.removeEventListener)
        obj.removeEventListener(type, fn, false );
    else if (obj.detachEvent) {
        obj.detachEvent("on"+type, obj[type+fn] );
        obj[type+fn] = null;
        obj["e"+type+fn] = null;
    }
}