// JavaScript Document
(function(){
	if(typeof $_ === 'function') {}else{
		// Creo la función
		function $_(selector){
			return document.querySelector(selector);
		}
	}

	var wye_mTimer;
	var r;
	var wye_ElementoSel = '';
	//var wye_ElementoSel = new Array();
	//var $i=0;
			
	function XHRO() {
				if (window.XMLHttpRequest) {
					return new XMLHttpRequest();
				} else if(window.ActiveXObject) {
					return new ActiveXObject("Microsoft.XMLHTTP");
				} else {
					//document.getElementById('p_status').innerHTML = 'No se puede crear objeto XmlHttpRequest.';
				}
	}
	
	function objetus() {
		var xmlhttp=false;
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
			   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (E) {
				xmlhttp = false;
			}
		}
	
		if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
			xmlhttp = new XMLHttpRequest();
		}
		return xmlhttp;
	}
	
	wyExplorer = {
		init: function(e){
								
				var oldonload = window.onload;
				if (typeof window.onload != 'function'){
					window.onload = this.cExplorer; r=e;
				} else {
					window.onload = function(){
						oldonload();
						this.cExplorer();
					}
				}
		},
		cExplorer: function(){
				if( typeof $_(r.selector) === "undefined" ){
					alert('Error: el selector no ha sido definido');
					return false;
				}
				
				var BaseExplorador = ( r.base_explorador !== 'undefined' ) ? r.base_explorador : '';
				var BaseDirectorio = ( r.base_directorio !== 'undefined' ) ? r.base_directorio : '';
				var AnchuraExplorador = ( r.anchura !== 'undefined' ) ? r.anchura : '100%';
				var AlturaExplorador = ( r.altura !== 'undefined' ) ? r.altura : 'auto';
				
				// Importo los estilos de wyExplorer
					var link = document.createElement( "link" );
					link.href = BaseExplorador + "css-wyExplorer.css";
					link.type = "text/css";
					link.rel = "stylesheet";
					link.media = "screen,print";					
					document.getElementsByTagName( "head" )[0].appendChild( link );
				
				
				// Creo las dimensiones del contenedor wyExplorer
				$_(r.selector).style.width = AnchuraExplorador;
				$_(r.selector).style.color = '#333';
				
				var cExplorer = document.createElement("div");
					cExplorer.setAttribute('id','wye_barra');
					cExplorer.style.padding = '15px';
					$_(r.selector).appendChild(cExplorer);
					
				// Creo Toolbar
				var wyeToolbar = document.createElement("div");
					wyeToolbar.className = 'wyeToolbar';
					wyeToolbar.style.padding = '15px';
					cExplorer.appendChild(wyeToolbar);
					
				var wyeTB_NuevaCarpeta = document.createElement('a');
					wyeTB_NuevaCarpeta.setAttribute('href','javascript:;');
					wyeTB_NuevaCarpeta.setAttribute('title','Crear Nueva Carpeta');
					//wyeTB_NuevaCarpeta.innerHTML = '<img src="' + BaseExplorador + 'images/icon_folder_nuevo_32x32.png" alt="">';
					wyeTB_NuevaCarpeta.innerHTML = '<span class="fa fa-plus"></span> Carpeta';
					wyeTB_NuevaCarpeta.onclick = function(){ wyExplorer.crearCarpeta(); }
					wyeToolbar.appendChild(wyeTB_NuevaCarpeta);
					
				var wyeTB_Cargar = document.createElement('a');
					wyeTB_Cargar.setAttribute('href','javascript:;');
					wyeTB_Cargar.setAttribute('title','Cargar (Tamaño máx. 10 MB)');
					wyeTB_Cargar.innerHTML = '<span class="fa fa-upload"></span> Cargar';
					wyeTB_Cargar.onclick = function(){ $_('#files').click(); }
					wyeToolbar.appendChild(wyeTB_Cargar);
					
				var wyeTB_Eliminar = document.createElement('a');
					wyeTB_Eliminar.setAttribute('href','javascript:;');
					wyeTB_Eliminar.setAttribute('title','Eliminar archivo o carpeta');
					wyeTB_Eliminar.innerHTML = '<span class="fa fa-times"></span> Borrar';
					wyeTB_Eliminar.onclick = function(){ wyExplorer.eliminarCarpeta(); }
					wyeToolbar.appendChild(wyeTB_Eliminar);
					
				
				// creo formulario de busqueda
				var fBuscar = document.createElement("form");
					fBuscar.setAttribute('method','get');
					fBuscar.className = 'fBuscar';
					cExplorer.appendChild(fBuscar);
					//$_(e.selector).insertBefore(fBuscar, $_(e.selector).firstChild);
				
				/*var imgHomeBuscar = document.createElement("img");
					imgHomeBuscar.src = BaseExplorador + 'images/icon_home_20x20.png';
					imgHomeBuscar.style.verticalAlign = 'middle';
					fBuscar.appendChild(imgHomeBuscar);*/
					
				var spanBuscar = document.createElement("span");
					spanBuscar.setAttribute('id','span_buscar');
					spanBuscar.innerHTML = '<span class="fa fa-home"></span> ';
					spanBuscar.style.verticalAlign = 'middle';
					fBuscar.appendChild(spanBuscar);
					
				var inputBuscar = document.createElement("input");
					inputBuscar.setAttribute('type','search');
					inputBuscar.setAttribute('id','carpeta');
					inputBuscar.setAttribute('name','carpeta');
					inputBuscar.className = 'inputBuscar';
					fBuscar.appendChild(inputBuscar);
					
				var botonBuscar = document.createElement("button");
					botonBuscar.onclick = function () {wyExplorer.abrirCarpeta({carpeta:$_('#carpeta').value}); return false;}
					botonBuscar.className = 'botonBuscar';
					botonBuscar.innerHTML = 'Ir',
					fBuscar.appendChild(botonBuscar);
					
				// creo formulario attachment
				var fCargar = document.createElement("form");
					fCargar.setAttribute('id','frmCargar');
					fCargar.setAttribute('method','post');
					fCargar.setAttribute('enctype','multipart/form-data');
					cExplorer.appendChild(fCargar);
					
				var inputCargar = document.createElement("input");
					inputCargar.setAttribute('id','files');
					inputCargar.setAttribute('name','files');
					inputCargar.setAttribute('type','file');
					inputCargar.onchange = function(){
												var file = this.files[0];
												//alert(file.name+" | "+file.size+" | "+file.type);
												var formdata = new FormData();
												formdata.append("files", file);
												
												var dataGet = '?tipo=archivos&base_directorio=' + r.base_directorio + '&base_sitio=' + r.base_sitio + '&carpeta=' + $_('#carpeta').value + '&acc=cargar_carpeta';
												
												var ajax = new XMLHttpRequest();
												//ajax.upload.addEventListener("progress", progressHandler, false);
												ajax.addEventListener("load", completeHandler, false);
												//ajax.addEventListener("error", errorHandler, false);
												//ajax.addEventListener("abort", abortHandler, false);
												ajax.open("POST", r.base_explorador +"wyExplorer.php"+dataGet);
												ajax.send(formdata);
											}
					inputCargar.style.display = 'none';
					fCargar.appendChild(inputCargar);
					
				
				if( r.tipo_explorador == 'carpetas' ){
					alert('carpetas');
				}else if( r.tipo_explorador == 'archivos' ){
					alert('archivos');
				}else if( r.tipo_explorador == 'ambos' ){
					//alert('ambos');
					
					wyExplorer.VentanaExplorar({
						id:'explorador_carpetas', 
						overflow: 'auto', 
						width:'150px', 
						height: r.altura, 
						display:'inline-block',
						borderRight: '1px solid #69C'
					});
					wyExplorer.VentanaExplorar({
						id:'explorador_archivos', 
						overflow: 'auto', 
						width: (cExplorer.clientWidth - 215) + 'px', 
						height: r.altura, 
						display:'inline-block'
					});
					
					/*/ Cargo el explorador de carpetas wyExplorer.ajax
					var $a = wye_ajax({
						metodo: 'GET',
						data: 'tipo=carpetas&base_directorio=' + BaseDirectorio,
						url: BaseExplorador + 'wyExplorer.php',
						selector: '#explorador_carpetas'
					})
					
					// Cargo el explorador de archivos
					var $b = wye_ajax({
						metodo: 'GET',
						data: 'tipo=archivos&base_directorio=' + BaseDirectorio + '&base_url=' + r.base_url,
						url: BaseExplorador + 'wyExplorer.php',
						selector: '#explorador_archivos'
					})*/
					wyExplorer.CargarArchivosExplorador({tipo:'carpetas', selector: '#explorador_carpetas'});
					wyExplorer.CargarArchivosExplorador({tipo:'archivos', selector: '#explorador_archivos'});
				}
		},
		
		CargarArchivosExplorador: function( a ){
			var BaseSitio = ( typeof r.base_sitio !== 'undefined' ) ? r.base_sitio : '';
			var BaseExplorador = ( typeof r.base_explorador !== 'undefined' ) ? r.base_explorador : '';
			var BaseDirectorio = ( typeof r.base_directorio !== 'undefined' ) ? r.base_directorio : '';
			wye_ajax({
						metodo: 'GET',
						data: 'tipo=' + a.tipo + '&base_directorio=' + BaseDirectorio + '&base_sitio=' + BaseSitio,
						url: wye_obtPath( true ) + BaseExplorador + 'wyExplorer.php',
						selector: a.selector
					})
		},
		
		VentanaExplorar: function(a){
							
							var ventanaExplorador = document.createElement("div");
								if(a.id != '') ventanaExplorador.setAttribute('id',a.id);
								if(a.display != '') ventanaExplorador.style.display = a.display;
								ventanaExplorador.style.marginTop = '5px';
								ventanaExplorador.style.padding = '10px';
								if(a.overflow != '') ventanaExplorador.style.overflow = a.overflow;
								if(a.borderRight) ventanaExplorador.style.borderRight = a.borderRight;
								if(a.height != '') ventanaExplorador.style.height = a.height;
								if(a.width != '') ventanaExplorador.style.width = a.width;
								$_(r.selector).appendChild(ventanaExplorador);
		},
		ajax: function(ajustes){
			var wye_Request = XHRO();
			 var url = (ajustes.metodo == 'GET') ? ajustes.url + '?' + ajustes.data : ajustes.url;
			
			if (wye_Request.readyState == 4 || wye_Request.readyState == 0) {
					wye_Request.open(ajustes.metodo, url, true);
					if(ajustes.contenidoTipo != 'undefined') wye_Request.setRequestHeader('Content-Type',ajustes.contenidoTipo);
					wye_Request.onreadystatechange = function(){
															if (wye_Request.readyState == 4 && wye_Request.status == 200) {
																$_(ajustes.selector).innerHTML = wye_Request.responseText;
															}
														};
														
					if(ajustes.metodo == 'POST') wye_Request.send(ajustes.data);
					 
					if(ajustes.metodo == 'GET') wye_Request.send(null);
			}
		},
		abrirCarpeta: function(a){
			//wye_ElementoSel.length = 0;
			wye_ElementoSel = '';
			//wye_ElementoSel.splice(0,wye_ElementoSel.length);
			
			var $b = wye_ajax({
						metodo: 'GET',
						data: 'tipo=archivos&base_directorio=' + r.base_directorio + '&base_sitio=' + r.base_sitio + '&carpeta=' + a.carpeta,
						url: r.base_explorador + 'wyExplorer.php',
						selector: '#explorador_archivos'
					})
					
			$_('#carpeta').value = a.carpeta;
			$_('#carpeta').title = a.carpeta;
		},
		crearCarpeta: function(){
			var actual_carpeta = $_('#carpeta').value;
			var nueva_carpeta = prompt("Nuevo nombre de carpeta:","Nueva carpeta");
				if (nueva_carpeta.length > 0) {
					
					
					
					var $b = wye_ajax({
						metodo: 'GET',
						data: 'tipo=archivos&base_directorio=' + r.base_directorio + '&base_sitio=' + r.base_sitio + '&carpeta=' + actual_carpeta + '&n_carpeta=' + nueva_carpeta + '&acc=nueva_carpeta',
						url: r.base_explorador + 'wyExplorer.php',
						selector: '#explorador_archivos'
					})
					
					var $a = wyExplorer.CargarArchivosExplorador({tipo:'carpetas', base_directorio: r.base_directorio, selector: '#explorador_carpetas'});
					
					/*var sel = document.selection.createRange();
					sel.text = "[a href=\"" + my_link + "\"]" + str + "[/a]";
					sel.select();*/
				}else{ $_('#carpeta').focus() }
		},
		eliminarCarpeta: function(){
			var actual_carpeta = $_('#carpeta').value;
			//var nueva_carpeta = prompt("Nuevo nombre de carpeta:","Nueva carpeta");
				if (wye_ElementoSel.length > 0) {
					if(confirm('¿Desea eliminar la selección?')){
						
						var $b = wye_ajax({
							metodo: 'GET',
							data: 'tipo=archivos&base_directorio=' + r.base_directorio + '&base_sitio=' + r.base_sitio + '&carpeta=' + actual_carpeta + '&n_carpeta=' + wye_ElementoSel + '&acc=eliminar_carpeta',
							url: r.base_explorador + 'wyExplorer.php',
							selector: '#explorador_archivos'
						});
						
						$a = wyExplorer.CargarArchivosExplorador({tipo:'carpetas', base_directorio: r.base_directorio, selector: '#explorador_carpetas'});
						
						wye_ElementoSel = '';
					}
					
				}else{ alert('Debes seleccionar al menos un elemento'); }
		},
		selCarpeta: function(a){
					var dir = ($_('#carpeta').value!='') ? $_('#carpeta').value + '/' : '';
					
					//alert(a.selector.classList.contains(a.class));
					if(a.selector.classList.contains(a.class)==false){
						wye_ElementoSel = wye_ElementoSel + r.base_directorio + dir + a.elemento_seleccionado + ',';
						//wye_ElementoSel[$i++] = a.elemento_seleccionado;
						a.selector.classList.add(a.class);
						//alert(wye_ElementoSel);
					}else{
						a.selector.classList.remove(a.class);
						var patron = r.base_directorio + dir + a.elemento_seleccionado + ',';
						wye_ElementoSel = wye_ElementoSel.replace(patron,'')
					}
					
					if(a.es_archivo == true){ 
						if(r.selector_imagen != 'undefined') {
							if(typeof r.seleccion_multiple != 'undefined' && r.seleccion_multiple == true ) {
								$_(r.selector_imagen).value = wye_ElementoSel.substring(0, wye_ElementoSel.length-1);
							}else{
								
								$_(r.selector_imagen).value = r.base_directorio + dir + a.elemento_seleccionado; 
							}
						}
					}
		}
	}
	
	
	
	
	
	
	function progressHandler(event){
		$_("loaded_n_total").innerHTML = "Uploaded "+event.loaded+" bytes of "+event.total;
		var percent = (event.loaded / event.total) * 100;
		$_("progressBar").value = Math.round(percent);
		$_("status").innerHTML = Math.round(percent)+"% uploaded... please wait";
	}
	function completeHandler(event){
		$_("#explorador_archivos").innerHTML = event.target.responseText;
		//_("progressBar").value = 0;
	}
	function errorHandler(event){
		$_("status").innerHTML = "Upload Failed";
	}
	function abortHandler(event){
		$_("status").innerHTML = "Upload Aborted";
	}



	
	wye_ajax = function(ajustes){
			
			var wye_Request = XHRO();
			//var Data = new FormData(form); 'application/x-www-form-urlencoded'
			 var url = (ajustes.metodo == 'GET') ? ajustes.url + '?' + ajustes.data : ajustes.url;
			
			if (wye_Request.readyState == 4 || wye_Request.readyState == 0) {
					wye_Request.open(ajustes.metodo, url, true);
					if(ajustes.contenidoTipo != 'undefined') wye_Request.setRequestHeader('Content-Type',ajustes.contenidoTipo);
					wye_Request.onreadystatechange = function(){
															if (wye_Request.readyState == 4 && wye_Request.status == 200) {
																$_(ajustes.selector).innerHTML = wye_Request.responseText;
															}
														};
														
					if(ajustes.metodo === 'GET') {
						wye_Request.send(null);
					}else{
						wye_Request.send(ajustes.data); //alert('post')
					}
			}
		}
	
	// ** Funcion para extraer path de URL
	function wye_obtPath( path_local ) {
		var loc = window.location;
		var pathName = loc.pathname.substring(0, loc.pathname.lastIndexOf('/') + 1);
		return ( path_local == true ) ? pathName : loc.href.substring(0, loc.href.length - ((loc.pathname + loc.search + loc.hash).length - pathName.length));
	}
		
})();