
var resultsCache = { };

resultsCache.engines = { };

resultsCache.isAdded = function (engine,page){
	if (!this.engines[curAction]){
		this.engines[curAction] = { };
		return false;
	}
	if (this.engines[curAction][engine]){
		return this.engines[curAction][engine][page]?true:false;
	}
	return false;
}

resultsCache.addEngine = function(engine){
	if (!this.engines[curAction])
		this.engines[curAction] = { };
	if (!this.engines[curAction][engine])
		this.engines[curAction][engine] = { };
}
resultsCache.getContent = function(engine,page){
	if (!this.engines[curAction]){
		this.engines[curAction] = { };
		return false;
	}
	if (!this.isAdded(engine,page))
		return false;
	return this.engines[curAction][engine][page];
}

resultsCache.setContent = function(engine,page,results){
	if (!this.engines[curAction])
		this.engines[curAction] = { };
	if (!this.engines[curAction][engine]){
		this.engines[curAction][engine] = { };
	}
	this.engines[curAction][engine][page] = results;
}
resultsCache.reset = function(engine){
	delete resultsCache.engines;
	resultsCache.engines = { };
}
function displayResults(results,engine,page){
	page = page ? page : 1;
	resultsCache.setContent(engine,page,results);
	if (engine == curEngine){
		$('results').innerHTML = results;
		if (typeof FB != 'undefined')
			FB.XFBML.parse($('results'));
		//$('results').setInnerFBML('<fb:js-string>'+results+'</fb:js-string>');
		/*if (curAction=='images')*/Shadowbox.setup();
	}
}
function initSearch(){
	var params = { action: curAction, keywords: curKeywords, lang: LANG, ajax: 1, page: curPages[curEngine]  };
	if (curKeywords!=''){
		var loading = "<br/><br/><br/><br/><center>Cargando...</center><br/><br/><br/><br/>";
		getObject('results').innerHTML = loading;
		
		switch(curAction){
			case 'web':
				curEngine = curEngine ? curEngine : 'google';
				params.engine = 'google';
				new Ajax('search.php',{
					method: 'get',
					parameters: params,
					onComplete: function (results){
						displayResults(results,'google',curPages[curEngine]);
					}
				});
				params.engine = 'yahoo';
				new Ajax('search.php',{
					method: 'get',
					parameters: params,
					onComplete: function (results){
						displayResults(results,'yahoo',curPages[curEngine]);
					}
				});
				params.engine = 'bing';
				new Ajax('search.php',{
					method: 'get',
					parameters: params,
					onComplete: function (results){
						displayResults(results,'bing',curPages[curEngine]);
					}
				});
				/*
				params.engine = 'ask';
				new Ajax('search.php',{
					method: 'get',
					parameters: params,
					onComplete: function (results){
						displayResults(results,'ask',curPages[curEngine]);
					}
				});
				*/
				pressEngine(curEngine);
				break;
			case 'images':
				params.image_size = $('imgsz').value;
				params.image_type = $('imgtype').value;
				curEngine = curEngine ? curEngine : 'google';
				params.engine = 'google';
				new Ajax('search.php',{
					method: 'get',
					parameters: params,
					onComplete: function (results){
						displayResults(results,'google',curPages[curEngine]);
					}
				});
				params.engine = 'yahoo';
				new Ajax('search.php',{
					method: 'get',
					parameters: params,
					onComplete: function (results){
						displayResults(results,'yahoo',curPages[curEngine]);
					}
				});
				params.engine = 'bing';
				new Ajax('search.php',{
					method: 'get',
					parameters: params,
					onComplete: function (results){
						displayResults(results,'bing',curPages[curEngine]);
					}
				});
				/*
				params.engine = 'ask';
				new Ajax('search.php',{
					method: 'get',
					parameters: params,
					onComplete: function (results){
						displayResults(results,'ask',curPages[curEngine]);
					}
				});
				*/
				pressEngine(curEngine);
				break;
			case 'video':
				curEngine = curEngine ? curEngine : 'youtube';
				params.engine = 'youtube';
				new Ajax('search.php',{
					method: 'get',
					parameters: params,
					onComplete: function (results){
						displayResults(results,'youtube',curPages[curEngine]);
					}
				});
				params.engine = 'yahoo';
				new Ajax('search.php',{
					method: 'get',
					parameters: params,
					onComplete: function (results){
						displayResults(results,'yahoo',curPages[curEngine]);
					}
				});
				params.engine = 'myspacetv';
				new Ajax('search.php',{
					method: 'get',
					parameters: params,
					onComplete: function (results){
						displayResults(results,'myspacetv',curPages[curEngine]);
					}
				});
				pressEngine(curEngine);
				break;
		}
	}
}
function goPage(page){
	curPages[curEngine] = page;
	if (resultsCache.isAdded(curEngine,page)){
		$('results').innerHTML = resultsCache.getContent(curEngine,page);
		return;
	}
	var loading = "<br/><br/><br/><br/><center>Cargando...</center><br/><br/><br/><br/>";
	$('results').innerHTML = loading;
	var params = { action: curAction, engine: curEngine, keywords: curKeywords, page: page, lang: $('header_lang').value, ajax: 1 };
	if ('images'==curAction){
		params.image_size = $('imgsz').value;
		params.image_type = $('imgtype').value;
	}
	new Ajax('search.php',{
		method: 'get',
		parameters: params,
		onComplete: function (result){
			displayResults(result,curEngine,page);
		}
	});
}
var googleSize = '';
var googleType = '';
var yahooSize = '';
var yahooType = '';
var askSize = '';
var askType = '';
var bingSize = '';
var bingType = '';
function changeEngine(newEngine){
	var selectedSize = '';
	var selectedType = '';
	if ('images' == curAction) {
		var sizeDD = $('imgsz');
		var typeDD = $('imgtype');
		selectedSize = sizeDD.value;
		selectedType = typeDD.value;
		if (newEngine != curEngine) {
			switch (newEngine) {
				case 'google':
					sizeDD.innerHTML = "<option value=''>Todos los tama&ntilde;os</option>\
					<option value='icon'>Im&aacute;genes Peque&ntilde;as</option>\
					<option value='small|medium|large|xlarge'>Im&aacute;genes Medianas</option>\
					<option value='xxlarge'>Im&aacute;genes Grandes</option>\
					<option value='huge'>Im&aacute;genes Extra Grandes</option>";
					sizeDD.value = googleSize;
					typeDD.innerHTML = "<option value=''>Cualquier contenido</option>\
					<option value='face'>Rostros</option>\
					<option value='photo'>Fotos</option>\
					<option value='clipart'>Clip Art</option>\
					<option value='lineart'>Line Art</option>";
					typeDD.value = googleType;
					typeDD.disabled = false;
					break;
				case 'yahoo':
					sizeDD.innerHTML = "<option value=''>Todos los tama&ntilde;os</option>\
					<option value='small'>Im&aacute;genes Peque&ntilde;as</option>\
					<option value='medium'>Im&aacute;genes Medianas</option>\
					<option value='large'>Im&aacute;genes Grandes</option>\
					<option value='wallpaper'>Wallpaper</option>";
					sizeDD.value = yahooSize;
					typeDD.innerHTML = "<option value='color'>A color</option>\
					<option value='bw'>Blanco y Negro</option>";
					typeDD.disabled = true;
					typeDD.value = yahooType;
					break;
				case 'ask':
					sizeDD.innerHTML = "<option value=''>Todos los tama&ntilde;os</option>\
					<option value='w'>Wallpaper</option>\
					<option value='l'>Im&aacute;genes Grandes</option>\
					<option value='m>Im&aacute;genes Medianas</option>\
					<option value='s'>Im&aacute;genes Peque&ntilde;as</option>\
					<option value='i'>Iconos</option>";
					sizeDD.value = askSize;
					typeDD.innerHTML = "<option value='color'>A color</option>" +
					"<option value='bw'>Blanco y Negro</option>";
					typeDD.value = askType;
					typeDD.disabled = false;
					break;
				case 'bing':
					sizeDD.innerHTML = "<option value=''>Todos los tama&ntilde;os</option>\
					<option value='Large'>Im&aacute;genes Grandes</option>\
					<option value='Medium'>Im&aacute;genes Medianas</option>\
					<option value='Small'>Im&aacute;genes Peque&ntilde;as</option>";
					sizeDD.value = bingSize;
					typeDD.innerHTML = "<option value='color'>A color</option>\
					<option value='monochrome'>Blanco y Negro</option>\
					<option value='photo'>Fotograf&iacute;as</option>\
					<option value='graphics'>Ilustraciones</option>\
					<option value='face'>Rostros</option>\
					<option value='portrait'>Retratos</option>";
					typeDD.value = bingType;
					typeDD.disabled = false;
					break;
			}
		}
	}
	
	if (newEngine != curEngine)
		pressEngine(newEngine, curEngine);
	
	curEngine = newEngine;
	
	if (curKeywords != ''){
		if (!curPages[curEngine])
			curPages[curEngine] = 1;
		if (resultsCache.isAdded(curEngine,curPages[curEngine])){
			$('results').innerHTML = resultsCache.getContent(curEngine,curPages[curEngine]);
			Shadowbox.setup();
			if (typeof FB != 'undefined')
				FB.XFBML.parse($('results'));
			return;
		}
		var loading = "<br/><br/><br/><br/><center>Cargando...</center><br/><br/><br/><br/>";
		$('results').innerHTML = loading;
		new Ajax('search.php',{
			method: 'get',
			parameters: { action: curAction, engine: curEngine, keywords: curKeywords, page: curPages[curEngine], ajax: 1  },
			onComplete: function (result){
				displayResults(result,curEngine,curPages[curEngine]);
			}
		});
	}
}
function loadDD(){

	var action = getValue('header_action');
	document.getElementById('actionDD').value=action;

	var engine=document.getElementById('engineDD');
	if(action=='web'||action=='images')
	{
			engine.innerHTML="<option value='google'>Google</option><option value='yahoo'>Yahoo</option><option value='bing'>Bing</option><option value='ask'>Ask</option>";
		
	}

	if(action=='video')
	engine.innerHTML="<option value='youtube'>YouTube</option><option value='yahoo'>Yahoo</option><option value='myspace'>MySpace</option>";
	
	document.getElementById('engineDD').value=getObject('current_engine').value;
	pressEngine(value=getObject('current_engine').value);
	
}

