// JavaScript Document

var lastplloaded = "";
var fromplaylist = false;

var pltitleval = "";
var plid = "";
var savingPL = false;
var PLedited = false;

function onPlaylistTool(){
	//disableSelection(dojo.byId('plmedia'));
	PLedited = false;
	savingPL = false;
	dojo.byId('pltitle').value="";
	if(lastplloaded!=""){
		loadPL(lastplloaded);
		toggleTool(true);
		if(lastplloaded!="new" && fromplaylist){
			fromplaylist = false;
			dojo.byId('fromplaylist').value = lastplloaded;
			searchMedia(oxoadmindir+'mediamanager/media.search.php');
		}
		lastplloaded="";
	}
}

function savePL(){
	var pltitle = dojo.byId("pltitle");
	if(pltitle.value!=""){
		savingPL = true;
		var msgbox = dojo.byId("toolmsg");
		msgbox.style.display='none';
		var form = dojo.byId('plform');
		var fobjs = dojo.query("input",form).concat(dojo.query("select",form));
		dojo.xhrPost({
			url: oxoadmindir+"mediamanager/playlist.edit.php",
			form:form,
			load: function(responseObject, ioArgs){
					savingPL = false;
					if(responseObject==null){ this.error(); return; }
					loadPLList(responseObject.plId);
					refreshSearches(4);
					PLedited=false;
					dojo.byId('plsavingimg').style.display = 'none';
					msgbox.style.display='block';
					for(i=0;i<fobjs.length;i++){
						fobjs[i].disabled=false;
					}
					if(responseObject.success){
						msgbox.innerHTML = responseObject.msg;
						msgbox.className="success";
						
						//ADD INPUT WITH ID
					}else{
						msgbox.innerHTML = responseObject.error;
						msgbox.className="error";
					}
					if(responseObject.formatForm!=null){
						responseObject.formatForm();
					}
					return responseObject;
				},
			error: function(response, ioArgs){
				savingPL = false;
				dojo.byId('plsavingimg').style.display = 'none';
				console.log("ERROR SAVING");
				//saveRecord(lastsaveurl);
				msgbox.style.display='block';
				msgbox.innerHTML = getLoadingErrorHTML();
				msgbox.className="error";
				for(i=0;i<fobjs.length;i++){
					fobjs[i].disabled=false;
				}
				return response;
			},
			handleAs: "json"
		});
		for(i=0;i<fobjs.length;i++){
			fobjs[i].disabled=true;
		}
		dojo.byId('plsavingimg').style.display = '';
	}else{
		var msgbox = dojo.byId("toolmsg");
		msgbox.style.display='block';
		msgbox.innerHTML = "Complete el t&iacute;tulo del playlist";
		msgbox.className="error";
	}
}
function loadPL(playlistid){
	//var selector = dojo.byId('playlistsselector');
	//var selectedPL = selector.options[selector.selectedIndex].value;
	//console.log(selectedPL);
	if(selectedTool!="pl"){
		loadTool("pl");
		lastplloaded = playlistid;
		return;
	}
	check = true;
	if(PLedited){
		check = window.confirm("El playlist ha sido modificado\n Desea cambiar el playlist?");
	}
	if(check){
		//lastplloaded = playlistid;
		resetAllSelected();
		setPLTitle("");
		writePLMediaData();
		PLedited=false;
		if(playlistid=="new"){
			setPLid("new");
			//checkAllSelecteds();
			selectPLList();
		}else{
			dojo.byId('plloadingimg').style.display='';
			dojo.xhrGet({
				url: oxoadmindir+"mediamanager/playlist.get.php?pl="+playlistid,
				load: function(responseObject, ioArgs){
						dojo.byId('plloadingimg').style.display='none';
						if(responseObject==null){ this.error(); return; }
						resetAllSelected();
						setPLTitle(responseObject.title);
						setPLid(responseObject.id);
						for(var i=0;i<responseObject.media.length;i++){
							var m = responseObject.media[i];
							selectedMedia[m.id]=true;
							mediaData[m.id]=m;
						}
						mediaselcount=responseObject.count;
						writePLMediaData();
						checkAllSelecteds();
						selectPLList(responseObject.id);
						//lastplloaded = responseObject.id;
						PLedited=false;
						return responseObject;
					},
				error: function(response, ioArgs){
					console.log("ERROR LOADING PLAYLISTS",response, ioArgs);
					loadPL("new");
					return response;
				},
				handleAs: "json"
			});
		}
	}else{
		selectPLList();
	}
}
function loadPLList(selId){
	var selector = dojo.byId('playlistsselector');
	var selectedPL = selector.options[selector.selectedIndex].value;
	selector.options.length=0;
	dojo.byId('plloadingimg').style.display='';
	dojo.xhrGet({
		url: oxoadmindir+"mediamanager/playlist.get.php",
		load: function(responseObject, ioArgs){
				dojo.byId('plloadingimg').style.display='none';
				if(responseObject==null){ this.error(); return; }
				selector.options[0] = new Option("Nuevo Playlist");
				selector.options[0].value = "new";
				selector.options[0].className = "";
				var initi = selector.options.length;
				for (var i = 0; i < responseObject.length; i++) {
					selector.options[initi+i] = new Option(responseObject[i].title);
					selector.options[initi+i].value = responseObject[i].id;
					selector.options[initi+i].className = responseObject[i].usertype;
				}
				selectPLList(selId);
				return responseObject;
			},
		error: function(response, ioArgs){
			console.log("ERROR LOADING PLAYLISTS");
			loadPLList();
			return response;
		},
		handleAs: "json"
	});
}
function selectPLList(id){
	console.log(id);
	id = id==null?lastplloaded:id;
	console.log(id);
	var selector = dojo.byId('playlistsselector');
	//var classnames = Array();
	for (var i = 0; i < selector.length; i++) {
		selector.options[i].selected = selector.options[i].value==id;
		//classnames.push(selector.options[i].className);
	}
	//selector.className = selector.options[selector.selectedIndex].className;
	//for (var i = 0; i < selector.length; i++) {
	//	selector.options[i].className=classnames[i];
	//}
}

