var test_array = new Array();
var selected_ing_array = new Array();
var selected_cock_array = new Array();
var auto_save_timeout;
var auto_save_milliseconds = 5000;
var total_ing_all;
var total_ing_alc;
var total_ing_non;
var cocktail_btns_array = [];
cocktail_btns_array[0] = 'cock_all';
cocktail_btns_array[1] = 'cock_cocktails';
cocktail_btns_array[2] = 'cock_martinis';
cocktail_btns_array[3] = 'cock_mocktails';
cocktail_btns_array[4] = 'cock_shooters';
cocktail_btns_array[5] = 'cock_warmers';
var cocktail_category = '-1';

Array.prototype.indexOf=function(o,i){for(var j=this.length,i=i<0?i+j<0?0:i+j:i||0;i<j&&this[i]!==o;i++);return j<=i?-1:i}

Array.prototype.clear = function() {
	this.length = 0;
	return this;
};

Array.prototype.remove = function(search) {
	if(this.indexOf(search) != -1){
		for (var i=0; i < this.length; i++) {
			if(search == this[i]){
				this.splice(i,1); 
			}
		};
	}
	return this;
};

Array.prototype.in_array = function(search) {
	for (var i=0; i < this.length; i++) {
		if(search == this[i]){
			return true;
		}
	};
	return false;
};

function view_recipe(cocktail_id){
	window.open('view_recipe.php?cocktail_id='+cocktail_id+'',"view_recipe","status=1,toolbar=1,scrollbars=1,menubar=1,resizable=1,width=760,height=500").focus();
}

function create_new_ibar(){
	$('#new_ibar').removeClass('dn');
	$('#ibar_name').focus();
	var init_btn = $('#create_new');
	init_btn.click(function(){
		cancel_new_ibar();
	});
	init_btn.css('background-image','url(images/btn_cancel.gif)');
	init_btn.html('Cancel');
}

function cancel_new_ibar(){
	$('#new_ibar').addClass('dn');
	$('#ibar_name').val('');
	var init_btn = $('#create_new');
	init_btn.click(function(){
		create_new_ibar();
	});
	init_btn.css('background-image','url(images/btn_add_dark.png)');
	init_btn.html('Create New iBar');
}

function _get(){
	var vars = [], hash;
	if(!window.location.href.indexOf('?')){
		return null;
	}
	var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
	for(var i = 0; i < hashes.length; i++){
		hash = hashes[i].split('=');
		vars.push(hash[0]);
		vars[hash[0]] = hash[1];
	}
	return vars;
}

var hash = _get();


// for (var i=0; i < 8; i++) {
// 	test_array[i] = new Array();
// 	test_array[i]['id'] = i;
// 	test_array[i]['thumb'] = '_sample_ibar_photo.jpg';
// 	test_array[i]['title'] = 'Vodka - Blackcurrant flavoureda';
// 	test_array[i]['category'] = 'alcoholic';
// 	test_array[i]['selected'] = '0';
// };

function explode(needle, haystack){
	var splitArray =  haystack.split(needle);
	return splitArray;
}

function implode(glue, pieces) {
    return ((pieces instanceof Array) ? pieces.join(glue) : pieces);
}

function toggle_select(id){
	var db_id = explode("_",id);
	if(db_id[0] == 'ing'){
		if(selected_ing_array.indexOf(db_id[1]) == -1){
			$('#'+id).addClass("active");
			selected_ing_array.push(db_id[1]);
		}else{
			$('#'+id).removeClass("active");
			selected_ing_array.remove(db_id[1]);
		}
	}else{
		if(selected_cock_array.indexOf(db_id[1]) == -1){
			$('#'+id).addClass("active");
			selected_cock_array.push(db_id[1]);
			if(selected_cock_array.length > 1){
				$('#print_recipes span:eq(1)').html('PRINT RECIPES');
			}
		}else{
			$('#'+id).removeClass("active");
			selected_cock_array.remove(db_id[1]);
			if(selected_cock_array.length < 2){
				$('#print_recipes span:eq(1)').html('PRINT RECIPE');
			}
		}
	}
	if(db_id[0] == 'ing'){
		$('#ing_selected').html(selected_ing_array.length);
		auto_save();
		init_cocktails(cocktail_category);
	}
}

function auto_save(){
	if(auto_save_timeout){
		clearTimeout(auto_save_timeout);
	}
	auto_save_timeout = setTimeout('save_ibar(\'Auto Saving iBar...\','+hash['id']+')', auto_save_milliseconds);
}

