// JavaScript Document
/*declaramos la clase*/
function my_ajax()
{	
	this.xmlhttp = false;							//declaramos la variable httprequest
	this.create = create_object;					//funcion que crea el objecto
	this.loading_text = '';							//texto a mostrar durante la carga de datos
	this.set_loading_text = set_loading_text_html;	//funcion que obtiene el texto de carga
	this.container;									//variable que contiene el id del contenedor
	this.set_container_id = set_container_id;		//funcion que obtiene los datos del contenedor html
	this.use_form = false;							//variable que indica si se utilizara un formulario para enviar datos POST
	this.form;										//variable que contiene el id del formulario
	this.set_form_id = set_form_id;					//funcion que obtiene los datos del formulario
	this._reload = _reload_container;				//funcion qye realiza la recarga del contenedor indicado	
	this.url = '';									//variable que contiene la direci�n url
	this.send_by_get = send_data_by_get;			//funcion que envia los datos por el metodo get
	this.send_by_post = send_data_by_post;			//funcion que envia los datos por el m�tido post
	this.values_post;								//contiene los datos de los elementos post
	this.val_extra;
	this.get_elements = get_all_elements;			//funcion que obtiene los datos del formulario
	this.type_ret = '';								//tipo de retorno
}

/*funcion que crea el objecto xmlhttprequest*/
function create_object()
{
	try
	{	//para navegadores como internet explorer
		this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch(e)
	{
		try
		{	//para versiones antiguas de Internet Explorer
			this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(E)
		{
			this.xmlhttp = false;
		}
	}

	//si el navegador no es internet explorer
	if(!this.xmlhttp && typeof XMLHttpRequest  != 'undefined')
	{
		this.xmlhttp = new XMLHttpRequest();
	}		
	
	this.type_ret = 0;
}

/*funcion que obtiene el codigo html o el texto que se muestra mientras carga el resultado*/
function set_loading_text_html(text_html)
{
	this.loading_text = text_html;		
}

/*funcion que obtiene el id del contenedor y carga los datos*/
function set_container_id(id_container)
{
	this.container = getObject(id_container);
}

/*funcion que obtiene el id del formulario y carga los datos*/
function set_form_id(id_form)
{
	this.form = getObject(id_form);
	this.use_form = true;
}

/*funcion que realiza la carga de los datos de acuerdo a los parametros*/
function _reload_container(url,method,post_values,ret,val_extra)
{		
	this.url = url;
	this.type_ret = ret;
	this.val_extra = val_extra;
	//verificamos el metodo por el cual se desea enviar los datos	
	//alert (method);
	if(method == 'GET')
		this.send_by_get();
	else if(method == 'POST')	
		this.send_by_post(post_values);
}

/*funcion que envia los datos por el metodo get*/
function send_data_by_get()
{	
	l_xml = this.xmlhttp;
	l_url = this.url;
	l_cont = this.container;
	l_ltext = this.loading_text;
	l_prop = this.property;
	
	l_val_extra = this.val_extra;
	//alert(l_val_extra);
	if(this.type_ret == 0)
	{		
		this.xmlhttp.onreadystatechange = function()
		{
			verify_send_data(l_xml,l_url,l_cont,l_ltext,l_prop,'',l_val_extra);
		}
	}
	else	
	{
		this.xmlhttp.onreadystatechange = function()
		{
			verify_send_data_inner(l_xml,l_url,l_cont,l_ltext,l_prop,'',l_val_extra);
		}
	}
	this.xmlhttp.open('GET',l_url,true);
	this.xmlhttp.send(null);
}

/*funcion que envia los datos por el metodo post*/
function send_data_by_post(post_values)
{
	l_xml = this.xmlhttp;
	l_url = this.url;
	l_cont = this.container;
	l_ltext = this.loading_text;
	l_tret = this.type_ret;
	l_val_extra = this.val_extra;
	
	//alert ("inner "+this.val_extra);
	
	if(post_values.length == 0)
		this.get_elements();
	else
		this.values_post = post_values;
		
	//para concatenar los valores del formularios con los de la variable values_post
	if(this.val_extra == 5 || this.val_extra == 18 || this.val_extra == 21 || this.val_extra == 28 || this.val_extra == 30)
	{	//alert('entroooo'+this.values_post);
		this.get_elements();
		this.values_post = post_values + '&' + this.values_post;
	}
	
	this.xmlhttp.open('POST',this.url,true);
	if(this.type_ret == 0)
	{
		this.xmlhttp.onreadystatechange = function()
		{
			verify_send_data(l_xml,l_url,l_cont,l_ltext,l_tret);
		}
	}
	else
	{
		this.xmlhttp.onreadystatechange = function()
		{
			//alert('inner');
			verify_send_data_inner(l_xml,l_url,l_cont,l_ltext,l_tret,l_val_extra);
		}
	}
	this.xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');	
	this.xmlhttp.send(this.values_post);
}

/*funcion que verifica si los datos ya han sido enviados*/
function verify_send_data(l_xml,l_url,l_cont,l_ltext,l_prop,l_tret,l_val_extra)
{		
	if(l_xml.readyState == 4 && (l_xml.status == 200 || window.location.href.indexOf('http') == -1))
	{		
		l_cont.value = l_xml.responseText;			
		//uitlevening special functions
		if(l_val_extra == 1)	
			copy_value('REAL_START1','REAL_END1');
			
		if(l_val_extra == 2)	
			copy_value('REAL_START2','REAL_END2');
		//alert(l_xml.responseText);
	}
	else
		l_cont.value = l_ltext;
}

/*funcion que verifica si los datos ya han sido enviados*/
function verify_send_data_inner(l_xml,l_url,l_cont,l_ltext,l_tret,l_val_extra)
{	
	if(l_xml.readyState == 4 && (l_xml.status == 200 || window.location.href.indexOf('http') == -1))
	{
		//alert(l_xml.responseText);
		//alert(l_cont.innerHTML);
		l_cont.innerHTML = l_xml.responseText;
		//--alert ("inner "+l_val_extra);
		if(l_val_extra == 2 || l_val_extra == 3 || l_val_extra == 7 || l_val_extra == 9 || l_val_extra == 10 || l_val_extra == 14 || l_val_extra == 18 || l_val_extra == 19  || l_val_extra == 24 || l_val_extra == 25 || l_val_extra == 26 || l_val_extra == 27 || l_val_extra == 28 || l_val_extra == 29 || l_val_extra == 31)
                    showElement('msg',0);
                else if(l_val_extra == 4) { /*para retornar el foco al campo del buscador*/
                    showElement('msg',0);
                    var celem = getObject('search');
                    
                    //--alert('estamos aqui');
                    celem.focus();
                    celem.focus();
                    celem.select();
                }
		else if(l_val_extra == 5 || l_val_extra == 6)		/*para recargar el panel derecho*/
		{
			reload_div('right','reload_cart=1','reload_cart=1','class/ajaxArtikel.php',7,'');
		}
		else if(l_val_extra == 8 || l_val_extra == 32)
		{
			reload_div('right','reload_bestell=1','reload_bestell=1','class/ajaxBestelling.php',9,'');
		}
		else if(l_val_extra == 11)
		{
			reload_div('center','reload_bestell=1','reload_bestell=1','class/ajaxBestelling.php',9,'');
		}
		else if(l_val_extra == 33)
		{
			reload_div('center','reload_bestel2=1','reload_bestel2=1','class/ajaxBestelling.php',9,'');
		}
		else if(l_val_extra == 12)		/*para bestelhistorie*/
		{
			reload_div('center','reload_bestelhistorie=1','reload_bestelhistorie=1','class/ajaxBestelhistorie.php',3,'toonbestellingen');
		}
		else if(l_val_extra == 13)		/*para personalHome, actualiza el panel central*/
		{
			reload_div('center','reload_recentebestellingen=1','reload_recentebestellingen=1','class/ajaxPersonalHome.php',2,'');
		}
		else if(l_val_extra == 15 || l_val_extra == 17)		/*para artikelen, prijlijst, actualiza el panel central*/
		{
			reload_div('center','reload_center=1&opt=1','reload_center=1','class/ajaxArtikel.php',2,'');
		}
		else if(l_val_extra == 16)		/*para artikelen, prijlijst, actualiza el panel central*/
		{			
			valget = new Array();
			valget = l_url.split('&');
			valget2 = new Array();
			valget2 = valget[2].split('=');
			
			extra_url_get = getElementCombo(valget2[1]);
			//alert(extra_url_get);
			reload_div('center','reload_center=1&opt=1','reload_center=1&'+extra_url_get,'class/ajaxArtikel.php',2,'');
		}
		else if(l_val_extra == 20)		//para el werken redirecciona al contenido de respuesta que deberia ser un Url v�lido
		{			
			redirect(l_xml.responseText,50);
			l_cont.innerHTML = '';
		}
		else if(l_val_extra == 21 || l_val_extra == 30)		//para el werken redirecciona al contenido de respuesta que deberia ser un Url v�lido
		{
			if(l_val_extra == 21)
				reload_div('center','reload_center=1&opt=aw','reload_center=1','class/ajaxWerken.php',2,'');
			else if (l_val_extra == 30)
				reload_div('center','reload_center=1&werken_list=uc','reload_center=1','class/ajaxWerken.php',2,'');
		}
		else if(l_val_extra == 22)		/*para bestelhistorie*/
		{
			reload_div('center','reload_bestelhistorie=1','reload_bestelhistorie=1','class/ajaxWerken.php',3,'toonbestellingen');
		}
		else if(l_val_extra == 23)		/*para cambiar la contrase�a en instelligen*/
		{
			showElementBlock('detail_verander',0);
			showElementBlock('verander',1);
			showElement('msg',0);
		}
                else if(l_val_extra == 34) {
                    if(l_xml.responseText.length > 0) {
                        elem = getObject('gebruikernaam');
                        elem.value = '';
                    }
                }
		//l_cont.innerHTML = 'juan';				
		//alert('despues');
	}
	else
	{
		if(l_ltext.length > 0)
			l_cont.innerHTML = l_ltext;		
	}
}

/*funcion que verifica si los datos ya han sido enviados*/
function verify_send_data_select(l_xml,l_url,l_cont,l_ltext,l_prop,l_tret)
{		
	if(l_xml.readyState == 4 && (l_xml.status == 200 || window.location.href.indexOf('http') == -1))
	{
		l_cont.innerHTML = l_xml.responseText;				
		//alert(l_xml.responseText);
	}
	else
		l_cont.innerHTML = l_ltext;
}


/*funcion que obtiene todos los valores de un formulario*/
function get_all_elements()
{
	this.values_post = '';
        //--alert(this.form);
	var long = this.form.elements.length;		
	
	for(i = 0; i < long; i++)
	{
		//alert(this.form.elements[i].type+'--'+this.form.elements[i].name);
		//concatenamos los nombres y los elementos --> nombre=valor		
		if(i == 0)
		{
			//alert('primero');
			if(this.form.elements[i].type == 'text' || this.form.elements[i].type == 'hidden')
				this.values_post = this.form.elements[i].name+'='+escape(this.form.elements[i].value);
			else if(this.form.elements[i].type == 'select-one')
				this.values_post = this.form.elements[i].name+'='+this.form.elements[i].options[this.form.elements[i].selectedIndex].value;			
			else if(this.form.elements[i].type == 'checkbox')
			{
				if(this.form.elements[i].checked == true)
					this.values_post = this.values_post + '&' + this.form.elements[i].name+'=1';
				else
					this.values_post = this.values_post + '&' + this.form.elements[i].name+'=0';
			}
		}
		else
		{	
			if(this.form.elements[i].type == 'text' || this.form.elements[i].type == 'hidden')
				this.values_post = this.values_post + '&' + this.form.elements[i].name+'='+escape(this.form.elements[i].value);
			else if(this.form.elements[i].type == 'select-one')
				this.values_post = this.values_post + '&' + this.form.elements[i].name+'='+this.form.elements[i].options[this.form.elements[i].selectedIndex].value;				
			else if(this.form.elements[i].type == 'checkbox')
			{
				if(this.form.elements[i].checked == true)
					this.values_post = this.values_post + '&' + this.form.elements[i].name+'=1';
				else
					this.values_post = this.values_post + '&' + this.form.elements[i].name+'=0';
			}
		}
		
	}	
	//alert('values '+this.values_post);
}

/*funcion que devuelte los datos de un elemento indicandole el id*/
function getObject(objectId) 
{
    // cross-browser function to get an object's style object given its id
    if(document.getElementById && document.getElementById(objectId)) 
		return document.getElementById(objectId); 	// W3C DOM
	else if(document.all && document.all(objectId)) 
		return document.all(objectId);				// MSIE 4 DOM
	else if(document.layers && document.layers[objectId]) 
		return document.layers[objectId];			// NN 4 DOM.. note: this won't find nested layers
	else 
		return false;
}
