var model;
var helmet;
var rshoulder;
var lshoulder;
var chest;
var pcolor;
var scolor;
var dcolor;
var mtype;
var AJAX_req = false;
var imgperm;
var ReturnXML;
var ReturnXML2;
var findplayerbox = 0;

function doc_init()
{
    //init script by setting current values (if they've reloaded and the form has different values)...
     model = document.getElementById('model').value;
     if(model == "0")      // Spartan or elite?
          mtype = 's';
     else
          mtype = 'e';
     helmet = document.getElementById(mtype + 'helmet').value;
     rshoulder = document.getElementById(mtype + 'rshoulder').value;
     lshoulder = document.getElementById(mtype + 'lshoulder').value;
     chest = document.getElementById(mtype + 'chest').value;
     pcolor = document.getElementById('pcolor').value;
     scolor = document.getElementById('scolor').value;
     dcolor = document.getElementById('dcolor').value;
     // Make sure the right config list is up
     playerModel();
}

// Create the AJAX request
function createRequestObject()
{
	var req = false;

	if(window.XMLHttpRequest){
		req = new XMLHttpRequest();

		if(req.overrideMimeType){ req.overrideMimeType('text/xml'); }
	}
	else if(window.ActiveXObject){
		try{ req = new ActiveXObject("Msxml2.XMLHTTP"); }
		catch(e){
			try{ req = new ActiveXObject("Microsoft.XMLHTTP"); }
			catch(e){}
		}
	}

	if(!req){ return false; }
	else{ return req; }
}

// let's do that now...
if(AJAX_req = createRequestObject())
{} else { alert('Your browser doesn\'t support AJAX; this script will not work properly. Sorry.'); }

function clearreqboxes ()
{
     document.getElementById('helmetreq').innerHTML = "";
     document.getElementById('lshoulderreq').innerHTML = "";
     document.getElementById('rshoulderreq').innerHTML = "";
     document.getElementById('chestreq').innerHTML = "";
}

function GetXML()
{
	/* 0: Uninitialized 1: Loading 2: Loaded 3: Interactive 4: Finished */
	if(AJAX_req.readyState == 1){
          document.getElementById('cachestatus').innerHTML = "<b>Loading...<b>";
          document.getElementById('imgplace').innerHTML = "";
          document.getElementById('link').href = "javascript:void(0);";
          document.getElementById('link').innerHTML = "";
     } else if(AJAX_req.readyState == 4){
          if(AJAX_req.status == 200){
			ReturnXML = AJAX_req.responseXML;
			if(ReturnXML.getElementsByTagName('status').item(0).firstChild.nodeValue == 1) {
                    document.getElementById('imgplace').innerHTML = "<img src=\"" + ReturnXML.getElementsByTagName('link').item(0).firstChild.nodeValue + "\" />";
                    document.getElementById('link').href = ReturnXML.getElementsByTagName('link').item(0).firstChild.nodeValue;
                    document.getElementById('link').innerHTML = ReturnXML.getElementsByTagName('link').item(0).firstChild.nodeValue;
                    if(ReturnXML.getElementsByTagName('cache-status').item(0).firstChild.nodeValue == 1) {
                         document.getElementById('cachestatus').innerHTML = "(Cached Image)";
                    } else if(ReturnXML.getElementsByTagName('cache-status').item(0).firstChild.nodeValue == 2) {
                         document.getElementById('cachestatus').innerHTML = "(Fresh Image)";
                    } else {
                         document.getElementById('cachestatus').innerHTML = "(Bungie.net image)";
                    }
                    getrequirements(); // Find those requirements! Wow I'm bored right now.
               } else {
                    document.getElementById('imgplace').innerHTML = "<b>Image unavailable</b>";
                    document.getElementById('link').href = "javascript:void(0);";
                    document.getElementById('link').innerHTML = "";
                    clearreqboxes();
               }
               if(findplayerbox == 1) {
                    findplayerbox -= 1;
               } else {
                    document.getElementById('armor_url').value = "";
                    document.getElementById('gtstatus').innerHTML = "";
               }
		} else {
               document.getElementById('cachestatus').innerHTML = "<b>Error!<b>";
               document.getElementById('imgplace').innerHTML = "";
               document.getElementById('link').href = "javascript:void(0);";
               document.getElementById('link').innerHTML = "";
               clearreqboxes();
          }
	}
}

function GetReqXML()
{
	/* 0: Uninitialized 1: Loading 2: Loaded 3: Interactive 4: Finished 5: Free candy */
	if(AJAX_req.readyState == 1){
          document.getElementById('helmetreq').innerHTML = "<b>Loading...<b>";
          document.getElementById('lshoulderreq').innerHTML = "<b>Loading...<b>";
          document.getElementById('rshoulderreq').innerHTML = "<b>Loading...<b>";
          document.getElementById('chestreq').innerHTML = "<b>Loading...<b>";
     } else if(AJAX_req.readyState == 4){
          if(AJAX_req.status == 200){
			ReturnXML2 = AJAX_req.responseXML;
               document.getElementById('helmetreq').innerHTML = ReturnXML2.getElementsByTagName('helmet').item(0).firstChild.nodeValue;
               document.getElementById('lshoulderreq').innerHTML = ReturnXML2.getElementsByTagName('lshoulder').item(0).firstChild.nodeValue;
               document.getElementById('rshoulderreq').innerHTML = ReturnXML2.getElementsByTagName('rshoulder').item(0).firstChild.nodeValue;
               document.getElementById('chestreq').innerHTML = ReturnXML2.getElementsByTagName('chest').item(0).firstChild.nodeValue;
          } else {
               document.getElementById('helmetreq').innerHTML = "Error!";
               document.getElementById('lshoulderreq').innerHTML = "Error!";
               document.getElementById('rshoulderreq').innerHTML = "Error!";
               document.getElementById('chestreq').innerHTML = "Error!";
          }
	}
}

