Search =
{

	saveDownload : function( clipId, img, video, type )
	{
		var deferred = dojo.xhrGet({
		        url: "/sphinx/action/save_download.php?clip=" + clipId + "&type=" + type,
		        handleAs: "text",
		        timeout: 5000, //Time in milliseconds
		        handle: function(response, ioArgs){
		                if(response instanceof Error)
			            {
		                	if(response.dojoType == "cancel")
			                {
		                        //console.debug("Request canceled.");
		                    }
		                    else if(response.dojoType == "timeout")
			                {
		                        //console.debug("Request timed out.");
		                    }
		                    else
			                {
		                        //console.error(response);
		                    }
		                }
		                else
			            {
		                    //console.debug("Successful server response: " + response);
		                    //console.debug("HTTP status code: ", ioArgs.xhr);
		                }
		                return response;
		        }
			});
			deferred.addCallback(function(response){
			
				if( !document.getElementById( 'download_' + clipId ) )
				{
					var newImg = document.createElement("img");
					Search.createAttribute( newImg, "src", img );
					Search.createAttribute( newImg, "class", "clip_img" );

					
					var newElem = document.createElement("input");
					Search.createAttribute( newElem, "name", "clip[]" );
					typeVal = '';
					if( type != '0' )
						typeVal = '_' + type;
					Search.createAttribute( newElem, "value", clipId + typeVal );
					Search.createAttribute( newElem, "checked", "1" );
					Search.createAttribute( newElem, "type", "checkbox" );

					var divClear = document.createElement("div");
					Search.createAttribute( divClear, "class", "clear" );
					
					var newText = document.createTextNode( video );
					var newDiv = document.createElement("div");
					Search.createAttribute( newDiv, "class", "downloads" );
					Search.createAttribute( newDiv, "id", "download_" + clipId );
					newDiv.appendChild( newImg );
					newDiv.appendChild( divClear );
					newDiv.appendChild( newElem );
					newDiv.appendChild( newText );

					document.getElementById( 'clips' ).appendChild( newDiv );
					
					countClips = document.getElementById( 'clipCount' ).innerHTML;
					d = parseInt(countClips) + 1;
					document.getElementById( 'clipCount' ).innerHTML = d;
				}
			});
			deferred.addErrback(function(response){
			        //console.error("saveDownload error handler");
			        return response;
			})
			deferred.addBoth(function(response){
			        //console.debug(response);
			        return response;
			});
			return false;
	},
	
	clearDownloads : function()
	{
		var deferred = dojo.xhrGet({
		        url: "/sphinx/action/clearDownload.php",
		        handleAs: "text",
		        timeout: 5000, //Time in milliseconds
		        handle: function(response, ioArgs){
		                if(response instanceof Error)
			            {
		                	if(response.dojoType == "cancel")
			                {
		                        console.debug("Request canceled.");
		                    }
		                    else if(response.dojoType == "timeout")
			                {
		                        console.debug("Request timed out.");
		                    }
		                    else
			                {
		                        console.error(response);
		                    }
		                }
		                else
			            {
		                    //console.debug("Successful server response: " + response);
		                    //console.debug("HTTP status code: ", ioArgs.xhr);
		                }
		                return response;
		        }
			});
			deferred.addCallback(function(response){
				document.getElementById( 'clips' ).innerHTML = "";
				document.getElementById( 'clipCount' ).innerHTML = 0;
			});
			deferred.addErrback(function(response){
			        console.error("saveDownload error handler");
			        return response;
			})
			deferred.addBoth(function(response){
			        console.debug(response);
			        return response;
			});
			return false;
	},
	
	createAttribute : function( element, name, value )
	{
		var newAttr = document.createAttribute( name );
		newAttr.nodeValue = value;
		element.setAttributeNode( newAttr );
	}
}
