// script.js

//global vars
var request;
var queryString;

$(document).ready(function(){
	//start pretty photo
	$("a[rel^='prettyPhoto']").prettyPhoto();
	//add smooth gliding
	$(function(){
		$('a[href*=#]').click(function() {
		if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'')
			&& location.hostname == this.hostname) {
				var $target = $(this.hash);
				$target = $target.length && $target || $('[name=' + this.hash.slice(1) +']');
				if ($target.length) {
					var targetOffset = $target.offset().top;
					$('html,body').animate({scrollTop: targetOffset}, 1000);
					return false;
				}
			}
		});
	});
	//animate categories
	$('.animateThis').hover(function() {
          $(this).animate({ paddingLeft : "20px" }, {duration: 200, queue: false});
          $(this).find('span').animate({ backgroundPosition : "0px 50%" }, {duration: 200, queue: false});
      }, function() {
          $(this).animate({ paddingLeft : "0px" }, {duration: 200, queue: false});
          $(this).find('span').animate({ backgroundPosition : "-30px 50%" }, {duration: 200, queue: false});
      });
});

function validateForm()
{
	setQueryString();
	var url = 'wp-content/themes/portfolio/validate.php';
	createRequest('POST', url, true, handleResponse, queryString);
	return false;
}


//handle requests

function createRequest(reqType, url, isAsync, responseHandler, args)
{
	try
	{
		request = new XMLHttpRequest();
	}
	catch(microsoft)
	{
		try
		{
			request = new ActiveXObject('Microsoft.XMLHTTP');
		}
		catch(oldMicrosoft)
		{
			try
			{
				request = new ActiveXObject('Mxml2.XMLHTTP');
			}
			catch(requestFailed)
			{
				request = null;
			}
		}
	}
	if(request)
	{
		if(reqType.toLowerCase() != 'post')
		{
			initializeRequest(reqType, url, isAsync, responseHandler, args);
		}
		else
		{
			if(args != null && args.length > 0)
			{
				initializeRequest(reqType, url, isAsync, responseHandler, args);
			}
		}
	}
	else
	{
	alert("Your browser does not permit the use of all of this application's features!");
	}
}

function initializeRequest(reqType, url, isAsync, responseHandler, args)
{
	try
	{
		request.onreadystatechange = handleResponse;
		request.open(reqType, url, isAsync);
		
		if(reqType.toLowerCase() == 'post')
		{
			request.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
			request.send(args);
		}
		else
		{
			request.send(null);
		}
	}
	catch(error)
	{
		alert("The application cannot contact the server at the moment. Please try again in a few seconds.\\nError detail:" + error.message);
	}
}
function setQueryString()
{
	queryString = '';
	var form = document.getElementById('contactForm');
	var numOfElements = form.elements.length;
	
	for (var i=0; i<numOfElements; i++)
	{
		if(i<numOfElements-1)
		{
			queryString += form.elements[i].name + '=' + encodeURIComponent(form.elements[i].value) + '&';
		}
		else
		{
			queryString += form.elements[i].name + '=' + encodeURIComponent(form.elements[i].value);
		}
	}
}
function handleResponse()
{
	if(request.readyState == 4)
	{
		if(request.status == 200)
		{
			var doc = request.responseXML;
			var info = getDocInfo(doc);
			var msg = document.getElementById('contactMessage');
			msg.innerHTML = info;
			$('#contactMessage').hide();
			$('#contactMessage').slideDown(300);
		}
		else
		{
			alert(request.status);
		}
	}
}

function getDocInfo(doc)
{
	var node = doc.documentElement;
	var info = 'uh oh there was an error';
	
	if(node.nodeName == 'valid')
	{
		info = '<div class="msgTop"></div>';
		info += '<div class="msg">';
		info += '<p>' + node.firstChild.nodeValue + '</p>';
		info += '</div>';
		info += '<div class="msgBottom"></div>';
	}
	else if(node.nodeName == 'error')
	{
		info = '<div class="errorTop"></div>';
		info += '<div class="error">';
		info += '<p>' + node.firstChild.nodeValue + '</p>';
		info += '</div>';
		info += '<div class="errorBottom"></div>';
	}
	
	return info;
}
