

/* GOOGLE ANALYTICS */
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-10167480-1']);
_gaq.push(['_trackPageview']);

(function() {
	var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
	ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
	var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

//POPUP WINDOW
function popup(url, width, height) {

    if (self.innerHeight) {
        winWidth = self.innerWidth;
        winHeight = self.innerHeight;
      } else if (document.documentElement && document.documentElement.clientHeight) {
        winWidth = document.documentElement.clientWidth;
        winHeight = document.documentElement.clientHeight;
      } else if (document.body) {
        winWidth = document.body.clientWidth;
        winHeight = document.body.clientHeight;   
      }
    
    //-1 indicates we want to open popup as wide as possible
    if(width == '-1') { width = winWidth; }

    var xOffset = (winWidth - width)/2, yOffset = (winHeight - height)/2;

    window.open(url,url,'width='+width+',height='+height+',screenX='+xOffset+',screenY='+yOffset+',top='+yOffset+',left='+xOffset+',directories=no,location=no,menubar=no,scrollbars=no,status=no,toolbar=no,resizable=no');
}

 
 //IE 5.5 / 6 PNG FIX
var blank = new Image();
blank.src = 'img/site/blank.gif';
function fixPng(png) {
	  // get src
	  var src = png.src;
	  // set width and height
	  if (!png.style.width) { png.style.width = $(png).width(); }
	  if (!png.style.height) { png.style.height = $(png).height(); }
	  // replace by blank image
	  png.onload = function() { };
	  png.src = blank.src;
	  // set filter (display original image)
	  png.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "',sizingMethod='scale')";
}

jQuery(function($){

    //###################
	//GENERAL
    //###################
	
	//IE 5.5 / 6 PNG FIX
    var badBrowser = (/MSIE ((5\.5)|6)/.test(navigator.userAgent) && navigator.platform == "Win32");
    if (badBrowser) {
      // get all pngs on page
      $('img[src$=.png]').each(function() {
        if (!this.complete) {
          this.onload = function() { fixPng(this) };
        } else {
          fixPng(this);
        }
      });
    }


    //###################
	//SITE NAV
    //###################
	
	//FUNCTIONS
	//scrollpage to location of passed in id
	function scrollpageto(id){
		$('html,body').animate({scrollTop: $("#"+id).offset().top},'slow');
	}
	
	//BUTTON HANDLERS
	//when top nav buttons clicked
	$("#sitenav a").click(function() {
		var scrollto = $(this).attr("scrollto");
		if(scrollto != null) {
			scrollpageto(scrollto);
			return false;
		}
	});
	
    //###################
	//SCROLL NAV
    //###################
	
	//FUNCTIONS
	//called whenever user scrolls (see init)
	function positionScrollNav() {
		//position and display scroll nav
		offset = $('#about').offset();
		if($(window).scrollTop() >= offset.top - 50) {
			var toppos = $(window).scrollTop() + 100;
			$('#scrollnav').css({'display': 'block', 'top': toppos});
		} else {
			$('#scrollnav').css({'display': 'none'});
		}
	};
	
	//BUTTON HANDLERS
	//scroll up to homepage
	$('#scrollhome').click(function() {
		scrollpageto('pagecontainer');
		return false;
	});
	//scroll down to next closest div
	$('#scrollnext').click(function() {
		//loop through each section div
		$('.sectiondiv').each(function() {
			//get section's position
			var divpos = $(this).offset().top;
			//get scrollnav's position
			var navpos = $('#scrollnav').offset().top;
			//if section below scrollnav and is not already selected
			if(divpos > navpos && divpos != $(window).scrollTop()) {
				//scroll to selected section
				$('html,body').animate({scrollTop: $(this).offset().top},'slow');
				//stop looping through section div
				return false;
			}
		});
		return false;
	});	
    //scroll up to next highest div
	$('#scrolllast').click(function() {
		var lastdivpos = -1;
		var scrolltodiv;
		$('.sectiondiv').each(function() {
			var divpos = Math.floor($(this).offset().top);
			var navpos = $('#scrollnav').offset().top;
			var winpos = $(window).scrollTop();
			//if section above scrollnav and closer to the scrollnav than the last section 
			if(divpos < navpos && divpos > lastdivpos && divpos != winpos  && divpos < winpos) {
				//if not already at current section (within +/-2 to compensate for firefox rounding errors)
				lastdivpos = divpos;
				scrolltodiv = $(this);
			}
			//if section below scrollnav, stop searching through section
			if(divpos > winpos) {
				return false;
			}		
		});
		//scroll to specified section
		if(scrolltodiv.attr('id'));
		$('html,body').animate({scrollTop: scrolltodiv.offset().top},'slow');
		return false;
	});
	
	
	
	
    //###################
	//WORK
    //###################
	
	//FUNCTIONS
	//loads portfolio type thumbnails
    function loadPortfolio(ptype, sortby, order) {
    	if(!sortby) { sortby = 'rating'; }
    	if(!order) { order = 'desc'; }
    	var portfolioUrl = 'work.php?ptype=' + ptype + '&sortby=' + sortby + '&order=' + order;
    	$('#portfoliolist').load(portfolioUrl, function() {
    	    //loads portfolio item detail
    	    $('.portfoliothumb a').click(function() {
    	    	var portfolioid = $(this).attr('portfolioid');
    	    	if(portfolioid != null) {
    	    		loadPortfolioDetail(portfolioid, portfolioUrl);
    	    	}
    	    	return false;
    	    });      		
    	});    	
    }
    //loads detail veiw of portfolio item
    function loadPortfolioDetail(portfolioid, portfolioUrl) {
    	var portfolioDetailUrl = portfolioUrl + "&portfolioid=" + portfolioid;
    	$('#portfoliodetailwrapper').load(portfolioDetailUrl, function() {
    		//display next portfolio item
    		$('#nextportfolioitem a').click(function () {
    			var portfolioid = $(this).attr('portfolioid');
    			loadPortfolioDetail(portfolioid, portfolioUrl);
       			return false;			
    		});
    		//display last portfolio item
    		$('#lastportfolioitem a').click(function () {
    			var portfolioid = $(this).attr('portfolioid');
    			loadPortfolioDetail(portfolioid, portfolioUrl);
       			return false;			
    		});
    		//close detail and slide back in main page
    	    $('#close a').click(function() {
    	    	scrollOutDetail();
    	    	return false;
    	    });
    	    //display selected slide
    	    $('#bottomnav a').click(function() {
    	    	var slideid = $(this).attr('slidenum');
    	    	if(slideid != null) {
    	    		var moveleft = (slideid - 1) * 598;
    	    		$('#images').animate({left: -moveleft}, 1000, function() {});
    	    		return false;
    	    	}
    	    });   	    
    		//determine if we need to scroll in detail page
    		//get detail div display property
    		var detailDisplay = $('#portfoliodetailwrapper').css('display');
    		//if it is set to none
    		if(detailDisplay == "none") {
    			//we need to display it
    		    scrollInDetail();
    		}
    	});
    	
    }
    //scrolls in detail page
    function scrollInDetail() {
    	var windowwidth = $(window).width();
    	var windowheight = $(window).height();
    	var portdetailheight = $('#portfoliodetailwrapper').height();
    	var scrollposition = $(window).scrollTop();
    	var toppos = ((windowheight - portdetailheight) / 2) + scrollposition;


    	$('#scrollnav').css({display: 'none'});
    	$('#pagewrapper').css({width: windowwidth - 30});
    	$('#pagewrapper').animate({left: -windowwidth+10}, 2000, function() {});
		$('#portfoliodetailwrapper').css({display: 'block', top: toppos, left: 2500});
		$('#portfoliodetailwrapper').animate({left: 0}, 2000, function() {});
    }    
    //scrolls out detail page
    function scrollOutDetail() {
    	$('#pagewrapper').animate({left: 0}, 2000, function() {});
    	$('#scrollnav').css({display: 'block'});
		$('#portfoliodetailwrapper').animate({left: 2500}, 2000, function() {
			$('#portfoliodetailwrapper').css({display: 'none'});
		});
    }
    
    
    
    //INIT
	//load default portfolio page
	loadPortfolio('online');
	
	
    //BUTTON HANDLERS
	//loads portfolio type
    $('#work a').click(function() {
    	var ptype = $(this).attr('ptype');
    	if(ptype != null) {
    		loadPortfolio(ptype);
    	}
    	return false;
    });
   
    
	
    //###################
	//CONTACT
    //###################
    
    //FUNCTIONS
    
	//checks to make sure we have a vlaid email
	function validemail(email) {
	    var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	    return reg.test(email);
	}
	//handles form submission
	function sendcontactform() {
		error = "";
        //validate name field
		var namefield = $('#contactform input[name="contactname"]');
		if(namefield.val().length < 3 || namefield.val() == "NAME") {
			error = "true";
			namefield.css({'border-left': '2px solid #f00'});
		} else {
			namefield.css({'border-left': 'none'});	
		}
		//validate email field
		var emailfield = $('#contactform input[name="contactemail"]');
		if(!validemail(emailfield.val()) || emailfield.val() == "EMAIL ADDRESS") {
			error = "true";
			emailfield.css({'border-left': '2px solid #f00'});
		} else {
			emailfield.css({'border-left': 'none'});		
		}
		//validate subject field
		var subjectfield = $('#contactform input[name="contactsubject"]');
		if(subjectfield.val().length < 2 || subjectfield.val() == "SUBJECT") {
			error = "true";
			subjectfield.css({'border-left': '2px solid #f00'});
		} else {
			subjectfield.css({'border-left': 'none'});		
		}
		//validate msg field
		var msgfield = $('#contactform textarea[name="contactmsg"]');
		if(msgfield.val().length < 2 || msgfield.val() == "MESSAGE") {
			error = "true";
			msgfield.css({'border-left': '2px solid #f00'});
		} else {
			msgfield.css({'border-left': 'none'});	
		}
		if(error != "true") {
			//post form values to contact.php 
			$.post('contact.php', {action: 'send', name: namefield.val(), email: emailfield.val(), subject: subjectfield.val(), msg: msgfield.val()});
			//reset all form left borders
			$('#contactform input[type="text"]').css({'border-left': 'none'});	
			$('#contactform textarea').css({'border-left': 'none'});
			//redisplay default val
			namefield.val('NAME');
			emailfield.val('EMAIL ADDRESS');
			subjectfield.val('SUBJECT');
			msgfield.val('MESSAGE');
			//display message sent message
			$('#msgstatus').html('Message Sent!');
			//clear sent message
			var displayMsgInt = setInterval(function() {
				clearInterval(displayMsgInt);
				$('#msgstatus').html('');	
			}, 3000);
		}		
	}
	
	//function clears field on focus
	//if field empty on loss of focus, redisplays default text
	$.fn.clearOnFocus = function(){
        return this.focus(function(){
            var v = $(this).val();
            $(this).val( v === this.defaultValue ? '' : v );
        }).blur(function(){
            var v = $(this).val();
            $(this).val( v.match(/^\s+$|^$/) ? this.defaultValue : v );
        });
     
    };
    
    //BUTTON HANDLERS
    
    //when conact form button clicked
	$('#contactform a').click(function() {
        //submit the form
		sendcontactform();
		return false;
	});
	
	
	//clear all text fields
	$('#contactform input[type="text"]').clearOnFocus();
	//clear textarea
	$('#contactform textarea').clearOnFocus();
	
	
/***********************************************************************




	WEBSITE INIT
	
	
	
	
***********************************************************************/	
	//slide in logo
	$('#logo').animate({top: 0}, 1000, function() {});

	//when user scrolls
	$(window).bind("scroll", function() {
		//reposition the scrollnav
		positionScrollNav();
		//if detail page showing, scroll it out
		//scrollOutDetail();
	});
	
	//when browser resized
	$(window).bind("resize", function() { 
    	var windowwidth = $(window).width();
    	$('#pagewrapper').css({width: windowwidth - 30});
	});

});
