﻿//ItvJs.js
if(!window.ItvJs)
    window.ItvJs = {};

/*******************************************************************************
* START: Utils
*******************************************************************************/

ItvJs.Utils = function () { }

ItvJs.Utils.prototype=
{
    // Gets the current page baseref value
    BaseRef: (window.parent?(window.parent.document.getElementsByTagName('base').length>0?window.parent.document.getElementsByTagName('base')[0].href:''):(document.getElementsByTagName('base').length>0?document.getElementsByTagName('base')[0].href:'')),

    // Get a string response for an ajax call
    GetAjaxResponse: function(strUrl)
    {
        var client = ItvJs.Utils.GetAjaxObject();
        var response;
        if(client)
        {
            client.open('GET', strUrl, false);
            client.send(null);
            response = client.responseText;
        }
        else
        {
            response = "-1";
        }
        return response;
    },

    // Get an xml response for an ajax call
    GetAjaxResponseXml: function(strUrl,postParams)
    {
        var client = ItvJs.Utils.GetAjaxObject();
        var response;
        if(client)
        {
            if(postParams)
            {
                client.open('POST', strUrl, false);
                client.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                client.setRequestHeader("Content-length", postParams.length);
                client.setRequestHeader("Connection", "close");
                client.send(postParams);
            }
            else
            {
                client.open('GET', strUrl, false);
                client.send(null);
            }
            
            response = client.responseText;
            response = ItvJs.Utils.ImportXML(response);
            if(response)
                response = response.documentElement;
        }
        else
        {
            response = "-1";
        }
        return response;
    },

    // gets cross platform AJAX object
    GetAjaxObject: function()
    {
        if(window.XMLHttpRequest)
        {
            return new XMLHttpRequest();
        }
        else if(window.ActiveXObject)
        {
            var msxmls = new Array('Msxml2.XMLHTTP.5.0', 
                    'Msxml2.XMLHTTP.4.0', 
                    'Msxml2.XMLHTTP.3.0', 
                    'Msxml2.XMLHTTP', 
                    'Microsoft.XMLHTTP');
            for(var i = 0; i < msxmls.length; i++)
            {
                try
                {
                    return new ActiveXObject(msxmls[i]);
                }
                catch(e){}
            }
        }
    },
    ImportXML: function(xmlText)
    {
	    if (document.implementation && document.implementation.createDocument)
	    {
		    var parser = new DOMParser();
		    xmlDoc=parser.parseFromString(xmlText,"text/xml");
	    }
	    else if (window.ActiveXObject)
	    {
		    xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		    xmlDoc.async = false;
		    xmlDoc.loadXML(xmlText);
 	    }
	    else
	    {
		    return null;
	    }
	    return xmlDoc;
    },
    GetNodeValue: function(node)
    {
	    return (node.textContent?node.textContent:node.text);
    },
    // Get any element by it's Class
    GetElementsByClass: function( searchClass, node, tag )
    {
	    var classElements = new Array();
	    if ( node == null ) { node = document; }
	    if ( tag == null ) { tag = '*'; }

	    var els = node.getElementsByTagName(tag);
	    var elsLen = els.length;
	    var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|$)');
	    for (i = 0, j = 0; i < elsLen; i++)
	    {
		    if ( pattern.test(els[i].className) )
		    {
			    classElements[j] = els[i];
			    j++;
		    }
	    }
	    return classElements;
    }
}

ItvJs.Utils = new ItvJs.Utils();


//TODO: add to prototype and change all references that call this method
function GetBaseHref() {
   return window.location.protocol +'//'+ window.location.host;
}

/*******************************************************************************
* END: Utils
*******************************************************************************/
