// JavaScript Document
/*
                ,        ,         
               /(        )`        
               \ \___   / |        
               /- _  `-/  '        
              (/\/ \ \   /\        
              / /   | `    \       
              O O   ) /    |       
              `-^--'`<     '       
             (_.)  _  )   /        
              `.___/`    /         
                `-----' /          
   <----.     __ / __   \          
   <----|====O)))==) \) /====      
   <----'    `--' `.__,' \         
                |        |         
                 \       /       /\
            ______( (_  / \______/ 
          ,'  ,-----'   |          
          `--{__________)

 * BSDdaySH beta
 * desarrollado por Mara M. Greco [dnzl] para BSDday Argentina 2010 http://bsdday.org
 * web     http://www.bizarredesign.com.ar
 * mail    dnzl@bizarredesign.com.ar
 * twitter @lznd
 * Trabajo bajo licencia Creative Commons 2.5 Argentina. ( http://creativecommons.org/licenses/by/2.5/ar/ )
 * Usted es libre de copiar, distribuir, exhibir, y ejecutar la obra
 * bajo la condición de atribuir la obra a su autora original incluyendo su nombre o nick, y la url a bizarredesign.com.ar o a bsdday.org
 
*/
//	var scr			=setInterval("$(document).scrollTop($(document).height());",500);
//        var root                        = new Array('<span class="azul">.</span>','<span class="azul">..</span>','about.txt','call_for_papers.txt','help.txt','registration.txt','schedule.txt','speakers.txt','talks.txt');
        var root                        = new Array('<span class="azul">.</span>','<span class="azul">..</span>','about.txt','call_for_papers.txt','schedule.txt','talks.txt','registration.txt','help.txt');
        var chyd                        = new Array('talks.txt');
	var commands	= new Array('ls','echo','clear','cat','cd','exit','whoami','help','rm','cp','touch');
