user = [];

user.isIE = navigator.appName; 

if (user.isIE=="Netscape")

{ 

	//window.onload = init;

	alert("This application is currently supported in: \n   Internet Explorer 5.0 and higher \n\nPlease use a supported browser to view this page.");

	user.isIE = false;

	//WaitForInit();

}

else if (user.isIE=="Microsoft Internet Explorer")

{

	if(user.isIE)

	{

		WaitForInit();

	}

}

var isLoaded = null;

function WaitForInit()

{

	if(document.getElementById("CDXDirect") != null)

	{

		clearTimeout(isLoaded);

		init();

	}

	else

	{

			isLoaded = setTimeout("WaitForInit()",50);

	}

}

user.parameters = [];

user.serverName = "http://CDX.xceligent.com"

/**********************************Server Events***********************************************************/

function init(notInitial)

{

	directDiv = document.getElementById("CDXDirect");

	directDiv.style.width = (directDiv.style.width == "")?"100%":directDiv.style.width;

	//AjaxShowProcessing();

	user.userName = document.getElementById("CDXDirect").getAttribute("name");

	user.parameters.fullID =user.userName;

	url = window.location.href.split("?");

	if(url.length > 1)

	{

		qString = url[1].split("&");

		for(i=0;i<qString.length;i++)

		{

			nameVal = qString[i].split("=");

			if(nameVal[0] == "PreviewTemplate")

			{

				user.parameters.CustomStylePath = nameVal[1];

			}

		}

	}

	if(typeof(notInitial) == "undefined")// This makes for an easy way to refresh the page(consider it the preIsPostBack)

	{

		//set Server

		makeCall(user.serverName + "/CDXDirect/Events.asmx","LoadUser",user.parameters,true,LoadUser);

		//load scripts

		makeCall(user.serverName + "/CDXDirect/Events.asmx","LoadScripts",user.parameters,false,RegisterScripts);

		//load styles

		makeCall(user.serverName + "/CDXDirect/Events.asmx","LoadStyles",user.parameters,false,RegisterStyles);

		window.onbeforeunload=function(){return 'Please use the buttons provided in the application\nto access previous pages.'};

	}

	else

	{

		LoadDirect();

	}

	AjaxHideProcessing();

}

function LoadDirect()

{

	if(typeof(LoadBase) == "function")

	{

		if(typeof(AutoSearch) == "function")

		{

			AutoSearch();

		}

		else

		{

			LoadBase();

		}

	}

	else

	{

		setTimeout("LoadDirect()",50);

	}	

}

/********************************Callback events**************************************************/

function LoadUser(type, req, resultsNode)

{

	result = (isIE)?resultsNode.firstChild.text:resultsNode.firstChild.textContent

	user.serverName = result;

}

var strStyles;

function RegisterStyles(type, req, resultsNode)

{

	result = (isIE)?resultsNode.firstChild.text:resultsNode.firstChild.textContent

	styles = loadXML(result);

	styles = getNodesByName(styles, "Item");

	strStyles = "";

	for(i=0;i<styles.length;i++)

	{

		if(isIE)

		{

			if(styles[i].text.match(/http/gi) != null)

			{

				document.createStyleSheet(styles[i].text);

			}

			else

			{

				if(parseInt(navigator.appVersion.match(/(msie)(.*?)(;)/gi)[0].replace(/msie/gi, '').replace(/;/gi,'')) < 7 && styles[i].text.match(/(background-image:)(.*?)(Header.png)(.*?)(;)/gi))

				{

					strStyles += styles[i].text.replace(/(background-image:)(.*?)(Gradients)(.*?)(;)/gi,"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/CDX_Direct/GlobalPhotos/Gradients/Header.png', sizingMethod='scale');");

				}

				else

				{

					strStyles += styles[i].text;

				}

			}

		}

		else

		{

			if(styles[i].textContent.match(/http/gi) != null)

			{

				sty = document.createElement("style");

				sty.type= "text/css";

				sty.href = styles[i].textContent;

				head = document.getElementsByTagName("head")[0].appendChild(sty);

			}

			else

			{

				strStyles += styles[i].text;

			}

		}

	}

	if(isIE)

	{

		s = document.createStyleSheet();

		strStyles = strStyles.split("}");

		for(i=0;i<strStyles.length;i++)

		{

			if(strStyles[i] != "")

			{

				tStyle = strStyles[i].split("{");

				if(tStyle[0] != "" && tStyle[1] != "")

				{

					s.addRule(tStyle[0],tStyle[1]);

				}

			}

		}

	}

	else

	{

		sty = document.createElement("style");

		sty.type= "text/css";

		sty.innerText = strStyles;

		head = document.getElementsByTagName("head")[0].appendChild(sty);

	}

//	s.outerHTML = "<style>" + strStyles + "<style>";	

//	document.getElementsByTagName("head")[0].appendChild(s);	

}

