/* $Id$ */

function SolrRequest() {
	//set the query for this request
	this.solrQuery = document.getElementById("searchBox").query.value;
	this.solrSort = document.getElementById("searchBox").sort.value;

	if(document.getElementById("searchBox").rows)
        {
		this.rows=document.getElementById("searchBox").rows.value; 

        }else{
		this.rows='10'
        }

}


SolrRequest.SERVER = "/solrsearch.htm?wt=json&q=";

SolrRequest.prototype.makeRequest = function(page) {
/*
 * Dynamically creates the script tag which then
 * sends the request to the Solr server.
 */
	this.jsonReq = new SolrScript(SolrRequest.SERVER + this.solrQuery +"&json.wrf=SearchProcess&rows="+this.rows+"&searchDomain=solr.teen&sort="+this.solrSort+ "&start=" + page);
	this.jsonReq.makeTag();
	this.jsonReq.addTag();
}

function requestHandler(page) {
/*
 * Called on search form submit and on results page request;
 * starting page argument is optional and defaults to 0.
 */
	var pageNum = page || 0;
	var solrReq = new SolrRequest();
	solrReq.makeRequest(pageNum);
	//return false; //needed to keep the form from performing action
}



function SearchProcess(obj) {
/*
 * Catches the response from the Solr server. Displays
 * results and adds page links to paginated results. This
 * function assumes 10 results per page.
 */
	var results = "";
	var title = new Array;
	var image = new Array;

	

	if(obj.response.numFound==0){
	 results ="<p class='search_norslts'>No Results Found</p>";
	}

	var pageLinks = "";
	
	var j;
	// figure out how many results are in the current page
	if (obj.response.numFound - obj.response.start < 10) {
			 j = obj.response.numFound - obj.response.start;
	} else {
		j = 10;
	}
	// create result list
	// create result list
	//results+="<div border='0' cellpadding='0' cellspacing='5' width='480'>";

	for (var i=0; i<j; i++) {
		
				imageUrl=obj.response.docs[i].thumbnailUrl;
				results+= "<li class=\"feed_wrapper\"><img src='"+imageUrl + "'  border='0' alt=''>";
				results+= "<span class=\"feed_channel\">"+obj.response.docs[i].channel + "</span>";
			    results+= "<a class=\"feed_title\" href='/feed/getvideo.htm?contentId="+obj.response.docs[i].contentId+ "'>" + obj.response.docs[i].title + "</a>";
				results+= "<span>"+obj.response.docs[i].description + "</span>";
				results+= "</li>";
				
				title[i]=obj.response.docs[i].title;
				image[i]="<img src='"+imageUrl+"'>";
				
							  
	}
		//results+="</table>";
	var ul = $$("#horizontal_carousel .container ul").first();
        // Fill carousel
	var html = $R(0,j).inject("", function(html, index)  {
										   return html + "<li>"+image[index]+title[index]+index +"</li>";
										   });
	ul.update(html);
	new UI.Carousel("horizontal_carousel"); 
	
	
	var pageStartNumber=obj.response.start+1;
	var pageEndNumber=obj.response.start+10;
	if(obj.response.numFound<pageEndNumber)
	{ 
          pageEndNumber=obj.response.numFound
	}
	
	 var  resultCountText="Displaying "+pageStartNumber+" To "+pageEndNumber+" of "+obj.response.numFound;
	
	// create page links
	var pages = Math.ceil(obj.response.numFound/10);
	if(pages>1)
	{
	    
	   if(obj.response.start!=0)
	     {
		   pageLinks += "<a href='#' onclick='requestHandler(" + eval(obj.response.start-10) + ")'>Previous</a> ";
		 }
		if(obj.response.start<90)
		 {
			 var initialLimit=0;
			 var upperLimit=10;
			 	
		  }
		  else{
		    var initialLimit=((obj.response.start/10)-9);
			var upperLimit=((obj.response.start/10)+10);
		}
		if(pages<10 || upperLimit>pages)
		{
		  var upperLimit=pages;
		}
		for (var i=initialLimit; i<upperLimit; i++) {
	   	 if(i!=(obj.response.start/10))
		{
		pageLinks += "<a href='#' onclick='requestHandler(" + eval(i*10) + ")'>" + eval(i+1) + "</a> ";
		}
		else{
		  pageLinks += eval(i+1);
		}
	}
	 
	 if (obj.response.numFound - obj.response.start >10)
		{
		  pageLinks += "<a href='#' onclick='requestHandler("+ eval(obj.response.start+10) + ")'>Next</a> ";
		}
	}
	// write to document
	if(obj.response.numFound>0){
	document.getElementById('resultCountText').innerHTML = resultCountText;
	}
	document.getElementById('search_result').innerHTML = results;
	document.getElementById('pages1').innerHTML = pageLinks;
	document.getElementById('pages2').innerHTML = pageLinks;

}




function SolrScript(url) {
/*
 * This class manages the dynamic script tag. Script
 * tag is added with id="solrScript".
 */
    this.url = url;
    this.headTag = document.getElementsByTagName("head").item(0);
	// clean up previous dynamic script tag
	if (document.getElementById("solrScript")) {
		this.headTag.removeChild(document.getElementById("solrScript"));
	}
}

SolrScript.prototype.makeTag = function () {
    this.scriptTag = document.createElement("script");
    this.scriptTag.setAttribute("type", "text/javascript");
    this.scriptTag.setAttribute("src", this.url + '&time=' + (new Date()).getTime());
    this.scriptTag.setAttribute("id", "solrScript");
}

SolrScript.prototype.addTag = function () {
    this.headTag.appendChild(this.scriptTag);
}



