/**
 * @author noehmeier-marcel
 */
function Profile(){
	this.cols = {};
	
	this.container;
	
	
	this.callProfileData = function(){
		var _obj = this;
		var option = {
			onComplete : function(data){
				_obj.getProfileForm(data.ret);
			}
		}
		new Json.Remote('user.php',option).send({
			session_id:	SID,
			action: 'getProfileData'
		});
	}
	
	this.getProfileForm = function(data){
		this.cols = data;
		
		//Die Tabelle
		var profileTable = document.createElement('table');
		//Für den BuggyIE den tbody!
		var profileBody = document.createElement('tbody');
		//alert('Spalten: '+this.cols.length+'\n');
		
		//Tabelle füllen
		for(var i = 0; i < this.cols.length; ++i){
			profileBody.appendChild(this.setRow(
				this.cols[i].name,
				this.cols[i].value,
				this.cols[i].type
			));
		}		
		profileTable.appendChild(profileBody);
		
		//Formular
		form = document.createElement('form');
		form.appendChild(profileTable);
		
		//Submitbutton
		sButton = document.createElement('button');
		form.appendChild(sButton);
		
		sButton.innerHTML = 'Speichern';
		if(document.all){
			sButton.setAttribute('type','button');
		}else{
			sButton.type = 'button';
		}		
		var _obj = this;		
		sButton.onclick = function(){
			_obj.saveProfileData(form);
		}		
		
		//Der container für die Daten
		container = $(document.createElement('div'));
		container.className = 'myProfile';
		//Der dragger und Header
		var dragger = document.createElement('div');		
		container.appendChild(dragger);
		container.appendChild(form);
		dragger.className = 'profileDragger';
		
		var dragOptions = {
			handle: dragger
		};
		container.makeDraggable(dragOptions);
		
		//Button zum schliessen
		var closeBtn = document.createElement('button');
		dragger.appendChild( closeBtn );
		
		closeBtn.innerHTML = 'X';
		if(document.all){
			closeBtn.setAttribute('type','button');
		}else{
			closeBtn.type = 'button';
		}
		closeBtn.onclick = function(){
			document.body.removeChild( container );
			_obj.container = '';
		}
		dragger.appendChild( document.createTextNode('Profil editieren:') );
		
		//Erst alten löschen
		if(typeof(this.container)!='undefined' && this.container!=''){
			document.body.removeChild(this.container);
		}
		//Und ab gehts! :)
		document.body.appendChild(container);
		
		this.container = container;
	}
	
	this.setRow = function(left,right,type){
		//alert("Left: "+left+"\nRight: "+right);
				
		var tdLeft = document.createElement('td');
		tdLeft.innerHTML = left;
		tdLeft.className = 'left';
		
		var tdRight = document.createElement('td');
		tdRight.className = 'right';
		
		if( type == 'select' ){
			
			var select = document.createElement('select');
			//alert('sName: '+right+'\n');
			select.name = right.sName;
			select.size = 1;
			var opt;
			
			//Wenn nichts ausgewählt wird
			opt = document.createElement('option');
			opt.value = '0';
			opt.appendChild( document.createTextNode('- Keine Auswahl -') );
			select.appendChild(opt);
			
			for(var i = 0; i < right.values.length; ++i){
				opt = document.createElement('option');
				if( right.values[i].id == right.sel ){
					opt.selected = true;
				}
				opt.value = right.values[i].id;
				opt.appendChild( document.createTextNode(right.values[i].name) );
				select.appendChild(opt);
			}
			tdRight.appendChild(select);
		}else{			
			if( right.value == null ){
				right.value = '';
			}
			if( right.name=='mail' || right.name=='username' ){
				//_input.readOnly = true;
				var _input = document.createElement('input');
				_input.disabled = true;
				_input.value = right.value;
				_input.name = right.name;
				tdRight.appendChild( _input );
			}else if( right.name=='birthday' ){
				tdRight.appendChild( this.getDaySelect(right.value[2]) );
				tdRight.appendChild( document.createTextNode('-') );
				tdRight.appendChild( this.getMonthSelect(right.value[1]) );
				tdRight.appendChild( document.createTextNode('-') );
				tdRight.appendChild( this.getYearSelect(right.value[0]) );
			}else{
				var _input = document.createElement('input');
				_input.value = right.value;
				_input.name = right.name;
				tdRight.appendChild( _input );
			}
			
		}
		
		var tr = document.createElement('tr');
		tr.appendChild(tdLeft);
		tr.appendChild(tdRight);
		
		return tr;
	}
	
	
	this.saveProfileData = function(form){
		var fe = form.elements;
		var deb = '';
		var data = [];
		var b = 0;
		//alert(fe.length);
		for(var e = 0; e < fe.length; ++e){
			//alert('e = '+fe[e].type);
			if( typeof(fe[e].type) != null ){
				if( fe[e].type == 'select-one' || fe[e].type == 'text' ){
					if(fe[e].name == 'year' || fe[e].name == 'month' || fe[e].name == 'day'){
						if(b==0){
							b=e;
							data[b] = {
								name: 'birthday',
								value: {}
							}
						}
						//alert(e+' - '+fe[e].name+' - '+fe[e].value);
						data[b].value[fe[e].name+''] = fe[e].value;
					}else{
						data[e] = {
							name: fe[e].name,
							value: fe[e].value
						};
					}
					//deb += 'Name: '+data[e].name+'\tValue: '+data[e].value+'\n\n';
				}
			}
		}
		//alert(deb);
		var _obj = this;
		var option = {
			onComplete : function(data){
				if( data.ret ){
					location.reload();
				}else{
					alert('Konnte Eingaben nicht sichern!');
				}
			}
		}
		new Json.Remote('user.php',option).send({
			session_id:	SID,
			action: 'saveProfileData',
			data: data
		});
	}
	
	
	this.getDaySelect = function(sel){
		return this.getDateSelect(1,32,'day',sel);
	}
	this.getMonthSelect = function(sel){
		return this.getDateSelect(1,13,'month',sel);
	}
	this.getYearSelect = function(sel){
		d = new Date();
		return this.getDateSelect(1920,d.getFullYear(),'year',sel);
	}
	
	this.getDateSelect = function(start,end,name,selectedValue){
		var s = document.createElement('select');
		s.name = name;
		var opt;
		
		opt = document.createElement('option');
		opt.value = 0;
		opt.appendChild(document.createTextNode('----'));
		s.appendChild(opt);
		
		
		
		for(var i = start; i < end; ++i){
			opt = document.createElement('option');
			if(i<10) i = '0'+i;
			opt.value = i;
			opt.selected = (i==selectedValue);
			opt.appendChild(document.createTextNode(i));
			s.appendChild(opt);
		}
		return s;
	}
}
