////////////////////////////////////////////////////
function chg_sort(sel, base_cgi_args) {
	sep = '&'
	if (base_cgi_args == '') sep = '?'
	sel_value = sel.options[sel.selectedIndex].value
	if (sel_value == 'rating') {
		location.href = base_cgi_args + sep + 'o=r'
	} else if (sel_value == 'recent') {
		location.href = base_cgi_args + sep + 'o=n'
	} else if (sel_value == 'popularity') {
		location.href = base_cgi_args + sep + 'o=p'
	} else if (sel_value == 'price_up') {
		location.href = base_cgi_args + sep + 'o=p1'
	} else if (sel_value == 'price_down') {
		location.href = base_cgi_args + sep + 'o=p2'
	} else if (sel_value == 'alpha') {
		location.href = base_cgi_args + sep + 'o=a'
	} else {
		alert('Unknown choice ' + sel_value)
	}
}

////////////////////////////////////////////////////
function chg_per_page(sel, base_cgi_args) {
	sep = '&'
	if (base_cgi_args == '') sep = '?'
	sel_value = sel.options[sel.selectedIndex].value
	location.href = base_cgi_args + sep + 'pp=' + sel_value
}

////////////////////////////////////////////////////
var show_adv_search_flag = false;
function show_adv_search(show) {
	if (show) {
		$('featured_apps').style.display='none';
		$('adv_search').style.display='block';
	} else {
		$('featured_apps').style.display='block';
		$('adv_search').style.display='none';
	}
}
function toggle_adv_search() {
	if (show_adv_search_flag) {
		show_adv_search(false);
	} else {
		show_adv_search(true);
	}
	show_adv_search_flag = !show_adv_search_flag;
}
////////////////////////////////////////////////////
function show_ssave() { 
	$('sslink1').style.display='none';
	$('sslink2').style.display='none';
	$('ssave1').style.display='block';
	$('ssave2').style.display='block';
	$('ssave3').style.display='block';
	return false;
}
function unshow_ssave() { 
	$('sslink1').style.display='block';
	$('sslink2').style.display='block';
	$('ssave1').style.display='none';
	$('ssave2').style.display='none';
	$('ssave3').style.display='none';
	return false;
}

/////////////////////////////////////////////
// AppSpotlight search box autocomplete
/////////////////////////////////////////////