function fillEngineDD()
{
	var action=document.getElementById('actionDD').value;
	var engine=document.getElementById('engineDD');
	if(action=='web'||action=='images'){
		engine.innerHTML="<option value='google'>Google</option><option value='yahoo'>Yahoo</option><option value='bing'>Bing</option><option value='ask'>Ask</option>";
	} else
		if(action=='video')
			engine.innerHTML="<option value='youtube'>YouTube</option><option value='yahoo'>Yahoo</option><option value='myspace'>MySpace</option>";
}

function changeSizeAndType(){
	if (curKeywords == '') return;
	
	var params = { action: curAction, keywords: curKeywords, lang: LANG, ajax: 1 };
	params.image_size = $('imgsz').value;
	params.image_type = $('imgtype').value;
	params.engine = curEngine;
	new Ajax('search.php',{
		method: 'get',
		parameters: params,
		onComplete: function (results){
			displayResults(results,curEngine);
		}
	});
	
	return;
}

function goToPage(page){
	var engine = getValue('current_engine');
	
	var pagevar = 'page_'+engine;
	
	getObject(pagevar).value = page;
	
	resultsCache.setRefresh(engine);
	
	changeEngine(engine);
}

var didFlag = 0;

function didyoumean(isIndex){
	if (didFlag==0){
		didFlag = 1;
		setTimeout("getDidyoumean("+isIndex+")", 100);
	}
}
function getDidyoumean(isIndex){
	if (typeof curAction == 'undefined')
		curAction = $('index_action').value;
		
	if(trim($('header_keywords').value) != ''){
		new Ajax('index.php',{
			method: 'get',
			parameters: { ajax: 1, action: curAction, keywords: $('header_keywords').value, index: isIndex?1:0 },
			onComplete: function (result){
				$('didyoumean').innerHTML = result;
				$('didyoumean').className = result != '' ? 'didyoumean_show' : 'didyoumean_hide';
				didFlag = 0;
			}
		});
	}else{
		shDiv('didyoumean','didyoumean_hide');
		didFlag = 0;
	}
}

