var $j = jQuery.noConflict();

function initCommonJsSweetness() {
	$j("a[rel^='prettyPhoto'], .prettyPhoto, .gallery a, #slider .prettyphoto a, .prettyphoto a").prettyPhoto({
		animationSpeed: 'normal', /* fast/slow/normal */
		padding: 15, /* padding for each side of the picture */
		opacity: 0.7, /* Value betwee 0 and 1 */
		showTitle: true, /* true/false */
		allowresize: true, /* true/false */
		overlay_gallery : false,
		counter_separator_label: '/', /* The separator for the gallery counter 1 "of" 2 */
		theme: 'facebook', /* light_rounded / dark_rounded / light_square / dark_square */
		hideflash: false, /* Hides all the flash object on a page, set to TRUE if flash appears over prettyPhoto */
		modal: false, /* If set to true, only the close button will close the window */
		changepicturecallback: function(){}, /* Called everytime an item is shown/changed */
		callback: function(){} /* Called when prettyPhoto is closed */
	});
	$j("input:submit").addClass("submit");
	imagePreviewBehaviour();
	tooltipBehaviour();
	tabsBehaviour();
	toggleBehaviour();

	inputBehaviour();
	slideshowBehaviour();
	
	validateContactForm();
	
	commentsValidateBehaviour();
	
	//pricingTableBehaviour();
	//toursBehaviour();
	
	$j(".imgpreview, .prettyPhoto, a[rel^='prettyPhoto']").each(function(){
		var img = $j(this).find("img").length;
		if (img == 0) {
			$j(this).addClass("imgTexLinkPreview");
		}
	});
	
	$j(".prettyPhoto img, .work_th a img, .gallery .gallery-item a img").hover(
		function () {
			//mouse hover		
			$j(this).stop().animate({"opacity" : 0.5});
		}, 
		function () {
			//mouse out
			$j(this).stop().animate({"opacity" : 1});
		}
	);
} // end of function initJsSweetness

/*** Mixey plugins***/
function toursBehaviour() {
	var ss_count = 0;
	$j(".small_tour .small_tour_slides").each(function(){
		var tour_paging = $j(this).parent().find('.small_tour_menu');
		$j(tour_paging).addClass('small_slides_custom_paging_'+ss_count);
		
		var prev_btn, next_btn;
		next_btn = $j(this).find('.tourNextSlide');
		prev_btn = $j(this).find('.tourPrevSlide');
		$j(this)
		.wrap('<div class="relative"></div>')
		.cycle({
			fx: 'scrollHorz', // choose your transition type, ex: fade, scrollUp, shuffle, etc...
			pause: 1,
			speed: 800,
			timeout: 0,
			before: beforeTours,
			containerResize: 0, //////
			delay: -ss_count * 1000,
			next: next_btn,
			prev:prev_btn,
			pager:  tour_paging,
			pagerAnchorBuilder: function(idx, slide) { 
				return '.small_slides_custom_paging_'+ss_count+' li:eq(' + idx + ') a'; 
			}
		})
		ss_count++;
		///
		
	});
	
	$j('.small_tour_menu li:odd').addClass('odd');
	
	$j('.small_tour_menu li a').hover(
		function () {
			//mouse hover
			if ($j(this).hasClass('activeSlide') == false) {
				$j(this).stop().animate({"paddingLeft" : "20px"}, 200);
			}
		}, 
		function () {
			//mouse out
			$j(this).stop().animate({"paddingLeft" : "15px"}, 200);
		}
	);
	
	function beforeTours(currSlideElement, nextSlideElement, options) {
		var new_h = $j(nextSlideElement).height();
		$j(nextSlideElement).parent().animate({"height" : new_h});
	}
} // end of function slidesBehaviour

function pricingTableBehaviour() {
	$j('.pricing_table .pricing_column').each(function(index) {
		$j(this).find('p:even').not('.heading').addClass('even');
		
		$j(this).find('p:last .large_button').parent().removeClass('even').addClass('tr_button');
		
		if ($j(this).next().hasClass('pricing_column_highlight')) {
			$j(this).find('p').each(function(index) {
				$j(this).not('.tr_button').css({
					"background-image"      : "url("+templatepath+"images/res/pricing_l_shadow.png)",
					"background-repeat"     : "repeat-y",
					"background-position"   : "top right"
				});
			});
		}
		
		if ($j(this).prev().hasClass('pricing_column_highlight')) {
			$j(this).find('p').each(function(index) {
				$j(this).not('.tr_button').css({
					"background-image"      : "url("+templatepath+"images/res/pricing_r_shadow.png)",
					"background-repeat"     : "repeat-y",
					"background-position"   : "top left"
				});
			});
		}
		
	});
	
	$j('.pricing_table').each(function(index) {
		var pr_table_width, column_count, column_width;
		pr_table_width = $j(this).width();
		column_count = $j(this).find('.pricing_column').length;
		
		column_width = pr_table_width / column_count;
		$j(this).find('.pricing_column').width(column_width);
	});
} // end of pricingTableBehaviour()