function RegisterScripts(type, req, resultsNode)

{

	result = (isIE)?resultsNode.firstChild.text:resultsNode.firstChild.textContent

	head = document.getElementsByTagName("head")[0];

	scripts = loadXML(result);

	scripts = getNodesByName(scripts, "Item");

	for(i=0;i<scripts.length;i++)

	{

		script = document.createElement("script");

		script.language = "javascript";

		script.type= "text/javascript";

		if(isIE)

		{

			script.src = scripts[i].text;

		}

		else

		{

			script.src = scripts[i].textContent;

		}

		head.appendChild(script);

	}

	LoadDirect();

}

/********************************************************XMLHTTPREQUEST******************************************************************************************************/

var returns = [];

var services = [];

serviceParameters = function ()

{

    this.paramList = [];

    this.add = function(name, value) 

    {

        this.paramList[name] = value; 

        return this; 

    }

}

function makeCall(url, method, parameters, async, callback,excludeFromCache)

{

    // load from cache?

    var service = services[url];

    if(typeof(service) != "undefined")

    {

        return callService(url, method,parameters, async, callback, service,excludeFromCache);

	}

    // get wsdl

    var xmlHttp = getXMLHTTPRequest();

    xmlHttp.open("GET", url + "?wsdl", async, "", "");

    if(async) 

    {

        xmlHttp.onreadystatechange = function() 

        {

            if(xmlHttp.readyState == 4)

            {

                serviceLoaded(url, method, parameters, async, callback, xmlHttp,excludeFromCache);

            }

        }

    }

    xmlHttp.send(null);

    if (!async)

        return serviceLoaded(url, method, parameters,async, callback, xmlHttp,excludeFromCache);

}

//continues the request for the first time that the service is loaded

//if it is already loaded to the cache request is made from cached instance

function serviceLoaded(url, method, parameters, async, callback, req)

{

    service = req.responseXML;

    services[url] = service;

    return callService(url, method, parameters, async, callback, service);

}

function callService(url, method, parameters, async, callback, wsdl, excludeFromCache)

