xs = {};

xs.main = {

	shorten: function(url) {
	
		var inputObj = document.getElementById(url);
		var schemeType = -1;
		var subject = '';
		var urlText = '';
		
		switch(url) {
			case 'URL':
				schemeType = document.getElementById('SCHEME').value;
				urlTxt = encodeURIComponent(inputObj.value);
				break;
			case 'MAIL':
			    schemeType = 'MAILTO';
				
				urlTxt = inputObj.value;
				
				subject = document.getElementById('MAIL_SUBJECT').value;
				if (subject!='') {
					subject = '?subject='+escape(encodeURIComponent(subject));
					urlTxt = urlTxt+subject;
				} 
				break;
		}
		
		var verify = document.getElementById('VERIFY').checked ? '1' : '0';
	
		xs.api.call('URL_API', 'getshorturl', '&url='+urlTxt+'&verify='+verify+'&scheme='+schemeType, function(txt, obj) {
			if (txt!='') {
				var data = eval('('+txt+')');
				if (data.result && data.code && data.code==200) {
					document.getElementById('RESULT').value = 'http://2xs.it/'+data.result;
					document.getElementById('RESULT').focus();
					document.getElementById('RESULT').select();
				} else {
					document.getElementById('RESULT').value = 'ERROR:'+txt;
				}
			}
		}, this);
	},
	
	focusUrl: function() {
		document.getElementById('URL').focus();
	}	
};

xs.api = {
	callList: [],	
		
	call: function(apiObject, apiMethod, params, callBackFunction, callerObj) {
		var xhr = xs.api.getAjaxObj();
		if (xhr) {
			xhr.object.open('get', '/api/call.php?obj='+apiObject+'&method='+apiMethod+'&params='+params+'&version=1.0');
			xhr.object.onreadystatechange = function() { xs.api.doCallBack(xhr, callBackFunction, callerObj); }
			xhr.object.send(null);
		}
	},
	
	getAjaxObj: function() {
		var retObj = null;
		if(navigator.appName == "Microsoft Internet Explorer") 
		{
			retObj = new ActiveXObject("Microsoft.XMLHTTP");
		} else
		{
			retObj = new XMLHttpRequest();  
		}
		
		if (retObj) {
			var retVal = {id:xs.api.callList.length,object: retObj};
			xs.api.callList.push(retVal);
			return retVal;
		}
	},
	
	doCallBack: function(xhr, callback, caller) {
		if ((xhr.object.readyState==4) || (xhr.object.readyState=='complete'))
		{
			callback(xhr.object.responseText, caller);
			
			if (xs.api.callList){
				for (var i in xs.api.callList) {
					if (xs.api.callList[i] && xs.api.callList[i].id==xhr.id) {
						xs.api.callList[i]=null;
					}
				}
			}
		}
	},
	
	abortCalls: function() {
		for (var ao in xs.api.callList)
		{
			if (xs.api.callList[ao]) {
				xs.api.callList[ao].abort();
			}
		}
		xs.api.callList = [];
	},
	
	transformXml: function(xml, xsl) {
		if (window.ActiveXObject) {
			return xml.transformNode(xsl);
		}
		else if (document.implementation && document.implementation.createDocument) {
		  xsltProcessor=new XSLTProcessor();
		  xsltProcessor.importStylesheet(xsl);
		  return xsltProcessor.transformToFragment(xml,document);
		}
	}
};


