package com.gmail.nossr50.util;

import java.io.InputStreamReader;
import java.net.URL;
import java.net.UnknownHostException;

import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.Config;

public class UpdateChecker {
    private UpdateChecker() {}

    public static boolean updateAvailable() throws Exception {
        String checkType = "release";
        if (Config.getInstance().getPreferBeta()) {
            checkType = "latest";
        }
        String version = mcMMO.p.getDescription().getVersion();
        URL url = new URL("http://api.bukget.org/api2/bukkit/plugin/mcmmo/" + checkType);
        InputStreamReader isr;
        try {
            isr = new InputStreamReader(url.openStream());
        }
        catch (UnknownHostException e) {
            return false;
        }

        String newVersion;
        try {
            JSONParser jp = new JSONParser();
            Object o = jp.parse(isr);

            if (!(o instanceof JSONObject)) {
                isr.close();
                return false;
            }

            JSONObject jo = (JSONObject) o;
            jo = (JSONObject) jo.get("versions");
            newVersion = (String) jo.get("version");

            String[] oldTokens = version.replaceAll("(?i)(-)(.+?)(-)", "").split("[.]|[b]");
            String[] newTokens = newVersion.replaceAll("(?i)(-)(.+?)(-)", "").split("[.]|[b]");

            for (int i = 0; i < 4; i++) {
                Integer newVer = Integer.parseInt(newTokens[i]);
                Integer oldVer = Integer.parseInt(oldTokens[i]);
                if (oldVer < newVer) {
                    isr.close();
                    return true;
                }
            }
            return false;
        }
        catch (ParseException e) {
            isr.close();
            return false;
        }
    }
}

@@ -1379,32 +1379,33 @@
 )(-)(.+?)(-)%22, %22
+-
 %22).split(%22%5B.%5D%7C%5Bb
@@ -1398,27 +1398,26 @@
 .split(%22%5B.%5D%7C
-%5Bb%5D
+-b
 %22);%0A        
@@ -1483,16 +1483,17 @@
 )(-)%22, %22
+-
 %22).split
@@ -1502,11 +1502,10 @@
 %5B.%5D%7C
-%5Bb%5D
+-b
 %22);%0A
@@ -1646,42 +1646,210 @@
 dVer
- = Integer.parseInt(oldTokens%5Bi%5D);
+;%0A                try %7B%0A                    oldVer = Integer.parseInt(oldTokens%5Bi%5D);%0A                %7D%0A                catch (NumberFormatException e) %7B%0A                    oldVer = 0;%0A                %7D
 %0A   

Fix the update checker