//        var commands    = new Array('ls','echo','clear','cat','cd','insc','exit','whoami','help','rm','cp','touch');
	var historial	= new Array();
	var hv			= 0;
	var dir			= root;
	var dirA			= '';
	var tab			= 0;
	var ctrl			= false;
	var n				= 0;
	var int			= false;
	var insc			= false;
	var inscSuccess= false;
	var intentos	= 0;
	var inscStep	= 0;
	var inscFields= new Array('First and Last name: ','E-mail: ','Male or Female (m or f): ','Birthday (yyyy-mm-dd): ','Company Organization: ','Charge: ','Country: ','Province: ','City: ','Put your Country:','Comments: ');
	var paises		= new Array({'code':'AR','name':'Argentina'},{'code':'BO','name':'Bolivia'},{'code':'BR','name':'Brasil'},{'code':'CL','name':'Chile'},{'code':'CO','name':'Colombia'},{'code':'ES','name':'Espa&ntilde;a'},{'code':'MX','name':'M&eacute;xico'},{'code':'PY','name':'Paraguay'},{'code':'PE','name':'Peru'},{'code':'UY','name':'Uruguay'},{'code':'00','name':'Otro'});
	var provincias	= new Array({'code':'00','name':'Ciudad Aut&oacute;noma de Buenos Aires'},{'code':'B','name':'Buenos Aires'},{'code':'X','name':'C&oacute;rdoba'},{'code':'S','name':'Santa fe'},{'code':'M','name':'Mendoza'},{'code':'T','name':'Tucum&aacute;n'},{'code':'E','name':'Entre R&iacute;os'},{'code':'A','name':'Salta'},{'code':'N','name':'Misiones'},{'code':'H','name':'Chaco'},{'code':'W','name':'Corrientes'},{'code':'G','name':'Santiago del Estero'},{'code':'Y','name':'Jujuy'},{'code':'J','name':'San Juan'},{'code':'R','name':'R&iacute;o Negro'},{'code':'P','name':'Formosa'},{'code':'Q','name':'Neuqu&eacute;n'},{'code':'U','name':'Chubut'},{'code':'D','name':'San Luis'},{'code':'K','name':'Catamarca'},{'code':'F','name':'La Rioja'},{'code':'L','name':'La Pampa'},{'code':'Z','name':'Santa Cruz'},{'code':'V','name':'Tierra del Fuego, Ant&aacute;rtida e Islas del Atl&aacute;ntico Sur'});
	function clearPrompt()		{ $('#cl').html('<span class="verde">bsddaysh $</span>'); $('#c').val('').focus(); }
	function getKey(key)		{ return (key==null)?event.keyCode:key.keyCode; }
	function htmlentities(s)	{ return s.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;"); }
	function getCommand()		{ var c=$('#c').val().split(' '); for(i=0;i<commands.length;i++) if(c[0]==commands[i]) return commands[i]; return false; }
	function getCommand2()		{ var c=$('#c').val().split(' '); return c[0]; }
	function showDir()			{ var r=''; for(i=0;i<dir.length;i++) r+='<p class="dir">'+dir[i]+'</p>'; return r; }
	function getArg()			{ var c=getCommand(); return a=$('#c').val().substr(c.length+1); }
	function loading()			{ $('#pts'+n).html($('#pts'+n).html()+'.'); }
	function getPaises()		{ var r='<div class="cont">'; for(i=0;i<paises.length;i++) r+='<p class="col">'+paises[i]['code']+' - '+paises[i]['name']+'</p>'; r+='<div class="fix"></div></div>'; return r; }
	function getProvincias(p){ var r='<div class="cont2">'; for(i=0;i<provincias.length;i++) r+='<p class="col">'+provincias[i]['code']+' - '+provincias[i]['name']+'</p>'; r+='<div class="fix"></div></div>'; return r; }
	function inscSubmit()		{
		if(intentos>0){
			$('#h').append('Try again? (y o n) '+htmlentities($('#c').val()));
			if($('#c').val()=='n'){  clearPrompt(); insc=false; inscStep=0; intentos=0; return false; }
			else if($('#c').val()!='y'){ $('#h').append('<p> error: '+htmlentities($('#c').val())+' invalid input'); $('#c').val('').focus(); return false; }
		}
		$('#h').append('<p>loading<span id="pts'+n+'">...</span></p>');
		int=setInterval("loading();",1000);
		$.ajax({type:'POST',url:'inscripcion.php',data:'s=submit',
			success:function(msg){
				var m='';
				if(msg=='ok'){
					$('#h').append('<p>Thanks for you registration!<br /> You will receive news about events in your inbox.</p>');
					clearPrompt(); insc=false; inscSuccess=true;
				}else{
					m=(msg=='')?'<p>Unespected error, like Kernl panic :(.</p>':'<p>'+msg+'</p>';
					if(intentos<3){
						$('#cl').html('Try again? (y o n)'); intentos++;
					}else{
						m+='<p>Try again later.</p>'; clearPrompt(); intentos=0; insc=false; $.ajax({type:'POST',url:'inscripcion.php',data:'s=clear'});
					}
					$('#h').append(m);
				}
				window.clearInterval(int);
				$('#c').val('').focus();
			} 
		}); 
	}
	
	$(document).keyup(function(eh){
		if(ctrl){
			var k=getKey(eh);
			switch(k){
				case 67: if(insc){ $.ajax({type:'POST',url:'inscripcion.php',data:'a=clear'}); $('#h').append('<p>'+inscFields[inscStep]+htmlentities($('#c').val())+'</p><p>^C</p>'); insc=false; inscStep=0; clearPrompt(); } break; 
				case 76: $('#h').html(''); $('#c').val('').focus(); break;
			}
		}
		ctrl=false;
	});
	
	$(document).bind('keydown',function(eh){
		var k=getKey(eh);
		if(k!=9) tab=0;
		var show=0;
		switch(k){
			case 38: if(hv>0) hv--; if(historial[hv]){ $('#c').val(historial[hv]); }else hv++; break; //key up
			case 40: if(hv<historial.length) hv++; if(historial[hv]) $('#c').val(historial[hv]); else hv--; break; //key down
			case 17: ctrl=true; break;
			case  9: //tab
				if(insc) return false;
				tab++; var c=$('#c').val(); var r=$('#h').html()+'<p><span class="verde">bsddaysh $</span> '+htmlentities($('#c').val())+'</p>';
				if(tab>1){
					tab=1;
					if(c.length){
						c=getCommand();
						if(c){ 
							if($('#c').val().length>c.length){
								var a=getArg(); var o=''; for(i=0;i<dir.length;i++) if(a==dir[i].substr(0,a.length)) o+='<p>'+dir[i]+'</p>'; if(o.length>0) $('#h').html(r+o);
							}else{
								r+=showDir(); $('#h').html(r);
							}
						}else{ 
							c=getCommand2(); var o=''; for(i=0;i<commands.length;i++){ if(c==commands[i].substr(0,c.length)) o+='<p>'+commands[i]+'</p>'; } if(o.length) $('#h').html(r+o); 
						}
					}else{ 
						for(i=0;i<commands.length;i++) r+='<p class="dir">'+commands[i]+'</p>'; $('#h').html(r); $('#c').val('').focus(); 
					}
				}else{
					if(c.length){
						c=getCommand();
						if(c)
							if(c==$('#c').val())
								$('#c').val(c+' ');
							else{
								var a=getArg(); var o=new Array(); for(i=0;i<dir.length;i++) if(a==dir[i].substr(0,a.length)) o[o.length]=dir[i];
								if(o.length==1) $('#c').val($('#c').val()+(o[0].substr(a.length)));
							}
						else{
							c=getCommand2(); var o=new Array(); for(i=0;i<commands.length;i++) if(c==commands[i].substr(0,c.length)) o[o.length]=commands[i]; if(o.length==1) $('#c').val(o[0]+' ');
						}
					}
				}

				return false;
			break;
		}
	});
	
	$(document).ready(function(){
		$('#c').focus();
		$(document).click(function(){ $('#c').focus(); });
		$('#consola').submit(function(){
		setTimeout("$(document).scrollTop($(document).height());",500);										
			var r=$('#h').html();
			historial[historial.length]=$('#c').val(); hv++;
			if(!insc){
				var c=getCommand();
				r +='<p><span class="verde">bsddaysh $</span> '+htmlentities($('#c').val())+'</p>';
				if(c || $('#c').val().length){
					switch(c){
						case 'cd':
							var a=getArg();
							if(a.length){
								if(a=='..'){ 
									dirA=''; dir=root;
								}else if(a=='.'){
									dirA=''; dir=root;
								}else{
									var f=false;
									for(i=0;i<dir.length;i++) 
									if(dir[i]==a) 
										if(dir[i].substr(dir[i].length-1)=='/'){ dirA=dir[i].substr(dir[i].length-1); dir=chyd; f=true; break; }
										else{ f=true; r+='<p>-bsddaysh: cd: '+htmlentities(a)+': Not a directory</p>'; } 
									if(!f) r+='<p>-bsddaysh: cd: '+htmlentities(a)+': No such file or directory</p>';
								}
							}
						break;
						case 'cat'		:
							var a=getArg();
							if(a.length){
								var f=false;
								for(i=0;i<dir.length;i++) if(dir[i]==a) if(dir[i].substr(dir[i].length-1)=='/'){ f=true; r+='<p>cat: '+a+': Is a directory</p>'; }else{ r+='<p id="file_'+n+'"></p>'; f=true; file=dirA+dir[i]; $.get(file,function(data){ $('#file_'+n).html(data); n++; }); }
								if(!f){ r+='<p>cat: '+htmlentities(a)+': No such file or directory</p>'; }
							}
						break;
						case 'clear'	: r=''; n=0; break;
						case 'echo'	 	: r=$('#h').html()+'<p><span class="verde">bsddaysh $</span> '+htmlentities($('#c').val())+'</p>'+htmlentities($('#c').val().substr(c.length)); break;
						case 'exit'		: $('.consola').html('<p>Thanks! come back soon!!!</p>'); break;
						case 'insc'		: if(inscSuccess){ r+='<p>-bsddaysh: Already registered!</p>'; }else{ insc=true; $('#cl').html(inscFields[0]); } break;
						case 'ls'	 	: r+=showDir(); break;
						case 'whoami'	: r+='<p>puffy</p>'; break;
						case 'help'		: r+='For help type: cat help.txt'; break;
						case 'rm'		: if(getArg()=='-fr /') r+='<p>-bsddaysh: yeah, sure, Im delete all now... :/ </p>'; else r+='<p>-bsddaysh: smart guy, uh?</p>'; break;
						case 'cp'		: r+='<p>-bsddaysh: copy your monkey face, bastard!</p>'; break;
						case 'touch'	: r+='<p>-bsddaysh: yeah, touch me this!</p>'; break;
						default			: r+='<p>-bsddaysh: '+htmlentities($('#c').val())+': command not found</p>'; break;
					}
				}
				$('#h').html(r);
			}else{

				if(inscStep=='submit'){ inscSubmit(); return false; }
				var aux=0;
				d=$('#c').val();
				r +='<p>'+inscFields[inscStep]+' '+htmlentities(d)+'</p>';
				var e=false;
				if(d.replace(/^\s*/, "").replace(/\s*$/, "").length<1){
					if(inscStep==4 || inscStep==5 || inscStep==10){ 
						switch(inscStep){ case 4: inscStep+=2; r+=getPaises(); break; case 5: inscStep++; r+=getPaises(); break; case 10: inscSubmit(); inscStep='submit'; return false; break; }
						$('#h').html(r); $('#cl').html(inscFields[inscStep]); return false;
					}else{
						e=true; r+='<p>error: please, put the required fields </p>'; $('#h').html(r);
					}
				}
				
				if(!e){
					if(inscStep==5) r+=getPaises();
					if(inscStep==6){
						if(d!='00'){
							var p=false;
							for(i=0;i<paises.length;i++) if(paises[i]['code']==d.toUpperCase()){ p=true; d=paises[i]['code']; if(i==0) r+=getProvincias(); else aux=10; break; }
							if(!p){ $('#h').html(r+'<p>error: '+htmlentities(d)+' invalid input</p>'); $('#c').val('').focus(); return false; }
						}else{
							aux=9;
						}
					}
					if(inscStep==7){
						if(d=='00'){ 
							aux=10; 
						}else{
							var p=false;
							for(i=0;i<provincias.length;i++) if(provincias[i]['code']==d.toUpperCase()){ p=true; d=provincias[i]['code']; break; }
							if(!p){ $('#h').html(r+'<p>error: '+htmlentities(d)+' invalid input</p>'); $('#c').val('').focus(); return false; }
						}
					}
					if(inscStep==8) aux=10;
					inscStep++;
					$.ajax({type:'POST',url:'inscripcion.php',data:'s='+inscStep+'&d='+d,
						success:function(msg){
							if(msg=='ok'){
								$('#h').html(r); if(inscStep==11){ inscStep='submit'; inscSubmit(); return; } $('#cl').html(inscFields[inscStep]);
							}else{
								if(inscStep==2 && msg=='no') r+='<p>error: email '+htmlentities(d)+' already been entered</p>';
								else r+='<p>error: '+htmlentities(d)+' invalid input</p>';
								$('#h').html(r); inscStep--; 
							} 
						} 
					});
					
					if(aux) inscStep=aux;
				}
			}
			$('#c').val('').focus();
			return false;
		});
	});

