/*
o2cbuttons.js

Funciones para los botones lanzadera


--------------------------------------------------------------
1.2 12/04/2010 13:44:13 Parámetro para especificar CSS
1.1 19/10/2009 15:44:54 Parámetro de URL con imagen y tamaño de ventana
1.0 16/10/2009 17:38:26 Inicial
---------------------------------------------------------------

Llamada principal:

<script type="text/javascript">o2cbutton(a [,b][,c])</script>

PARAMS:
a:  - "URL directa a la que se quiere invocar"
      ó
    - "ID del account" , "ID del place" [ , "URL del CSS para el widget" ]
            Ejemplos: '24,19'
                      '24, 19, http://www.miservidor.com/micss.css'


Después, se pueden poner parámetros que indiquen:

 - Texto en el botón cuando a es una url (Lo cual quita el gráfico)

 - [1...7] Modelo de botón (un número del 1 al 7)
    
 - 'all' para mostrar toda la información del place, no solo la reserva
         Si no se pone, dispone el LIVE
 
 - url con imagen: Una foto para sustituir al botón
 
 - 'w:ancho,alto': El ancho y alto de la ventana popup que se desea generar.
 
 - 'r:ID_REFERRER': El ID de referrer indicado.
 
 - url con CSS: Una url que apunte a un css.

*/

//document.write('<link href="/__MYD/Documents/O2C/svn/51-box/trunk/c/css/o2cbuttons.css" rel="stylesheet" type="text/css">');
document.write('<link href="http://box.o2cworld.com/c/css/o2cbuttons.css" rel="stylesheet" type="text/css">');


// Variables globales
var is_BoxPath          = 'http://box.o2cworld.com/';

var is_o2cb_version     = '1.2';
var is_o2cb_url         = '';
var is_o2cb_caption     = '';
var is_o2cb_idboton     = 1;
var is_o2cb_buttonimage = '';
var is_o2cb_buttoncss   = '';
var ii_o2cb_popwin_w    = 0;
var ii_o2cb_popwin_h    = 0;

var is_placeext_css = '';

var is_o2cb_errormsg    = 'o2cbutton() error: ';


