var home = "http://mackenzieduncan.com";
var xml;
var xml2;
var imgCache = [];
var image_ar = [];
var currentImage;
var imageWidth_ar = [];
var imageMargin;
var lvl1;
var lvl2;
var intervalID;
var fl = 'filelister.php';
var defaultImagePath = '/images/photos/default/';
var loaderImg = '/images/ajax-loader.gif';
var startPos = parseInt('145');
var currentlyLoading = 0;
var maxConcurrentLoads = 2;
var size = 0;
var counter = 0;


function loadLevelOne(ind) {
    var base = $(xml).find("level0");
    var tar = $(base[ind]);
	//var videoTar = $(base[ind]);
    lvl1 = $(tar).find("level1");
	/* index video links */
	var video = $(tar).find("video");
	/* end index of video links*/
    $("#level-1").html('');
    $("#level-2").html('');
    if ($(tar).attr("id") == "contact") {
        var link = "";
        lvl2 = $(tar).find("level2");
        $(lvl1).each(function (index) {
		var id = fixChar($(this).attr("name"));
			var path = $(this).attr("path");
            if ($(this).attr("link")) {
			link = ' path="'+ path + '" href="' +$(this).attr("link") + '"';
			 }
            var item = $('<a id="' + id + '"' + link + '>' + $(this).attr("name") + '</a>');
            if ($(this).attr("highlight")) $(item).addClass("nav-selected");
       
		$("#level-1").append(item)
        });
        $(lvl2).each(function (index) {
		var id = fixChar($(this).attr("name"));
            if ($(this).attr("link")) link = 'href="' +  $(this).attr("link")  + '"';
            var item = $('<a id="' + id + '"' + link + '>' + $(this).attr("name") + '</a>');
            if ($(this).attr("highlight")) $(item).addClass("nav-selected");
            $("#level-2").append(item)
        });
        return
    }
    $(lvl1).each(function (index) {
	var id = fixChar($(this).attr("name"));
		var path = $(this).attr("path");
        var item = $('<a path="'+ path + '" id="' + id + '" href="' + $('#level-0 .nav-selected').attr('href') + '/' + id + '">' + $(this).attr("name") + '</a>');
        
		
        $("#level-1").append(item);
    
    });
	
	
	

	/*display video links*/
	
	    $(video).each(function (index) {
		var id = fixChar($(this).attr("name"));
		var path = $(this).attr("path");
        var item = $('<a path="'+ path + '" id="' + id + '" href="' + $('#level-0 .nav-selected').attr('href') + '/' + id + '">' + $(this).attr("name") + '</a>');
        
		 $("#level-1").append(item);
  
    })
	
	
	
	/*end display of video links*/
	
}


	/* new functions to be activated via url redirect instead of click handler*/
	
    function activateLevel1(item) {
           
			$("#level-1 .nav-selected").removeClass("nav-selected");
            $(item).addClass("nav-selected");
		
		var path = $(item).attr("path");
		
			/*check if motion link */
			if($("#level-0 .nav-selected").attr('id') == "motion"){
			populateVideos(path)

			}else{
				populateImages(path)
			}
	

        }

		
				
	function activateLevel0(item){
	
	$("#level-0 .nav-selected").removeClass("nav-selected");
                $(item).addClass("nav-selected");
	var itemIndex = $(item).index();
	
	loadLevelOne(itemIndex)

	}
	


/*new populateVideos function puts vimeo video path in iframe instead of scrolling through image directory*/
function populateVideos(videoPath) {
     $('#slider').html('<iframe class="video" src="'+ videoPath + '?title=0&amp;byline=0&amp;portrait=0" width="889" height="500" frameborder="0" style=""></iframe>');
	 $('#slider').css("left", startPos + "px");
   
     $('#slider *').fadeTo("slow",1);
	 
    imageMargin = parseInt($('#slider *').css("margin-right"));

}
/* end of new populateVideos function*/

function populateImages(imagePath) {
    image_ar = [];
    imgCache = [];
    imageWidth_ar = [];
    size = 0;
    counter = 0;
    $('#slider').html('<img src="' + loaderImg + '" />');
    $('#slider').css("left", startPos + "px");
    $.get(imagePath + fl, function (data) {
        $('#slider').html('<img src="' + loaderImg + '" alt="temp" />');
        $.each(data, function (index) {
            image_ar.push({
                img_path: imagePath + data[index],
                img_ind: index
            })
        });
        size = image_ar.length;
        intervalID = setInterval("manageLoad()", 50);
        imageMargin = parseInt($('#slider *').css("margin-right"))
    })
}
function manageLoad() {
    if (currentlyLoading < maxConcurrentLoads) {
        if (counter < size) {
            var _img = new Image();
            _img.src = image_ar[counter].img_path;
            _img.alt = image_ar[counter].img_ind;
            imgCache.push(_img);
            $(_img).load(function () {
                currentlyLoading--
            });
            currentlyLoading++;
            counter++
        } else {
            clearInterval(intervalID);
            $('#slider').html('');
            imgCache.sort(function (a, b) {
                return $(a).attr("alt") - $(b).attr("alt")
            });
            $.each(imgCache, function (ind) {
                $('#slider').append(imgCache[ind]);
                imageWidth_ar.push($(this).width());
                if (ind == 0) {
                    currentImage = $(this);
                    $(this).fadeTo('fast', 1)
                }
            });
            bindSliderClick()
        }
    }
}
function bindSliderClick() {
    $('#slider *').click(function (e) {
        e.preventDefault();
        var slidePos = 0;
        var end = $(this).attr('alt');
        for (var i = 0; i < end; i++) {
            slidePos += parseInt(imageWidth_ar[i] + imageMargin)
        }
        if (!slidePos) {
            slidePos = startPos
        } else {
            slidePos -= startPos;
            slidePos *= -1
        }
        $('#slider').animate({
            "left": slidePos + "px"
        }, 400);
        $(currentImage).fadeTo('fast', .4);
        currentImage = $(this);
        $(this).fadeTo('fast', 1)
    })
}


/* function to remove special characters for use in URL rewriting*/

function fixChar(string){

string = string.replace(/[<>\&\"\']/g,'-');
string = string.replace(/\//g,'-');
string = string.replace(/ /g,'-');
string = string.toLowerCase();
return string;

}
