	var getName = function(resultinfo) { return resultinfo.machine }
var getTrans = function(resultinfo) { return resultinfo.transform }
var getSize = function(resultinfo) { return resultinfo.size }
var getProf = function(resultinfo) { return resultinfo.profile }
var getId = function(resultinfo) { return resultinfo.id }
var getRun = function(resultinfo) { return resultinfo.runtime }
var getRank = function(resultinfo) { return resultinfo.rank }

var rankSet = 0;
var sizeSet = 0;
var runSet = 0;
var platSet = 0;
var tranSet = 0;
var profSet = 0;
var sortBy = "";

var pageNum = 1;
var pageSize = 10;
var totalCnt = 0;

//var newwindow;

var _POPUP_FEATURES = "location=0,statusbar=1,menubar=0,toolbar=1,resizable=1,scrollbars=1,width=450,height=400";
var search_url = "search_results.jsp";


/******************************************************************************
 *                      ACTIVATE/DEACTIVATE BUTTONS
 *****************************************************************************/
function enableSearchButton(enable)
{
	var frame = parent.document.getElementById("search_select") ;
	frame.contentWindow.document.getElementById("search_button").disabled = !enable ;
}


/******************************************************************************
 *                              SORT FUNCTIONS
 *****************************************************************************/
function sortPopPage()
{
	var sortBy = parent.document.getElementById("search_data")
			.contentWindow.document.getElementById("sortBy").value;
			
	if ( sortBy == null || sortBy == ""){	

	}	else if ( sortBy == "size"){
		if(sizeSet == 0){
			searchbean.sortReverseAlpha( addToList, "size" );
		}else{
			searchbean.sortAlpha( addToList, "size" );
		}
	}	else if ( sortBy == "rank"){
		if(rankSet == 0){
			searchbean.sortReverseAlpha( addToList, "rank" );
		}else{
			searchbean.sortAlpha( addToList, "rank" );
		}
	}	else if ( sortBy == "runtime"){
		if(runSet == 0){
			searchbean.sortReverseAlpha( addToList, "runtime" );
		}else{
			searchbean.sortAlpha( addToList, "runtime" );
		}
	}	else if ( sortBy == "profile"){
		if(profSet == 0){
			searchbean.sortReverseAlpha( addToList, "profile" );
		}else{
			searchbean.sortAlpha( addToList, "profile" );
		}
	}	else if ( sortBy == "transform"){
		if(tranSet == 0){
			searchbean.sortReverseAlpha( addToList, "transform" );
		}else{
			searchbean.sortAlpha( addToList, "transform" );
		}
	}	else if ( sortBy == "machine"){
		if(platSet == 0){
			searchbean.sortReverseAlpha( addToList, "machine" );
		}else{
			searchbean.sortAlpha( addToList, "machine" );
		}
	}
}

function sortBySize()
{
	var newSearch = parent.document.getElementById("search_data")
			.contentWindow.document.getElementById("newSearch").value;
	if ( newSearch == 1 || sizeSet == 0 ) {
		searchbean.sortAlpha( addToList, "size" );
		sizeSet = 1;
		runSet = 0; platSet = 0;
		tranSet = 0; profSet = 0;
		rankSet = 0;
	}
	else {
		searchbean.reverse( addToList );
		sizeSet = 0;
	}
	parent.document.getElementById("search_data")
			.contentWindow.document.getElementById("sortBy").value = "size";
	parent.document.getElementById("search_data")
			.contentWindow.document.getElementById("newSearch").value = 0;
}

function sortByRank()
{
	var newSearch = parent.document.getElementById("search_data")
			.contentWindow.document.getElementById("newSearch").value;
	if ( newSearch == 1 || rankSet == 0 ) {
		searchbean.sortAlpha( addToList, "rank" );
		rankSet = 1;
		runSet = 0; platSet = 0;
		tranSet = 0; profSet = 0;
		sizeSet = 0;
	}
	else {
		searchbean.reverse( addToList );
		rankSet = 0;
	}
	parent.document.getElementById("search_data")
			.contentWindow.document.getElementById("sortBy").value = "rank";
	parent.document.getElementById("search_data")
			.contentWindow.document.getElementById("newSearch").value = 0;
}