// Llamada principal, al menos un parámetro, el resto se sacan usando el array arguments[]
function o2cbutton(a) {
	is_o2cb_url         = '';
	is_o2cb_caption     = '';
	is_o2cb_idboton     = 0;
	is_o2cb_buttonimage = '';
	is_o2cb_buttoncss   = '';
	ii_o2cb_popwin_w    = 750;
	ii_o2cb_popwin_h    = 440;
	
	var lb_is_o2c    = true;
	var ls_widget    = '/w_liveplus_fullht';
	var ls_path_base = '';
	
	is_placeext_css = '';
	
	var error        = false;
	
	var as_url       = arguments[0];
	
	var li_current_arg = 1;
	var lb_arg_done    = false;
	var ls_comando     = '';
	var ls_wdatos      = '';
	
	var ls_ref_param='';
	
	//console.log('as_url='+as_url);
	
	if (o2c_common_isURL(as_url)) {
		//console.log(as_url+' ES URL REAL!');
		// Es una dirección http, se lanza normalmente
		is_o2cb_url=as_url;
		is_o2cb_caption='Reservar';
		lb_is_o2c=false;
	} else {
		// Separa las comas para hallar el account y el place, y también la extensión CSS
		var component=as_url.split(",");
		
		var ls_account=parseInt(component[0]);
		var ls_place=parseInt(component[1]);

		if (typeof(component[2])!='undefined') is_placeext_css=o2c_common_trim(component[2]);
		
		error = (isNaN(ls_account)) || (isNaN(ls_place));
		
		if (error) {
			is_o2cb_errormsg+='Parámetros: ls_account='+ls_account+', ls_place='+ls_place;
		} else {
			// Si a es número, considera que se está enviando un account y place de O2C
			ls_path_base = o2c_common_getplaceboxpath(ls_account, ls_place);
			is_o2cb_caption='Reservar ya';
		}
	}
	
	
	
	
	while (li_current_arg < (arguments.length)) {
		// Procesa el siguiente argumento
		as_arg=arguments[li_current_arg];
		lb_arg_done=false;
		
		//console.log('arguments.length='+arguments.length+'; li_current_arg='+li_current_arg+'; as_arg='+as_arg);
		
		// Checkeos para el modo O2C
		if (lb_is_o2c) {
			if (as_arg == 'all') {
				// Si se especifica 'all', pone el widget total
				ls_widget='/show_ph_fullht';
				is_o2cb_caption='M&aacute;s informaci&oacute;n / Reservar';
				lb_arg_done=true;
				//console.log(" --> all detected");
			}
		}
		
		
		
		
		
		if (as_arg.length > 0) {
			
			ls_comando=as_arg.substring(0,2).toLowerCase();
			ls_wdatos=o2c_common_trim(as_arg.substring(2));
			
			// Es un comando de tamaño de ventana
			if (ls_comando=='w:') {
				// Separa las comas para hallar el ancho y alto
				var component=ls_wdatos.split(",");
				var li_w=parseInt(component[0]);
				var li_h=parseInt(component[1]);
				
				if (!  (   (isNaN(li_w)) || (isNaN(li_h))    )  ) {
					if (li_w < 500) li_w=500;
					if (li_h < 300) li_h=300;
					ii_o2cb_popwin_w=li_w;
					ii_o2cb_popwin_h=li_h;
					//console.log(" --> Tamaño de ventana: ancho="+ii_o2cb_popwin_w+"; alto="+ii_o2cb_popwin_h);
				} else {
					//console.log(" --> Error al sacar el tamaño: (ls_wdatos="+ls_wdatos+") li_w="+li_w+"; li_h="+li_h);
				}
				lb_arg_done=true;
			}
			
			
			// Es un comando de especificación de referrer
			if (ls_comando=='r:') {
				ls_ref_param='&ref='+ls_wdatos;
				//console.log(" --> REFERRER: (ls_wdatos="+ls_wdatos+")");
				lb_arg_done=true;
			}
		}

		
		
		
		
		if (!lb_arg_done) {
			// Si es un número, considera que es un ID de botón
			li_id_boton=parseInt(as_arg);
			if (!isNaN(li_id_boton)) {
				if (  (li_id_boton >= 1) && (li_id_boton <= 7)  ) {
					is_o2cb_idboton=li_id_boton;
					lb_arg_done=true;
					//console.log(" --> cambiado is_o2cb_idboton=%d", is_o2cb_idboton);
				}
			}
		}
		
		
		// Checkea si es la url de una imagen
		if (!lb_arg_done) {
			if (o2c_common_isURLimage(as_arg)) {
				is_o2cb_buttonimage=as_arg;
				lb_arg_done=true;
				//console.log(" --> image detected: "+is_o2cb_buttonimage);
			}
		}
		
		
		// Checkea si es la url de una imagen
		if (!lb_arg_done) {
			if (o2c_common_isURLcss(as_arg)) {
				is_o2cb_buttoncss=as_arg;
				lb_arg_done=true;
				//console.log(" --> css detected: "+is_o2cb_buttoncss);
			}
		}
		
		
		
		
		if (!lb_arg_done) {
			// Ni no es nada de lo anterior, lo considera un texto para el botón
			if (as_arg.length > 0) {
				is_o2cb_caption=as_arg;
				lb_arg_done=true;
				//console.log(" --> Nuevo caption: "+is_o2cb_caption);
			}
		}
		
		li_current_arg++;
	};


	// Si hay especificado un diseño para el botón, no hay caption
	if (is_o2cb_idboton != 0) is_o2cb_caption='';


	// Compone la ruta generada si se pidió una ruta O2C
	if (lb_is_o2c) {
		var ls_place_cssext_param='';
		if (is_placeext_css.length > 0) ls_place_cssext_param='&cssExtension='+is_placeext_css;
		is_o2cb_url=is_BoxPath+ls_path_base+ls_widget+'?'+ls_place_cssext_param+ls_ref_param;
	} else {
		is_o2cb_url=is_o2cb_url+'?'+ls_ref_param;
	}

	//console.log("URL: ", is_o2cb_url);
	
	if (error) {
		o2cb_painterror();
	} else {
		o2cb_paintbutton();
	}
}






