﻿

var req = new HttpRequester();


// logRecorder
function LogRecorder()
{
    this.requester = null;
    this.success = "";
}

// record play music.
LogRecorder.prototype.RecordLog = function(code, id)
{
    var thisInstance = this;
    this.requester = req.createXMLHttpRequest(function() { thisInstance.onChangeState(thisInstance); });

    //this.requester.open("POST", "PlayMusicLogRecorder.ashx", true);
    //this.requester.open("POST", "http://" + location.host + "/PlayMusicLogRecorder.ashx", false);
    this.requester.open("POST", "PlayMusicLogRecorder.ashx", false);
    this.requester.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    this.requester.setRequestHeader("If-Modified-Since", "Thu, 01 Jun 1970 00:00:00 GMT");
    this.requester.send("c=" + code + "&sid=" + id);
};

LogRecorder.prototype.RecordLogFlash = function(code, id, fltime, jstime) {
    var thisInstance = this;
    this.requester = req.createXMLHttpRequest(function() { thisInstance.onChangeState(thisInstance); });

    //this.requester.open("POST", "PlayMusicLogRecorder.ashx", true);
    //this.requester.open("POST", "http://" + location.host + "/PlayMusicLogRecorder.ashx", false);
    this.requester.open("POST", "PlayMusicLogRecorder.ashx", true);
    this.requester.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    this.requester.setRequestHeader("If-Modified-Since", "Thu, 01 Jun 1970 00:00:00 GMT");
    this.requester.send("fn=" + code + "&sid=" + id + "&fltime=" + encodeURIComponent(fltime) + "&jstime=" + encodeURIComponent(jstime));
};

// change state event.
LogRecorder.prototype.onChangeState = function(recorder)
{
    //alert("onChangeState");

    if (recorder.requester == null)
    {
        return;
    }
    if (recorder.requester.readyState != 4)
    {
        return;
    }

    try
    {
        if (recorder.requester.status == 200)
        {
        }
        else if (recorder.requester.status != 304)
        {
            // Report error
        }

        this.success = recorder.requester.responseText;

        //alert("1130:responseText = " + this.success);

        recorder.terminateRequest();
    }
    catch (e)
    {
        // Need error handling.
    }
    finally
    {
    }
};

// Terminate Request
LogRecorder.prototype.terminateRequest = function()
{
    if (this.requester !== null)
    {
        //this.requester.abort();
        this.requester = null;
    }
};


// XmlHttpRequest
function HttpRequester()
{
}

HttpRequester.prototype.createXMLHttpRequest = function(stateChangeCallback)	// callback function on state change
{
    var requester = null;
    if (window.ActiveXObject)
    {
        try
        {
            requester = new ActiveXObject("Msxml2.XMLHTTP");
            requester.onreadystatechange = stateChangeCallback;
        }
        catch (e)
        {
            try
            {
                requester = new ActiveXObject("Microsoft.XMLHTTP");
                requester.onreadystatechange = stateChangeCallback;
            }
            catch (e)
            {
            }
        }
    }
    else if (window.XMLHttpRequest)
    {
        requester = new XMLHttpRequest();
        requester.onload = stateChangeCallback;
    }

    //	if (requester !== null) {
    //		requester.onreadystatechange = stateChangeCallback;
    //	}
    //	
    return requester;
};

