//------------------------------------------------------------------------------------------------
// AJAX: Metodo Scriptaculous
//------------------------------------------------------------------------------------------------
var ajax_url = 'ajaxtrans.php';
var dropped  = 0;
var dropped_format = '';

//------------------------------------------------------------------------------------------------
//AJAX UPDATE
//------------------------------------------------------------------------------------------------
function ajaxUpdate(accion, params, output_div){ // parametros: 'accion' (definidas en ajaxtrans.php), ''

	//alert(accion);

	var print_responseText = true;
	
	switch(accion){
        case 'updateBlockState':
        	//alert(params);
        	break;
        case 'updateBlockOrder':
        	//alert(params);
        	break;
        case 'updateBlockPosition':	
		    break;
		case 'updateItem':
		    //Cambiamos el mensaje OUTPUT mientras operamos
		    document.getElementById('output_innerhtml').innerHTML = "Realizando operación...";
		    toggleOutput('show', true);
		    
		    setTimeout('mceAddControlToHTMLareas()',2000);	
	    
		    
//			if($(of_form))
//				setTimeout('mceAddControlToAllTextareas()',2000);
//			else
//				setTimeout('mceAddControlToAllTextareas()',3500);
			break;
		case 'loginForm':
			document.getElementById("ajax_auth_form").innerHTML = '<table align="center" style="margin-top:7px;" border="0" cellspacing="1" cellpadding="1"><tr><td height="40" align="center" valign="middle">'+PROCESING+'<br><br><img src="i/web/loading.gif"></td></tr></table>';
			break;
		case 'deleteCart':
			var selectedString = getSelected(document.fl_list);
			
			if(selectedString == false){
				alert(MSG_NOSELECTED);
				return false;
			}
			else{
				//alert(selectedString);
				if(confirm(MSG_CONFIRMACION)){
					params = params + selectedString;
					//document.getElementById("lightbox_items").innerHTML = '<table align="center" style="margin-top:40px;" border="0" cellspacing="1" cellpadding="1"><tr><td height="40" align="center" valign="middle"><img src="i/skin/encuadro/indicator_medium.gif"></td></tr></table>';
					var container = document.getElementById("lightbox_items").innerHTML = '';
					container.style.visibility = 'hidden';
				}
				else
					return false;
			}			
			break;
		case 'add2Cart':	//index.php?w=ce&op=l
			location.href = '#href_footer';
			var container = document.getElementById('lightbox_items');
			var html = '<table align="center" style="margin-top:40px;" border="0" cellspacing="1" cellpadding="1"><tr><td height="40" align="center" valign="middle"><img src="i/skin/encuadro/indicator_medium.gif"></td></tr></table>';
			var html = '';
			container.style.visibility = 'hidden';
			var code = innerXHTML(container, html);
						
			//document.getElementById('lightbox_items').innerHTML = '<table align="center" style="margin-top:40px;" border="0" cellspacing="1" cellpadding="1"><tr><td height="40" align="center" valign="middle"><img src="i/skin/encuadro/indicator_medium.gif"></td></tr></table>';
			//toggleOutput('show', true);
        	//output_innerhtml.innerHTML = OUTPUT_ADDCESTA;
        	//document.getElementById("cesta_bloque").innerHTML = '<table align="center" style="margin-top:40px;" border="0" cellspacing="1" cellpadding="1"><tr><td height="40" align="center" valign="middle"><img src="i/skin/encuadro/indicator_medium.gif"></td></tr></table>';
			break;
		case 'updateCart':
			var container = document.getElementById('lightbox_items');
			var html = '<table align="center" style="margin-top:40px;" border="0" cellspacing="1" cellpadding="1"><tr><td height="40" align="center" valign="middle"><img src="i/skin/encuadro/indicator_medium.gif"></td></tr></table>';
			var html = '';
			container.style.visibility = 'hidden';
			var code = innerXHTML(container, html);
			
			//document.getElementById('lightbox_items').innerHTML = '<table align="center" style="margin-top:40px;" border="0" cellspacing="1" cellpadding="1"><tr><td height="40" align="center" valign="middle"><img src="i/skin/encuadro/indicator_medium.gif"></td></tr></table>';
			//$('lightbox_items').style.display = 'none';
			//alert(document.getElementById('lightbox_items'));
			//alert(document.getElementById('lightbox_items').innerHTML);
			break;			
		case 'updateCalendar':
			document.getElementById("showCalendar").innerHTML = '<table align="center" style="margin-top:44px;" border="0" cellspacing="1" cellpadding="1"><tr><td height="40" align="center" valign="middle">Actualizando...<br><br><img src="i/web/loading.gif"></td></tr></table>';
			break;
	}	
	
	//alert(ajax_url+'?'+params);return false;
	
	
	//Creando la conexión
	var opt = {
	    // Usaremos POST
	    method: 'post',
	    // Enviar parámetros
	    postBody: params,		    
	    // Conexión realizada con éxito
	    onSuccess: function(t) {
	        if(document.getElementById(output_div) && print_responseText)
	        	document.getElementById(output_div).innerHTML = t.responseText;
	        else
	        	document.getElementById('mydiv').innerHTML = t.responseText;
	        
	        container.style.visibility = 'visible';
	    },
	    // Error 404
	    on404: function(t) {
	        alert('Error 404: location "' + t.statusText + '" was not found.');
	    },
	    // Otros errores
	    onFailure: function(t) {
	        alert('Error ' + t.status + ' -- ' + t.statusText);
	    }
	}
	
	
	new Ajax.Request(ajax_url, opt);
	return;
	
	
//	new Ajax.Updater(
//		'mydiv',  		//div de destino para el output
//		ajax_url + '?'+ params,  	//url de acceso + parametros
//		{onComplete:function(){
//			new Effect.Highlight('mydiv');
//		}
//		,asynchronous:true, method:'get'}  //por defecto para AJAX
//	);
	//'w=b&id={id}&titulo_new=' + encodeURIComponent(value)
}

