function Currency(name, URL, method, param, fndone)
{
	Init();

	this.vURL = URL;
	this.vName = name;
	this.vParam = param;
	this.vMethod = method;
	this.vFnDone = fndone;

	this.vIsComplete = false;

	this.objXMLHTTP = GetHTTPObject();
	if(!this.objXMLHTTP) return null;

	return this;
}

function Init()
{
	this.vURL = '';
	this.vName = '';
	this.vParam = '';
	this.vFnDone = '';
	this.vMethod = 'GET';

	this.vLUDT = '';
	this.vItems = [];

	this.objContent = null;
	this.objXMLHTTP = null;

	this.vIsComplete = false;
}

function GetHTTPObject()
{
  	try 
	{ 
		obj = new ActiveXObject("Msxml2.XMLHTTP"); 
	}
	catch (e) 
	{ 
		try 
		{ 
			obj = new ActiveXObject("Microsoft.XMLHTTP"); 
		}
	  	catch (e) 
		{ 
			try 
			{ 
				obj = new XMLHttpRequest(); 
			}
	  		catch (e) 
			{ 
				obj = false; 
			}
		}
	}

  	if (!obj) return null;

	return (obj);
}

Currency.prototype.GetName = function()
{
	return this.vName;
}

Currency.prototype.GetItems = function()
{
	return this.vItems;
}

Currency.prototype.IsComplete = function()
{
	return this.vIsComplete;
}

Currency.prototype.GetLastUpdateDateTime = function()
{
	return this.vLUDT;
}

Currency.prototype.Connect = function()
{
 	if(!this.objXMLHTTP) return false;

	var instanceOfThis = this;

   	this.vMethod = this.vMethod.toUpperCase();

  	try 
	{
     		this.objXMLHTTP.onreadystatechange = function() { instanceOfThis.StateChanged(); }

      		if(this.vMethod == "GET")
      		{
				this.objXMLHTTP.open(this.vMethod, (this.vParam=='') ? this.vURL : (this.vURL + "?" + this.vParam), true);
        		this.vParam = "";
      		}
      		else
      		{
        		this.objXMLHTTP.open(this.vMethod, this.vURL, true);
        		this.objXMLHTTP.setRequestHeader("Method", "POST "+ this.vURL + " HTTP/1.1");
        		this.objXMLHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
      		}

      		this.objXMLHTTP.send(this.vParam);
    	}
    	catch(z) 
	{ 
		return false; 
	}

    	return true;
}

Currency.prototype.StateChanged = function()
{
	if(this.objXMLHTTP.readyState == 4 && !this.vIsComplete)
	{	
		if(this.objXMLHTTP.status==200)
		{
	       	this.vIsComplete = true;

			var vCType = this.objXMLHTTP.getResponseHeader("Content-Type").toLowerCase();
			if(vCType=='text/xml') this.objContent = this.objXMLHTTP.responseXML;
			else this.objContent = (new DOMParser()).parseFromString(this.objXMLHTTP.responseText);
//			alert(this.objXMLHTTP.responseText);
			ParseCurrency(this);
		}
	}
}

function ParseCurrency(obj) 
{
	var oDocObj = obj.objContent;

	if(oDocObj.documentElement && (!oDocObj.documentElement.tagName || ( oDocObj.documentElement.tagName && oDocObj.documentElement.tagName.toUpperCase() == 'HTML'))) return; 

	if(window.attachEvent) var vTemp = new Date(oDocObj.getElementsByTagName('pubDate')[0].text);
	else var vTemp = new Date(oDocObj.getElementsByTagName('pubDate')[0].childNodes[0].nodeValue);

	obj.vLUDT = vTemp.getDate() + '/'  + (vTemp.getMonth()+1) +  '/' + vTemp.getFullYear().toString().substring(2, 4) + ' ' + vTemp.getHours() + ':' + vTemp.getMinutes();

	var items = oDocObj.getElementsByTagName('item');
	if(!items.length) return;

	for(var x=0, vItems=[]; x<items.length; x++) 
	{
		vItems[x] = [];
		vItems[x]['currency'] = '';
		vItems[x]['exchangerate'] = '';
		vItems[x]['datetime'] = '';

		if(window.attachEvent) 
		{
			vItems[x]['currency'] = items[x].getElementsByTagName('title')[0].text;
			vItems[x]['exchangerate'] = items[x].getElementsByTagName('title')[0].text;
			vItems[x]['datetime'] = items[x].getElementsByTagName('pubDate')[0].text;
		}
		else
		{
			vItems[x]['currency'] = items[x].getElementsByTagName('title')[0].childNodes[0].nodeValue;
			vItems[x]['exchangerate'] = items[x].getElementsByTagName('title')[0].childNodes[0].nodeValue;
			vItems[x]['datetime'] = items[x].getElementsByTagName('pubDate')[0].childNodes[0].nodeValue;
		}
		
		var vTemp = vItems[x]['currency'].replace('1 INR = ', '');
		vItems[x]['currency'] = vTemp.substring(0, vTemp.indexOf('(')-1);

		vTemp = vTemp.replace(vItems[x]['currency'], '');
		vTemp = vTemp.replace('(', ''); vTemp = vTemp.replace(')', '');

		vItems[x]['exchangerate'] = vTemp;
	}

	obj.vItems = vItems;

	eval(obj.vFnDone.replace("%object%", obj.vName));
}

function CurrencyDone(obj)
{
	var vItems = obj.GetItems();
	document.getElementById('ludt').innerText = obj.GetLastUpdateDateTime();
	
	for(var i=0; i<vItems.length; i++)
	{
		if(vItems[i]['currency']=='USD' || vItems[i]['currency']=='EUR' || vItems[i]['currency']=='ARS' || vItems[i]['currency']=='BRL' || vItems[i]['currency']=='AED' || vItems[i]['currency']=='JPY')
		{
			document.getElementById(vItems[i]['currency'].toLowerCase()).innerText = parseFloat(vItems[i]['exchangerate']).toFixed(3);
			document.getElementById(vItems[i]['currency'].toLowerCase()).setAttribute('title', vItems[i]['exchangerate']);
			document.getElementById(vItems[i]['currency'].toLowerCase()).parentNode.cells[3].innerText = (1 / parseFloat(vItems[i]['exchangerate'])).toFixed(3);
		}
	}
}