{

    var retVal = returns[url + method + arrayToXml(parameters)];

    if(typeof(retVal) != "undefined" && typeof(excludeFromCache) == "undefined")

    {

		return callback(retVal["method"], retVal["xmlHttp"], getNodesByName(retVal["xmlHttp"].responseXML, method + responseResult)[0]);

		//resizeDirectFrame();

	}

	else

	{

	    var ns = (wsdl.documentElement.attributes["targetNamespace"] + 

              "" == "undefined") ? 

              wsdl.documentElement.attributes.getNamedItem("targetNamespace").nodeValue :

              wsdl.documentElement.attributes["targetNamespace"].value;

		sr = "<?xml version='1.0' encoding='utf-8'?>";

			sr += "<soap:Envelope ";

			sr += "xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' ";

			sr += "xmlns:xsd='http://www.w3.org/2001/XMLSchema' ";

			sr += "xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>";

			sr += "<soap:Body>";

			sr += "<" + method + " xmlns='" + ns + "'>";

			sr += arrayToXml(parameters);

			sr += "</" + method + "></soap:Body></soap:Envelope>";

		var xmlHttp = getXMLHTTPRequest();

		xmlHttp.open("POST", url, async, "", "");

		var soapaction = 

		((ns.lastIndexOf("/") != ns.length - 1) ? ns + "/" : ns) + method;

		xmlHttp.setRequestHeader("SOAPAction", soapaction);

		xmlHttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8");

		if(async) 

		{

			xmlHttp.onreadystatechange = function() 

			{

				if(xmlHttp.readyState == 4)

				{

					//add to cache to save exessive trips

					returns[url + method + arrayToXml(parameters)] = [];

					returns[url + method + arrayToXml(parameters)]["method"] = method;

					returns[url + method + arrayToXml(parameters)]["xmlHttp"] = xmlHttp;

					if(xmlHttp.statusText.match(/error/gi) == null)

					{

						callback(method, xmlHttp, getNodesByName(xmlHttp.responseXML, method + responseResult)[0]);

					}

					else

					{

						mWindow = window.open("","");

						if(mWindow != null)

						{

							mWindow.document.write(getNodesByName(xmlHttp.responseXML,"faultstring")[0].text.replace(/&lt;/gi,"<").replace(/&gt;/gi,">").replace(/&quot;/gi,"\""));

						}

						else

						{

							document.write(getNodesByName(xmlHttp.responseXML,"faultstring")[0].text.replace(/&lt;/gi,"<").replace(/&gt;/gi,">").replace(/&quot;/gi,"\""));		

						}

					}

				}

			}

		}

		xmlHttp.send(sr);

		if (!async)

		{

			//add to cache to save exessive trips

			returns[url + method + arrayToXml(parameters)] = [];

			returns[url + method + arrayToXml(parameters)]["method"] = method;

			returns[url + method + arrayToXml(parameters)]["xmlHttp"] = xmlHttp;

			//This is Where Server Errors Show!!! 

			if(xmlHttp.statusText.match(/error/gi) == null)

			{

    			return callback(method, xmlHttp, getNodesByName(xmlHttp.responseXML ,method + responseResult)[0]);

			}

			else

			{

				mWindow = window.open("","");

				if(mWindow != null)

				{

					mWindow.document.write(getNodesByName(xmlHttp.responseXML,"faultstring")[0].text.replace(/&lt;/gi,"<").replace(/&gt;/gi,">").replace(/&quot;/gi,"\""));

				}

				else

				{

					document.write(getNodesByName(xmlHttp.responseXML,"faultstring")[0].text.replace(/&lt;/gi,"<").replace(/&gt;/gi,">").replace(/&quot;/gi,"\""));		

				}

			}

		}

	}

}

var isIE=window.ActiveXObject;

var responseResult = (isIE)?"Result":"Response";

function getXMLHTTPRequest() 

{

    try

    {

        if(window.XMLHttpRequest) 

        {

            var req = new XMLHttpRequest();

            if(req.readyState == null) 

            {

                req.readyState = 1;

                req.addEventListener("load",function() 

				{

					req.readyState = 4;

					if(typeof req.onreadystatechange == "function")

					{

						req.onreadystatechange();

					}

				},false);

            }

            return req;

        }

        if(window.ActiveXObject)

        { 

            return new ActiveXObject(ieXMLHTTPRequest());

        }

    }

    catch (ex) {}

}



function ieXMLHTTPRequest()

{

	//only have to find progid once

    if(ieXMLHTTPRequest.progid)

        return ieXMLHTTPRequest.progid;

    var progids = ["Msxml2.XMLHTTP.7.0", "Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", 

									"Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP",

									"Microsoft.XMLHTTP"];

    var o;

    for(var i = 0; i < progids.length; i++)

    {

        try

        {

            o = new ActiveXObject(progids[i]);

            return ieXMLHTTPRequest.progid = progids[i];

        }

        catch (ex) {};

    }

}



function loadXML(xml)