YAHOO.namespace("ASPOT.search");
ASPOT.search.ac = function(searchinput, searchcontainer, ajx_url, plat_slug) {
	
	//alert('new ASPOT.search.ac');

	var oDataSource;
	var oAutoComp;
	var name_match_count, name_num_returned, desc_match_count, desc_num_returned;

	oDataSource = new YAHOO.util.XHRDataSource(ajx_url);
	oDataSource.responseType = YAHOO.util.XHRDataSource.TYPE_JSON;
	oDataSource.responseSchema = {
				    resultsList : "Response.Results", // String pointer to result data 
				    fields : [ 
				        { key: "name" }, 
				        { key: "url" }, 
						{ key: "price" } 
				    ], 
				    metaFields : { 
						name_match_count  : "Response.name_match_count", 
						name_num_returned : "Response.name_num_returned", 
						desc_match_count  : "Response.desc_match_count", 
						desc_num_returned : "Response.desc_num_returned" 
							    } 
	};
	oDataSource.connXhrMode = "ignoreStaleResponses";
	
	oDataSource.doBeforeCallback = function (req, resp, parsedResp, callback) {
		//alert(' doBeforeCallback: unparsed response: \n' + JSON.stringify(resp));
		
		name_match_count = parsedResp.meta.name_match_count;
		name_num_returned = parsedResp.meta.name_num_returned;
		desc_match_count = parsedResp.meta.desc_match_count;
		desc_num_returned = parsedResp.meta.desc_num_returned;
		
		//alert('desc_num_returned = ' + desc_num_returned);
		
		/*
		if (parsedResp.meta.MoreCount > 0) {
			moreMatches = parsedResp.meta.MoreCount;
			oAutoComp.setFooter('<i>' + parsedResp.meta.MoreCount + ' more...</i>');
		} else {
			oAutoComp.setFooter(null);
		}
		*/
		return parsedResp;
	};

	oAutoComp = new YAHOO.widget.AutoComplete(
		searchinput,     // input field
		searchcontainer, // suggestion container
		oDataSource,     // the DataSource
		{
			autoHighlight: false, 
			animVert: true,		  
			animHoriz: false,	  
			animSpeed: 0.3,		  
			minQueryLength: 3,	  
			useShadow: false,	  
			prehighlightClassName: "yui-ac-prehighlight"
		});

	oAutoComp.maxResultsDisplayed = 15;
	
	// add platform to request so that result can be cached, even if
	// user changes his selected platform in his session (cookie)
	oAutoComp.generateRequest = function(sQuery) {
		if (plat_slug) {
			return "?os=" + plat_slug + "&query=" + sQuery
		} else {
			return "?query=" + sQuery 
		}
	}; 

	// for IE6
	//oAutoComp.useIFrame = true; /////////
	
	// formatResult also has hack to insert headers
	oAutoComp.formatResult = function(oResultData, sQuery, sResultMatch) {
		
		if (sResultMatch == '__name_apps__') {
			return '<span style="font-style:italic; color:#0030a0; font-size:12px;">' +
			'<span style="text-decoration:underline;">Name matches</span> ' +
				    '<span style="font-size:11px; text-align:center;">&nbsp; (showing ' +
			       name_num_returned + ' of ' + name_match_count + ')</span></span>';
		}
		
		if (sResultMatch == '__desc_apps__') {
			return '<span style="font-style:italic; color:#0030a0; font-size:12px;">' +
			'<span style="text-decoration:underline;">Description matches</span> ' +
					'<span style="font-size:11px; text-align:center;">&nbsp; (showing ' +
		           desc_num_returned + ' of ' + desc_match_count + ')</span></span>';
		}
		
		if (sResultMatch == '__show_all__') {
			return '<div style="text-align:right;width:100%;font-style:italic; color:#0030a0; font-size:12px;">Show all</div>';
		}

		// bold portion matching string
		var sQueryLower = sQuery.toLowerCase();
		var sResultMatchLower = sResultMatch.toLowerCase();
	 
		var matchStart = sResultMatchLower.indexOf(sQueryLower);
		var result;
		if (matchStart < 0) {
			result = sResultMatch;
		} else {
			result =  sResultMatch.substr(0, matchStart) + '<strong>' + sResultMatch.substr(matchStart, sQuery.length) + '</strong>' + sResultMatch.substr(matchStart + sQuery.length);
			//+ '<br />' + oResultData[1]
		}
		price = '&nbsp;';
		if (oResultData[2]) { // price if available
			price = oResultData[2];
		}
			
		return result + ' &nbsp; <span style="font-style:italic; color:#707070; font-size:10px;">' + price + '</span>';
		/*
		return '<table width="100%"><tr><td>' + result + 
	       '</td><td align="right" style="font-style:italic; color:#707070; font-size:10px;">' + 
	       price + '</td></tr></table>';
	      */
	};
 
 // Keeps container positioned properly with correct width
	/* */
     oAutoComp.doBeforeExpandContainer = function(oTextbox, oContainer, sQuery, aResults) {
    	 /* */
    	 var txtReg = YAHOO.util.Dom.getRegion(oTextbox);
    	 var txtWidth = txtReg.right - txtReg.left;
    	 YAHOO.util.Dom.setStyle(oContainer, 'width', (txtWidth-2)+'px')
    	 
        var pos = YAHOO.util.Dom.getXY(oTextbox); 
    	
        pos[1] += YAHOO.util.Dom.get(oTextbox).offsetHeight + 2; 
        YAHOO.util.Dom.setXY(oContainer,pos); 
        return true; 
     }; 

    // called when the container appears
	/*
    oAutoComp.containerExpandEvent.subscribe( function(type, aArgs) {
    	oSelf = aArgs[0]; // autocomplete object
    	alert ('containerExpandEvent, oSelf.searchcontainer= ' + oSelf.searchcontainer);
    	
        var sc = document.getElementById('searchcontainer');
        if (sc && sc.style) {
            sc.style.zIndex = 100;
        }
    })
     */
	
	oAutoComp.itemSelectEvent.subscribe(function(type, args) {
		//YAHOO.util.Dom.get("searchsubmit").disabled = true; /* this line works around Opera's preventDefault bug: */
		// go to URL associated with selected item
		location.href = (args[2][1]);	
	});
	
	/* suppress insertion of selected value into input field, (go directly to page) */
	oAutoComp.suppressInputUpdate = true;
}

/////////////////////////////////////////////

