var curr_hash=window.location.hash;
var curr_layer = 0;
var removed = 1;

var slider_elem = "#slider-wrapper #slider";
var bread_elem = "#breadcrumb";

var direction = "scrollLeft";

var starting = false;


function get_breadcrumb(layer, id){
	var isQuestion = false
	
	if(layer == "sermon"){
		isSermon = true;
	}
	else{
	    isSermon = false;
	}
		
	CallPageMethod("getBreadCrumb", set_breadcrumb, fail_bc,
	    "guid", id,
	    "isSermon", isSermon
	);
}

function set_breadcrumb(content){
    $(bread_elem).html(content.d);
}
function fail_bc(){alert("failed that one");}

function get_categories(){
    CallPageMethod("getSubCategoriesFor", new_slide, failed,
        "catGUID", '');
}

function get_single(id){
    CallPageMethod("getSermon", new_slide, failed,
        "question_guid", id);
}

function get_subs(id){
    CallPageMethod("getSubCategoriesFor", new_slide, failed,
        "catGUID", id);
}

function has_hash(){	
	if(curr_hash != ''){
		return true;
	} else{
		return false;
	}
}

function initiate_slider(){
	
	//initiate the cycle plugin mmk?
	$(slider_elem).cycle({
		fx:		direction,
		animOut:{
		            height:500
		        }
	});
	
	//but we'll have to pause it!
	$(slider_elem).cycle('pause');
	if(curr_layer != 2){
	    $(slider_elem).cycle('next');
	}
}

function link_clicked(elem){
	direction = 'scrollLeft';
}

function new_slide(data, textStatus){
	curr_layer++;
	
	if(curr_layer == 3 && $(slider_elem + " #layer-2").html() == ''){
		$(slider_elem + " #layer-2").append(data.d);
		curr_layer--;
	}
	else {
		$(slider_elem).append('<li id="layer-' + curr_layer + '">' + data.d + '</li>');
		
		if(curr_layer == 1){
			new_slide('');
		}
		
		if(curr_layer >= 3 && $(slider_elem + " #layer-2").html() != ''){
			$(slider_elem + " #layer-" + removed).remove();
			removed++;
		}
	}
	
	//$("#slider").css("height", "auto");
	
	initiate_slider();
}

function read_hash(){
	var id = "";
	var after_pipe = curr_hash.substr((curr_hash.indexOf("|") + 1), curr_hash.length);
	if( after_pipe.indexOf("?") >= 0 || after_pipe.indexOf("&") >= 0 ){
	    var stop_at_1 = after_pipe.indexOf("?");
	    var stop_at_2 = after_pipe.indexOf("&");
	    
	    if(stop_at_1 >= stop_at_2){
	        var stop_at = stop_at_1;
	    } else{
	        var stop_at = stop_at_2;
	    }
	    
	    id = curr_hash.substr((curr_hash.indexOf("|") + 1), stop_at);
	} else{
	    id = curr_hash.substr((curr_hash.indexOf("|") + 1), curr_hash.length);
	}
	
	var layer = curr_hash.substr(1, (curr_hash.indexOf("|") - 1)).toLowerCase();
	
	switch(layer){
		case 'category':
			get_subs(id);
		break;
		
		case 'subcat':
			get_subs(id);
		break;
		
		case 'sermon':
			get_single(id);
		break;
		
		default:
			get_categories();
			$(bread_elem).html('<ul><li><a class="breadcrumb" href="#|">Home</a></li></ul>');
		break;
	}
	
	get_breadcrumb(layer, id);
	
	
	if(starting == true){
		var new_height = $(slider_elem + " #layer-" + (curr_layer - 1)).height();
	    //alert("start: " + (curr_layer - 1)*1);
	}else{
		var new_height = $(slider_elem + " #layer-" + (curr_layer)).height();
	    //alert("old: " + curr_layer);
	}
	$("#slider").animate({
		height: new_height
	}, 500);
}

function detect_hash(){
    if(window.location.hash != curr_hash){
       curr_hash = window.location.hash;
       read_hash();
    }
    
}

$(document).ready(function(){
	setInterval("detect_hash()", 10);
	
	$(slider_elem + " a.slide").live("click", function(){
		link_clicked(this);
		starting = false;
	});
	
	$(".back a").click(function(){
		direction = 'scrollRight';
		window.history.go(-1);
	});
	
	$("a.breadcrumb").live("click", function(){
	    direction = 'scrollRight';
		starting = false;
	});
	
	if(has_hash()){
		starting = true;
		read_hash();
	}
	else{
		get_categories();
	}
	
});

function failed(){alert("Sorry, there has been an error.");}

function CallPageMethod(methodName, onSuccess, onFail) {
    var args = '';
    var l = arguments.length;
    if (l > 3) {
        for (var i = 3; i < l - 1; i += 2) {
            if (args.length != 0) args += ',';
            args += '"' + arguments[i] + '":"' + arguments[i + 1] + '"';
        }
    }

    $.ajax({
        type: "POST",
        url: "../Web_Methods.aspx/" + methodName,
        data: "{" + args + "}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        cache: false,
        async: false,
        success: onSuccess,
        fail: onFail
    });
}
