function get_baseurl() {
	//code from jquery lightbox
	// Get the src of the first script tag that includes our js file (with or without an appendix)
	var baseurl = $('script[src*=javascripts/]:first').attr('src');
	// The baseurl is the src up until the start of our js file
	baseurl = baseurl.substring(0, baseurl.indexOf("javascripts/"));
	return baseurl;
}
baseurl = get_baseurl();

(function($){
	//to get css property value
	function num(elem, prop) {
		var r = 0;
		$.each((prop || "").split(/\s+/), function(i,p){
			r += parseInt($(elem).css(p)) || 0;
		});
		return r;
	};
	
	// main menu
	function initMenu() {
		$(".header .menu").each(function(){
			var elem = this;
			var items = $(">ul>li",elem);
			
			function initSpace() {
				var availableWidth = $(elem).innerWidth();
				availableWidth -= num(elem,"paddingLeft paddingRight");
				
				var usedWidth = 0;
				$(items).each(function(){
					var w = 0;
					$(">a",this).css({
						fontWeight:"bold"
					});
					w = $(this).outerWidth(true);
					usedWidth += w;
					w = $(this).innerWidth();
					w -= num(this,"paddingLeft paddingRight");
					w -= num($(">a",this),"paddingLeft paddingRight marginLeft marginRight borderLeftWidth borderRightWidth");
					$(">a",this).css({
						fontWeight:"",
						width:w+"px"
					});
				});
				
				var space = availableWidth - usedWidth;
				var d = parseInt(space / (items.length-1));
				var d1 = space - (d * (items.length-1));
				
				for (var i=0,n=items.length-1; i < n; i++) {
					if (d1 > 0) {
						$(items[i]).css({marginRight:(d+1)+"px"});
						d1--;
					} else if (d1 < 0) {
						$(items[i]).css({marginRight:(d-1)+"px"});
						d1++;
					} else {
						$(items[i]).css({marginRight:d+"px"});
					}
				}
			}
			
			function showSubmenu(submenu, borders) {
				$(this).addClass("show_submenu");
				$(">a", this).addClass("current");
				$(submenu).show();
				$(borders).show();
			}
			function hideSubmenu(submenu, borders) {
				$(this).removeClass("show_submenu");
				$(">a", this).removeClass("current");
				$(submenu).hide();
				$(borders).hide();
			}
			
			function initSubmenu() {
				var space = 5;
				for (var i=0,n=items.length; i < n; i++) {
					new function() {
						var item = $(items[i]);
						var link = $(">a", item);
						var submenu = $(".submenu", item);
						var w = $(link).outerWidth(false);
						var H = $(link).outerHeight(false);
						var h = H;
						if (submenu.length > 0) {
							w -= num(submenu, "paddingLeft paddingRight marginLeft marginRight borderLeftWidth borderRightWidth");
							$(">ul", submenu).css({
								width: w+"px"
							});
							$(">ul>li", submenu).css({
								width: w+"px"
							});
							$(">ul>li>a", submenu).each(function(){
								$(this).css({
									width: (w - num(this, "paddingLeft paddingRight marginLeft marginRight borderLeftWidth borderRightWidth"))+"px"
								});
							});
							
							submenu.show();
							H += submenu.outerHeight(false);
							//submenu.hide();
							
							$(item).append("<span class='bdr-l'></span><span class='bdr-r'></span><span class='bdr-b'></span><span class='bdr-bl'></span><span class='bdr-br'></span>");
							var borders = $(".bdr-l, .bdr-r, .bdr-bl, .bdr-br, .bdr-b", item);
							
							var l = w + $(".bdr-l", item).innerWidth() - (space*2);
							var t = H - space;
							
							$(".bdr-l", item).css({left:0, height:(H-space)+"px"});
							$(".bdr-r", item).css({left:l+"px", height:(H-space)+"px"});
							
							$(".bdr-b", item).css({left:$(".bdr-l", item).innerWidth()+'px', top:t+"px", width:(w - $(".bdr-r", item).innerWidth() + space  )+"px"});
							
							$(".bdr-bl", item).css({left:0, top:t+"px"});
							$(".bdr-br", item).css({left:l+"px", top:t+"px"});
							
							item.bind('showmenu', function() {
								showSubmenu.apply(this, [submenu, borders]);
								
							});
							item.bind('hidemenu', function() {
								hideSubmenu.apply(this, [submenu, borders]);
							});
							
							$(item).triggerHandler("hidemenu");
							
							$(item).bind("mouseover", function(){
								$(this).triggerHandler("showmenu");
							});
							$(item).bind("mouseout", function(){
								$(this).triggerHandler("hidemenu");
							});
						}
					};
				}
			}
			
			initSpace();
			initSubmenu();
		});
	};
	
	//util menu
	function initUtilMenu() {
		$(".header .utilMenu").each(function(){
			var elem = this;
			var items = $(".link",elem);
			
			function showSubmenu(submenu, borders) {
				
				$(this).addClass("show_submenu");
				$(">a", this).addClass("current");
				$(submenu).show();
				$(borders).show();
			}
			function hideSubmenu(submenu, borders) {
				$(this).removeClass("show_submenu");
				$(">a", this).removeClass("current");
				$(submenu).hide();
				$(borders).hide();
			}
			
			function initSubmenu() {
				var space = 5;
				for (var i=0,n=items.length; i < n; i++) {
					new function() {
						var item = $(items[i]);
						var link = $(">a", item);
						var submenu = $(".linkMenu", item);
						var w = $(link).outerWidth(false);
						var H = $(link).outerHeight(false);
						var h = H;
						var W = w;
						if (submenu.length > 0) {
							submenu.show();
							W = submenu.outerWidth(false);
							if ( W < w ) {
								//
							}
							
							
							H += submenu.outerHeight(false);
							//submenu.hide();
							
							$(item).append("<span class='bdr-l'></span><span class='bdr-r'></span><span class='bdr-b'></span><span class='bdr-bl'></span><span class='bdr-br'></span><span class='bdr-t'></span><span class='bdr-l2'></span><span class='bdr-ctl'></span><span class='bdr-tl'></span>");
							
							var borders = $(".bdr-l, .bdr-r, .bdr-bl, .bdr-br, .bdr-b, .bdr-t, .bdr-l2, .bdr-ctl, .bdr-tl", item);
							
							var oL = item.offset().left - submenu.offset().left;
							var L = -(oL+$(".bdr-l", item).innerWidth()-space);
							var l = w + $(".bdr-l", item).innerWidth() - (space*2);
							var t = H - space;
							
							$(".bdr-l", item).css({left:L+"px", top:(h+space)+"px", height:((H-h)-space-space)+"px" });
							$(".bdr-r", item).css({left:l+"px", height:(H-space)+"px"});
							$(".bdr-b", item).css({left:(L+$(".bdr-l", item).innerWidth())+'px', top:t+"px", width:(W - $(".bdr-r", item).innerWidth() + space  )+"px"});
							$(".bdr-bl", item).css({left:L, top:t+"px"});
							$(".bdr-br", item).css({left:l+"px", top:t+"px"});
							
							$(".bdr-l2", item).css({ left:-space+"px", top:0+"px", height:(h-($(".bdr-ctl", item).innerHeight()-space))+"px"});
							$(".bdr-ctl", item).css({ left:-space+"px", top:(h-($(".bdr-ctl", item).innerHeight()-space))+"px"});
							$(".bdr-t", item).css({ left:(L+$(".bdr-l", item).innerWidth())+"px", top:(h-($(".bdr-ctl", item).innerHeight()-space))+"px", width:(oL-space-space)+"px"});
							$(".bdr-tl", item).css({ left:(L)+"px", top:(h-($(".bdr-ctl", item).innerHeight()-space))+"px"});
							
							item.bind('showmenu', function() {
								showSubmenu.apply(this, [submenu, borders]);
							});
							item.bind('hidemenu', function() {
								hideSubmenu.apply(this, [submenu, borders]);
							});
							
							$(item).triggerHandler("hidemenu");
							
							$(item).bind("mouseover", function(){
								$(this).triggerHandler("showmenu");
							});
							$(item).bind("mouseout", function(){
								$(this).triggerHandler("hidemenu");
							});
						}
					};
				}
			}
			
			initSubmenu();
		});
	};
	
	//skin boxes
	function initBoxes() {
		$(".box").each(function(){
			var elem = this;
			
			$(elem).append("<span class='bdr-tl'></span><span class='bdr-tr'></span><span class='bdr-bl'></span><span class='bdr-br'></span>");
			
		});
	}
	
	//side carousel
	function initRightCarousel(options) {
		var options = options || {};
		/* Change Options here */
		var animateSlideDuration = options.animateSlideDuration || 800;
		var hideNavOnSingleSlide = options.hideNavOnSingleSlide == undefined ? true : options.hideNavOnSingleSlide;
		
		var autoMode = options.autoMode == undefined ? false : options.autoMode;
		var autoMode_autoStart = options.autoMode_autoStart || 5000;	//wait before start on page load
		var autoMode_timeout = options.autoMode_timeout || 3000;	//wait before show next slide
		var autoMode_pauseAfterUserAction = options.autoMode_pauseAfterUserAction || 8000;	//after user click (manual slide select), wait before start automode again
		
		$(".rightCol .carousel").each(function(){
			var elem = this;
			var slidesCount = $(".carousel_content", elem).length;
			var nav = $(".carousel_nav", elem);
			var currentIndex = 0;
			var slideWidth = 0;
			
			if (!$(".carousel_contents", elem).parent().is(".carousel_container")) {
				$(".carousel_contents", elem).wrap( $("<div />").addClass("carousel_container"));
			}
			
			
			var maxH = 0;
			$(".carousel_content", elem).each(function(){
				if ($(this).outerHeight(true) > maxH) {
					maxH = $(this).outerHeight(true);
				}
			});
			
			slideWidth = $(".carousel_content:eq(0)", elem).outerWidth(true);
			
			$(".carousel_contents, .carousel_container", elem).css({
				height:maxH+"px"
			});
			$(".carousel_contents", elem).css({
				width: (slideWidth * slidesCount) + "px"
			});
			
			if (slidesCount < 2) {
				if (hideNavOnSingleSlide) {
					nav.hide();
				} else {
					$(".prev", nav).bind("click.carousel", function(){
						this.blur();
						return false;
					});
					$(".next", nav).bind("click.carousel", function(){
						this.blur();
						return false;
					});
				}
				
				return;
			}
			

			$(".prev", nav).bind("click.carousel", function(){
				moveTo(currentIndex - 1, true, autoMode_pauseAfterUserAction);
				this.blur();
				return false;
			});
			$(".next", nav).bind("click.carousel", function(){
				moveTo(currentIndex + 1, true, autoMode_pauseAfterUserAction);
				this.blur();
				return false;
			});
			
			var initNavState = function() {
				//
			};
			
			var moveTo = function(i, anim, nextTimeout) {
				//if (i < 0 || i >= slidesCount) i = 0;
				resetAutoTimeout();
				
				anim = anim || false;
				if (currentIndex >= 0 && currentIndex < slidesCount) {
					$(".carousel_content:eq(" + currentIndex +")", elem).removeClass("carousel_content_current");
				}
				
				currentIndex = i;
				
				if (currentIndex < 0) currentIndex = slidesCount-1;
				if (currentIndex > slidesCount-1) currentIndex = 0;
				
				if (currentIndex >= 0 && currentIndex < slidesCount) {
					if (anim) {
						$(".carousel_contents", elem).stop();
						$(".carousel_contents", elem).animate({left:-(currentIndex * slideWidth) + "px"}, {queue:false, duration: animateSlideDuration, easing: "easeInOutExpo", complete: function(){
							if (autoMode && slidesCount > 1) {
								setAutoTimeout(nextTimeout, autoMode_timeout);
							}
						}});
					} else {
						$(".carousel_contents", elem).css({
							left: -(currentIndex * slideWidth) + "px"
						});
						
						if (autoMode && slidesCount > 1) {
							setAutoTimeout(nextTimeout, autoMode_timeout);
						}
					}
					
					$(".carousel_content:eq(" + currentIndex +")", elem).addClass("carousel_content_current");
				}
				
				initNavState();
			};
			
			var autoModeTimeout = 0;
			var resetAutoTimeout = function(){
				if (autoMode_timeout > 0) {
					window.clearTimeout(autoModeTimeout);
					autoModeTimeout = 0;
				}
			}
			
			var setAutoTimeout = function(timeout, nextTimeout) {
				resetAutoTimeout();
				autoModeTimeout = window.setTimeout(function(){
					moveTo(currentIndex+1, true, nextTimeout);
				}, timeout);
			}
			
			moveTo(0, false, autoMode_autoStart);
		});
	};
	
	$(function(){
		if ($.fn.InputBox) {
			$("input[type='text']").filter(".input").InputBox();
			$("input[type='password']").filter(".input").InputBox();
		}
		
		if ($.fn.DefText) {
			$(".jDefText").DefText();
		}
		
		initMenu();
		initUtilMenu();
		initBoxes();
		initRightCarousel();
		
		if ($.browser.msie && $.browser.version < 7) {
			$("img[src$=png]").pngfix({
				imageFixSrc: baseurl + "images/x.gif"
			});
			
			
			$(".header .bdr-l, .header .bdr-r, .header .bdr-t, .header .bdr-b, .header .bdr-l2, .header .bdr-tl, .header .bdr-tl, .header .bdr-bl, .header .bdr-br, .header .bdr-ctl").pngfix({
				imageFixSrc: baseurl + "images/x.gif",
				sizingMethod: 'scale'
			});
			
			$(".box .bdr-tl, .box .bdr-tr, .box .bdr-bl, .box .bdr-br").pngfix({
				imageFixSrc: baseurl + "images/x.gif"
			});
			
			$(".bottomBorder, .footer, .content, .requestBox .image").pngfix({
				imageFixSrc: baseurl + "images/x.gif",
				sizingMethod: 'scale'
			});
			$(".requestBox .image_holder").pngfix({
				imageFixSrc: baseurl + "images/x.gif"
			});
		}
	});
})(jQuery);