var _http;
if (window.XMLHttpRequest) { 
	_http = new XMLHttpRequest();
} else if (window.ActiveXObject){
	_http = new ActiveXObject("Microsoft.XMLHTTP");
}

var _templateManagerURL = "template.php";

var searchButton = {
	_id:null,
	init : function(id) {
		searchButton._id = id;
	},
	load : function() {
		var btn = document.getElementById(searchButton._id);
		btn.className = "spinner";
	},
	loadComplete : function() {
		var btn = document.getElementById(searchButton._id);
		btn.className="";		
	},	
}

var template = {
	
	_header : null,
	_templateContainer : null,
	_topTen : null,
	_timer : null,
	_allTemplates : null,
	
	init : function(container, header, topTen) {
		template._templateContainer = container;
		template._header = header;
		template._topTen = topTen;
	},
	
	_getContainer : function() {
		if( _templateContainer == null ) {
			_templateContainer = document.getElementById("templateContainer");
		}
		return _templateContainer;
	},
	
	showAll : function() {
		if( template._allTemplates ) {
			template._templateContainer.innerHTML = template._allTemplates;
		}
	},
	
	sortTemplateByAuthor : function() {		
		var request = _templateManagerURL + "?operation=sort&by=sortByAuthor";
		template._templateContainer.innerHTML = getRequestResponse(request);
	},
	
	sortTemplateByDate : function() {
		//_templateContainer = document.getElementById("templateContainer")
		var request = _templateManagerURL + "?operation=sort&by=sortByDate";
		template._templateContainer.innerHTML = getRequestResponse(request);
	},
	
	sortTemplateByName : function() {
		//_templateContainer = document.getElementById("templateContainer");
		var request = _templateManagerURL + "?operation=sort&by=sortByName";
		template._templateContainer.innerHTML = getRequestResponse(request);		
	},
	
	loadTopTen : function() {
		//_templateContainer = document.getElementById("templateContainer");
		var request = _templateManagerURL + "?operation=sort&by=sortByPopularity";
		template._topTen.innerHTML = getRequestResponse(request);
	},
	
	lookingForTemplate : function(text) {
		// canceled the previous search:
		if( template._timer ) clearTimeout(template._timer);
		searchButton.load();
		template._timer = setTimeout(function() {
			var request = _templateManagerURL + "?operation=filter";
			request += "&text="+text;
			template._allTemplates = template._templateContainer.innerHTML;
			template._templateContainer.innerHTML = getRequestResponse(request);
			searchButton.loadComplete();	
		}, 1000);	
	},
	
	loadPopularNewestRandom : function() {
		var request = _templateManagerURL + "?operation=popularNewestRandom";
		template._header.innerHTML = getRequestResponse(request);
	},
	
	incrementCount : function(templateID) {
		var request = _templateManagerURL + "?operation=increment";
		request += "&tid="+templateID;
		return getRequestResponse( request );
	},
	
	download : function(templateID) {
		var request = _templateManagerURL + "?operation=download";
		request += "&tid="+templateID;
		getRequestResponse( request );
	},
};

function getRequestResponse(url) {
	_http.open("POST", url, false);
	_http.send(null);
	return _http.responseText;
	//return response;
}