function sortByRun()
{
	var newSearch = parent.document.getElementById("search_data")
			.contentWindow.document.getElementById("newSearch").value;
	if ( newSearch == 1 || runSet == 0 ) {
		searchbean.sortAlpha( addToList, "runtime" );
		runSet = 1;
		sizeSet = 0; platSet = 0;
		tranSet = 0; profSet = 0;
		rankSet = 0;
	}
	else {
		searchbean.reverse( addToList );
		runSet = 0;
	}
	parent.document.getElementById("search_data")
			.contentWindow.document.getElementById("sortBy").value = "runtime";
	parent.document.getElementById("search_data")
			.contentWindow.document.getElementById("newSearch").value = 0;
}

function sortByProf()
{
	var newSearch = parent.document.getElementById("search_data")
			.contentWindow.document.getElementById("newSearch").value;
	if ( newSearch == 1 || profSet == 0 ) {
		searchbean.sortAlpha( addToList, "profile" );
		profSet = 1;
		sizeSet = 0;runSet = 0;
		platSet = 0;tranSet = 0;
		rankSet = 0;
	}
	else {
		searchbean.reverse( addToList );
		profSet = 0;
	}
	parent.document.getElementById("search_data")
			.contentWindow.document.getElementById("sortBy").value = "profile";
	parent.document.getElementById("search_data")
			.contentWindow.document.getElementById("newSearch").value = 0;
}

function sortByTran()
{
	var newSearch = parent.document.getElementById("search_data")
			.contentWindow.document.getElementById("newSearch").value;
	if ( newSearch == 1 || tranSet == 0 ) {
		searchbean.sortAlpha( addToList, "transform" );
		tranSet = 1;
		sizeSet = 0; runSet = 0;
		platSet = 0; profSet = 0;
		rankSet = 0;
	}
	else {
		searchbean.reverse( addToList );
		tranSet = 0;
	}
	parent.document.getElementById("search_data")
			.contentWindow.document.getElementById("sortBy").value = "transform";
	parent.document.getElementById("search_data")
			.contentWindow.document.getElementById("newSearch").value = 0;
}

function sortByPlat()
{
	var newSearch = parent.document.getElementById("search_data")
			.contentWindow.document.getElementById("newSearch").value;
	if ( newSearch == 1 || platSet == 0 ) {
		searchbean.sortAlpha( addToList, "machine" );
		platSet = 1;
		sizeSet = 0; runSet = 0;
		tranSet = 0; profSet = 0;
		rankSet = 0;
	}
	else {
		searchbean.reverse( addToList );
		platSet = 0;
	}
	parent.document.getElementById("search_data")
			.contentWindow.document.getElementById("sortBy").value = "machine";
	parent.document.getElementById("search_data")
			.contentWindow.document.getElementById("newSearch").value = 0;
}

/******************************************************************************
 *                            OPENING RESULT WINDOW
 *****************************************************************************/

function select( item )
{
	DWREngine.beginBatch();
	searchbean.setSelected( item );
	searchbean.getSelected( openWindow );
	DWREngine.endBatch();
}

function openWindow( data )
{
	raw_popup( search_url );
}

function raw_popup( url )
{
	var features = _POPUP_FEATURES;
	var target = '_blank';
	var newwindow = window.open(url,'name', features);
	if ( window.focus )
		{ newwindow.focus(); }
	return newwindow;
}

/******************************************************************************
 *                         POPULATING SELECT BOXES
 *****************************************************************************/
 
function setPageSize()
{
	pageSize = parent.document.getElementById("search_data")
					.contentWindow.document.getElementById("pageSize").value;
}

function waitMessage()
{
	searchbean.waitMessage( addToList );
 	var total = parent.document.getElementById("search_data")
					.contentWindow.document.getElementById("total");
	total.innerHTML = ""; 
}