function previewPL(){
	var newWindow=false;
	var previewId = "overpreview";
	if(isKeyDown(dojo.keys.CTRL)){
		newWindow=true;
		previewId += Math.round(Math.random()*10000);
		//previewId = Date();
	}
	
	if(!newWindow){
		var previewer = dojo.byId(previewId);
		previewer.style.display='';
	}else{
		var previewer = document.createElement('div');
		previewer.id = previewId;
		previewer.className = "overpreview";
		previewer.innerHTML = dojo.byId('overpreview').innerHTML.replace("overpreview","previewId");
		previewer.style.display='';
		previewer.style.top="40px";
		previewer.style.left="40px";
		document.body.appendChild(previewer);
		emptyPreviewer(previewer.id);
		makeOverpreviewerDragable(previewer);
		getPreviewerObj("previewcloser",previewId).onclick=function(){closePreview(previewId)};
	}
	
	var ps = getPageScroll();
	if(getElementTop(previewer)<ps[1]){
		previewer.style.top = (ps[1]+10)+"px";
	}

	var file = "playlist.previewnew.php";
	url = oxoadmindir+"mediamanager/"+file+"?previd="+previewId;
	console.log(url);
	
	canShowPreview=true;
	emptyPreviewer(previewId);
	//getPreviewerObj("previewtitle",previewId).innerHTML = getLoadingHTML();
	var form = dojo.byId('plform');
	
	dojo.xhrPost({
		url: url,
		form: form,
		load: function(responseObject, ioArgs){
				if(responseObject==null){ this.error(); return; }
				if(canShowPreview){
					if(responseObject.previewtitle!=null){
						getPreviewerObj("previewtitle",previewId).innerHTML = responseObject.previewtitle;
					}
					/*if(responseObject.previewcode!=null){
						getPreviewerObj("previewcode",previewId).style.display='';
						getPreviewerObj("previewcode",previewId).innerHTML = responseObject.previewcode;
					}else{
						getPreviewerObj("previewcode",previewId).style.display='none';
					}*/
					if(responseObject.previewbuttons!=null){
						getPreviewerObj("previewbuttons",previewId).style.display='';
						getPreviewerObj("previewbuttons",previewId).innerHTML = responseObject.previewbuttons;
					}else{
						getPreviewerObj("previewbuttons",previewId).style.display='none';
					}
					getPreviewerObj("previewpanels",previewId).style.display='none';
					if(responseObject.previewpanelscontents!=null){
						getPreviewerObj("previewpanelscontents",previewId).style.display='';
						getPreviewerObj("previewpanelscontents",previewId).innerHTML = responseObject.previewpanelscontents;
					}else{
						getPreviewerObj("previewpanelscontents",previewId).style.display='none';
					}
					if(responseObject.buildfunction!=null){
						responseObject.buildfunction();
					}
				}
				return responseObject;
			},
		error: function(response, ioArgs){
			console.log("ERROR LOADING EDITOR",response, ioArgs);
			getPreviewerObj("previewtitle",previewId).innerHTML = getLoadingErrorHTML(true);
			//editRecord(lastediturl);
			return response;
		},
		handleAs: "json"
	});
}





