Way way way too much duplicated code. If I find a bug here I'm going to have to fix it everywhere else. You are going to have to break this down so it isn't so copypasta.