function addLightboxDroppables(){
	//alert("añadiendo droppables");
	Droppables.add(
		'cart', 
		{accept:'products', 
		onDrop:function(element){
			ajaxUpdate('add2Cart', 'params[w]=ce&params[addcesta]=1&params[id]='+dropped+'&params[formato]='+dropped_format+'&params[unidades]=1', 'lightbox_items'); 
			if(document.getElementById('lightbox_items').style.display == 'none') { Effect.toggle('lightbox_items','BLIND'); } 
			//ajaxUpdate('updateLightbox', 'params[w]=ce&params[mascesta]=1&params[id]=3', 'lightbox_items');
			//new Ajax.Updater('items', '/shop/add', {onLoading:function(request){Element.show('indicator')}, onComplete:function(request){Element.hide('indicator')}, parameters:'id=' + encodeURIComponent(element.id), evalScripts:true, asynchronous:true})
		}, hoverclass:'cart-active'
		}
	)
}

//------------------------------------------------------------------------------------------------
// Mostrar/Ocultar Visor de imagenes
//------------------------------------------------------------------------------------------------
function toggleDivVisibility(objeto){
	if(objeto.style.display == 'none')
		return 'No';
	else
		return 'Si';
}
function toggleIcon(objeto){
	if(objeto.className == 'xp_minimize')
		objeto.className='xp_maximize'
	else
		objeto.className='xp_minimize'
}
function toggleXPMaxStyle(objeto){
	if(objeto.className == 'xp_minimize')
		objeto.className='xp_maximize'
	else
		objeto.className='xp_minimize'
}
function toggle_edit_mode(){
	if(document.edit_mode.editable_mode.checked){
		//Sortable.create('bloques_izquierda',{onUpdate:function(){$('debug').update(++callsToOnUpdate+' call(s) to onUpdate')}});
		//Sortable.create('bloques_izquierda', {starteffect: myStartEffect});
		Sortable.create('bloques_izquierda', { onUpdate: function() { ajaxUpdate('updateBlockOrder', 'params[w]=b&'+Sortable.serialize('bloques_izquierda')); return false; } });
		
		//Para mover el inicio
		//if(document.getElementById('bloques_inicio'))
		//	Sortable.create('bloques_inicio', {starteffect: myStartEffect});											
	}
	else{
		Sortable.destroy('bloques_izquierda');
		if(document.getElementById('bloques_inicio'))
			Sortable.destroy('bloques_inicio');
	}
	return false;
}

