var vg = function ()  
{
    $("#contact").hide();
	$("#projects").hide();
	$("#profile").hide();
	  
    $("#projects_list").hide();
    $("#short_desc").hide();
	$("#contact_c").hide();
	$("#profile_c").hide();
}

vg.prototype.checkDeepLink = function()
{
	var strHref = window.location.href;
	
	if(strHref.indexOf("#") == -1) return;
	
	var afterHash 	= unescape(strHref.substr(strHref.indexOf("#")+1).toLowerCase());
	var jProjects 	= this.xmlData.find( "project");
	
	var found 		= false;
	
    jProjects.each(function(id) {
									if (afterHash ==$(this).attr('id'))
									{
										$("#contact").show();
										$("#projects").show();
										$("#profile").show();
										myVgApp.parseProjects(id);
										myVgApp.showProject(id);
										found = true;
									}
								});
	return found;
	
}

vg.prototype.init = function(){
    
	var _self = this;
	
    $("#logo").click(function(){
	
		// Basic test to check if the menu is showing
	
		if($("#contact").is(":hidden"))
		{
			// Fades in the menu items in a sequence
			 
			$("#contact").fadeIn(400).css('display','block');
			setTimeout( function(){$("#projects").fadeIn(400).css('display','block')}, 150);
			setTimeout( function(){$("#profile").fadeIn(400).css('display','block')}, 300);
		}
		else
		{
			$("#contact").hide();
			$("#projects").hide();
			$("#profile").hide();
			  
			_self.parseHomepage();
		}
    });    
    
    $("#contact").click(function(){				
		var callback = function(){_self.parseContact();}	
		_self.hideLaunchItems(callback);
    });    
    
    $("#projects").click(function(){
		var callback = function(){_self.parseProjects();}	
		_self.hideLaunchItems(callback);
       
    });    
    
    $("#profile").click(function(){
		var callback = function(){_self.parseProfile();}						 
		_self.hideLaunchItems(callback);						 
    });    
        
    this.loadXml("proxy.php");
}

vg.prototype.hideLaunchItems = function(callback){
	
	//$("#content").fadeOut('normal', callback);
	
	
	
	$("#content").fadeOut(300);
	setTimeout( function(){ $("#the_middle").fadeIn('normal', callback); }, 350);
	
	
	//TODO : Create sequential fade out here
	// Callback should be triggered in the end
}



 vg.prototype.parseHomepage = function(){
	//$("#content").hide();
	$("#the_middle").show();
	$("#the_middle").fadeTo(1000, 1).fadeOut(500);
	$("#the_middle").hide();
	
	if($.browser.msie){
		$("#content").show();
	}else{
		$("#content").fadeTo(1000, 1).fadeIn(500);
	}
	
	 
	$("#profile_c").hide();
	$("#contact_c").hide();
    $("#desc").hide();
    $("#projects_list").hide();
    $("#short_desc").hide();

    var oHomePage = this.xmlData.find( "homepage");
    var html = oHomePage.text();
    $("#content").html(html);
	$("#content").scrollTop = 0
 }
 vg.prototype.parseProfile = function(){
	$("#profile_c").show();
	
	$("#contact_c").hide();
    $("#desc").hide();
    $("#projects_list").hide();
    $("#short_desc").hide();

    var oHomePage = this.xmlData.find( "profile");
    var html = oHomePage.text();

    $("#profile_c").html(html);
 }
 vg.prototype.parseContact = function(){
	 $("#contact_c").show();
	
	$("#profile_c").hide();
    $("#desc").hide();
    $("#projects_list").hide();
    $("#short_desc").hide();

    var oHomePage = this.xmlData.find( "contact");
    var html = oHomePage.text();
    $("#contact_c").html(html);
 }
 vg.prototype.parseProjects = function(preselectedId){
     
    $("#projects_list").show();
	$("#profile_c").hide();
	$("#contact_c").hide();

    var _self = this;
    var jProjects = this.xmlData.find( "project");
    var html = $('<ul class="projects" id="projects_list"></ul>');
      
	 
	jProjects.each(function(id) 
	{
	
        var proj = $(this);
        var title = proj.attr("title");
        var li = $('<li></li>');
        var a = $('<a href="#'+proj.attr("id")+'">'+ title +'</a>');
		
		
		// Adds active state for deeplinked item
		if(preselectedId == id)
		  	a.addClass("active");
		
		// onClick handler
        a.click(function()
		{
			//$("#content").show();	
			$("#the_middle").fadeOut('normal');
			
            _self.showProject(id);
            $(this).parents("ul").children("li").children("a").removeClass("active");
            $(this).addClass("active");
        });
		
        li.append(a);
		html.append(li);
		
		// Sets default state to hidden and shows the items in a sequence
		a.hide();
		setTimeout( function(){a.show()}, (id+1)*10)
        
     });
	 
     $(".sub_nav").html(html);
 }

  
vg.prototype.showProject = function(id){

     var jProjects = this.xmlData.find( "project");
   
     var projImages 	= $(jProjects[id]).find("images").text();
	 
     var projShort_desc	= "----------------------------<br/>" 
						+ $(jProjects[id]).find("short_desc").text() 
						+ "----------------------------";
						
     var projDesc 		= $(jProjects[id]).find("desc").text();
     
     $("#short_desc").html(projShort_desc+"<br/>"+projDesc).show();
	
	 $("#content").html("");
	
	 
$('html,body').animate({scrollTop: 0}, 10);

		  	  
     $("#content").html(projImages);
	  $("#content").hide();
	 $("#content").fadeIn(300);
	$("#the_middle").fadeOut('normal');
	 
	
	 
     
}



vg.prototype.loadXml = function( path )
 {

     var _self = this;
     $.ajax({
         type: "GET",
         url: path,
         dataType: "xml",
         success: function(xmlData)
         {
             _self.setXML(xmlData);
         }
     });
 }


 vg.prototype.setXML = function(xmlData){
    
	this.xmlData = $( xmlData );
	 
	 if(!this.checkDeepLink())
     	this.parseHomepage();
 }



 $(document).ready(
 	function() {
 		myVgApp = new vg();
 		myVgApp.init();
 	}
 );
