//MakeSiteAware();
//MakeBrandAware();
//function MakeSiteAware()
//{
//    var sx = document.getElementById('siteX');
//    if (sx == null)
//    {
//        sx = document.createElement('xml');
//        sx.setAttribute('id','siteX');
//        sx.setAttribute('src','/App/Content/Xml.aspx?u=' + window.location.href);
//        document.body.insertBefore(sx, document.body.firstChild);
//    }
//}
//function MakeBrandAware()
//{
//    var bx = document.getElementById('brandX');
//    if (bx == null)
//    {
//        bx = document.createElement('xml');
//        bx.setAttribute('id','brandX');
//        bx.setAttribute('src','/UI/Brand/Xml.aspx');
//        document.body.insertBefore(bx, document.body.firstChild);
//    }
//}

// This is to append this method to any existing load methods
addLoadEvent(loadBrandAndSite);
		
function addLoadEvent(func) 
{
  var oldonload = window.onload;
  if (typeof window.onload != 'function') 
  {
    window.onload = func;
  } 
  else 
  {
    window.onload = function() 
    {
      if (oldonload) 
      {
        oldonload();
      }
      func();
    }
  }
}	

function loadBrandAndSite()
{
	getAllSiteXElements();
	getAllBrandXElements();
}

// global flag
var isIE = false;

// global request and XML document objects
var reqArray = new Array();
var reqCount = 0;

// global element list to update
var itemListArray = new Array();
var itemListCount = 0;

// retrieve XML document (reusable generic function);
// parameter is URL string (relative or complete) to
// an .xml file whose Content-Type is a valid XML
// type, such as text/xml; XML source must be from
// same domain as HTML file
function loadXMLDoc(url) 
{
	
	//var req = null;
	// branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) 
    {
        //req = new XMLHttpRequest();
        reqArray[reqCount] = new XMLHttpRequest();
        //reqArray[reqCount] = req;
        reqArray[reqCount].onreadystatechange = processReqChange;
        reqArray[reqCount].open("GET", url, true);
        reqArray[reqCount].send(null);
    } 
    // branch for IE/Windows ActiveX version
    else if (window.ActiveXObject) 
    {
        isIE = true;
        //req = new ActiveXObject("Microsoft.XMLHTTP");
        reqArray[reqCount] = new ActiveXObject("Microsoft.XMLHTTP");
        if (reqArray[reqCount]) 
        {
            reqArray[reqCount].onreadystatechange = processReqChange;
            reqArray[reqCount].open("GET", url, true);
            reqArray[reqCount].send();
        }
    }
    reqCount++;
}

// handle onreadystatechange event of req object
function processReqChange() 
{
	for(var i = 0; i < reqArray.length; i++)
	{
	    // only if req shows "loaded"
	    if (reqArray[i].readyState == 4) 
	    {
	        // only if "OK"
	        if (reqArray[i].status == 200) 
	        {
	        	populateFields(reqArray[i].responseXML);
	        } 
	        //else 
	        //{
	        //    alert("There was a problem retrieving the XML data:\n" + req.statusText);
	        //}
	    }
    }
}
		
// retrieve text of an XML document element, including
// elements using namespaces
function getElementTextNS(parentElem, index) 
{
    var result = parentElem;
    if (result) 
    {
        // get text, accounting for possible
        // whitespace (carriage return) text nodes 
        if (result.childNodes.length > 1) 
        {
            return result.childNodes[1].nodeValue;
        } 
        else 
        {
            return result.firstChild.nodeValue;    		
        }
    } 
    else 
    {
        return "N/A";
    }
}

function populateFields(xml)
{
	for(var itemListArrayIndex = 0; itemListArrayIndex< itemListArray.length; itemListArrayIndex++)
	{
		var itemList = itemListArray[itemListArrayIndex];
		
		var a = new Array();
		for(var i = 0; i < itemList.length; i++)
		{
			try
			{
				a = itemList[i].getAttribute("dataFld");
				if (!a) 
			    {
			      a = itemList[i]["dataFld"];
			    }
				
				var item = xml.getElementsByTagName(a.toString())[0];
	            if(item.childNodes.length >= 1)
	            {
		            var content = getElementTextNS(item, 0);
		            //alert(itemList[i].tagName);
		            if(itemList[i].tagName == "SPAN")
		            {
		            	//alert("SPAN");
		            	itemList[i].innerHTML = content;
		            }
		            else
		            {
		            	//alert("other");
		            	itemList[i].value = content;
		            }
	            }
			}
			catch(e)
			{
				locked = false;
				//alert("Exception: " + e.toString());
			}
		}
	}
}

function makeSiteAware()
{
	loadXMLDoc('/App/Content/Xml.aspx?u=' + window.location.href);
}

function makeBrandAware()
{
	loadXMLDoc('/UI/Brand/Xml.aspx');
}

function getAllSiteXElements()
{

	itemListArray[itemListCount++] = xGetElementsByAttribute("*", "datasrc", "#siteX");
	makeSiteAware();
}

function getAllBrandXElements()
{

	itemListArray[itemListCount++] = xGetElementsByAttribute("*", "datasrc", "#brandX");
	makeBrandAware();
}

// xGetElementsByAttribute r2, Copyright 2002-2007 Michael Foster (Cross-Browser.com)
// Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL

function xGetElementsByAttribute(sTag, sAtt, sRE, fn)
{
  var a, list, found = new Array(); 
  var re = new RegExp(sRE, 'i');
  list = xGetElementsByTagName(sTag);
  for (var i = 0; i < list.length; ++i) 
  {
  	try
  	{
	    a = list[i].getAttribute(sAtt);
		if (!a) 
	    {
	      a = list[i][sAtt];
	    }
    }
    catch(e){}
    
    if(a)
    {
	    if (typeof(a)=='string' && a.search(re) != -1) 
	    {
	      found[found.length] = list[i];
	      if (fn)
	      {
	          fn(list[i]);
	      }
	    }
    }
  }
  
  return found;
}

// xGetElementsByTagName r5, Copyright 2002-2007 Michael Foster (Cross-Browser.com)
// Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL

function xGetElementsByTagName(t,p)
{
  var list = null;
  t = t || '*';
  p = xGetElementById(p) || document;
 
  if (typeof p.getElementsByTagName != 'undefined') 
  { // DOM1
    list = p.getElementsByTagName(t);
    if (t=='*' && (!list || !list.length)) 
    {
    	list = p.all; // IE5 '*' bug
   	}
  }
  else 
  { // IE4 object model
    if (t=='*') 
    {
     list = p.all;
    }
    else if (p.all && p.all.tags) 
    {
     list = p.all.tags(t);
    }
  }
  
  return list || [];
}

// xGetElementById r2, Copyright 2001-2007 Michael Foster (Cross-Browser.com)
// Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL

function xGetElementById(e)
{
  if(typeof(e)=='string') 
  {
    if(document.getElementById) 
    {
     e=document.getElementById(e);
    }
    else if(document.all) 
    {
     e=document.all[e];
    }
    else 
    {
     e=null;
    }
  }
  
  return e;
}