//------------------------------------------------------------------------------------------------
// Mostrar/Ocultar la ventana OUTPUT
//------------------------------------------------------------------------------------------------
function toggleOutput(accion, autoclose){
	
	updatePreloadDiv();
	
	var output 	= document.getElementById('output');
	var loading = document.getElementById('loading');
	
	switch(accion){
        case "show":
        	output.style.display 	 = 'block';
			output.style.visibility	 = 'visible';
			loading.style.display 	 = 'block';
			loading.style.visibility = 'visible';
			if(autoclose)
				setTimeout("toggleOutput('hide')",1000);
			break;
        case "hide":         	
	  		output.style.display 	 = 'none';
			output.style.visibility	 = 'hidden';
			loading.style.display 	 = 'none';
			loading.style.visibility = 'hidden';
		    if(location.href.substr(-19,19) == 'index.php?w=ce&op=l')
		    	document.location.reload();
			break;
    }
    	    
    //document.all.loading.style.visibility 	= "visible";
	//document.all.loading.style.display 		= "block";
	//alert("hola");
}


//------------------------------------------------------------------------------------------------
// Esta función cargará las paginas
//------------------------------------------------------------------------------------------------
function llamarasincrono(tipo, param){
	var pagina_requerida = false;
    if (window.XMLHttpRequest){
        // Si es Mozilla, Safari etc
        pagina_requerida = new XMLHttpRequest ();
    }
    else if (window.ActiveXObject){
        // pero si es IE
        try{
            pagina_requerida = new ActiveXObject ("Msxml2.XMLHTTP");
        }
        catch (e){
            // en caso que sea una versión antigua
            try{
                pagina_requerida = new ActiveXObject ("Microsoft.XMLHTTP");
            }
            catch (e){
            }
        }
    } 
    else
    return false;
    pagina_requerida.onreadystatechange = function (){
        // función de respuesta
        cargarpagina (pagina_requerida, id_contenedor);
    }
    
    //Cambiamos el mensaje OUTPUT mientras operamos
    var output_innerhtml = document.getElementById('output_innerhtml');
    output_innerhtml.innerHTML = "Realizando operación...";
    
    
    switch(tipo){
        case "cesta":
        	toggleOutput('show', true);
        	
        	output_innerhtml.innerHTML = OUTPUT_ADDCESTA;
        	var vars 	= get(document.forms[param]);
        	if(document.forms[param].unidades == "[object HTMLSelectElement]"){
        		var vars_unidades = '&unidades=' + document.forms[param].unidades[document.forms[param].unidades.selectedIndex].value;
        	}
        	url 		= base_href + 'index.php' + vars + vars_unidades;
        	
        	id_contenedor = 'cesta_bloque';
        	pagina_requerida.open ('GET', url, true); // asignamos los métodos open y send
		    pagina_requerida.send (null);
		    break;    	
        //Solicitamos el formulario de PING
        case "ping":
        	url			= base_href + 'index.php?w=ping';
        	id_contenedor = 'stats_innerhtml';
        	pagina_requerida.open ('GET', url, true); // asignamos los métodos open y send
		    pagina_requerida.send (null);		    
        	break;
        //Enviamos solicitudes PING
        case "ping_send":        
        	toggleOutput('show');
        	output_innerhtml.innerHTML = OUTPUT_TEST;
        	url			= base_href + 'index.php?w=ping';
			for(i=0;i<document.fl_list.length;i++) {
				c = document.fl_list[i].elements;
				for(j=0;j<c.length;j++) {
					if((c[j].getAttribute("type") == "checkbox") && (c[j].checked == true)){
						url = url + '&'+c[j].name+'=';
					}
				}
			}
        	id_contenedor = 'stats_innerhtml';
        	pagina_requerida.open ('GET', url, true); // asignamos los métodos open y send
		    pagina_requerida.send (null);		    
        	break;        	
        default:  
		    //pagina_requerida.open ('GET', url, true); // asignamos los métodos open y send
		    //pagina_requerida.send (null);
		    break;
    }    
    
//    //Si estamos en la hoja de pedidos, recargamos para hacer efectivo el cambio
//    if(location.href.substr(-19,19) == 'index.php?w=ce&op=l'){
//    	confirm('Es necesario acualizar su hoja de pedidos');
////    	if (pagina_requerida.status == 200)
////    		window.location.reload();
//    }

}
//------------------------------------------------------------------------------------------------
// todo es correcto y ha llegado el momento de poner la información requerida en la pagina xhtml
//------------------------------------------------------------------------------------------------
function cargarpagina (pagina_requerida, id_contenedor){
    if (pagina_requerida.readyState == 4 && (pagina_requerida.status == 200 || window.location.href.indexOf ("http") == - 1))
    	document.getElementById(id_contenedor).innerHTML = pagina_requerida.responseText;
}