function poplists()
{
	searchbean.getMachines( popSearchMachine );
	searchbean.getTransforms( popSearchTrans );
//	searchbean.getSizes( popSearchSize );
}

function popdata()
{
	var frame1 = parent.document.getElementById("search_select");
	var frame2 = parent.document.getElementById("search_data");

	var multiTrans = frame1.contentWindow.document.getElementById("searchtrans");
	var strans = new Array(0);
	
 	for (i=0; i < multiTrans.length; i++) {
    	if (multiTrans.options[i].selected == true) {
     		strans.push(multiTrans.options[i].value);
    	}
  	}

	var ssize = frame1.contentWindow.document.getElementById("searchsize");
	var smachine = frame1.contentWindow.document.getElementById("searchmachine");

	DWREngine.beginBatch();
	searchbean.setTran( strans, reply1 );
	searchbean.setSize( ssize.value, reply1 );
	searchbean.setMach( smachine.value, reply1 );
	DWREngine.endBatch();
}

function popTable(pageNum)
{
	var frame1 = parent.document.getElementById("search_select");
	var frame2 = parent.document.getElementById("search_data");

	frame1.contentWindow.document.getElementById("submitFlag").value = "true";

	var multiTrans = frame1.contentWindow.document.getElementById("searchtrans");
	var strans = new Array(0);
	
 	for (i=0; i < multiTrans.length; i++) {
    	if (multiTrans.options[i].selected == true) {
     		strans.push(multiTrans.options[i].value);
    	}
  	}

	var ssize = frame1.contentWindow.document.getElementById("searchsize");
	var smachine = frame1.contentWindow.document.getElementById("searchmachine");

	DWREngine.beginBatch();
	searchbean.setTran( strans, reply1 );
	searchbean.setSize( ssize.value, reply1 );
	searchbean.setMach( smachine.value, reply1 );
	searchbean.getTotalCnt( setTotalCnt );
	searchbean.getData( pageSize, pageNum, addToListAndPaging );
	
	DWREngine.endBatch();

	parent.document.getElementById("search_data")
			.contentWindow.document.getElementById("sortBy").value = "";
	parent.document.getElementById("search_data")
			.contentWindow.document.getElementById("newSearch").value = 1;
}

function popPage(pagenum)
{
	var frame1 = parent.document.getElementById("search_select");
	frame1.contentWindow.document.getElementById("submitFlag").value = "true";
	
	this.pageNum = pagenum;
	DWREngine.beginBatch();
	setPageSize();
	waitMessage();
	searchbean.getTotalCnt( setTotalCnt );
	searchbean.getData( pageSize, pagenum, addToListAndPaging );
	DWREngine.endBatch();
}

function popSearchMachine( data ) {
	var elem = parent.document.getElementById( "search_select" )
					.contentWindow.document.getElementById( "searchmachine" );
	DWRUtil.removeAllOptions( elem );
	DWRUtil.addOptions( elem, data );
}

function popSearchTrans( data ) {
	var elem = parent.document.getElementById( "search_select" )
					.contentWindow.document.getElementById( "searchtrans" );
	DWRUtil.removeAllOptions( elem );
	DWRUtil.addOptions( elem, data );
}
   
function popSearchSize( data ) {
	var elem = parent.document.getElementById( "search_select" )
					.contentWindow.document.getElementById( "searchsize" );
	DWRUtil.removeAllOptions( elem );
	DWRUtil.addOptions( elem, data );
}

/******************************************************************************
 *                         POPULATING DATA TABLE
 *****************************************************************************/

