String.prototype.basename=function(suffix){
	return this.replace(/^(.*\/)|(\?|#).*$/g,'')||'index.'+(suffix||'php');
};
String.prototype.QueryStringToJSON = function () {
href = this;
qStr = href.replace(/(.*?\?)/, '');
qArr = qStr.split('&');
stack = {};
for (var i in qArr) {
    var a = qArr[i].split('=');
    var name = a[0],
        value = isNaN(a[1]) ? a[1] : parseFloat(a[1]);
    if (name.match(/(.*?)\[(.*?)]/)) {
        name = RegExp.$1;
        name2 = RegExp.$2;
        //alert(RegExp.$2)
        if (name2) {
            if (!(name in stack)) {
                stack[name] = {};
            }
            stack[name][name2] = value;
        } else {
            if (!(name in stack)) {
                stack[name] = [];
            }
            stack[name].push(value);
        }
    } else {
        stack[name] = value;
    }
}
return stack;
};
function WL(){
  var L=window.location;
  var W={href:L.href,
  	 protocol:L.host,
	 host:L.protocol,
  	 pathname:L.pathname,
	 file:L.protocol+'//'+L.host+L.pathname,
	 basename:L.href.basename(),
	 query:L.search,
	 data:L.search.QueryStringToJSON()
	 };
	 return W;
};

jQuery(function(){
	//jQuery('#nav ul.sf-menu').superfish({delay:200,autoArrows:false});
	jQuery("#living-effect").living();
	jQuery("#client-experience").rotate(8000,true);
	jQuery('#slide').slider();
	jQuery('#imap').imap();
	jQuery('#category .cat-item').runningHover('.cat-hover','.cat-content');
/*	
	jQuery('a:not([href^=http]),img,form','#sitenav').each(function(){
		var $this=jQuery(this),
			attrK=$this.is('a')?'href':($this.is('img')?'src':'action'),
			attrV=$this.attr(attrK).replace(/^(.+)/,'http://www.experiencebangladesh.com/$1');
		$this.attr(attrK,attrV);
	})
*/
});


/* living effect */
jQuery.fn.living=function(){
	return	jQuery(this).livingElements("images/input-mask.png", {
					background:"url('images/living-gradient.png') no-repeat",
					easing: 'linear',
					triggerElementSelector: 'input',
					preAnimationStartOpacity: 0,
					mainAnimationFade: false,					
					mainAnimationScrollDirection: 'horizontal',					
					mainAnimationDuration:2000,
					mainAnimationStartBackgroundPositionX: -500,     			
     				mainAnimationEndBackgroundPositionX: 0,
     				postAnimationEndOpacity: 0										
				});
}
/*pulsing effect*/
jQuery.fn.pulsing=function(){
	var fixDim=16,duration=500,focusout=true;
	var css={
			width: jQuery(this).width()+fixDim, 
			height:jQuery(this).height()+fixDim,
			background:'#f4f7f8',
			opacity:0,
			position:'absolute',
			left:-fixDim/2,
			top:-fixDim/2,
			zIndex:-1
			};
	//
	var $this=jQuery(this).css({position:'relative',zIndex:1});
	var $div=jQuery('<div/>').css(css).appendTo($this);
	var $input=$this.find('input:text'),dVal=$input[0].defaultValue;
	//
	$input.focusin(function(){
		  focusout=false,nVal=$.trim(jQuery(this).val());
		  jQuery(this).val(nVal==dVal||nVal==''?'':nVal);
		  $div.animate({opacity:1},duration,function(){ 
			  var opacity=jQuery(this).css('opacity')==0?1:0;
			  if(focusout) return;
			  jQuery(this).animate({opacity:opacity},duration,arguments.callee);
		  });
	}).focusout(function(){
		focusout=true,nVal=jQuery(this).val();
		jQuery(this).val(nVal==dVal||nVal==''?dVal:nVal);
		$div.css({opacity:0}).stop();
	})
}

/* Hover effect : runningHover*/
jQuery.fn.runningHover=function(hover,content,width){
			var hover=hover||'.leisure-hover',content=content||'.leisure-content',width=width||jQuery(this).width();// 222||280
			var css={width:width,height:'100%',position:'absolute',left:0,top:0,opacity:0,zIndex:0};
			var $Overlay=jQuery('<div/>',{'class':'overlay',css:css}).css({background:'#000',zIndex:1});
			var $Shadow=jQuery('<div/>',{'class':'shadow-inset',css:css}).css({opacity:1});
	return this.each(function(){
		var $overlay=$Overlay.clone().prependTo(this);
		//var $shadow=$Shadow.clone().prependTo(this);
		
		jQuery(this).hover(function(){
				jQuery(hover, this).add($overlay[0]).stop().fadeTo(600, 0.70);
				jQuery(content, this).css({left: '-'+width+'px',zIndex:13});
				jQuery(content, this).stop().animate({left:0+'px'}, { queue: false, duration: 450, easing: 'easeOutQuint' });
			}, function(){
				jQuery(hover, this).add($overlay[0]).stop().fadeTo(800,0);
				jQuery(content, this).stop().animate({left: width+'px'}, { queue: false, duration: 300, easing: 'easeOutQuint' });
			})
			.find(content).css({left:-width})
			.find('li').addClass('rounded');
	});
}
/*Interactive Map : zoomIn/ZoomOut*/
jQuery.fn.imap=function(){
	return jQuery(this).hover(function(e){
		//
		var w=144,h=200,r=1.25,l=(w-w*r)/2, t=(h-h*r)/2;
		$map=jQuery(this).find('#map').stop().animate({width:w*r,height:h*r,left:l,top:t},'fast');
		$matte=jQuery(this).find('#matte').stop().css({display:'block',opacity:0}).animate({opacity:1},'fast')
		//
		jQuery(this).hover(function(){
		//
		},
		function(){
			$map.stop().animate({left:0,top:0,width:w,height:h},'fast');
			$matte.stop().css({display:'block',opacity:1}).animate({opacity:0},'fast')
		});
	})
}





//
jQuery.fn.activeClass=function(klass){
	var klass=klass||'active';
	var href=window.location.href.basename('html');
	var $a=jQuery(this).find('a').filter('[href="'+href+'"]');
	return $a.parent().addClass(klass);
}


jQuery.fn.slider=function(){
  jQuery(this).jqFancyTransitions({
	  width: 940,
	  height: 330,
	  strips: 20
  });
}
jQuery.fn.dropdown=function(){
	//
	jQuery(this).find('>ul>li:has(ul)').hover(function(){
		//mouseover
					jQuery(this).not('.active').addClass('active hover');
					jQuery(this).find('ul')//.stop()
									  .show().css({opacity:0})
									  .animate({opacity:1},'fast');
		 //hover again
				  jQuery(this).hover(
					  function(){
					  	 //mouseover again
					  },
					  function(){
						  //mouseout again
						  jQuery(this).filter('.hover').removeClass('active hover');
						  //jQuery(this).find('ul').hide().css({opacity:0,visibility:'hidden'});
						  jQuery(this).find('ul')//.stop()
						  					.show()
											.animate({opacity:0},'slow');
					  });
		//
		}).find('ul').hide();
		return jQuery(this);
}
jQuery.fn.category=function(){
	return this.each(function(){
		jQuery(this).find('li ul').hide();
		jQuery(this).find('li>a').click(function(){
			jQuery(this).next().slideToggle('slow','easeOutQuad')
				   .parent()
				   .siblings()
				   .find('ul').slideUp('slow','easeOutQuad');
			return false;
		});
		
		jQuery(this).find('li li img').hover(
			function(){
				jQuery(this).animate({marginLeft:5},'fast')
			},
			function(){
				jQuery(this).animate({marginLeft:-10},'fast')
			}).css({marginLeft:-10,cursor:'pointer'})
	})
}


// rotate

jQuery.fn.anim=function(timeout,autoHeight,next){
	if(!jQuery(this).length) return false;
	var timer=null;
	var w=jQuery(this).width()
	var h=jQuery(this).height();
	var hMax=Math.max.apply(null,$.map(jQuery(this).children(),function(el,i){ return jQuery(el).height(); }));
	var $children=jQuery(this).css({position:'relative',overflow:'hidden'})
					     .children().css({position:'absolute',display:'block',left:0, top:0, width:w, height:h});
	
	if(autoHeight){
		hMax=autoHeight===true?hMax:autoHeight;
		jQuery(this).height(hMax).children().height(hMax);
		
	}

	if(next){
		$children.bind('click',function(){
			var $next=jQuery(this).nextSibling();
			$next.siblings().css({zIndex:1}).fadeTo('slow',0);
			$next.css({zIndex:2}).fadeTo('slow',1);
			//return false;
		}).eq(0).css({zIndex:2,opacity:1}).siblings().css({zIndex:1,opacity:0});
		
	}
	else{
		$children.eq(0).animStart(timeout,timer);
		$children.bind('mouseover',function(){
						   	//$children.stop(true,true);
							//window.clearTimeout(timer);
							jQuery(this).parent().addClass('animStop');
						   })
				.bind('mouseout',function(){
							jQuery(this).parent().removeClass('animStop');
							jQuery(this).animStart(timeout,timer);
						   });
				 
	
	}
	
}

jQuery.fn.nextSibling=function(){
	return jQuery(this).next().length?jQuery(this).next():jQuery(this).parent().children().eq(0);
}

jQuery.fn.animStart=function(timeout,timer){
	 var fadeTime=400;
	 var zMax=2;
	 var zMin=1;
	 var oMax=1;
	 var oMin=0;
	 jQuery(this).fadeTo(fadeTime,oMax,function(){ 
				  var $next=jQuery(this).nextSibling();
				  var arg=arguments.callee; 
				  timer=window.setTimeout(function(){
											 if(!$next.parent().hasClass('animStop')) {
											 	$next.siblings().css({zIndex:zMin}).fadeTo(fadeTime,oMin);
											 	$next.css({zIndex:zMax}).fadeTo(fadeTime,oMax,arg)
												window.clearTimeout(timer);
												}
											 }
											 ,timeout);
	 }).css({zIndex:zMax,opacity:oMax}).siblings().css({zIndex:zMin,opacity:oMin})
	 return jQuery(this);
}

jQuery.fn.rotate=function(timeout,autoHeight,next){
	return this.each(function(){ jQuery(this).anim(timeout,autoHeight,next); });

}

