var animateDuration = 200; // Milliseconds
var transitionTime = 5000; // Milliseconds
var loaderHTML = "<span class=\"loader\">Carregando...</span>";
var marginWheel = 100;




/******************************************************************************
 * jqDnR - Minimalistic Drag'n'Resize for jQuery.
 *
 * Copyright (c) 2007 Brice Burgess <bhb@iceburg.net>, http://www.iceburg.net
 * Licensed under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 * 
 * $Version: 2007.08.19 +r2
 * Adaptado por Terra Networks - Equipe Webdev
 * Atualizado por Terra Networks - Equipe Arte Brasil 
 *
 ******************************************************************************/

(function($){
	$.fn.jqDrag=function(h,fDrag,fStop){return i(this,h,'d',fDrag,fStop);};
	$.fn.jqResize=function(h){return i(this,h,'r');};
	$.jqDnR={dnr:{},e:0,
		drag:function(v,fDrag){
			if(M.k == 'd') E.css({left:Math.max(Math.min(M.X+v.pageX-M.pX,E.parent().width() - E.width()),0),top:Math.max(Math.min(M.Y+v.pageY-M.pY,E.parent().height() - E.height()),0)});
			else E.css({width:Math.max(v.pageX-M.pX+M.W,0),height:Math.max(v.pageY-M.pY+M.H,0)});
			if (fDrag) fDrag();
			return false;
		},
		stop:function(fStop){E.css('opacity',M.o);$().unbind('mousemove').unbind('mouseup');if(fStop)fStop();}
	};
	var J=$.jqDnR,M=J.dnr,E=J.e,
	i=function(e,h,k,fDrag,fStop){
		return e.each(
			function(){h=(h)?$(h,e):e;
				h.bind('mousedown',{e:e,k:k},function(v){
					var d=v.data,p={};E=d.e;
					$("html").bind('dragstart', function(){return false;}).bind('selectstart', function(){return false;});

					// attempt utilization of dimensions plugin to fix IE issues
					if(E.css("position") != "absolute"){try{E.css("position","absolute");}catch(e){}
				}
				M={X:p.left||f('left')||0,Y:p.top||f('top')||0,W:f('width')||E[0].scrollWidth||0,H:f('height')||E[0].scrollHeight||0,pX:v.pageX,pY:v.pageY,k:d.k,o:E.css('opacity')};
				E.css({opacity:0.8});$().mousemove(function(v) { $.jqDnR.drag(v,fDrag) }).mouseup(function() { $.jqDnR.stop(fStop);$("html").unbind("dragstart").unbind("selectstart"); });
				return false;
			});
		});
	},
	f=function(k){return parseInt(E.css(k))||false;};
})(jQuery);





/******************************************************************************
 * Scrolling 2.0 - Terra Networks - Equipe Webdev
 * Atualizado por Terra Networks - Equipe Arte Brasil 
 * 2008
 * Modulo independente
 *
 * COMO UTILIZAR
 * 
 * Para utilizar o scrolling deve ser utilizada uma div com a classe scrolling
 *
 ******************************************************************************/