function select_all(id){
	var li_list = $('#'+id+' li');
	var i;
	for (i=0; i < li_list.length; i++) {
		var db_id = explode("_",li_list[i].id);
		$(li_list[i]).addClass("active");
		if(id == 'cocktails'){
			if(selected_cock_array.indexOf(db_id[1]) == -1){
				selected_cock_array.push(db_id[1]);
			}
		}else{
			if(selected_ing_array.indexOf(db_id[1]) == -1){
				selected_ing_array.push(db_id[1]);
			}
		}
	};
	if(id != 'cocktails'){
		$('#ing_selected').html(i);
		init_cocktails(cocktail_category);
		auto_save();
	}
}

function select_none(id){
	var li_list = $('#'+id+' li');
	for (var i=0; i < li_list.length; i++) {
		$('#'+li_list[i].id).removeClass("active");
		if(id == 'cocktails'){
			selected_cock_array.clear();
		}else{
			selected_ing_array.clear();
		}
	};
	if(id != 'cocktails'){
		$('#ing_selected').html(0);
		init_cocktails(cocktail_category);
	}
	//////////////////////////////////////
	/*var li_list = $('#'+id+' li');
	for (var i=0; i < li_list.length; i++) {
		var db_id = explode("_",li_list[i].id);
		selected_ing_array.clear();
		$('#'+li_list[i].id).removeClass("active");
	};
	$('#ing_selected').html(0);
	init_cocktails(cocktail_category);
	auto_save();*/
}

function load_ingredients(data_array, status_text){
	var ing = '';
	var xml_obj = $(data_array);
	var ingredients = xml_obj.find("ingredient");
	var total = ingredients.length;
	var alc = 0;
	var non_alc = 0;
	if(ingredients.length < 1){
		alert('No ingredients');
	}else{
		ingredients.each(function(i) {
			if($(this).find('selected').text() == 1){
				var active=" active";
				if(!selected_ing_array.in_array($(this).find('id').text())){
					//toggle_select('ing_'+$(this).find('id').text());
					selected_ing_array.push($(this).find('id').text());
				}
			}else{
				var active="";
				if(selected_ing_array.in_array($(this).find('id').text())){
					var active=" active";
				}
			}
			ing += '<li class="fl'+active+'" id="ing_'+$(this).find('id').text()+'" onclick="toggle_select(\'ing_'+$(this).find('id').text()+'\')">';
			//ing += '<li class="fl'+active+'" id="ing_'+$(this).find('id').text()+'">';
			ing += '	<div class="selector_tile">';
			ing += '		<div class="action"></div>';
			ing += '		<div class="photo_ing fl"><img onerror="$(this).hide();" src="images/thumb_ingredients/'+$(this).find('id').text()+'.jpg" alt="" /></div>';
			//ing += '		<img class="fl photo" src="images/'+$(this).find('thumb').text()+'" alt="" />';
			ing += '		<div class="fl label">';
			ing += '			<div class="name">'+$(this).find('title').text()+'</div>';
			ing += '			<div class="type">'+$(this).find('category').text()+'</div>';
			ing += '		</div>';
			ing += '		<div class="clr"></div>';
			ing += '	</div>';
			ing += '</li>';
			($(this).find('category').text() == 'alcoholic') ? ++alc : ++non_alc ;
			// I think because the element was not placed in the code yet or i'm not using createElement
			/*var element_id = $(this).find('id').text();
			$('#ing_'+element_id).click(function(){
				alert('hello');
				 //toggle_select('ing_'+$(this).find('id').text());
			});*/
		});
	}
	$('#ingredients').html(ing);
	$('#ing_total').html(total);
	$('#ing_selected').html($('#ingredients li.active').length);
	total_ing_all = total;
	total_ing_alc = alc;
	total_ing_non = non_alc;
	//filter_ingredients(-1);
	init_cocktails(cocktail_category);
}