function addToList( data )
{
	var list = parent.document.getElementById("search_data")
			.contentWindow.document.getElementById("list");

	DWRUtil.removeAllRows(list);
	
	//*  Added by Patra */
	var tbl = parent.document.getElementById("search_data")
			.contentWindow.document.getElementById("tblsearch");
	for(var i=0; i< data.length; i++){
		var lastRow = tbl.rows.length;
		var newRow = list.insertRow(lastRow-1);
		var newCell0 = newRow.insertCell(0);
		newCell0.innerHTML = data[i].machine;
		var newCell1 = newRow.insertCell(1);
		newCell1.innerHTML = data[i].transform;
		var newCell2 = newRow.insertCell(2);
		newCell2.innerHTML = data[i].size;
		var newCell3 = newRow.insertCell(3);
		newCell3.innerHTML = data[i].runtime;
		var newCell4 = newRow.insertCell(4);
		newCell4.innerHTML = data[i].profile;
		var newCell5 = newRow.insertCell(5);
		newCell5.innerHTML = data[i].rank;
		var newCell6 = newRow.insertCell(6);
		newCell6.innerHTML = data[i].id;
	}
 
/*  	DWRUtil.addRows(list, data, 
 		[ getName, getTrans, getSize, getRun, getProf, getRank, getId ]);
 	*/	
//  	searchbean.getTotal( showTotal );

}

function addToListAndPaging( data ) 
{
	var list = parent.document.getElementById("search_data")
					.contentWindow.document.getElementById("list");
	DWRUtil.removeAllRows(list);
	var tbl = parent.document.getElementById("search_data")
			.contentWindow.document.getElementById("tblsearch");
	for(var i=0; i< data.length; i++){
		var lastRow = tbl.rows.length;
		var newRow = list.insertRow(lastRow-1);
		var newCell0 = newRow.insertCell(0);
		newCell0.innerHTML = data[i].machine;
		var newCell1 = newRow.insertCell(1);
		newCell1.innerHTML = data[i].transform;
		var newCell2 = newRow.insertCell(2);
		newCell2.innerHTML = data[i].size;
		var newCell3 = newRow.insertCell(3);
		newCell3.innerHTML = data[i].runtime;
		var newCell4 = newRow.insertCell(4);
		newCell4.innerHTML = data[i].profile;
		var newCell5 = newRow.insertCell(5);
		newCell5.innerHTML = data[i].rank;
		var newCell6 = newRow.insertCell(6);
		newCell6.innerHTML = data[i].id;
	}
  	
  	paging(pageNum,totalCnt);
  	sortPopPage();
}

function showTotal( size )
{
	var total = parent.document.getElementById("search_data")
					.contentWindow.document.getElementById("total");

//	if ( size > 10 )
//	{
//		total.innerHTML = 
//			"Found " + (size - 10) + " more";
//	}
//	else
//	{ total.innerHTML = ""; }

	total.innerHTML = "";
}

/******************************************************************************
 *                         PAGING
 *****************************************************************************/
function setTotalCnt(cnt){
	
	totalCnt = cnt;
}
 
function paging(page,totalcnt)
{
	if(totalcnt == 0){
	 	var frame = parent.document.getElementById("search_select");
		frame.contentWindow.document.getElementById("submitFlag").value = "false";		 		
		return;
	}
	
	var totpages = Math.ceil(totalcnt/pageSize); //
	var thisblock = Math.ceil(page/pageSize); //
 	var startpage, endpage;
 	var ret_HTML = "";
 
 	if(thisblock > 1){
  		startpage = (thisblock-1)*pageSize+1;
 	}else{
  		startpage = 1;
 	}
 
 	if( (thisblock*pageSize) >= totpages ){
  		endpage = totpages;
 	}else{
  		endpage = thisblock*pageSize;
 	}
 
 	ret_HTML = "<TABLE width=100% border=0 cellspacing=0 cellpadding=5><TR>";
 	ret_HTML += "  <td align='CENTER' style='padding:15'>";
 	ret_HTML += "Page 1 of " + totpages + "&nbsp;&nbsp;&nbsp;";
 	if(startpage > 1){
  		ret_HTML += "  <A href='javascript:popPage(1);'>  << First  </A>&nbsp;"; 
 		ret_HTML += "  <A href='javascript:popPage("+(startpage-pageSize)+");'>  <  </A>&nbsp;"; 
 	}
 /*	else{
  		ret_HTML += "  <img src='../graphics/pre01.gif' align='absmiddle'>"; 
  		ret_HTML += "  <img src='../graphics/pre02.gif' hspace='2' align='absmiddle'>"; 
 	} */
 
 	for(i=startpage; i<=endpage; i++)
 	{
  		if(i!=page){
   			ret_HTML += " <A href='javascript:popPage("+i+");'>["+i+"]</A>";
  		}else{
   			ret_HTML += " <B>"+i+"</B>";
  		}
 	}
 	
 	if(endpage < totpages)
	{
  		ret_HTML += "  <A href='javascript:popPage("+(endpage+1)+");'>  >  </A>&nbsp;"; // 
  		ret_HTML += "  <A href='javascript:popPage("+totpages+");'>  Last>>  </A>"; // 
 	 }
 /*	 else{
  		ret_HTML += "  <img src='../images/img_board/next02.gif' hspace='2' align='absmiddle'>"; // 
  		ret_HTML += "  <img src='../images/img_board/next01.gif' align='absmiddle'>"; // 
	} */
 	ret_HTML += "</TD></TR></TABLE>";
 	
 	var total = parent.document.getElementById("search_data")
					.contentWindow.document.getElementById("total");
 	total.innerHTML = ret_HTML; 	
 	
 	var frame = parent.document.getElementById("search_select");
	frame.contentWindow.document.getElementById("submitFlag").value = "false";		
 	
 }
 
