 		
//will extract the sName from the location.href search information
function getUrlVar( sName )
{
  var qindex = window.location.href.indexOf("?");
  if( qindex == -1 )
    return null;
  var url = window.location.href.substr( qindex+1 );
  splitUrl = url.split("&");
  for( var i=0; i < splitUrl.length; i++ )
  {
    var nameValue = splitUrl[i].split("=");
    if( nameValue[0]==sName )
      return nameValue[1];
  }
  return null;
}

function createCookie( sName, sValue, nDays ) 
{
	if ( nDays )
	{
		var date = new Date();
		date.setTime( date.getTime() + ( nDays * 24 * 60 * 60 * 1000 ) );
		var expires = "; expires=" + date.toGMTString();
	}
	else var expires = "";
	document.cookie = sName + "=" + sValue + expires + "; path=/";
}

function readCookie( sName )
{
	var nameEQ = sName + "=";
	var ca = document.cookie.split(';');
	for( var i=0; i < ca.length; i++ )
	{
		var c = ca[i];
		while ( c.charAt(0)==' ' ) 
      c = c.substring( 1, c.length );
		if ( c.indexOf(nameEQ) == 0) 
      return c.substring( nameEQ.length, c.length );
	}
	return null;
}

function deleteCookie( sName )
{
	createCookie( sName, "" , -1 );
}
  
function getNodeValue( xmlDoc, sNodeName )
{
  var elements = xmlDoc.getElementsByTagName( sNodeName );
  if( elements != null && elements.length != 0 && elements.item(0).firstChild != null )
    return elements.item(0).firstChild.nodeValue;
  else
    return null;
}

function getHtmlElement( sId )
{
  return document.getElementById( sId );
}

function ce( sName )
{
  return document.createElement( sName );
}

function ctn( sText )
{
  return document.createTextNode( sText );
}

function initializeRequest()
{
  var request = false;
  try 
  {
    request = new XMLHttpRequest();
  } 
  catch (trymicrosoft) 
  {
    try 
    {
      request = new ActiveXObject("Msxml2.XMLHTTP");
    } 
    catch (othermicrosoft) 
    {
      try 
      {
        request = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (failed) 
      {
        request = false;
      }
    }
  }
  if (!request)
    alert("Error initializing XMLHttpRequest!");
  else
    return request;
}  

function ajaxCall( url, callBack , arg )
{
  var request = initializeRequest();
  request.onreadystatechange=function(){ _ajaxCallResult( request, callBack , arg ); };
  request.open( "GET", url, true );
  request.send( null ); 
}

function _ajaxCallResult( request, callBack, arg )
{
  if (request.readyState == 4)
  {
    callBack( request, arg );
  } 
}
  

function Profile()
{
  //all properties will be populated in the load method
}

Profile.prototype.toUrlString = function()
{
  sResult="&Id=" + escape( this.Id );
  
  sResult += "&Email=" + escape( this.Email );
  
  sResult += "&Password=" + escape( this.Password );
  
  sResult += "&ActivationCode=" + escape( this.ActivationCode );
  
  return sResult;
}

function createProfile( xml )
{
  var obj = new Profile();
  obj.Id=getNodeValue( xml, 'Id' );
  
  obj.Email= getNodeValue( xml, 'Email' );
  
  obj.Password= getNodeValue( xml, 'Password' );
  
  obj.ActivationCode= getNodeValue( xml, 'ActivationCode' );
  
  return obj;
}

function loadProfileResult( request, callBackRef )
{
    var xml = request.responseXML;
    var obj = createProfile( xml );
    callBackRef( obj );
    request = null;
}

function loadProfileCollectionResult( request, callBackRef )
{
    var xml = request.responseXML;
    var elements = xml.getElementsByTagName( "Profile" );
    var objArray = new Array();
    if( elements.length < 1 )
      return objArray;
    for( var i = 0 ; i < elements.length; i++ )
    {
      var obj = createProfile( elements.item(i) );
      objArray.push(obj);
    }            
    callBackRef( objArray );
    request = null;
}


function Activation()
{
  //all properties will be populated in the load method
}

Activation.prototype.toUrlString = function()
{
  sResult="";
  
  sResult += "&ProfileRef=" + escape( this.ProfileRef );
  
  sResult += "&ActivationCode=" + escape( this.ActivationCode );
  
  sResult += "&Activated=" + escape( this.Activated );
  
  return sResult;
}

function createActivation( xml )
{
  var obj = new Activation();
  obj.Id=getNodeValue( xml, 'Id' );
  
  obj.ProfileRef= getNodeValue( xml, 'ProfileRef' );
  
  obj.ActivationCode= getNodeValue( xml, 'ActivationCode' );
  
  obj.Activated= getNodeValue( xml, 'Activated' );
  
  return obj;
}

function loadActivationResult( request, callBackRef )
{
    var xml = request.responseXML;
    var obj = createActivation( xml );
    callBackRef( obj );
    request = null;
}

function loadActivationCollectionResult( request, callBackRef )
{
    var xml = request.responseXML;
    var elements = xml.getElementsByTagName( "Activation" );
    var objArray = new Array();
    if( elements.length < 1 )
      return objArray;
    for( var i = 0 ; i < elements.length; i++ )
    {
      var obj = createActivation( elements.item(i) );
      objArray.push(obj);
    }            
    callBackRef( objArray );
    request = null;
}


function Tag()
{
  //all properties will be populated in the load method
}

Tag.prototype.toUrlString = function()
{
  sResult="";

  sResult += "&TagName=" + escape( this.TagName );
  
  sResult += "&Count=" + escape( this.Count );
  
  sResult += "&ProfileRef=" + escape( this.ProfileRef );
  
  sResult += "&MailDate=" + escape( this.MailDate );
  
  return sResult;
}

function createTag( xml )
{
  var obj = new Tag();
  obj.Id=getNodeValue( xml, 'Id' );
  
  obj.TagName= getNodeValue( xml, 'TagName' );

  obj.Count= getNodeValue( xml, 'Count' );
  
  obj.ProfileRef= getNodeValue( xml, 'ProfileRef' );
  
  obj.MailDate= getNodeValue( xml, 'MailDate' );
  
  return obj;
}

function loadTagResult( request, callBackRef )
{
    var xml = request.responseXML;
    var obj = createTag( xml );
    callBackRef( obj );
    request = null;
}

function loadTagCollectionResult( request, callBackRef )
{
    var xml = request.responseXML;
    var elements = xml.getElementsByTagName( "Tag" );
    var objArray = new Array();
    if( elements.length < 1 )
      return objArray;
    for( var i = 0 ; i < elements.length; i++ )
    {
      var obj = createTag( elements.item(i) );
      objArray.push(obj);
    }            
    callBackRef( objArray );
    request = null;
}