function filter_ingredients(type){
	//$('#count_all').html('All Ingredients ('+total_ing_all+')');
	//$('#count_alc').html('Alcoholic ('+total_ing_alc+')');
	//$('#count_non_alc').html('Non-Alcoholic ('+total_ing_non+')');
	$('#count_all').html('All Ingredients');
	$('#count_alc').html('Alcoholic');
	$('#count_non_alc').html('Non-Alcoholic');
	switch(type){
		case 1:
			var filter = 'alcoholic';
		break;    
		case 0:
			var filter = 'non-alcoholic';
		break;
		default:
			var filter = '';
	}
	var li_list = $('#ingredients li');
	return false;
	/*for (var i=0; i < li_list.length; i++) {
		var div_type = $(li_list[i]).find('div.type');
		alert(div_type.text);
		return false;
		var div_type_value = div_type.html();
		if(div_type_value != filter){
			div_type.css('display','none');
		}else{
			div_type.css('display','block');
		}
	};*/
}

function load_cocktails(data_array, status_text){
	var cock = '';
	var xml_obj = $(data_array);
	var cocktails = xml_obj.find("cocktail");
	var total = cocktails.length;
	if(cocktails.length < 1){
		//$('#cocktails').html('<li style="border:1px solid #fff;">There are no cocktails for the selected ingredients</li>');
	}else{
		cocktails.each(function(i) {
			if(selected_cock_array.in_array($(this).find('id').text())){
				var active=" active";
			}else{
				var active="";
				selected_cock_array.remove($(this).find('id').text());
			}
			cock += '<li class="fl'+active+'" id="cock_'+$(this).find('id').text()+'">';
			cock += '	<div class="magnify hand" onclick="view_recipe(\''+$(this).find('id').text()+'\')"></div>';
			cock += '	<div class="selector_tile" onclick="toggle_select(\'cock_'+$(this).find('id').text()+'\')">';
			cock += '		<div class="action"></div>';
			cock += '		<div class="photo_rec fl"><img onerror="$(this).hide();" src="images/thumb_recipes/'+$(this).find('id').text()+'.jpg" alt="" /></div>';
			cock += '		<div class="fl label">';
			cock += '			<div class="name">'+$(this).find('title').text()+'</div>';
			cock += '			<div class="type">'+$(this).find('category').text()+'</div>';
			cock += '		</div>';
			cock += '		<div class="clr"></div>';
			cock += '	</div>';
			cock += '</li>';
		});
	}
	$('#cocktails').html(cock);
	
}

function save_ibar(text){
	$("#saving_ibar img").css('display','block');
	$("#saving_ibar div").html(text);
	$("#saving_ibar").fadeIn('fast', function(){
		var send_str = '<?xml version="1.0" encoding="iso-8859-1"?><request><method>save</method><parameters><ibar_id>'+hash['id']+'</ibar_id>';
		for (var i=0; i < selected_ing_array.length; i++) {
			send_str += '<id>'+selected_ing_array[i]+'</id>';
		};
		send_str += '</parameters></request>';
		// might need to create custom error handler for save_ibar when there is an error i.e. the server is busy.
		$.ajax({error:ajax_error, success:save_complete, url:"ibar.ajax.php", type:"POST", data:send_str});
	});
}

function save_complete(){
	$("#saving_ibar img").css('display','none');
	$("#saving_ibar div").html('Saving complete');
	$("#saving_ibar").fadeOut('slow');
	if(auto_save_timeout){
		clearTimeout(auto_save_timeout);
	}
}

function toggle_cocktails(id){
	for (var i=0; i < cocktail_btns_array.length; i++) {
		$('#'+cocktail_btns_array[i]).removeClass('selected');
	};
	$('#'+id).addClass('selected');
}

var ajax_error = function (XMLHTTPRequestObj, statusText) {
	//alert('jayson' + statusText);
};

function init_ingredients(param){
	var send_str = '<?xml version="1.0" encoding="iso-8859-1"?><request><method>get_ingredients</method><parameters><ibar_id>'+hash['id']+'</ibar_id><alcoholic>'+param+'</alcoholic></parameters></request>';
	$.ajax({error:ajax_error, success:load_ingredients, url:"ibar.ajax.php", type:"POST", data:send_str});
}

function init_cocktails(type){
	var send_str = '<?xml version="1.0" encoding="iso-8859-1"?><request><method>get_cocktails</method>';
	if(type == undefined){
		type = -1;
	}
	send_str += '<parameters><type>'+type+'</type>';
	for (var i=0; i < selected_ing_array.length; i++) {
		send_str += '<id>'+selected_ing_array[i]+'</id>';
	};
	send_str += '</parameters></request>';
	$.ajax({error:ajax_error, success:load_cocktails, url:"ibar.ajax.php", type:"POST", data:send_str});
}