function commentsValidateBehaviour() {
	$j("#commentform #submit").click( function(e){
		e.preventDefault();
		$j(".error").removeClass("error");
		
		var hasError = false;
		var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
		
		var emailToVal = $j("#email").val();
		if (emailToVal == '') {
			$j("#email").addClass("error");
			hasError = true;
		} else if (!emailReg.test(emailToVal) && emailToVal != undefined) {	
			$j("#email").addClass("error");
			hasError = true;
		}
		
		var nameVal = $j("#author").val();
		if (nameVal == '' || nameVal == 'Name' ) {
			$j("#author").addClass("error");
			hasError = true;
		}
		
		var messageVal = $j("#comment").val();
		if(messageVal == '' || messageVal == 'Your message') {
			$j("#comment").addClass("error");
			hasError = true;
		}
		
		if (hasError == false) {
			var urlVal = $j("#url").val();
			if (urlVal == '' || urlVal == 'Website (URL)' ) {
				$j("#url").val('');
				urlVal = "";
			}
			$author = nameVal;
			$email = emailToVal;
			$website = urlVal;
			$message = messageVal;
			$comment_parent = $j("#comment_parent").val();
			$post = $j("#comment_post_ID").val();
			$html = "&_wp_unfiltered_html_comment="+$j("#_wp_unfiltered_html_comment").val();
			
			var install_url = sitepath;
			
			$j.ajax({
				type: "POST",
				url: install_url + "wp-comments-post.php",
				data: "author="+$author+"&email="+$email+"&url="+$website+"&comment="+$message+"&comment_post_ID="+$post+"&comment_parent="+$comment_parent+"&submit=submit comment="+$html,
				beforeSend:function() {
					$j('#comment').attr("disabled", true);
					$j('#author').attr("disabled", true);
					$j('#email').attr("disabled", true);
					$j('#url').attr("disabled", true);
					
					$j("#respond").slideUp(500);	
					$j(".replylink").hide();
				},
				error:function() {
					$j('#comment').removeAttr("disabled");
					$j('#author').removeAttr("disabled");
					$j('#email').removeAttr("disabled");
					$j('#url').removeAttr("disabled");
					
					$j("#respond").slideDown(500);	
					$j(".replylink").show();
					
					$j("#comment_wrap #respond #commentform").prepend('<p class="error">Error posting comment please try again...</p>');
				},
				success: function(response) {								
					var res = response;
					var updated_comments = $j(res).find("#comment_wrap").html();
					$j("#comment_wrap").html(updated_comments);
					$j(".replylink").hide();
				}
			});
		}
	});
}

function validateContactForm() {
	$j(".contactform").submit(function(){
		$j(".error").removeClass("error");
		
		var randval = Math.random();
		var hasError = false;
		var sub_form = $j(this);
		var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
		
		$j(this).find("input:text, textarea").each(function(index){
			var input = $j(this);
			var val = input.val();
			if (($j(this).hasClass("required") && val == "") || val == "Message" || val == "Name" || val == "Email") {
				hasError = true;
				$j(this).addClass("error");
			}
			if ($j(this).hasClass("email_input") && $j(this).hasClass("required") && !emailReg.test(val)) {
				hasError = true;
				$j(this).addClass("error");
			}
		});
		
		var mailpath = templatepath+'sendemail.php';
		var str = $j(this).serialize() +"&randval="+randval;
		if (hasError == false) {
			$j(".form_answer").remove();
			$j.ajax({
				 type: "POST",
				 url: mailpath,
				 data: str,
				 success: function(response)
				 {
					if (response == "ok") {
						sub_form.before('<div class="green_message form_answer messagebox">Message has been sent!</div>');
						$j(".form_answer").hide().show("fast");
					} else if (response == "error") {
						sub_form.before('<div class="yellow_message form_answer messagebox">Unknown error please try again later.</div>');
						$j(".form_answer").hide().show("fast");
					}
				 }
			});
		} else {
			if ($j(".form_answer").length == 0) {
				sub_form.before('<div class="blue_message form_answer messagebox">Please fill in all required fields.</div>');
				$j(".form_answer").hide().show("fast");
			} else if ($j(".form_answer").hasClass("green_message")) {
				$j(".form_answer").remove();
				sub_form.before('<div class="blue_message form_answer messagebox">Please fill in all required fields.</div>');
				$j(".form_answer").hide().show("fast");
			}
		}
		
		return false;
	});
}