/******************************************************************************
 *                         INPUT VALIDATION
 *****************************************************************************/
function trim(inputValue){
	var num=0;
	var max = inputValue.length;
	var tmpValue = '';
	while(num < max){
		if(''+inputValue.charAt(num)!=' '){
			tmpValue += inputValue.substring(num,num+1);
		}
		num++;
	} 
	
	return tmpValue;
}

function validateSizeInput(){
	var frame1 = parent.document.getElementById("search_select");
	var textInput_size = frame1.contentWindow.document.getElementById("searchsize");

	if(validateInput() == true){
		return true;
	}else {
		textInput_size.focus();
		return false;
	}
}

function validateInput()
{
	var frame1 = parent.document.getElementById("search_select");
	var textInput_size = frame1.contentWindow.document.getElementById("searchsize");
	var ssize = frame1.contentWindow.document.getElementById("searchsize").value+"";
	
	if(ssize == null || ssize == '')
		return true;
		
	str_size = trim(ssize);
	var strArray = str_size.split(";");
	var num=0;
	while (num < strArray.length)
	{
		var sub_strArray = strArray[num].split("-");
		
		if(sub_strArray.length == 1){
			if(!allDigits(strArray[num]))
			{
				alert("Invalid input for size!");
				textInput_size.focus();
				return false;
			}				

		}else if(sub_strArray.length == 2){
		
			if(sub_strArray[0]=='' || sub_strArray[1]==''){
				alert("Invalid input for size!");
				textInput_size.focus();
				return false;
			}
				
			if(!allDigits(sub_strArray[0]) || !allDigits(sub_strArray[1]))
			{
				alert("Invalid input for size!");
				textInput_size.focus();
				return false;
			}				
			if(parseInt(sub_strArray[0]) >= parseInt(sub_strArray[1]))
			{
				alert("Invalid input for size!");
				textInput_size.focus();
				return false;
			}
		}else{
			alert("Invalid input for size!");
			textInput_size.focus();
			return false;
		}
						
		num++;
	}
	return true;
}

function allDigits(str){
	return inValidCharSet(str, "0123456789");
}

function inValidCharSet(str, charset){
	var result = true;
	for(var i=0; i<str.length; i++){
		if(charset.indexOf(str.substr(i,1))<0){
			result=false;  
			break;
		}		
	}
	return result;
}

/******************************************************************************
 *                         SEARCH SUBMIT
 *****************************************************************************/
function searchSubmit(){
	var frame = parent.document.getElementById("search_select");
	var submitFlag = frame.contentWindow.document.getElementById("submitFlag").value;

	if(submitFlag == "true"){
		alert("Server is processing another request.");
		return;
	}	
	
	if(validateSizeInput() == true){
		setPageSize();
		waitMessage();
		popTable(pageNum);
		parent.force_show("archive");
		enableSearchButton(true);
	}		
}