function updatePL(){
	PLedited=true;
	writePLMediaData();
	var msgbox = dojo.byId("toolmsg");
	msgbox.style.display='none';
}
function setPLTitle(title){
	PLedited=true;
	pltitleval=title;
	if(dojo.byId('pltitle').value!=title){
		dojo.byId('pltitle').value=title;
	}
}
function setPLid(nid){
	plid=nid;
	//lastplloaded = nid;
	dojo.byId('plid').value=nid;
}
function setPLItemData(id,datatype,value){
	PLedited=true;
	mediaData[id][datatype] = value;
}
function writePLMediaData(){
	var listdiv = dojo.byId('plmedia');
	listdiv.innerHTML = "";
	dojo.byId("pltitle").value = pltitleval;
	
	var showList=Array();
	for(var code in mediaData){
		if(mediaData[code]!=null && selectedMedia[code]) 
			showList[mediaData[code].order]=mediaData[code];
	}
	if(showList.length==0){
		var newOpt = document.createElement("div");
		newOpt.innerHTML = "Seleccione al menos un elemento";
		newOpt.className = "selectedMedia";
		listdiv.appendChild(newOpt)
		return;
	}
	var itemcount = 0;
	for(var i in showList){
		itemcount++;
		var icode = showList[i].value;
		var newOpt = document.createElement("div");
		var hdata = "";
		
		hdata += "<input type=\"hidden\" name=\"files[]\" value=\""+icode+"\">";
		
		//hdata += "<div class=\"data\">";
		
		hdata += "	<div id=\"itempl"+icode+"\" class=\"itemdata\" style=\"display:none;\">";
		
		hdata += "	<div class=\"inputlabel\">T&iacute;tulo</div>";
		hdata += "	<input type=\"text\" class=\"input\" name=\"titles[]\" value=\""+showList[i].title+"\" onchange=\"setPLItemData('"+icode+"','title',this.value)\" />";
		hdata += "<div style=\"clear:both;\"></div>";
		hdata += "	<div class=\"inputlabel\">Creador</div>";
		hdata += " 	<input type=\"text\" class=\"input\" name=\"creators[]\" value=\""+showList[i].creator+"\" onchange=\"setPLItemData('"+icode+"','creator',this.value)\" />";
		hdata += "<div style=\"clear:both;margin-bottom:3px;\"></div>";
		hdata += "	<div class=\"inputlabel\">Notas</div>";
		hdata += "<div style=\"clear:both;\"></div>";
		hdata += "	<textarea name=\"notes[]\" onchange=\"setPLItemData('"+icode+"','notes',this.value)\" >";
		hdata += showList[i].notes;
		hdata += "</textarea>";
		hdata += "	<br /> <input type=\"button\" value=\"ok\" onclick=\"closePLItem('"+icode+"');\" />";
		hdata += "</div>";
		
		hdata += "<div class=\"link edit\" onclick=\"editPLItem('"+icode+"');\"></div >";
		
		hdata += "<div class=\"mediatitle\" id=\"dragtitle"+i+"\" onmousedown=\"dragMedia('"+icode+"');return false;\"";
//		hdata += "onmouseover=\"showThumbnails('"+oxoadmindir+"mediamanager/media.preview.php?id="+mediaData[i].value+"');\" ";
//		hdata += "onmouseout=\"showThumbnails();\" onclick=\"showThumbnails();\"";
//		hdata += "ondblclick=\"showMediaPreview('"+mediaData[i].value+"')\" >";
		hdata += "onselectstart=\"return false;\"";
		
		if(showList[i].showdata!=null) hdata += " onmouseover=\"showTooltip('"+showList[i].showdata+"');\" ";
		hdata += " onmouseout=\"showTooltip();\"  >";
		hdata += showList[i].title+" - "+showList[i].creator+"</div>";

		hdata += "<div class=\"link delete\" onclick=\"deleteItem('"+icode+"');\"></div>";

		hdata += "<div style=\"clear:both;\"></div>";
		
		
		//hdata += "<div id=\"linesep"+i+"\" class=\"linesep\" style=\"display:none;\"></div>";
		newOpt.myNum = icode;
		newOpt.id = "drag"+icode;
		newOpt.innerHTML = hdata;
		newOpt.className = "selectedMedia "+(itemcount%2==0?'par':'impar');
		/*newOpt.onmousedown=function(){
			dragMedia(this.myNum);
		}*/
		var newSep = document.createElement("div");
		newSep.id = "linesepdrag"+icode;
		newSep.className = "linesep";
		newSep.style.display='none';
		newSep.innerHTML = "<div class=\"mchoosepos\"></div>";
		listdiv.appendChild(newSep);
		listdiv.appendChild(newOpt);
	}
	var newSep = document.createElement("div");
	newSep.id = "lineseplast";
	newSep.className = "linesep";
	newSep.style.display='none';
	newSep.innerHTML = "<div class=\"mchoosepos\"></div>";
	listdiv.appendChild(newSep);
}
function editPLItem(PLitem){
	if(savingPL) return null;
	var editors = dojo.query(".itemdata");
	for(var i=0;i<editors.length;i++){
		editors[i].style.display="none";
	}
	var editor = dojo.byId("itempl"+PLitem);
	if(editor!=null){
		editor.style.display="block";
	}
}
function closePLItem(PLitem){
	var editor = dojo.byId("itempl"+PLitem);
	if(editor!=null){
		editor.style.display="none";
	}
	writePLMediaData();
}








