var Dom = YAHOO.util.Dom;
var Anim = YAHOO.util.Anim;
var Evnt = YAHOO.util.Event;
var Json = YAHOO.lang.JSON;


var pocetUloadovatelnychSouboru = 3;

	function runningUloads(){
			if (Dom.getElementsByClassName('loading').length ==0){
				return false;
			} else {
				return true;
			}
		}

	function basename(path, suffix) {
		var basename = path.replace(/^.*[\/\\]/g, '');
		if (typeof(suffix) == 'string' && basename.substr(basename.length-suffix.length) == suffix) {
			basename = basename.substr(0, basename.length-suffix.length);
		}
		return basename;
	}
	
	function strstr( hstck, need, bool ) {
		var pos = 0;
		hstck += '';
		pos = hstck.indexOf( need );
		if( pos == -1 ){
			return false;
		} else{
			if( bool ){
				return hstck.substr( 0, pos );
			} else{
				return hstck.slice( pos );
			}
		}
	}

	function removeUploaded(e, uploadSession){
		
		if (uploadSession != "all"){
			//konfirmace pokud se soubor maze rucne ne treba v ramci poruseni podminek
			var confirmDelete = false;
			if (e!=null){
				Evnt.stopEvent(e)
				confirmDelete = true;
			};

			if (confirmDelete == true) {
				if (confirm('Odebrat soubor ?')){Dom.get('uploadLoadingBoxHolder').removeChild(Dom.get("upl"+uploadSession))}
			} else {
				if (Dom.get("upl"+uploadSession) != null){
						Dom.get('uploadLoadingBoxHolder').removeChild(Dom.get("upl"+uploadSession));					
					}
			}
		}

		var sessionHandler = {
			success: function(response){if (response.responseText.indexOf('ERR:')===0){alert('Chyba pri mazani zaznamu')}},
			failure: function(response){/*alert(response.responseText+" javaDead")*/},
			timeout: 10000
		}
			
		YAHOO.util.Connect.asyncRequest('POST', '/_system/upload_ajax.php', sessionHandler, '&remove='+uploadSession );

	}
	
	// drop loading Box
	function dropLoadingBox(uploadSession, fileName){
		
		//holder
		var loadingBox = document.createElement('div');
		Dom.addClass(loadingBox,'uploadLoadingBox');
		Dom.addClass(loadingBox,'loading');
		loadingBox.id = "upl"+uploadSession;
		Dom.get('uploadLoadingBoxHolder').appendChild(loadingBox);
	
		// close link
		var closer = document.createElement('a');
		Dom.addClass(closer,'cancelUploadButton');
	
		closer.title = "Odebrat Soubor";
		loadingBox.appendChild(closer);
		closer.href = "#";
		
		//name span
		var filenameSpan = document.createElement('span');
		loadingBox.appendChild(filenameSpan);
		filenameSpan.innerHTML = fileName;
		
		Evnt.addListener(closer, 'click', removeUploaded, uploadSession);

		
	}
	
	function upFormSubmit(){
		
		var formObject = Dom.get('kontaktUploadForm');
		// nastavim UploadSessionID a inicializuju formular
		var uploadSessionID = Math.floor(Math.random() * (50000000000 - 1 + 1)) + 1;
		Dom.get('uploadSessionId').value = uploadSessionID;
		YAHOO.util.Connect.setForm(formObject, true, true);		
				
		//rozparsuju nazev souboru
		var fileString = Dom.get('send_file').value;

		//ne vsecky prohlizece berou file.value jako celou cestu		
		fileString = basename(fileString);

		//dropnu si loading ...
		dropLoadingBox(uploadSessionID, fileString);
		
		//clearnu si form pro vsecky pripady
		
		// a hura na uload			
		var uploadHandler = {
			//responze po ukonceni uploadu
			upload: function(response) {
				//alert(response.responseText);
				if (strstr(response.responseText, '<b>Warning</b>')){
					alert("Chyba při uploadu souboru, zkontrolujte prosím zda má soubor menší velikost než 1MB")
					// Silence I Kill you !
					//removeUploaded(null, PhpResponse.uploadSessionId);
	
				} else {
					var PhpResponse = YAHOO.lang.JSON.parse(response.responseText);
						
					// chybka 	
					if (PhpResponse.msg.indexOf('ERR:')===0) {
						alert(PhpResponse.msg.substr(4));
						// Silence I Kill you !
						removeUploaded(null, PhpResponse.uploadSessionId);
						
					} else if (PhpResponse.msg.indexOf('ERAPACHE:')===0) {
						alert(PhpResponse.msg.substr(9));
						// Musim killnout vse protoze nemuzu killnout pouze ten jeden
						removeUploaded(null, PhpResponse.uploadSessionId);
						Dom.get('uploadLoadingBoxHolder').innerHTML = "";
						
					} else if (PhpResponse.msg.indexOf('OK:')===0) {
						
						if (Dom.get('upl'+PhpResponse.uploadSessionId) == null){
							removeUploaded(null, PhpResponse.uploadSessionId);
						} else {
							Dom.removeClass(Dom.get('upl'+PhpResponse.uploadSessionId), 'loading');
							Dom.addClass(Dom.get('upl'+PhpResponse.uploadSessionId), 'loaded');
						}
						
					} else {
						alert('Chyba při uploadu souboru');
					}
				}
			}
		};
		
		// odeslu request na avizovany formular
		YAHOO.util.Connect.asyncRequest('POST', '/_system/upload_ajax.php', uploadHandler );
				
	}

	function validateFiles(e){
		Evnt.stopEvent(e);
		
		var uploadsCount = Dom.getElementsByClassName('uploadLoadingBox').length;
		if (uploadsCount == pocetUloadovatelnychSouboru) {
			alert('Více souborů nelze přiložit.');
		} else if (Dom.get('send_file').value == "") {
			alert('Vyberte prosím soubor.');
		} else {
			upFormSubmit();	
		}
		
	}
	
	function setFakeFile(){
		Dom.get('fakeTitle').innerHTML = basename(Dom.get('send_file').value);
	}
	
	function uploadInit() {
		
		// formular na strance
		removeUploaded(null, "all");
		Evnt.addListener(Dom.get('kontakt_upload_btn'), 'click', validateFiles);
		Evnt.addListener(Dom.get('send_file'), 'change', setFakeFile);
		
		

	}
	
	Evnt.onDOMReady(uploadInit); 