var xmlhttp =  createRequestObject();
var refresh_time = 500;
var req_timer;
var upload_inprogress = false;
var req_inprogress = false;
var getinfo = false;
var ajax_canceled = false;
var succeeded = false;
var searching = false;

var iTotal, iRead, iStatus, sessionid, dtstart;

function enableControls(form, active)
{
      for(i = 0; i < form.length; i++)
      {
          form.elements[i].disabled = !active;
      }
}

function check_types(f) {
        var allowed_imagetype = /(\.jpg)|(\.gif)|(\.png)$/i;
        var allowed_flashtype = /(\.swf)|(\.dcr)$/i;

        if (!f.flash.value.length && !f.previd.value.length)
        {
            alert("Please select the flash file");
            return false;
        }
        if (!f.thumbnail.value.length && !f.previd.value.length)
        {
            alert("Please select the thumbnail file");
            return false;
        }
        if (!f.title.value.length)
        {
            alert("Please insert the title");
            return false;
        }
        if (!f.description.value.length)
        {
            alert("Please enter the game description");
            return false;
        }
        if (!f.category.value.length)
        {
            alert("Please select the game category");
            return false;
        }
        if (!f.exclusive.checked)
        {
            alert("Please verify that this game is not exist on DailyFreeGames.com");
            return false;
        }
        if (!f.creator.checked)
        {
            alert("Please verify that you are one of the creator of this game");
            return false;
        }
        if (!f.width.value.length || !f.height.value.length)
        {
            alert("Please specify the game dimension");
            return false;
        }
        if (!f.flash.value.match(allowed_flashtype) && f.flash.value.length)
        {
            alert("The flash file is not allowed");
            return false;
        }
        if (!f.thumbnail.value.match(allowed_imagetype) && f.thumbnail.value.length)
        {
            alert("The thumbnail file is not allowed");
            return false;
        }
        return true;
}

function beginUpload(f)
{
        if (check_types(f) == false)
                return false;

        if (upload_inprogress) return false;

        document.getElementById("begin").disabled = true;

        document.getElementById("waitmsg").innerHTML = "Please wait... uploading ";
        document.getElementById("status").innerHTML = "";

        document.getElementById("resultlayer").innerHTML = document.getElementById("progresslayer").innerHTML;
        document.getElementById("uploadlayer").style.display = "none";
        
		upload_inprogress = true;
        return true;
}

// create object
function createRequestObject() {
    var ro;
    var browser = navigator.appName;
    if(browser == "Microsoft Internet Explorer"){
        ro = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
        ro = new XMLHttpRequest();
    }
    return ro;
}

function submitRequest(reqList)
{
    xmlhttp.open('get', reqList, true);

    /* The callback function */
    xmlhttp.onreadystatechange = responseHandler;
    xmlhttp.send(null);
}

function responseHandler()
{
   if (ajax_canceled) return;
   if (xmlhttp.readyState == 4)
   {
       req_inprogress = false;
       if (xmlhttp.status == 200)
       {
           //document.getElementById("header").innerHTML += ("<br/>R:"+xmlhttp.responseText);
           if (getinfo)
           {
               showInfo(xmlhttp.responseText);
           }
           else
           if (searching)
           {
               displayPage(xmlhttp.responseText);
           }
           else
               readResponse(xmlhttp.responseText);
       }
   }
}

function refreshProgress() {
    if (req_inprogress) return;

    var reqList = '/upload/progress.cgi';
    reqList += "?iTotal=" + escape(iTotal);
    reqList += "&iRead=" + escape(iRead);
    reqList += "&iStatus=" + escape(iStatus);
    reqList += "&sessionid=" + escape(sessionid);
    reqList += "&dtstart=" + escape(dtstart);
    req_inprogress = true;
    //document.getElementById("header").innerHTML += ("<br/>S:"+reqList);
    submitRequest(reqList);
}

function readResponse(responseText) {
    var items = new Array();
    // response is: iTotal|iRead|iStatus|dtstart|percent|msg
    items = responseText.split("|");

    iTotal = items[0].substring(1);
    iRead = items[1];
    iStatus = items[2];
    dtstart = items[3];

    var percent = items[4];
    var msg = items[5];

    if (iStatus == "2")
    {
        // completed
        clearInterval(req_timer);
        document.getElementById("resultlayer").innerHTML = document.getElementById("successlayer").innerHTML;

        getinfo = true;
        var reqURL = "/upload/getinfo.php?i=" + sessionid;
        submitRequest(reqURL);
    }
    else
    {
        // update progress
        items = percent.split(".");
        percent = items[0];
        if (percent > 5)
            document.getElementById("progressbar").style['width'] = percent+'%';
        else
            document.getElementById("progressbar").style['width'] = '5%';
//        if (items.length > 1)
//            percent += '.' + items[1].substr(0,2);
        document.getElementById("progressvalue").innerHTML = percent+'%';
        document.getElementById("status").innerHTML = msg;
    }
}

function showInfo(responseText)
{
    var items = new Array();
    var msg = '';
    // response is: status|msg
    items = responseText.split("|");
    //enableControls(false);
    document.getElementById("begin").disabled = false;
    document.getElementById("begin").value = "Upload another files";
    upload_inprogress = false;
    succeeded = true;
    if (items.length < 2)
      msg = responseText;
    else msg = items[1];  
      document.getElementById("resultlayer").innerHTML = msg;
}
