function System() {

	this.countCheckedItens = 0;
	this.selectedItens = new String();
	lastpage = "";
	this.dataimages = new Array();
	this.selectedImages = new String();

	this.check = function(checkbox) {		
		option = (checkbox.checked)?2:3;
		if (this.countCheckedItens>=0) {
			checkbox.checked?this.countCheckedItens++:this.countCheckedItens--;
		}		
		if (checkbox.checked) {				
			this.selectedItens += "*"+checkbox.value;					
		} else {					
			var aux = this.selectedItens;
			var position = aux.indexOf("*"+checkbox.value);
			var tam = aux.length;
			this.selectedItens = aux.substr(0,position)+aux.substr(position+2,tam-1);		
		}					
		if (this.countCheckedItens<0) this.countCheckedItens = 0;
		checkbox.title = (checkbox.checked)?"Clique aqui para remover a seleção deste item":"Clique aqui para selecionar este item";
		interface.color(checkbox.parentNode.parentNode,option);
		$("statusmessage").innerHTML = (this.countCheckedItens!=0)?this.countCheckedItens + " item(ns) selecionado(s)":"";		
		if ($("checkall").checked && checkbox.id!="checkall") $("checkall").checked = false;						
	}
	
	this.reset = function() {	
		this.selectedIndex = "";
		this.selectedItens = "";
		this.countCheckedItens =0;	
		this.dataimages = new Array();
		this.selectedImages = new String();
	}
	
	this.checkAll = function(checkbox) {	
		this.selectedItens = "";		
		table = tags(checkbox.parentNode.parentNode.parentNode,"input");
		checking = (table.item(0).checked)?true:false;		
		this.countCheckedItens = (checking)?0:this.countCheckedItens;		
		for(var i=1;i<table.length;i++) {		
			table.item(i).checked = !checking;		
			if (table.item(i).type=="checkbox" && table.item(i).checked != checking) {				
				table.item(i).checked = checking;
				this.check(table.item(i));
			}		
		}		
		$("checkall").checked = checking;	
	}
	
	this.excluir = function() {	
		
		if (this.selectedItens.length>0) {		
			parans = "";
			parans = ajax.addParameter(parans,"itens",this.selectedItens);			
			ajax.Request({
				url:"delete."+$("param_garbage").value+".php",
				div:"statusbar",
				method:"POST",
				pack:$("param_pack").value,
				parameters:parans
			});		
		} else {		
			interface.showWindow({				
				message:"Não há itens selecionados!",
				className:"information",
				shadow:true								
			});			
		}	
	}
	
	this.save = function() {		
		ajax.Request({
			url:$("dataform").getAttribute("action"),
			pack:$("param_pack").value,
			method:"POST",
			div:"statusbar",
			parameters:this.getInputs("dataform")			
			});				
	}
	
	this.storeLastModified = function(el) {		
		lastpage = $(el).innerHTML;
	}
	
	this.restoreLastModified = function(el) {	
		$(el).innerHTML = lastpage;
	}
	
	this.getInputs = function(myform) {		
		checkboxes = new Array();		
		frm = $(myform);		
		inputs = tags(frm,"input");		
		parans ="";				
		for(var i=0;i<inputs.length;i++) {			
			el = inputs.item(i);		
			if (el.type=="text" || el.type=="hidden") {				
				parans = ajax.addParameter(parans,el.name,el.value);			
			}			
			if (el.type=="checkbox") {			
				if (el.checked) {
					if (checkboxes[el.name]) {						
						checkboxes[el.name]+="[*item*]"+el.value;					
					} else {						
						checkboxes[el.name]=el.value;					
					}								
				} else {				
					if (!checkboxes[el.name]) {						
						checkboxes[el.name] = "";					
					}				
				}				
			}			
		}		
		selects = tags(frm,"select");	
		for(var i=0;i<selects.length;i++) {			
			el = selects.item(i);			
			parans = ajax.addParameter(parans,el.name,el.options[el.selectedIndex].value);						
		}	
		textareas = tags(frm,"textarea");	
		for(var i=0;i<textareas.length;i++) {			
			el = textareas.item(i);			
			parans = ajax.addParameter(parans,el.name,el.value);				
		}		
		for(var prop in checkboxes) {		
			parans = ajax.addParameter(parans,prop,checkboxes[prop]);					
		}			
		return parans;		
	}
	
	this.changePerfil = function(obj) {	
		key = obj.options[obj.selectedIndex].value;
		keytoken = $("token").value;
		if (key!=0) {
			window.top.location = "?key="+key+"&token="+keytoken;
		}	
	}
	
	this.newMessage = function() {		
		ajax.Request({
			url:"form.Messages.php",
			div:"meio",
			cache:true,
			pack:"Classes.System"
		});	
	}
	
	this.initUsersModule = function() {		
		ajax.Request({
			url:"init.Users.php",
			div:"meio",
			cache:false,
			pack:"Classes.System"
		});	
	}
	
	this.initDataImage = function() {		
		interface.shadow();
		utils.showElement("splashscreen");
		utils.showElement("loading_dataimage");		
		ajax.Request({
			url:"init.DataImage.php",
			div:"splashscreen",
			cache:true,
			assync:true,
			pack:"Classes.System"
		});	
	}
	
	this.listUsers = function() {		
		ajax.Request({
			url:"list.Users.php",
			div:"meio",
			pack:"Classes.System"
		});	
	}
	
	this.selectPage = function(obj) {	
		selectedPage = obj.options[obj.selectedIndex].value;		
		if (selectedPage!=0 && selectedPage!=$("param_page").value) {		
			parans = "";
			parans = ajax.addParameter(parans,"order",$("param_order").value);
			parans = ajax.addParameter(parans,"orderby",$("param_orderfield").value);
			parans = ajax.addParameter(parans,"page",selectedPage);		
			ajax.Request({
					url:$("param_url").value,
					div:$("param_div").value,
					pack:$("param_pack").value,
					parameters:parans					
				});		
		}		
	}
	
	this.selectImagePage = function(obj) {	
		selectedPage = obj.options[obj.selectedIndex].value;		
		if (selectedPage!=0 && selectedPage!=$("image_param_page").value) {		
			parans = "";
			parans = ajax.addParameter(parans,"order",$("image_param_order").value);
			parans = ajax.addParameter(parans,"orderby",$("image_param_orderfield").value);
			parans = ajax.addParameter(parans,"page",selectedPage);		
			parans = ajax.addParameter(parans,"mine",$("image_param_mine").value);			
			ajax.Request({
					url:$("image_param_url").value,
					div:$("image_param_div").value,
					pack:$("image_param_pack").value,
					assync:true,
					parameters:parans					
				});		
		}		
	}
	
	this.refreshPage = function() {	
		parans = "";
		parans = ajax.addParameter(parans,"page",$("param_page").value);
		parans = ajax.addParameter(parans,"order",$("param_order").value);
		parans = ajax.addParameter(parans,"orderby",$("param_orderfield").value);			
		ajax.Request({
				url:$("param_url").value,
				div:$("param_div").value,
				pack:$("param_pack").value,
				parameters:parans					
			});
	
	}
	
	this.refreshAssync = function() {	
		parans = "";
		parans = ajax.addParameter(parans,"page",$("param_page").value);
		parans = ajax.addParameter(parans,"order",$("param_order").value);
		parans = ajax.addParameter(parans,"orderby",$("param_orderfield").value);			
		ajax.Request({
				url:$("param_url").value,
				div:$("param_div").value,
				pack:$("param_pack").value,
				assync:true,
				parameters:parans					
			});	
	}
	
	this.nextPage = function() {	
		$page = $("param_nextpage").value;		
		if ($page=="") {		
			interface.showWindow({
				message:"Não há uma próxima página!",
				className:"error",
				shadow:true
			});		
		} else {			
			parans = "";
			parans = ajax.addParameter(parans,"order",$("param_order").value);
			parans = ajax.addParameter(parans,"orderby",$("param_orderfield").value);
			parans = ajax.addParameter(parans,"page",$("param_nextpage").value);			
			ajax.Request({
					url:$("param_url").value,
					div:$("param_div").value,
					pack:$("param_pack").value,
					parameters:parans					
				});			
		}	
	}
	
	this.previousPage = function() {	
		$page = $("param_previouspage").value;		
		if ($page=="") {			
			interface.shadow();
			interface.showWindow({
				message:"Não há uma Página Anterior!",
				className:"error",
				shadow:true
			});		
		} else {			
			parans = "";
			parans = ajax.addParameter(parans,"order",$("param_order").value);
			parans = ajax.addParameter(parans,"orderby",$("param_orderfield").value);
			parans = ajax.addParameter(parans,"page",$("param_previouspage").value);		
			ajax.Request({
					url:$("param_url").value,
					div:$("param_div").value,
					pack:$("param_pack").value,
					parameters:parans					
				});			
		}	
	}
	
	this.nextImagePage = function() {	
		$page = $("image_param_nextpage").value;		
		if ($page=="") {		
			alert("Não há uma próxima página!");
		} else {			
			parans = "";
			parans = ajax.addParameter(parans,"order",$("image_param_order").value);
			parans = ajax.addParameter(parans,"orderby",$("image_param_orderfield").value);
			parans = ajax.addParameter(parans,"page",$("image_param_nextpage").value);			
			parans = ajax.addParameter(parans,"mine",$("image_param_mine").value);			
			ajax.Request({
					url:$("image_param_url").value,
					div:$("image_param_div").value,
					pack:$("image_param_pack").value,
					assync:true,
					parameters:parans					
				});			
		}	
	}
	
	this.previousImagePage = function() {	
		$page = $("image_param_previouspage").value;		
		if ($page=="") {			
			alert("Não há uma Página Anterior!");		
		} else {			
			parans = "";
			parans = ajax.addParameter(parans,"order",$("image_param_order").value);
			parans = ajax.addParameter(parans,"orderby",$("image_param_orderfield").value);
			parans = ajax.addParameter(parans,"page",$("image_param_previouspage").value);		
			parans = ajax.addParameter(parans,"mine",$("image_param_mine").value);			
			ajax.Request({
					url:$("image_param_url").value,
					div:$("image_param_div").value,
					assync:true,
					pack:$("image_param_pack").value,
					parameters:parans					
				});			
		}	
	}
	
	this.setOrderField = function(obj) {				
		path = config.properties.pathIcons;
		$("param_order").value = ($("param_order").value=="true") ? "false":"true";
		obj.src = ($("param_order").value=="false") ? (path+config.images.orderAsc):(path+config.images.orderDesc);				
	}
	
	this.newUser = function() {							
		this.storeLastModified("meio");			
		ajax.Request({
			url:"form.Users.php",
			div:"meio",
			cache:true,
			pack:"Classes.System"
		});	
	}
	
	this.viewPermissions = function(id) {
		parans = "";		
		parans = ajax.addParameter(parans,"id",id);		
		this.storeLastModified("meio");		
		ajax.Request({
			url:"view.Permissions.php",
			div:"meio",
			parameters:parans,
			pack:"Classes.System"
		});	
	}
	
	this.selectImage = function(n) {	
		if (!$("image_selected"+n)) {
			imagem = $("image"+n);
			div = document.createElement("div");
			div.id = "image_selected"+n;
			div.title= "Clique para remover a imagem da área de seleção";
			div.className = "data_foto_container";
			div.innerHTML = '<img src="'+imagem.src+'" alt="'+imagem.alt+'" name="'+imagem.name+'" id="selecimage'+n+'" onclick="system.removeImageSelected('+n+')" />';
			
			$("selected_container").appendChild(div);			
			this.setSelectedImages(n);
			
		} else {		
			alert("Esta imagem já foi selecionada!");		
		}	
	}
	
	this.removeImageSelected = function(n) {		
		if (confirm("Deseja remover esta imagem da área de seleção?")) {		
		obj = $("image_selected"+n);
		$("selected_container").removeChild(obj);	
		this.unsetSelectedImages(n);		
		}
	}
	
	this.setSelectedImages = function(n) {	
		
		n = ""+n;
		this.dataimages[n] = n;			
		this.buildArrayImages();		
	
	}
	
	this.unsetSelectedImages = function(n) {	
		delete this.dataimages[n];	
		this.buildArrayImages();					
	} 
	
	this.buildArrayImages = function() {	
		var imagens = "";	
		for(indice in this.dataimages) {		
			imagens += (imagens.length==0) ? this.dataimages[indice]:"[*item*]"+this.dataimages[indice];		
		}			
		this.selectedImages = imagens;
		
	} 
	
	this.showUploadArea = function() {	
		$("dataimage_upload").className = "selected";		
		$("datafotos").innerHTML = "";
		utils.showElement("upload_area");			
		interface.selectModule($("dataimage_upload"));	
	} 
		
	this.uploadBanner = function(obj) {		
		tags(obj.parentNode,"img").item(0).className="";	
		obj.className="ocult";
		upload = document.createElement("input");		
		upload.type="file";
		upload = obj;
		upload.name="banner";		
		$("uploadbanner").appendChild(obj);	
		$("uploadbanner").submit();		
		upload.style.visibility="hidden";
		$("uploading").value = true;			
			
	}
	
	this.addNewImage = function() {		
		if ($("hide_info_uploaded_image").value!="") {
			if (!confirm("Deseja descartar os dados atuais?")) {				
				return false;			
			}
		}	
		$("dataform_image").reset();		
		this.abortImage();	
	} 
	
	this.abortImage = function() {	
		$("hide_info_uploaded_image").value = "";
		$("uploaded_image").src = "#";
		$("uploaded_image").className = "ocult";
		$("image_picker").disabled = false;
		$("descartar_image").style.display="none";		
	} 
	
	this.saveImage = function() {	
	
		 if ($("uploading").value=="true") {			
			alert("Aguarde a visualização da imagem!");			
			return false;		
		}	 
		if ($("hide_info_uploaded_image").value=="") {			
			alert("Por favor envie uma imagem!");			
			return false;		
		} 	
		utils.hideElement("upload_area");
		utils.showElement("loading_dataimage");	
		
		ajax.Request({
			url:"save.Fotos.php",
			div:"nothing",
			pack:"Classes.System",
			parameters:this.getInputs("dataform_image"),
			assync:true,
			method:"post"
			});
	} 
	
	this.getDataImages = function(mine) {
		
		this.selectedImages = "";
		this.dataimages = new Array();
		
		if ($("upload_area")) {
			utils.hideElement("upload_area");
		}
		if ($("datafotos")) {
			utils.hideElement("datafotos");
		}
		
		utils.showElement("loading_dataimage");	
		
		parans = "";
		parans = ajax.addParameter(parans,"mine",mine);
		ajax.Request({
			url:"list.Images.php",
			div:"datafotos",
			pack:"Classes.System",
			parameters:parans,
			assync:true,
			method:"post"
			});
	
	
	}	
	
	this.ConfirmSelectionImages = function() {
		
		if (this.selectedImages!="") {
			if (confirm("Deseja associar as imagens selecionadas!")) {
			
				imagens = $("selected_container");
				arrayimg = tags(imagens,"img");
				
				novadiv = document.createElement("div");
				
				for(var indice=0;indice<arrayimg.length;indice++) {
				
					imagem = arrayimg[indice];
					div = document.createElement("div");
					div.id = "image_selected_confirmed"+indice;
					div.title= "Clique para remover a imagem";
					div.className = "data_foto_container";
					div.innerHTML = '<img src="'+imagem.src+'" alt="'+imagem.alt+'" name="'+imagem.name+'" id="selecimage'+indice+'" onclick="system.removeImageConfirmed('+indice+')" />';
					
					novadiv.appendChild(div);	
							
				}
				
				$("container_myimages").innerHTML = novadiv.innerHTML;				
				$("myimages").value = this.selectedImages;
				
				interface.unshadow();
				utils.hideElement("splashscreen");
			
			}
		} else {
		
			alert("Selecione pelo menos uma imagem!");
			
		}
	
	}
	
	this.removeImageConfirmed = function(n) {		
		if (confirm("Deseja remover esta imagem?")) {		
			$("container_myimages").removeChild($("image_selected_confirmed"+n));	
			var imagens = $("myimages").value;
			imagens = imagens.split("[*item*]");
			if (imagens.length>1) {
				myimage = "";
				for(indice in imagens) {	
					if (indice!=n) {
						myimage += (myimage=="") ? imagens[indice]:"[*item*]"+imagens[indice];		
					}
					
				}
			} else {
			
				myimage = "";
			
			}
									
			$("myimages").value = myimage;	
			
			if ($("myimages").value=="") {
								
				$("container_myimages").innerHTML = 'Nenhuma imagem selecionada  <a href="javascript:void(0)" onclick="system.initDataImage()" title="Adicionar imagens">Adicionar imagens </a>'
			
			}
			
		}	
				
	}
	
	this.removeBanner = function() {		
		if (confirm("Deseja remover esta imagem?")) {		
		
				$("container_upload").innerHTML = '<input id="image_picker" name="image_picker" onchange="system.uploadBanner(this)" type="file"><img src="Imagens/loadbar.gif" id="loadingbar" alt="carregando..." title="carregando" class="ocult">';
			
			
		}	
				
	}
		
}

var system = new System();
