package eu.dnetlib.client.shared;

import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.NodeList;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.FileUpload;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.VerticalPanel;

public class NewJSPUpload {

	private FileUpload upload;
	private VerticalPanel vp = new VerticalPanel();
	private HTML html;
	private String src;
	private String size;
	private String name;
	private String type;
	private String initialHtmlText;
	

	public NewJSPUpload(final String uploadId, final String fileId) {
		initialHtmlText="<div id='" + fileId + "'>"
		// + "	<li class='no-items'>(no files uploaded yet)</li>"
				+ "</div>";
		upload = new FileUpload();
		upload.getElement().setId(uploadId);
		upload.addChangeHandler(new ChangeHandler() {

			public void onChange(ChangeEvent arg0) {
				src=null;
				html.setHTML(initialHtmlText);
				traverseFiles(uploadId, fileId);
				getInfos();
//				int i=0;
				while(src==null){
//					i++;
		           

 					getsrc();
				}
//				System.out.println("I:: "+i );
			}
		});
		vp.add(upload);

		 
		Button b = new Button("save");
		b.addClickHandler(new ClickHandler() {

			public void onClick(ClickEvent arg0) {
				System.out.println("Clicked...... button");
				getInfos();
				getsrc();

//				VideoHtml v1 = new VideoHtml(src,type, null);
//				((HTML)vp.getWidget(3)).setHTML(v1.getVideoString());
				
//				String s=html.getHTML()+v1.getVideoString();
//				html.setText(s);
//				VideoHtml.displayplayer();
			}
		});
		// TODO add handlers
		html = new HTML(initialHtmlText);
		vp.add(html);
		vp.add(b);
		vp.add(new HTML(""));

	}

	public void getsrc() {
//		NodeList<Element> s = html.getElement().getElementsByTagName("source");
//		Element e = s.getItem(0);
//		String src = e.getAttribute("src");
//		this.src = src;
//		System.out.println( "\nsrc:\n" + src.substring(0, 20) + "\n");

		NodeList<Element> s = html.getElement().getElementsByTagName("div");

		for (int i = 0; i < s.getLength(); i++) {
			Element e = s.getItem(i);
			String id = e.getId();
			if (id.equals("src")) {
				
				this.src = e.getAttribute("src");
				System.out.println(" src:" + src.substring(0, 30));
				break;
			}  
		}
	}

	public void getInfos() {
		NodeList<Element> s = html.getElement().getElementsByTagName("div");

		for (int i = 0; i < s.getLength(); i++) {
			Element e = s.getItem(i);
			String id = e.getId();
			if (id.equals("size")) {
				this.size = e.getInnerHTML();
				System.out.println(" size:" + this.size);
			} else if (id.equals("name")) {
				this.name = e.getInnerHTML();
				System.out.println(" name:" + this.name);
			} else if (id.equals("type")) {
				this.type = e.getInnerHTML();
				System.out.println(" type:" + this.type);
			}
		}
	}

	public VerticalPanel getPanel() {
		return vp;

	}

	private native String traverseFiles(String s, String f) /*-{
															$wnd.traverseFilesNew(s,f);
															}-*/;

	private native String player() /*-{
									$wnd.alert('player');
															$wnd.displayPlayer();
															}-*/;
}