function toggleBehaviour() {
	$j('.toggle').click(function () {
		var togglethis = $j(this);
		if (togglethis.hasClass("toggle_close")) {
			togglethis.stop().removeClass("toggle_close").next('div.toggle_content').slideUp(500);
		} else {
			togglethis.stop().addClass("toggle_close").next('div.toggle_content').slideDown(500);
		}
	});
}

function inputBehaviour() {
	$j("input:text, textarea").each(function(){
		$j(this).attr({"rel": $j(this).val()});
		
		$j(this)
		.focus(function () {
			if ($j(this).val() == $j(this).attr('rel')) {
				$j(this).val('');
			}
			$j(this).addClass("focus");
		})
		.blur(function () {
			if ($j(this).val() == '') {
				$j(this).val($j(this).attr('rel'));
			} else {
				$j(this).addClass("notempty");
			}
			$j(this).removeClass("focus");
		});
	});
} // end of function inputBehaviour

/**** Global variables which are used by the image preview plugin **/
// Thanks DigitalCavalry (http://themeforest.net/user/digitalcavalry) for the box positioning hint. I owe you a beer! ;)
var g_previewImgWidth = 0;
var g_previewImgHeight = 0;
var g_imgExtraYOffset = 0;
var g_showLoader = false;
var g_initHoverX = 0;
var g_initHoverY = 0;
var g_topPositionAdjusted = false;

var g_imgDescription = '';
function imagePreviewBehaviour() {
    $j(".imgpreview").click(function() {
		return false;
	});
	$j(".imgpreview").hover(function(e) {
        var offsetX = 0;       
        var offsetY = -10;
        var hoveredObject = this;        
        var imageSrc = $j(hoveredObject).attr("href");
  
        $j("body").append('<div id="imgPreview"><div id="imgPreviewImg"></div><div id="imgPreviewDescription"></div></div>');
        $j("body").append('<div id="imgLoader"></div>');
		
        $j("#imgLoader")
			.stop()
			.css({
				"opacity" : 0,
				"left"    : (e.pageX + 8) + "px",
			    "top"     : (e.pageY - 25) + "px"
			})
			.animate({opacity: 1}, 400);
        g_showLoader = true;
            
        $j("#imgPreview").hide();
          
		var img = new Image();
		$j(img).load(function() {
			g_previewImgWidth = img.width;
			g_previewImgHeight = img.height;
			g_imgExtraYOffset = 0;
			
			offsetX = -(g_previewImgWidth / 2);
			g_imgDescription = $j(hoveredObject).attr("title");
			if (g_imgDescription.length != 0) {
				$j(hoveredObject).removeAttr('title');
				$j("#imgPreviewDescription").html(g_imgDescription);
				$j("#imgPreview").show();
				g_imgExtraYOffset = $j("#imgPreviewDescription").outerHeight(true);
				$j("#imgPreview").hide();
			} else {
				$j("#imgPreviewDescription").remove();
			}

			g_initHoverX = e.pageX;
			g_initHoverY = e.pageY;
			var browserWidth = $j(window).width();
			var browserHeight = $j(window).height();
			var previewLeftPosition = e.pageX + offsetX;
			var previewTopPosition = e.pageY + offsetY - g_previewImgHeight - g_imgExtraYOffset;
			
			if (g_previewImgHeight > e.clientY) {
			   previewTopPosition += g_imgExtraYOffset + g_previewImgHeight - offsetY*2;
			   g_topPositionAdjusted = true;
			}
			if (previewLeftPosition < 0) {
				previewLeftPosition = 0;
			}
			if (previewLeftPosition + g_previewImgWidth > browserWidth) {
				previewLeftPosition = browserWidth - g_previewImgWidth;
			}

			$j("#imgPreviewImg").html(this);
			$j("#imgPreviewImg").css({"height": g_previewImgHeight+"px"});

			$j("#imgPreview").hide()
				.css({
					 "visibility" : "visible",
					 "height"     : "auto",
					 "width"      : g_previewImgWidth+"px",
					 "top"        : previewTopPosition + "px",
					 "left"       : previewLeftPosition + "px"
				}).show();
			$j("#imgLoader").stop().animate({opacity: 0}, 400, function(){$j(this).remove()});
			g_showLoader = false;
			
			$j("#imgPreview")
				.css({
					"margin"  : "0px",
					"padding" : "0px",
					"opacity" : "0"})
				.animate({opacity: 1}, 500);
		}).attr("src", imageSrc);

    },
    // Roll Out
    function() {
		if (g_imgDescription.length != 0) {
			var titleAtr = $j("#imgPreviewDescription").html();
			$j(this).attr({"title": titleAtr});
			g_imgDescription = '';
		}
		
        $j("#imgPreview").stop().remove(); 
        $j("#imgLoader").stop().remove();
		g_topPositionAdjusted = false;
		g_showLoader = false;
    });    
    
    $j(".imgpreview").mousemove(function(e) {
		var offsetX = -g_previewImgWidth / 2;
		var offsetY = -10;
		
		var browserWidth = $j(window).width();
		var previewLeftPosition = e.pageX + offsetX;
		var previewTopPosition = e.pageY + offsetY - g_previewImgHeight - g_imgExtraYOffset;

		if (g_previewImgHeight > e.clientY || g_topPositionAdjusted == true) {
			if (g_topPositionAdjusted == true) {
				previewTopPosition += g_imgExtraYOffset + g_previewImgHeight - (offsetY*2);
			}
		}
		if (previewLeftPosition < 0) {
			previewLeftPosition = 0;
		}
		if (previewLeftPosition + g_previewImgWidth > browserWidth) {
			previewLeftPosition = browserWidth - g_previewImgWidth;
		}

		$j("#imgPreview")
			.css({
				"top"  : previewTopPosition + "px",
				"left" : previewLeftPosition + "px"
			});

		if (g_showLoader) {
			$j("#imgLoader")
				.css({
					"left" : (e.pageX + 8) + "px",
					"top"  : (e.pageY - 24) + "px"
				});
		}
	});

}; // end of function imagePreviewBehaviour