function o2cb_paintbutton() {
	var ls_additional_class  = '';
	var ls_additional_add    = '';
	var ls_input_type        = 'button';
	
	ls_input_add=' value="'+is_o2cb_caption+'"';
	
	if (is_o2cb_caption.length == 0) {
		// Si no se ha indicado ningún texto, pone la imagen
		ls_additional_class = ' o2cbmodel'+is_o2cb_idboton;
	}
	
	if (is_o2cb_buttonimage.length > 0) {
		// Si está especificada una imagen...
		ls_additional_class =' o2cbmodelimage';
		ls_input_type = 'image';
		ls_input_add  = ' src="'+is_o2cb_buttonimage+'" alt="'+is_o2cb_caption+'" title="'+is_o2cb_caption+'"';
	}
	
	//console.log(" --> o2cb_paintbutton(): is_o2cb_buttoncss="+is_o2cb_buttoncss);
	if (is_o2cb_buttoncss.length > 0) {
		document.write('<link href="'+is_o2cb_buttoncss+'" rel="stylesheet" type="text/css">');
		ls_additional_class+=' o2cbcustom';
	}

	document.write('<input class="o2cblauncher'+ls_additional_class+'" type="'+ls_input_type+'"'+ls_input_add+'" onclick="javascript:o2cb_launch(\''+is_o2cb_url+'\','+ii_o2cb_popwin_w+','+ii_o2cb_popwin_h+');">');
}


function o2cb_painterror() {
	document.write('<div class="o2cberrormsg">'+is_o2cb_errormsg+'</div>');
}



function o2cb_launch(as_url, ai_w, ai_h) {
	o2c_common_openWindow(as_url, ai_w, ai_h);
}



function o2c_common_openWindow(as_url, ai_w, ai_h) {
	var winl = (screen.width - ai_w) / 2;
	var wint = (screen.height - ai_h) / 2;
	o2cWindow = window.open(as_url, 'o2cWindow', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width='+ai_w+',height='+ai_h+',left='+winl+',top='+wint);
} 



function o2c_common_getplaceboxpath(ai_account, ai_place) {
	var wCodeFinal = "";
	var wCodeIni=ai_account.toString(16);
	var wCodeIni = "0" + wCodeIni;
	while (wCodeIni.length <= 8) {
		wCodeIni = "0" + wCodeIni;
	}
	for (counter=1;counter<=8;counter++) {
		var charAt=wCodeIni.charAt(counter);
		switch (counter) {
			case 5: { wCodeFinal= charAt+"/"+wCodeFinal; break }
			case 7: { wCodeFinal= charAt+"/"+wCodeFinal; break }	    
			default: {wCodeFinal= charAt+wCodeFinal; break }
		}
	}
	return  wCodeFinal+"/"+ai_place;
}



function o2c_common_isURL(s) {
	var ret=false;

	var re = new RegExp(/(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/);
	var m = re.exec(s);

	if (m != null) {
		if (m.index==0) ret=true;
	}
	
	return ret;
}


function o2c_common_isURLimage(s) {
	var regexp = /(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?(.jpg|.png|.gif)/
	return (regexp.test(s));
}

function o2c_common_isURLcss(s) {
	var regexp = /(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?(.css|.CSS)/
	return (regexp.test(s));
}


function o2c_common_trim(s) {
	if (typeof(s)!='undefined') {
		var l=0; var r=s.length -1;
		while(l < s.length && s[l] == ' ')
		{	l++; }
		while(r > l && s[r] == ' ')
		{	r-=1;	}
		return s.substring(l, r+1);
	} else {
		return '';
	}
}

/*
t='http://www.terra.es/cosas/image.zip';
console.log('o2c_common_isURL(\''+t+'\'): ', o2c_common_isURL(t));

t='http://www.terra.es/cosas/image.jpg';
console.log('o2c_common_isURL(\''+t+'\'): ', o2c_common_isURL(t));

t='http://www.terra.es/cosas/image.zip';
console.log('o2c_common_isURLimage(\''+t+'\'): ', o2c_common_isURLimage(t));

t='http://www.terra.es/cosas/image.jpg';
console.log('o2c_common_isURLimage(\''+t+'\'): ', o2c_common_isURLimage(t));
*/
