function addStr(str, index, stringToAdd){
	return str.substring(0, index) + stringToAdd + str.substring(index, str.length);
}
var isTimerOn = false;
var lastTime;
var categories = [];
var selectedCategory = "general_cat";
var craft2;
var job2;
var gang;
var craftData;
var sideCraftMenu;
var itemClaiming = 0;
var CraftQueue = [];
var maxCraft = 10;
var canCraftItem = true;
var showAllCrafts = false;
var canClaimAll = true;
var canClaimItem = true;
var canOpenSideCraft = true;
let Inventory = '';
window.addEventListener('message', function(event) {
	switch (event.data.action) {
		case 'openCraft':
			selectedCategory = "general_cat";
			canOpenSideCraft = true;
			canClaimItem = true;
			itemClaiming = 0;
			showAllCrafts = event.data.showAllCrafts;
			Inventory = event.data.inventory;
			var queue = event.data.queue;
			craftData = event.data;
			categories = event.data.categories;
			var craft = event.data.craft;
			craft2 = craft;
			var num = craft.length;
			var paragraph = '';
			var row = '
';
			var lastRowNum = 0;
			var job = event.data.job;
			job2 = event.data.job;
			gang = event.data.gang;
			var added = 0;
			var useCategories = event.data.useCategories;
			var categoriesButtonsHTML = `
				
General 
			`;
			document.querySelector('#claimall-button').disabled = false;
			if(useCategories){
				for(let i = 0; i < categories.length; i++){
					categoriesButtonsHTML += `
						
${categories[i]} 
					`;
				}
				$('#categories_btns').html(categoriesButtonsHTML);
				$('#categories_box').show();
			} else {
				$('#categories_box').hide();
			}
			if(num >= 13){
				$('.itemslist_window').css('padding', '0.3125rem 0.55rem 0.3125rem 0.625rem');
			} else {
				$('.itemslist_window').css('padding', '0.3125rem 1.05rem 0.3125rem 0.625rem');
			}
			for(var i = 0; i < num; i++) {
				for(var i1 = 0; i1 < craft[i].job.length; i1++){
					if(selectedCategory == "general_cat" || craft[i].category == selectedCategory){
						if(craft[i].job[i1] == job || craft[i].job[i1] == gang || craft[i].job[i1] == ''){
							if(!event.data.UseXP){
								var itemName = event.data.itemNames;
								var itemId = craft[i].item;
								var index = i;
								added++
								row += `
									
										
											
												${itemName[itemId]} 
												 
										 
									 
								`;
								var myEle = document.getElementById(itemId+"wb_"+event.data.wb+"wb_"+index);
								if(!myEle) {
									$(document).on('click', "#"+itemId+"wb_"+event.data.wb+"wb_"+index, function() {
										if(canOpenSideCraft) {
											canOpenSideCraft = false;
											allID = this.id;
											id = allID.substring(0, allID.indexOf('wb_'));
											index2 = allID.split("wb_");
											$('.item_card-body').css('background-color', 'rgba(220, 220, 220, 0.20)');
											$('#selected'+this.id).css('background-color', 'rgba(31, 94, 255, 1)');
											var sound = new Audio('click.mp3');
											sound.volume = 0.3;
											sound.play();
											$.post('https://okokCrafting/action', JSON.stringify({
												action: "craft",
												item: id,
												crafts: craft,
												itemName: itemName,
												index: index2[2],
											}));
										}
									});
								}
								if ((added) % 4 === 0) {
									row = addStr(row, row.length, `
`);
									lastRowNum = row.length+6;
								}
							} else {
								if(craft[i].levelNeeded <= event.data.level || showAllCrafts){
									var itemName = event.data.itemNames;
									var itemId = craft[i].item;
									var index = i;
									added++
									row += `
										
											
												
													${itemName[itemId]} 
													 
											 
										 
									`;
									var myEle = document.getElementById(itemId+"wb_"+event.data.wb+"wb_"+index);
									if(!myEle) {
										$(document).on('click', "#"+itemId+"wb_"+event.data.wb+"wb_"+index, function() {
											if(canOpenSideCraft) {
												canOpenSideCraft = false;
												allID = this.id;
												id = allID.substring(0, allID.indexOf('wb_'));
												index2 = allID.split("wb_");
												$('.item_card-body').css('background-color', 'rgba(220, 220, 220, 0.20)');
												$('#selected'+this.id).css('background-color', 'rgba(31, 94, 255, 1)');
												var sound = new Audio('click.mp3');
												sound.volume = 0.3;
												sound.play();
												$.post('https://okokCrafting/action', JSON.stringify({
													action: "craft",
													item: id,
													crafts: craft,
													itemName: itemName,
													index: index2[2],
													level: event.data.level,
												}));
											}
										});
									}
									if ((added) % 4 === 0) {
										row = addStr(row, row.length, `
`);
										lastRowNum = row.length+6;
									}
								}
							}
						}
					}
				}
			}
			row += `
`;
			
			if(event.data.UseXP) {
				$('#currentlevel').html(event.data.level);
				document.documentElement.style.setProperty('--percentage-width', event.data.percentage+"%");
				$('.xpbar-col').css('margin-top', '-1.8rem');
			} else {
				$('.xpbar').hide();
				$('.xpbar-col').css('margin-top', '5.05rem');
			}
			var queueRow = '';
			CraftQueue = queue;
			if(queue.length > 0){
				if(queue.length >= 6){
					$('.craftingq_window').css('padding-right', '0.35rem');
				} else {
					$('.craftingq_window').css('padding-right', '0rem');
				}
				for (var i = 0; i < queue.length; i++) {
					if(queue[i].isDone == true) {
						if(queue[i].suc){
							if(queue[i].isDis){
								queueRow += `
									
										
											
												${queue[i].itemName} x${queue[i].amount}
												Concluded
											 
										 
										
									 
								`;
							} else {
								queueRow += `
									
										
											
												${queue[i].itemName} x${queue[i].amount}
												Concluded
											 
										 
										
									 
								`;
							}
						} else {
							queueRow += `
								
									
										
											${queue[i].itemName} x${queue[i].amount}
											Failed to craft
										 
									 
									
								 
							`;
						}
					} else {
						if(queue[i].isPending){
							if(queue[i].isDis){
								queueRow += `
									
										
											
												${queue[i].itemName} x${queue[i].amount}
												Pending
											 
										 
										
									 
								`;
							} else {
								queueRow += `
									
										
											
												${queue[i].itemName} x${queue[i].amount}
												Pending
											 
										 
										
									 
								`;
							}
						} else {
							if(queue[i].isDis){
								queueRow += `
									
										
											
												${queue[i].itemName} x${queue[i].amount}
												Time left: ${queue[i].time}s
											 
										 
										
									 
								`;
							} else {
								queueRow += `
									
										
											
												${queue[i].itemName} x${queue[i].amount}
												Time left: ${queue[i].time}s
											 
										 
										
									 
								`;
							}
						}
					}
				}
			} else {
				queueRow = `The crafting queue is empty
`
			}
			$('.craftingq_window').html(queueRow);
			$('#craft-table').html(row);
			$('.title-name').html(event.data.name);
			$('.title').fadeIn();
			$('.itemslist').fadeIn();
			$('.crafting-body').fadeIn();
		break
	case 'openSideCraft':
		sideCraftMenu = event.data;
		canOpenSideCraft = true;
		var useLevels = false;
		if(sideCraftMenu.level != undefined){
			var levelNeeded = sideCraftMenu.crafts[sideCraftMenu.index].levelNeeded;
			var level = sideCraftMenu.level;
			useLevels = true;
		}
		
		var isLevel = false;
		$('#quantity').val(1); 
		maxCraft = sideCraftMenu.maxCraft;
		if(canCraftItem == false){
			canCraftItem = true;
			document.querySelector('#craft-button').disabled = false;
		}
		var canCraft = true;
		var isAvailable = false;
		var num = event.data.recipe.length;
		var recipe = ``;
		var img = `
			${event.data.itemName} x${event.data.itemAmount} 
		`;
		if(sideCraftMenu.isDis){
			$('#top_text').html(`Requirements`);
			$('#bot_text').html(`You will receive`);
			img = `
				${event.data.itemName} x${event.data.itemAmount} (${event.data.isDisItemAmt}) 
			`;
		} else {
			$('#top_text').html(`You will receive`);
			$('#bot_text').html(`Requirements`);
		}
		$('#side-image').html(img);
		$('#craft-time').html(event.data.time);
		if(useLevels){
			if(level >= levelNeeded){
				canCraft = true;
				isAvailable = true;
				isLevel = true;
			} else {
				isAvailable = false;
				canCraft = false;
				isLevel = true;
			}
		}
		for(var i = 0; i < num; i++){
			var idName = event.data.recipe[i][0];
			if(sideCraftMenu.isDis){
				recipe += `
					
						${event.data.itemNames[idName]} x${event.data.recipe[i][1]} 
					 
				`;
				if(event.data.itemAmount > event.data.isDisItemAmt){
					canCraft = false
				}
			} else {
				recipe += `
					
						${event.data.itemNames[idName]} x${event.data.recipe[i][1]} (${event.data.inventory[i].key}) 
					 
				`;
				if(event.data.recipe[i][1] > event.data.inventory[i].key){
					canCraft = false
				}
			}
		}
		
		$('#craft-button-div').html(`
			CRAFT 
		`);
		if(canCraft) {
			$('#craft-buttons-info').fadeIn();
			$('#craft-button-div').fadeIn();
			$('#craft-buttons-info-level').hide();
		} else {
			$('#craft-buttons-info').hide();
			$('#craft-buttons-info-level').hide();
		}
		
		if(useLevels){
			if(!isAvailable && isLevel){
				$('#craft-button-div-level').html(`
					
										
											
												${queue[i].itemName} x${queue[i].amount}
												Concluded
											 
										 
										
									 
								`;
							} else {
								queueRow += `
									
										
											
												${queue[i].itemName} x${queue[i].amount}
												Concluded
											 
										 
										
									 
								`;
							}
						} else {
							queueRow += `
								
									
										
											${queue[i].itemName} x${queue[i].amount}
											Failed to craft
										 
									 
									
								 
							`;
						}
					} else {
						if(queue[i].isPending){
							if(queue[i].isDis){
								queueRow += `
									
										
											
												${queue[i].itemName} x${queue[i].amount}
												Pending
											 
										 
										
									 
								`;
							} else {
								queueRow += `
									
										
											
												${queue[i].itemName} x${queue[i].amount}
												Pending
											 
										 
										
									 
								`;
							}
						} else {
							if(queue[i].isDis){
								queueRow += `
									
										
											
												${queue[i].itemName} x${queue[i].amount}
												Time left: ${queue[i].time}s
											 
										 
										
									 
								`;
							} else {
								queueRow += `
									
										
											
												${queue[i].itemName} x${queue[i].amount}
												Time left: ${queue[i].time}s
											 
										 
										
									 
								`;
							}
						}
					}
				}
			} else {
				queueRow = `The crafting queue is empty
`
			}
			$('.craftingq_window').html(queueRow);
		}
		break
	case 'resetItemNumber':
		itemClaiming = 0;
		break
	case 'resetButton':
		if(canCraftItem == false){
			canCraftItem = true;
			document.querySelector('#craft-button').disabled = false;
		}
		break
	case 'canClaimAll':
		document.querySelector('#claimall-button').disabled = false;
		break
	case 'closeMenu':
		closeMenu();
		break
	}
});
$(document).on('click', ".cat_tab", function() {
	selectedCategory = $("input[name='category']:checked").val();
	var num = craft2.length;
	var paragraph = '';
	var row = '';
	var lastRowNum = 0;
	var added = 0
	for(var i = 0; i < num; i++) {
		for(var i1 = 0; i1 < craft2[i].job.length; i1++){
			if(selectedCategory == "general_cat" || craft2[i].category == selectedCategory){
				if(craft2[i].job[i1] == job2 || craft2[i].job[i1] == gang || craft2[i].job[i1] == ''){
					if(!craftData.UseXP){
						var itemName = craftData.itemNames;
						var itemId = craft2[i].item;
						var index = i;
						added++
						row += `
							
								
									
										${itemName[itemId]} 
										 
								 
							 
						`;
						if ((added) % 4 === 0) {
							row = addStr(row, row.length, `
`);
							lastRowNum = row.length+6;
						}
					} else {
						if(craft2[i].levelNeeded <= craftData.level || showAllCrafts){
							var itemName = craftData.itemNames;
							var itemId = craft2[i].item;
							var index = i;
							added++
							row += `
								
									
										
											${itemName[itemId]} 
											 
									 
								 
							`;
							if ((added) % 4 === 0) {
								row = addStr(row, row.length, `
`);
								lastRowNum = row.length+6;
							}
						}
					}
				}
			}
		}
	}
	row += `
`;
	
	if(craftData.UseXP) {
		$('#currentlevel').html(craftData.level);
		document.documentElement.style.setProperty('--percentage-width', craftData.percentage+"%");
		$('.xpbar-col').css('margin-top', '-1.8rem');
	} else {
		$('.xpbar').hide();
		$('.xpbar-col').css('margin-top', '5.05rem');
	}
	$('#craft-table').html(row);
	$('.title-name').html(craftData.name);
	$('.title').fadeIn();
	$('.itemslist').fadeIn();
	$('.crafting-body').fadeIn();
});
function restartCrafts(){
	selectedCategory = 'general_cat';
	var num = craft2.length;
	var paragraph = '';
	var row = '';
	var lastRowNum = 0;
	var added = 0
	for(var i = 0; i < num; i++) {
		for(var i1 = 0; i1 < craft2[i].job.length; i1++){
			if(selectedCategory == "general_cat" || craft2[i].category == selectedCategory){
				if(craft2[i].job[i1] == job2 || craft2[i].job[i1] == gang || craft2[i].job[i1] == ''){
					if(!craftData.UseXP){
						var itemName = craftData.itemNames;
						var itemId = craft2[i].item;
						var index = i;
						added++
						row += `
							
								
									
										${itemName[itemId]} 
										 
								 
							 
						`;
						if ((added) % 4 === 0) {
							row = addStr(row, row.length, `
`);
							lastRowNum = row.length+6;
						}
					} else {
						if(craft2[i].levelNeeded <= craftData.level || showAllCrafts){
							var itemName = craftData.itemNames;
							var itemId = craft2[i].item;
							var index = i;
							added++
							row += `
								
									
										
											${itemName[itemId]} 
											 
									 
								 
							`;
							if ((added) % 4 === 0) {
								row = addStr(row, row.length, `
`);
								lastRowNum = row.length+6;
							}
						}
					}
				}
			}
		}
	}
	row += `
`;
	
	if(craftData.UseXP) {
		$('#currentlevel').html(craftData.level);
		document.documentElement.style.setProperty('--percentage-width', craftData.percentage+"%");
		$('.xpbar-col').css('margin-top', '-1.8rem');
	} else {
		$('.xpbar').hide();
		$('.xpbar-col').css('margin-top', '5.05rem');
	}
	$('#craft-table').html(row);
	$('.title-name').html(craftData.name);
}
$(document).ready(function() {
	document.onkeyup = function(data) {
		if (data.which == 27) {
			closeMenu();
		}
	};
});
$(document).ready(function(){
	$('#plus').click(function(e) {
		var quantity = parseInt($('#quantity').val());
		if(quantity < maxCraft){
			$('#quantity').val(quantity + 1); 
			updateSideMenu(quantity + 1);
		}
	});
	$('#minus').click(function(e) {
		var quantity = parseInt($('#quantity').val());
		
		if(quantity > maxCraft){
			$('#quantity').val(maxCraft);
			updateSideMenu(maxCraft);
		} else {
			if(quantity > 1) {
				$('#quantity').val(quantity - 1);
				updateSideMenu(quantity - 1);
			}
		}
	});
	$('#max').click(function(e) {
		var quantity = parseInt($('#quantity').val());
		
		if(quantity != maxCraft){
			$('#quantity').val(maxCraft);
			updateSideMenu(maxCraft);
		}
	});
});
function quantity_change(t) {
	var quantity = parseInt($('#quantity').val());
		
	if(quantity > maxCraft){
		$('#quantity').val(maxCraft);
		updateSideMenu(maxCraft);
	} else if(quantity < 1) {
		$('#quantity').val(1);
		updateSideMenu(1);
	} else {
		updateSideMenu(quantity);
	}
}
function craft(t) {
	if(canCraftItem){
		canCraftItem = false;
		document.querySelector('#craft-button').disabled = true;
		var itemId = t.dataset.item;
		var recipe = t.dataset.recipe;
		var amount = t.dataset.amount;
		var xp = t.dataset.xp;
		var isDis = t.dataset.isDis;
		var index = t.dataset.index;
		var level = t.dataset.level;
		var quantity = document.getElementById("quantity").value;
		if(quantity > maxCraft){
			quantity = maxCraft;
			$('#quantity').val(quantity - 1);
			updateSideMenu(quantity - 1);
		}
		$.post('https://okokCrafting/action', JSON.stringify({
			action: "craft-button",
			itemID: itemId,
			recipe: recipe,
			amount: amount,
			xp: xp,
			quantity: quantity,
			isDis: isDis,
			index: index,
			level: level,
		}));
	}
}
function claim(t) {
	var index = parseInt(t.dataset.id)+1;
	var itemRndID = parseInt(CraftQueue[index-1].randomID);
	if(itemClaiming != itemRndID && canClaimItem){
		canClaimItem = false;
		itemClaiming = itemRndID;
		$.post('https://okokCrafting/action', JSON.stringify({
			action: "claim-item",
			index: index,
		}));
	}
}
function claimall(t) {
	if(CraftQueue[0] != undefined && CraftQueue[0].isDone && canClaimItem){
		canClaimItem = false;
		document.querySelector('#claimall-button').disabled = true;
		$.post('https://okokCrafting/action', JSON.stringify({
			action: "claim-all",
		}));
	}
	
}
function claimFail(t) {
	var index = parseInt(t.dataset.id)+1;
	var itemRndID = parseInt(CraftQueue[index-1].randomID);
	if(itemClaiming != itemRndID && canClaimItem){
		canClaimItem = false;
		itemClaiming = itemRndID;
		$.post('https://okokCrafting/action', JSON.stringify({
			action: "fail-item",
			index: index,
		}));
	}
}
function cancel(t) {
	var index = parseInt(t.dataset.id)+1;
	var itemRndID = parseInt(CraftQueue[index-1].randomID);
	if(itemClaiming != itemRndID && canClaimItem){
		canClaimItem = false;
		itemClaiming = itemRndID;
		$.post('https://okokCrafting/action', JSON.stringify({
			action: "cancel-item",
			index: index,
		}));
	}
}
function updateSideMenu(quantity){
	var canCraft = true
	var num = sideCraftMenu.recipe.length;
	var recipe = ``;
	var img = `
		${sideCraftMenu.itemName} x${sideCraftMenu.itemAmount*quantity} 
	`;
	if(sideCraftMenu.isDis){
		img = `
			${sideCraftMenu.itemName} x${sideCraftMenu.itemAmount*quantity} (${sideCraftMenu.isDisItemAmt}) 
		`;
	}
	$('#side-image').html(img);
	$('#craft-time').html(sideCraftMenu.time*quantity);
	for(var i = 0; i < num; i++){
		var idName = sideCraftMenu.recipe[i][0];
		if(sideCraftMenu.isDis){
			recipe += `
				
					${sideCraftMenu.itemNames[idName]} x${sideCraftMenu.recipe[i][1]*quantity} 
				 
			`;
			if(sideCraftMenu.itemAmount > sideCraftMenu.isDisItemAmt){
				canCraft = false
			}
		} else {
			recipe += `
				
					${sideCraftMenu.itemNames[idName]} x${sideCraftMenu.recipe[i][1]*quantity} (${sideCraftMenu.inventory[i].key}) 
				 
			`;
			if(sideCraftMenu.recipe[i][1] > sideCraftMenu.inventory[i].key){
				canCraft = false
			}
		}
	}
	$('#craft-button-div').html(`
		CRAFT 
	`);
	if(canCraft) {
		$('#craft-button-div').fadeIn();
	} else {
		$('#craft-button-div').hide();
	}
	$('#craft-percentage').html(sideCraftMenu.percentage);
	$('.components_window').html(recipe);
	$('.itemrequirements').fadeIn();
}
function closeMenu(){
	itemClaiming = 0;
	selectedCategory = "";
	$('.crafting-body').fadeOut();
	$('.title').fadeOut();
	$('.itemslist').fadeOut();
	$('.itemrequirements').fadeOut();
	setTimeout(function(){
		restartCrafts();
	}, 400);
	$.post('https://okokCrafting/action', JSON.stringify({
		action: "close",
	}));
}