var g_tooltipDescription = '';
function tooltipBehaviour() {
	$j(".tooltip, .flickr_badge_image img, .social img").hover(function(e) {
        var offsetX = 0;
        var offsetY = 15;
        var hoveredObject = this;        
  
        $j("body").append('<div id="tooltipDiv"></div>');
        $j("#tooltipDiv").hide();

		g_tooltipDescription = $j(hoveredObject).attr("title");
		if (g_tooltipDescription.length != 0) {
			var hovertitle = $j(hoveredObject).attr('title');
			$j(hoveredObject).removeAttr('title');
			if ($j(hoveredObject).parent().attr("title") == hovertitle) {
				$j(hoveredObject).parent().removeAttr('title');
			}
			
			$j("#tooltipDiv").html(g_tooltipDescription);
		} else {
			return;
		}
		
		g_initHoverX = e.pageX;
		g_initHoverY = e.pageY;
		var browserWidth = $j(window).width();
		var tooltipLeft = e.pageX + offsetX;
		var tooltipTop = e.pageY + offsetY;
		var tooltipWidth = $j("#tooltipDiv").outerWidth(true);
		
		if (tooltipLeft < 0) {
			tooltipLeft = 0;
		}
		if (tooltipLeft + tooltipWidth > browserWidth) {
			tooltipLeft = browserWidth - tooltipWidth;
		}
		
		$j("#tooltipDiv").hide()
			.css({
				 "visibility" : "visible",
				 "height"     : "auto",
				 "width"      : "auto",
				 "top"        : tooltipTop + "px",
				 "left"       : tooltipLeft + "px"
			}).show();
		
		var currentTooltipWidth = $j("#tooltipDiv").outerWidth(true);
		if (currentTooltipWidth > 300) {
			$j("#tooltipDiv").css({"width" : "300px"});
		}
		
		$j("#tooltipDiv")
			.css({
				"margin"  : "0px",
				"opacity" : "0"})
			.animate({opacity: 1}, 500);
    },
    // Roll Out
    function() {
		if (g_tooltipDescription.length != 0) {
			var titleAtr = $j("#tooltipDiv").html();
			$j(this).attr({"title": titleAtr});
			g_tooltipDescription = '';
		}
		
        $j("#tooltipDiv").stop().remove(); 
		g_topPositionAdjusted = false;
    });    
    
    $j(".tooltip, .flickr_badge_image img, .social img").mousemove(function(e) {
		var offsetX = 0;
		var offsetY = 15;
		
		var browserWidth = $j(window).width();
		var tooltipLeft = e.pageX + offsetX;
		var tooltipTop = e.pageY + offsetY;
		var tooltipWidth = $j("#tooltipDiv").outerWidth(true);

		if (tooltipLeft < 0) {
			tooltipLeft = 0;
		}
		if (tooltipLeft + tooltipWidth > browserWidth) {
			tooltipLeft = browserWidth - tooltipWidth;
		}

		$j("#tooltipDiv")
			.css({
				"top"  : tooltipTop + "px",
				"left" : tooltipLeft + "px"
			});

	});
} // end of function tooltipBehaviour