(function($) {

	$.fn.extend({

		// scrolling
		scrolling: function() {

			$(this).each(function(i) {
				var objScrolling = $(this);
				
				// Show combobox
				var combobox = objScrolling.parents(".combobox");
				if (combobox.size() > 0) {
					combobox.find(".scr-listvalues").show();
				}

				// Unbind wheel
				objScrolling.unmousewheel();
				
				var scr_innercontent = document.getElementById('scroll_conteudo');
				var divs = scr_innercontent.getElementsByTagName("li");
				scr_innercontent.style.width = ((divs.length * (195+17))-17) + "px";
				
				if (objScrolling.find(".scroll_conteudo").height() > objScrolling.height() || objScrolling.find(".scroll_conteudo").width() > objScrolling.width()) { // Scrolling
					if (objScrolling.find(".scr-scrollbar").size() == 0) {
						objScrolling.append("<div class=\"scr-scrollbar hide\">" +
												"<div class=\"scr-track\"><!-- --></div>" +
												"<div class=\"scr-bar\"><!-- --></div>" +
											"</div>" +
											"<div class=\"clear\"><!-- --></div>");
					}
		
					objScrolling.find(".scroll").addClass("content-scroll");

					// Reset position
					$(document).ready(function() {
						objScrolling.find(".scroll").get(0).scrollTop = 0;
						objScrolling.find(".scroll").get(0).scrollLeft = 0;
					});

					// Track
					objScrolling.find(".scr-track").unbind("click").click(function(e) {
						if (objScrolling.hasClass("scroll_horizontal")) { // Horizontal
							$(this).parents(".scrolling").scrollBarPosition(e.pageX, 0);
						} else { // Vertical
							$(this).parents(".scrolling").scrollBarPosition(e.pageY, 0);
						}
					});

					// Drag
					objScrolling.find(".scr-bar").jqDrag(null,
						function() {
							if (objScrolling.hasClass("scroll_horizontal")) { // Horizontal
								objScrolling.scrollBarPosition(objScrolling.find(".scr-bar").css("left").replace("px",""), 1);
							} else { // Vertical
								objScrolling.scrollBarPosition(objScrolling.find(".scr-bar").css("top").replace("px",""), 1);
							}
						}
					);

					// Wheel
					objScrolling.mousewheel(function(event, delta){
						wheelScroll(delta, this);
						return false;
					});

				} else { // No scrolling
					objScrolling.find(".scroll").removeClass("content-scroll");
					objScrolling.find(".scr-scrollbar").next().remove();
					objScrolling.find(".scr-scrollbar").remove();
				}

				// Hide combobox content
				if (combobox.size() > 0) {
					combobox.find(".scr-listvalues").hide();
				}
			});



			/*
			 * Functions
			 */
			/*
			
			 * PARAMETERS
			 * - selector (.scrolling)
			 */
			function getContentPosition(selector) {
				var objScrolling = $(selector);
				return objScrolling.hasClass("scroll_horizontal") ? objScrolling.find(".scroll").get(0).scrollLeft : objScrolling.find(".scroll").get(0).scrollTop;
			}

			/*
			 * PARAMETERS
			 * - selector (.scrolling)
			 */
			function wheelScroll(delta, selector) {
				objScrolling = $(selector);

				objScrolling.scrollContentPosition(getContentPosition(selector) + (marginWheel*delta*(-1)));
			}
		},



		/*
		 * Functions
		 */

		/*
		 * PARAMETERS
		 * - position (numeric)
		 * - selector (.scrolling)
		 * - flgDrag (0 - No drag / 1 - Drag)
		 */
		scrollBarPosition: function(position, flgDrag) {
			var objScrolling = $(this);
			var objBar = objScrolling.find(".scr-bar");
			var objContent = objScrolling.find(".scroll");
			
			if (objScrolling.hasClass("scroll_horizontal")) { // Horizontal
				if (flgDrag == 0) { // No drag
					var posBarX = Math.min(Math.max(position - objScrolling.offset().left - objBar.width()/2,0),objBar.parent().width()-objBar.width());
					objBar.animate({left:posBarX+"px"},{ duration: animateDuration, queue: false });
				} else { // Drag
					var posBarX = position;
				}
				percentPosition = (100 * posBarX) / (objBar.prev().width() - objBar.width());
				var posContentX = ( (objContent.find(".scroll_conteudo").width() - objContent.width()) * percentPosition ) / 100;
				if (flgDrag == 0) {
					objContent.animate({scrollLeft: posContentX},{ duration: animateDuration, queue: false });
				} else {
					objContent.get(0).scrollLeft = posContentX;
				}

			} else { // Vertical
				if (flgDrag == 0) {
					var posBarY = Math.min(Math.max(position - objScrolling.offset().top - objBar.height()/2,0),objBar.parent().height()-objBar.height());
					objBar.animate({top:posBarY+"px"},{ duration: animateDuration, queue: false });
				} else {
					var posBarY = position;
				}
				percentPosition = (100 * posBarY) / (objBar.prev().height() - objBar.height());
				var posContentY = ( (objContent.find(".scroll_conteudo").height() - objContent.height()) * percentPosition ) / 100;
				if (flgDrag == 0) {
					objContent.animate({scrollTop: posContentY},{ duration: animateDuration, queue: false });
				} else {
					objContent.get(0).scrollTop = posContentY;
				}
			}
		},

		/*
		 * PARAMETERS
		 * - position (numeric)
		 * - selector (.scrolling)
		 */
		scrollContentPosition: function(position) {
			var objScrolling = $(this);
			var objBar = objScrolling.find(".scr-bar");
			var objContent = objScrolling.find(".scroll");

			// Stop current animation
			objContent.stop();
			objBar.stop();

			if (objScrolling.hasClass("scroll_horizontal")) { // Horizontal
				objContent.animate({scrollLeft: position},{ duration: animateDuration, queue: false });
				percentPosition = Math.min(100,Math.max(0,(position * 100) / (objContent.find(".scroll_conteudo").width() - objContent.width())));
				posBarX = ( (objBar.parent().width()-objBar.width()) * percentPosition ) / 100;
				objBar.animate({left:posBarX+"px"},{ duration: animateDuration, queue: false });

			} else { // Vertical
				objContent.animate({scrollTop: position},{ duration: animateDuration, queue: false });
				percentPosition = Math.min(100,Math.max(0,(position * 100) / (objContent.find(".scroll_conteudo").height() - objContent.height())));
				posBarY = ( (objBar.parent().height()-objBar.height()) * percentPosition ) / 100;
				objBar.animate({top:posBarY+"px"},{ duration: animateDuration, queue: false });
			}
		}
	});
})(jQuery);




/******************************************************************************
 * ElementPosition 2.0 - Terra Networks - Equipe Webdev
 * Atualizado por Terra Networks - Equipe Arte Brasil 
 * 2008
 * Modulo independente
 *
 * COMO UTILIZAR
 * 
 * Chame a funcao elementPosition para posicionar layers de acordo com o espaco disponivel no eixo Y
 *
 *
 * PARAMETROS
 *
 * Na funcao elementPosition posY e a posicao mais baixa que a layer alcanca
 * e diffPosY e a diferenca de distancia que sera utilizada para passar a layer para cima utilizando margin-top
 *
 ******************************************************************************/

/*
 * Functions
 */

// Positioning elements
function elementPosition(posY,diffPosY,selector) {
	obj = $(selector);

	// Scroll position
	scrollY = scrollTopPosition();
	windowHeight = window.innerHeight ? window.innerHeight : $("html").height();

	if (posY-scrollY+5 > windowHeight) {
		obj.css("marginTop",diffPosY+"px");
	} else {
		obj.css("marginTop",0);
	}
}

// Return the scroll top position
function scrollTopPosition() {
	var scrollY;
	if (document.all) {
		if (!document.documentElement.scrollTop) {
			scrollY = document.body.scrollTop;
		} else {
			scrollY = document.documentElement.scrollTop;
		}
	} else {
		scrollY = window.pageYOffset;
	}
	return scrollY;
}



$(".scrolling").scrolling();
