//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Funciones basadas en los ejemplos contenidos en la siguiente página:
//   http://developer.apple.com/internet/webcontent/xmlhttpreq.html
// para hacer llamadas asíncronas a otras páginas y cargar y procesar un xml.
// Este script hace uso de las funciones definidas en "cookies.js" así que es
// necesario que se incluya antes que este script.
//
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


// Contiene el objeto que hace la petición por http.
var tracker_req;

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
function fnGetXMLDoc(url) {
  tracker_req = false;
  // Para los navegadores con soporte nativo para el objeto XMLHttpRequest
  if(window.XMLHttpRequest) {
    try {
      tracker_req = new XMLHttpRequest();
    } catch(e) {
      tracker_req = false;
    }
    // Para IE/Windows, la versión ActiveX
    } else if(window.ActiveXObject) {
      try {
        tracker_req = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
      try {
        tracker_req = new ActiveXObject("Microsoft.XMLHTTP");
      } catch(e) {
        tracker_req = false;
      }
    }
  }

  if(tracker_req) {
    tracker_req.onreadystatechange = fnProcessReqChange;
    tracker_req.open("GET", url, true);
    tracker_req.send("");
  }
  
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Ejemplo de xml que se recibe.
// <cookie>
//   <name>TPISESSIONID</name>
//   <value>CM00000104A9070CDABAB6B24DB84E</value>
//   <domain>paginasamarillas.es</domain>
//   <path>/</path>
//   <expires>2005,11,21</expires>
// </cookie>

function fnProcessReqChange() { 
  
  // Sólo si tracker_req se ha cargado
  if (tracker_req.readyState == 4) {
    // Solo si está "OK"
    try {
      if (tracker_req.status == 200) {
        // Obtiene los valores...
  
        var xmlDoc = tracker_req.responseXML;
        var cookieRoot    = xmlDoc.getElementsByTagName( "cookie" ).item(0);
        var cookieName    = cookieRoot.getElementsByTagName( "name" ).item(0).firstChild.nodeValue;
        var cookieValue   = cookieRoot.getElementsByTagName( "value" ).item(0).firstChild.nodeValue;
        var cookieDomain  = cookieRoot.getElementsByTagName( "domain" ).item(0).firstChild.nodeValue;
        var cookiePath    = cookieRoot.getElementsByTagName( "path" ).item(0).firstChild.nodeValue;
        var cookieExpires = cookieRoot.getElementsByTagName( "expires" ).item(0).firstChild.nodeValue;
        if( cookieValue != "" ) {
          eval( "var e = new Date( " + cookieExpires + ");" );
          cookieString  = cookieName + "=" + cookieValue  + ";";
          cookieString += "domain="        + cookieDomain + ";";
          cookieString += "path="          + cookiePath   + ";";
          cookieString += "expires="       + e.toGMTString();
          document.cookie = cookieString;
        }
      } else {
        //alert("There was a problem retrieving the XML data:\n" + tracker_req.statusText);
      }
    } catch ( e ) {
    }
  }
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
function fnIsCookiesEnabled() {
  var result;
  
  result = false;
  
  if( getCookie( "TPITestCookie" ) != "test")
		setCookie( "TPITestCookie", "test" );
  
  result = getCookie( "TPITestCookie" ) == "test";
  
  //deleteCookie( "TPITestCookie" );
  
  return result;
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
//
function fnDoTracking() {
  
  // Comprobamos si el navegador permite cookies.
  var isCookiesEnabled = fnIsCookiesEnabled();

  if( isCookiesEnabled ) {
    // Si la cookie de TPI no existe, la creamos.
    if( getCookie( "TPISESSIONID" ) == null || getCookie( "TPISESSIONID" ) == "" ) {
      fnGetXMLDoc( "http://" + document.location.host + "/functions/tracker.asp" );
      //fnGetXMLDoc( "http://amarillas.yelldes.intrayell.com:2008/functions/tracker.asp" );
    }
  }
}

fnDoTracking();

// Trazas
//alert( "tracker_req.readyState: " + tracker_req.readyState );
//alert( "cookieExpires: " + e.toGMTString() );
//alert( "cookieString: " + cookieString );
//alert( "isCookiesEnabled: " + isCookiesEnabled );
//alert( "TPISESSIONID: " + getCookie( "TPISESSIONID" ) );
//alert( document.location.host + "/functions/tracker.asp" );