{

	if(isIE)

	{

		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");

		xmlDoc.async="false";

		xmlDoc.loadXML(xml);

	}

	else

	{

		try

			{

			parser=new DOMParser();

			xmlDoc=parser.parseFromString(xml,"text/xml");

			}

		catch(e) {alert(e.message)}

	}

	return xmlDoc;

}

function XSL(xslUrl) {

 if (isIE) 

 {

    var xslDom = new ActiveXObject("MSXML2.FreeThreadedDOMDocument");

    xslDom.async = false;

    xslDom.load(xslUrl);

    if (xslDom.parseError.errorCode != 0) 

    {

       return false;

    }

    var xslTemplate = new ActiveXObject("MSXML2.XSLTemplate");

    xslTemplate.stylesheet = xslDom;

    this.xslProcessor = xslTemplate.createProcessor();

 }

  else 

  {

    var xslDom = document.implementation.createDocument("", "", null);

    xslDom.async = false;

    xslDom.load(xslUrl);

    this.xslProcessor = new XSLTProcessor();

    this.xslProcessor.importStylesheet(xslDom);

  }

}

function Transform(xml, xsl, params) 

{

	// set stylesheet parameters

	for (var param in params) 

	{

		if (typeof params[param] != 'function') 

		{

		if (this.isIE) 

		{

			xsl.xslProcessor.addParameter(param, params[param]);

		} 

		else 

		{

			xsl.xslProcessor.setParameter(null, param, params[param]);

		}

		}

	}



	if (isIE) 

	{

		xsl.xslProcessor.input = xml.xmlDom;

		xsl.xslProcessor.transform();

		output = xsl.xslProcessor.output;

	} 

	else 

	{

		resultDOM = xsl.xslProcessor.transformToDocument(xml.xmlDom);

		serializer = new XMLSerializer();

		output = serializer.serializeToString(resultDOM);

	}

	return output;

}

//*********************************************************************

// Extra functions

//*********************************************************************



// Display a transparent div over the entire cdx, and display a 

// processing status image as defined by statusStyle on top

// processing status is show by default

function AjaxShowProcessing(dvXparentName,dvProcessName)

{

	var dvXparent;

	var dvProgress;

	var ProgressImage;

	

	if (!dvXparentName) dvXparentName = "divAjaxParent";

	if (!dvProcessName) dvProcessName = "divAjaxProgressStatus";

	

	//ProgressImage = 'progress_processing.gif';

	ProgressImage = '/CDXDirect/Images/processing.gif';

	

	if (!document.getElementById(dvXparentName)) {

		dvXparent = document.createElement('div');

		dvXparent.setAttribute('id',dvXparentName);

		dvXparent.style.position="absolute";

		dvXparent.style.width = document.body.scrollWidth;

		dvXparent.style.height=document.body.scrollHeight;

		dvXparent.style.pixelLeft=0;

		dvXparent.style.pixelTop=0;

		dvXparent.style.zOrder=998;

		dvXparent.style.zIndex="998";

		dvXparent.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=70)";

		dvXparent.style.backgroundColor="#ffffff"

		document.body.appendChild(dvXparent);

	} 

	else {

			document.getElementById(dvXparentName).style.display = '';

	}

	

	//make sure to change the image once Phil sends it over

	if (document.getElementById(dvProcessName) == null) {

		dvProgress = document.createElement('div');

		dvProgress.setAttribute('id',dvProcessName);

		dvProgress.style.position="absolute";

		dvProgress.style.width="100%";

		dvProgress.style.height="100%";

		dvProgress.style.pixelLeft=0;

		dvProgress.style.pixelTop=0;

		dvProgress.style.zOrder=999;

		dvProgress.style.zIndex=999;

		dvProgress.innerHTML='<table border="0" width="100%" height="100%"><tr><td valign="middle"><center>' + 

									'<img src="' +

									ProgressImage +

									'"><br>&nbsp;</center></td></tr></table>';

		dvXparent.appendChild(dvProgress);

	} else {

		dvProgress = document.getElementById(dvProcessName);

		var image = dvProgress.getElementsByTagName("img");

		if (image.length == 1) image[0].src = ProgressImage;

		

		document.getElementById(dvXparentName).style.display = '';

		document.getElementById(dvProcessName).style.display = '';

		document.getElementById(dvXparentName).style.width = '100%';

		document.getElementById(dvXparentName).style.height = '100%';

		document.getElementById(dvProcessName).style.height = '100%';

	}

}