var tabSpeed = 500, tab_fx = 'fade';
function tabsBehaviour() {
	var tabs_count = 0;
	$j(".tabs").each(function(){
		$j(this).children().addClass("tab");
		$j(this)
		.attr("id", "tabs_"+tabs_count)
		.before('<div class="tabs_nav tabs_nav_'+tabs_count+'">')
		.cycle({
			fx: tab_fx,
			timeout: 0,
			speed: tabSpeed,
			containerResize: 1,
			before:  tabsOnBefore, 
			pager:  '.tabs_nav_'+tabs_count
		});
		var tab = $j(this);
		$j(".tabs_nav_"+tabs_count+" a").each(function(){
			var currentTabIndex = $j(this).prevAll().length;
			var tabTitle = $j("#tabs_"+tabs_count+" span.tabTitle").eq(currentTabIndex).html();
			$j(this).html(tabTitle);
		});
		var tabtitle = $j(this).find("span").html();
		tabs_count++;
	});
	
	function tabsOnBefore(currSlideElement, nextSlideElement, options) {
		var tabHeight = $j(nextSlideElement).outerHeight() + parseInt($j(nextSlideElement).css("margin-top").replace(/[^\d\.]/g, ''));
		$j(nextSlideElement).parent().css({"height": tabHeight+"px"});
	}
}

var slideShowSpeed = 1500;
var slideEffect = 'fade';
var slideShowTimeout = 5000;

function slideshowBehaviour() {
	var ss_count = 0;
	var current_ss;
	$j(".small_slideshow").each(function(){
		current_ss = $j(this);
		$j(this)
		.wrap('<div class="relative"></div>')
		.before('<div class="ss_nav ss_nav_'+ss_count+'">')
		.cycle({
			fx: "fade", // choose your transition type, ex: fade, scrollUp, shuffle, etc...
			pause: 1,
			speed: slideShowSpeed,
			timeout: slideShowTimeout,
			delay: -ss_count * 1000,
			before: slideshowOnBefore,
			after:slideshowOnAfter,
			pager:  '.ss_nav_'+ss_count
		})
		.find('.description').width($j(this).width() - 20);
		ss_count++;
		var simg;
		var max_h, max_w;
		max_h = max_w = 0;
		$j(this).find("img").each(function(){
			if ($j(this).attr("height") > max_h) { max_h = $j(this).attr("height"); }
			if ($j(this).attr("width") > max_w) { max_w = $j(this).attr("width"); }
			if (max_w > 0) {
				$j(current_ss).css({
					"width" : max_w,
					"height" : max_h
				});
			} else {
				var simg = new Image();
				simg.src = $j(this).attr('src');
				
				if ($j.browser.msie) {
					function testImg(){
						if (simg.complete != null && simg.complete == true) {
							//changeBackground();
							if (simg.height > max_h) { max_h = simg.height; }
							if (simg.width > max_w) { max_w = simg.width; }
							
							$j(current_ss).css({
								"width" : max_w,
								"height" : max_h
							});
							return;
						}
						setTimeout(testImg, 300);
					}
					setTimeout(testImg, 300);    
				}
				else simg.onload = function() {
						if (simg.height > max_h) { max_h = simg.height; }
						if (simg.width > max_w) { max_w = simg.width; }
						
						$j(current_ss).css({
							"width" : max_w,
							"height" : max_h
						});
					};
				
				/*simg.onload = function() {
					if (simg.height > max_h) { max_h = simg.height; }
					if (simg.width > max_w) { max_w = simg.width; }
					
					$j(current_ss).css({
						"width" : max_w,
						"height" : max_h
					});
				}*/
			}
			/*var simg = new Image();
			simg.src = $j(this).attr('src');
			simg.onload = function() {
				if (simg.height > max_h) { max_h = simg.height; }
				if (simg.width > max_w) { max_w = simg.width; }
				
				$j(current_ss).css({
					"width" : max_w,
					"height" : max_h
				});
			}*/
		});
	});
	
	function slideshowOnBefore(currSlideElement, nextSlideElement, options) {
		$j(nextSlideElement).find("div.description").animate({"opacity": 0}, 0);
	}
	
	function slideshowOnAfter(currSlideElement, nextSlideElement, options) {
		$j(nextSlideElement).find("div.description").animate({"opacity": 1}, 2000);
	}
} // end of function slideshowBehaviour
/********end*********/

jQuery(document).ready(function($j) {
	//initCommonJsSweetness();	
});
