/*
 * ATANIS ELEMENTS JAVASCRIPT FRAMEWORKS
 * This file add new methods to Prototype Element Class
 * Copyright © ATANIS 2010 - version 2.0
 */

		Element.addMethods({
				gradientDown : function(element,step,hiding) {
					
					var gradientTimer;
					
					element = $(element);
									
					var cur_gradient = parseFloat($(element).getStyle('opacity'), 10);
					
					if(cur_gradient == 1) {
						
						clearInterval(gradientTimer);
					  	
						gradientTimer = setInterval( function() {
							
					  		var cur_gradient = parseFloat($(element).getStyle('opacity'), 10);
					  		
					  		if (cur_gradient == 0) {
						    	clearInterval(gradientTimer);
						    	if(hiding==true) $(element).hide();
						    } else {
						    	$(element).setOpacity(cur_gradient-step);
						    }	
					  	},50)
					}
					return element;
					
				}
			});
			
			
		Element.addMethods({
				gradientUp : function(element,step,hiding) {
					
					var gradientTimer2;
					
					element = $(element);
					
					if(hiding==true) $(element).show();
									
					var cur_gradient = parseFloat($(element).getStyle('opacity'), 10);
					
					if(cur_gradient == 0) {
						
						clearInterval(gradientTimer2);
					  	
						gradientTimer2 = setInterval( function() {
							
					  		var cur_gradient = parseFloat($(element).getStyle('opacity'), 10);
					  		
					  		if (cur_gradient == 1) {
						    	clearInterval(gradientTimer2);
						    } else {
						    	$(element).setOpacity(cur_gradient+step);
						    }	
					  	},50)
					}
					return element;
					
				}
			});
			
			
		Element.addMethods({
				gradientToggle : function(element,step) {
					
					element = $(element);
					
					if($(element.visible())) {
						
						$(element).gradientDown(step*2,true);
						
					} else {

						$(element).gradientUp(step,true);
					}	
					
					return element;
				}
								
			});
		
		
		
					
		
		Element.addMethods({
			gd : function(element,step,dest) {
				
				var gdTimer;
				
				element = $(element);
								
				var test_pos = parseInt($(element).getStyle('top'), 10);

				if(test_pos < dest) {
					clearInterval(gdTimer);
				  	
					gdTimer = setInterval( function() {
						
				  		var test_pos = parseInt($(element).getStyle('top'), 10);
				  		
				  		if (test_pos >= dest) {
					    	clearInterval(gdTimer);
					    } else {
					    	$(element).setStyle({top: test_pos + step + "px"});
					    }	
				  	},10)
				}
				return element;
				
			}
		});
		
		
		
		Element.addMethods({
			gu : function(element,step,dest) {
				
				var guTimer;
				
				element = $(element);
								
				var test_pos = parseInt($(element).getStyle('top'), 10);

				if(test_pos > dest) {
					clearInterval(guTimer);
				  	
					guTimer = setInterval( function() {
						
				  		var test_pos = parseInt($(element).getStyle('top'), 10);
				  		
				  		if (test_pos <= dest) {
					    	clearInterval(guTimer);
					    } else {
					    	$(element).setStyle({top: test_pos - step + "px"});
					    }	
				  	},10)
				}
				return element;
				
			}
		});
		
		
		Element.addMethods({
			enFat : function(element,step,dest) {
				
				var gwTimer;
				
				element = $(element);
								
				var test_pos = parseInt($(element).getStyle('width'), 10);

				if(test_pos < dest) {
					clearInterval(gwTimer);
				  	
					gwTimer = setInterval( function() {
					
						//alert(test_pos);	
				  		var test_pos = parseInt($(element).getStyle('width'), 10);
				  		
				  		if (test_pos >= dest) {
					    	clearInterval(gwTimer);
					    } else {
					    	$(element).setStyle({'width': test_pos + step + "px"});
					    }	
				  	},10)
				}
				return element;
				
			}
		});
		
		
		Element.addMethods({
			enFit : function(element,step,dest) {
				
				var gwTimer;
				
				element = $(element);
								
				var test_pos = parseInt($(element).getStyle('width'), 10);

				if(test_pos > dest) {
					clearInterval(gwTimer);
				  	
					gwTimer = setInterval( function() {
					
						//alert(test_pos);	
				  		var test_pos = parseInt($(element).getStyle('width'), 10);
				  		
				  		if (test_pos <= dest) {
					    	clearInterval(gwTimer);
					    } else {
					    	$(element).setStyle({'width': test_pos - step + "px"});
					    }	
				  	},10)
				}
				return element;
				
			}
		});
		
		
		
		// SET TOP
		// La Méthode qui t'envoie ou tu veux
		// Usage $(id).setTop(step, destination);
		Element.addMethods({
			setTop: function(element,step,dest) {
				
				var gwTimer;
				
				element = $(element);
								
				var position = Element.viewportOffset(element);
				var actual_top = position[1];
					
				
					// SET TOP DESCENDANT
					if(actual_top < dest) {
						clearInterval(gwTimer);
					  	
						gwTimer = setInterval( function() {
						
							var position = Element.viewportOffset(element);
							var actual_top = position[1];
					  		
					  		if (actual_top >= dest) {
						    	clearInterval(gwTimer);
						    } else {
						    	$(element).setStyle({'top': actual_top + step + "px"});
						    }	
					  	},10)
					  
					} else {
				
						  // SET TOP ASCENDANT
						clearInterval(gwTimer);
				  	
						gwTimer = setInterval( function() {
						
							var position = Element.viewportOffset(element);
							var actual_top = position[1];
					  		
					  		if (actual_top <= dest) {
						    	clearInterval(gwTimer);
						    } else {
						    	$(element).setStyle({'top': actual_top - step + "px"});
						    }	
					  	},10)
					  
					 }
				
				
				return element;
				
			}
		});
		
		
		
		
		// SET LEFT
		// La Méthode qui t'envoie ou tu veux
		// Usage $(id).setLeft(step, destination);
		Element.addMethods({
			setLeft: function(element,step,dest) {
				
				var gwTimer;
				
				element = $(element);
								
				var position = Element.viewportOffset(element);
				var actual_left = position[0];
	
				if(actual_left < dest) {
					// SET LEFT DESCENDANT
					clearInterval(gwTimer);
				  	
					gwTimer = setInterval( function() {
					
						var position = Element.viewportOffset(element);
						var actual_left = position[0];
				  		
				  		if (actual_left >= dest) {
					    	clearInterval(gwTimer);
					    } else {
					    	$(element).setStyle({'left': actual_left + step + "px"});
					    }	
				  	},10)
				  
				} else {
					
					// SET LEFT ASCENDANT
					clearInterval(gwTimer);
				  	
					gwTimer = setInterval( function() {
					
						var position = Element.viewportOffset(element);
						var actual_left = position[0];
				  		
				  		if (actual_left <= dest) {
					    	clearInterval(gwTimer);
					    } else {
					    	$(element).setStyle({'left': actual_left - step + "px"});
					    }	
				  	},10)
				
				}
				
				return element;
				
			}
		});
		
		
		
		
		
		Element.addMethods({
			enTall : function(element,step,dest) {
				
				var gwTimer;
				
				element = $(element);

				$(element).show();
							
				var test_pos = parseInt($(element).getStyle('height'), 10);

				if(test_pos < dest) {
					clearInterval(gwTimer);
				  	
					gwTimer = setInterval( function() {
					
						//alert(test_pos);	
				  		var test_pos = parseInt($(element).getStyle('height'), 10);
				  		
				  		if (test_pos >= dest) {
					    	clearInterval(gwTimer);
					    } else {
					    	$(element).setStyle({'height': test_pos + step + "px"});
					    }	
				  	},10)
				}
				return element;
				
			}
		});
		
		
		Element.addMethods({
			enSmall : function(element,step,dest) {
				
				var gwTimer;
				
				element = $(element);
								
				var test_pos = parseInt($(element).getStyle('height'), 10);

				if(test_pos > dest) {
					clearInterval(gwTimer);
				  	
					gwTimer = setInterval( function() {
					
						//alert(test_pos);	
				  		var test_pos = parseInt($(element).getStyle('height'), 10);
				  		
				  		if (test_pos <= dest) {
					    	clearInterval(gwTimer);
					    } else {
					    	$(element).setStyle({'height': test_pos - step + "px"});
					    }	
				  	},10)
				}
				return element;
				
			}
		});
		
		
	Element.addMethods({

		toggleFit : function(element,ref,step) {
			
			element = $(element);
			
			var test_pos = parseInt($(element).getStyle('width'), 10);
			
			if(test_pos >= ref) {
				$(element).enFit(step,0);
			}
			
			if(test_pos <= 0) {
				$(element).enFat(step,ref);
			}
			
			return element;
		}
		
	});
	
	
	Element.addMethods({

		toggleHeight : function(element,ref,step) {
			
			element = $(element);
			
			var test_pos = parseInt($(element).getStyle('height'), 10);
			
			if(test_pos >= ref) {
				$(element).enSmall(step,0);
			}
			
			if(test_pos <= 0) {
				$(element).enTall(step,ref);
			}
			
			return element;
		}
		
	});
			
			

			