function AjaxHideProcessing(dvXparentName,dvProcessName)

{

	if (!dvXparentName) dvXparentName = "divAjaxParent";

	if (!dvProcessName) dvProcessName = "divAjaxProgressStatus";

	try {

		document.getElementById(dvXparentName).style.display = 'none';

		document.getElementById(dvProcessName).style.display = 'none';

		document.getElementById(dvXparentName).style.width = '0%';

		document.getElementById(dvProcessName).style.height = '0%';

	} catch (e) {

	}

}

	/***********************Dom Helpers***********************/

function arrayToXml(arParams)

{

	paramList = arParams;

	var i;

	retVal = "";

    for(i in paramList)

    {

        if(typeof(paramList[i]) != "function")

        {

            retVal +=	"<" + i + ">" + 

						paramList[i].toString().replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">") + 

					"</" + i + ">";

		}

    }

    return retVal;

}



function getNodesByName(xml, nodeName)

{

//THIS IS ONLY NEEDED FOR REALLY OLD IE>5; It breahs FF

	try

	{

		return xml.selectNodes(".//*[local-name()=\""+ nodeName  +"\"]");		

	}

	catch(ex)

	{

		return xml.getElementsByTagName(nodeName);

	}

}

function getElementsByAttribute(oElm, strTagName, strAttributeName, strAttributeValue, startIndex){

    var arrElements = (typeof(strTagName) != "undefined" && document.all)? oElm.getElementsByTagName(strTagName):document.all ;    

    var arrReturnElements = [];

    var oAttributeValue = (typeof strAttributeValue != "undefined")? new RegExp("(^|\\s)" + strAttributeValue + "(\\s|$)") : null;

    var oCurrent;

    var oAttribute;

    var oStartIndex = ((typeof strAttributeValue <= "undefined") && (startIndex > 0))? startIndex:0;

    for(var i=oStartIndex; i<arrElements.length; i++){

        oCurrent = arrElements[i];

        oAttribute = oCurrent.getAttribute(strAttributeName);

        if(typeof oAttribute == "string" && oAttribute.length > 0){

            if(typeof strAttributeValue == "undefined" || (oAttributeValue && oAttributeValue.test(oAttribute))){

                arrReturnElements.push(oCurrent);

            }

        }

    }

    return arrReturnElements;

}

		/**************************Form Helpers(Not Guaranteed for all instances,might need tweaking)*******/

function getElementVals(elemID, params, tagName)

{

	elems = getElementsByAttribute(document.getElementById(elemID), tagName, "name");	

	for(i=0;i<elems.length;i++)

	{

		if(typeof(elems[i].type) != "undefined" && elems[i].type.match(/checkbox/gi))

		{

			params.add("IS" + elems[i].name.toUpperCase(), elems[i].checked)

		}

		else

		{

			params.add(elems[i].name.toUpperCase(), elems[i].value)

		}

	}

	return params;

}

function getSelectVals(elemID)

{

	retval = "";

	try

	{

		select = document.getElementById(elemID);

		sel = getElementsByAttribute(select,"li","selected","true");

		for(i=0;i<sel.length;i++)

		{

			if(i!= sel.length-1)

			{

				retval += ((sel[i].value) != "undefined")?sel[i].value + ",":",";

			}

			else

			{

				retval += ((sel[i].value) != "undefined")?sel[i].value:"";

			}

		}

	}catch(ex){}

	return retval;

}

/************************************************************END XMLHTTPREQUEST***************************************************************************************************/