//------------------------------------------------------------------------------------------------
//Extraer variables de un formulario
//------------------------------------------------------------------------------------------------
function get(obj) {
  var getstr = "?";
  for (i=0; i<obj.childNodes.length; i++) {
     if (obj.childNodes[i].tagName == "INPUT") {
        if (obj.childNodes[i].type == "text") {
           getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
        }
        if (obj.childNodes[i].type == "hidden") {
           getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
        }        
        if (obj.childNodes[i].type == "checkbox") {
           if (obj.childNodes[i].checked) {
              getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
           } else {
              getstr += obj.childNodes[i].name + "=&";
           }
        }
        if (obj.childNodes[i].type == "radio") {
           if (obj.childNodes[i].checked) {
              getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
           }
        }
     }   
     if (obj.childNodes[i].tagName == "SELECT") {
        var sel = obj.childNodes[i];
        getstr += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
     }
     
  }
  return getstr;
}






//------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------






/*
	This is the JavaScript file for the AJAX Suggest Tutorial

	You may use this code in your own projects as long as this 
	copyright is left	in place.  All code is provided AS-IS.
	This code is distributed in the hope that it will be useful,
 	but WITHOUT ANY WARRANTY; without even the implied warranty of
 	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
	
	For the rest of the code visit http://www.DynamicAJAX.com
	
	Copyright 2006 Ryan Smith / 345 Technical / 345 Group.	

*/
//Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject() {
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	}
	 else {
		alert(MSG_OLDBROWSER);
	}
}

//Our XmlHttpRequest object to get the auto suggest
var searchReq = getXmlHttpRequestObject();

//Called from keyup on the search textbox.
//Starts the AJAX request.
function searchSuggest() {
	if (searchReq.readyState == 4 || searchReq.readyState == 0) {
		var str = escape(document.getElementById('bus_term').value);
		searchReq.open("GET", 'index.php?op=dxconn&ajaxsearch=' + str + '&tipo=' + document.form_buscador.tipo.options[document.form_buscador.tipo.selectedIndex].value, true);
		searchReq.onreadystatechange = handleSearchSuggest; 
		searchReq.send(null);
	}		
}

//Called when the AJAX response is returned.
function handleSearchSuggest() {
	if (searchReq.readyState == 4) {
		var ss = document.getElementById('search_suggest')
		ss.innerHTML = '';
		var str = searchReq.responseText.split("\n");
		for(i=0; i < str.length - 1; i++) {
			//Build our element string.  This is cleaner using the DOM, but
			//IE doesn't support dynamically added attributes.
			var suggest = '<div onmouseover="javascript:suggestOver(this);" ';
			suggest += 'onmouseout="javascript:suggestOut(this);" ';
			suggest += 'onclick="javascript:setSearch(this.innerHTML);" ';
			suggest += 'class="suggest_link">' + str[i] + '</div>';
			ss.innerHTML += suggest;
		}
	}
}

//Mouse over function
function suggestOver(div_value) {
	div_value.className = 'suggest_link_over';
}
//Mouse out function
function suggestOut(div_value) {
	div_value.className = 'suggest_link';
}
//Click function
function setSearch(value) {
	value = value.replace("<u>","");
	value = value.replace("<b>","");
	value = value.replace("</u>","");
	value = value.replace("</b>","");
	document.getElementById('bus_term').value = value;
	document.getElementById('search_suggest').innerHTML = '';
}