function changeLang(newLang){
	if (newLang == LANG)
		return;
	if (newLang == 'es'){
		$('esLink').className = 'fbold cred';
		$('enLink').className = '';
	}else{
		$('enLink').className = 'fbold cred';
		$('esLink').className = '';
	}
	LANG = newLang;
	resultsCache.reset();
	curPages[curEngine] = 1;
	$('header_lang').value = newLang;
	$('footer_lang').value = newLang;
	initSearch();
}

function changeIndexLang(lang){
	getObject('index_lang').value = lang;
}

function searchFromHistory(engine, keywords, action, page, lang){
	window.document.location = "search.php?engine="+engine+"&keywords="+keywords+"&action="+action+"&page="+page+"&lang="+lang;
}
function tabClick(action){
	if ($('index_action')){
		curAction = $('index_action').value;
		$('index_action').value = action;
	}else{
		removeClass($(curAction+'FtrLink'),'fbold');
		addClass($(action+'FtrLink'),'fbold');
	}
	removeClass($(curAction+'HdrLink'),'fbold');
	addClass($(action+'HdrLink'),'fbold');
}
function instalarPlugin(){
	if (window.external && ("AddSearchProvider" in window.external)){
   		window.external.AddSearchProvider("http://www.buscatodo.com/searchplugin/buscatodo_plugin.xml");
 	}else{
		alert("Su explorador no soporta esta barra de búsqueda.\nDisculpe las molestias.");
 	}
}