function GetArmorXML()
{
	/* 0: Uninitialized 1: Loading 2: Loaded 3: Interactive 4: Finished */
	if(AJAX_req.readyState == 1) {
          document.getElementById('gtstatus').innerHTML = "Searching...";
     } else if(AJAX_req.readyState == 4) {
          if(AJAX_req.status == 200) {
               ReturnXML = AJAX_req.responseXML;
               if(ReturnXML.getElementsByTagName('status').item(0).firstChild.nodeValue == 1) {
                    // found it!
                    document.getElementById('gtstatus').innerHTML = "Gamertag found!";
                    model = ReturnXML.getElementsByTagName('model').item(0).firstChild.nodeValue;
                    document.getElementById('model').value = ReturnXML.getElementsByTagName('model').item(0).firstChild.nodeValue;
                    if(model == "0")      // Spartan or elite?   (duh, no one likes elites)
                         mtype = 's';
                    else
                         mtype = 'e';
                    helmet = ReturnXML.getElementsByTagName('helmet').item(0).firstChild.nodeValue;
                    rshoulder = ReturnXML.getElementsByTagName('rshoulder').item(0).firstChild.nodeValue;
                    lshoulder = ReturnXML.getElementsByTagName('lshoulder').item(0).firstChild.nodeValue;
                    chest = ReturnXML.getElementsByTagName('chest').item(0).firstChild.nodeValue;
                    document.getElementById(mtype + 'helmet').value = ReturnXML.getElementsByTagName('helmet').item(0).firstChild.nodeValue;
                    document.getElementById(mtype + 'rshoulder').value = ReturnXML.getElementsByTagName('rshoulder').item(0).firstChild.nodeValue;
                    document.getElementById(mtype + 'lshoulder').value = ReturnXML.getElementsByTagName('lshoulder').item(0).firstChild.nodeValue;
                    document.getElementById(mtype + 'chest').value = ReturnXML.getElementsByTagName('chest').item(0).firstChild.nodeValue;
                    pcolor = ReturnXML.getElementsByTagName('pcolor').item(0).firstChild.nodeValue;
                    scolor = ReturnXML.getElementsByTagName('scolor').item(0).firstChild.nodeValue;
                    dcolor = ReturnXML.getElementsByTagName('dcolor').item(0).firstChild.nodeValue;
                    document.getElementById('pcolor').value = ReturnXML.getElementsByTagName('pcolor').item(0).firstChild.nodeValue;
                    document.getElementById('scolor').value = ReturnXML.getElementsByTagName('scolor').item(0).firstChild.nodeValue;
                    document.getElementById('dcolor').value = ReturnXML.getElementsByTagName('dcolor').item(0).firstChild.nodeValue;
                    // Make sure the right config list is up
                    findplayerbox = 1;
                    playerModel();
               } else {
                    document.getElementById('gtstatus').innerHTML = "Gamertag invalid/not found";
               }
		} else {
               document.getElementById('gtstatus').innerHTML = "<b>Error!<b>";
          }
	}
}

function generateImage ()
{
     imgperm = model + ":" + helmet + ":" + lshoulder + ":" + rshoulder + ":" + chest + ":" + pcolor + ":" + scolor + ":" + dcolor;
     AJAX_req.onreadystatechange = GetXML;
     AJAX_req.open('get', 'image.php?url=' + imgperm);
     AJAX_req.send(null);      // Off to wait for the image
}

function getrequirements ()
{
          AJAX_req.onreadystatechange = GetReqXML;
          AJAX_req.open('get', 'requirements.php?url=' + imgperm);
          AJAX_req.send(null);      // Off to see the wizard!
}

function find_armor()
{
     AJAX_req.onreadystatechange = GetArmorXML;
     AJAX_req.open('get', 'findplayer.php?player=' + document.getElementById('armor_url').value);
     AJAX_req.send(null);
}

function playerModel ()
{
     if (document.getElementById('model').value == '0') {
          document.getElementById('spartan').style.display = 'block';
          document.getElementById('elite').style.display = 'none';
          mtype = 's';
     } else {
          document.getElementById('spartan').style.display = 'none';
          document.getElementById('elite').style.display = 'block';
          mtype = 'e';
     }
     helmet = document.getElementById(mtype + 'helmet').value;
     rshoulder = document.getElementById(mtype + 'rshoulder').value;
     lshoulder = document.getElementById(mtype + 'lshoulder').value;
     chest = document.getElementById(mtype + 'chest').value;
     model = document.getElementById('model').value;
     generateImage();
}

function changeSelection (object)
{
     if (document.getElementById('model').value == '0') {
          window[object] = document.getElementById('s' + object).value;
     } else {
          window[object] = document.getElementById('e' + object).value;
     }
     generateImage();
}

function changeColor (object)
{
     window[object] = document.getElementById(object).value;
     generateImage();
}