/////////////////////////
/* DRAG */
/////////////////////////
var whodraggin;
var toplace;
function dragMedia(who){
	if(savingPL) return null;
	whodraggin = who;
	var node1 = dojo.byId("drag"+who);
	var xPos = getElementLeft("drag"+who);
	var nH = getElementHeight("drag"+who);
	var nW = getElementWidth("drag"+who);

	var newOpt = document.createElement("div");
	var hdata = "";
	hdata = node1.innerHTML;
	
	newOpt.id = "dragged";
	newOpt.innerHTML = "<div class=\"overlock\"></div>"+hdata;
	//newOpt.className = "selectedMedia";
	
	node1.className += " moving";
	//node1.style.height = (nH-4)+"px";
	
	var container = dojo.byId('dragcontainer');
	while(container.hasChildNodes()){
		container.removeChild(container.lastChild);
	}
	container.appendChild(newOpt);
	container.style.display='';
	container.style.position='absolute';
	container.style.left=xPos+"px";
	container.style.width=nW+"px";
	mouse_down('dragcontainer');
	container.onmouseup=function(){
		stopDrag();
	}
}
function stopDrag(){
	if(savingPL) return null;
	var container = dojo.byId('dragcontainer');
	container.innerHTML = "";
	container.style.top = "0px";
	container.style.display='none';
	mouse_up();
	swapMedias(whodraggin,toplace);
	writePLMediaData();
}
var x;
var y;
var element;
var being_dragged = false;
function mouser(event){
	if(event.offsetX || event.offsetY) {
		/*x=event.offsetX;
		y=event.offsetY;*/
		x=event.x;
		y=event.y;
	} else {
		x=event.pageX;
		y=event.pageY;
	}
	if(being_dragged == true) {
		var mainph = dojo.byId('mainph');
		var nST = mainph.scrollTop;
		var ypos = (y-8);
		dojo.byId(element).style.top = ypos +'px';
		var nPos = 0;
		var found=false;
		txt = "";
		var mitems = dojo.query(".selectedMedia");
		for(var i=0;i<mitems.length;i++){
			var mitem = mitems[i];
			var ln = getElementTop(mitem.id);
			var lno = dojo.byId("linesep"+mitem.id);
			if(nST+ypos<ln+7 && !found){
				found=true;
				nPos = i;
				lno.style.display='';
			}else{
				lno.style.display='none';
			}
		}
		var lastlno = dojo.byId("lineseplast");
		lastlno.style.display=!found?'':'none';
		if(!found){
			toplace = "last";
		}else{
			toplace = mitems[nPos].myNum;
		}
	}
}
dojo.connect(document,"onmousemove",null,"mouser");
function mouse_down(ele_name) {
	being_dragged = true;
	element = ele_name;
	dojo.byId(element).style.top = (y-8) +'px';
//	dojo.byId(element).style.left = (x-15) +'px';
	dojo.byId(element).style.cursor = 'pointer';
}
function mouse_up() {
	being_dragged = false;
	dojo.byId(element).style.top = (y-8) +'px';
//	dojo.byId(element).style.left = (x-15) +'px';
	dojo.byId(element).style.cursor = 'auto';
}

function swapMedias(movingid,selid){
	if(savingPL) return null;
//	if(movingid!=selid && mediaData[movingid]!=null && (selid=="last" || mediaData[selid]!=null)){
	if(movingid!=selid){
		if(selid!="last"){
			var fromOrd = mediaData[movingid].order;
			var toOrd = mediaData[selid].order;
			for(var code in mediaData){
				if(mediaData[code]!=null)
					if(mediaData[code].order>=toOrd) mediaData[code].order++;
			}
			mediaData[movingid].order = toOrd;
			mediaselcount++;
		}else{
			var toOrd=0;
			for(var code in mediaData){
				if(mediaData[code]!=null)
					toOrd = Math.max(toOrd,mediaData[code].order);;
			}
			mediaData[movingid].order = toOrd+1;
			mediaselcount=toOrd+1;
		}
	}
}

