/**
 * common javascript functions
 *
 * @author Ethan Liu
 * @version $Id: functions.js 141 2009-09-02 13:35:36Z ethan $
 * @copyright Creativecrap.com, Ethan, 26 October, 2008
 * @package default
 **/

var l10n;
var timerNav;
$(function() {
	//swfobject.switchOffAutoHideShow();
	//$.ui.dialog.defaults.bgiframe = true;
	$("#asideloginform").uniform({callback: function(result, status) {
		if (result.success) {
			setTimeout(function() {
				if (result.cmd == 'redirect') {
					window.location.href = result.data;
				}
				else {
					window.location.reload();
				}
			}, 800);
		}
	}});
	
	$("#comment-form").uniform({
		//prepend: function() {},
		callback: function(result, status) {
			if (result.success) {
				getComments();
				var message = $("#comment-form textarea").val();
				$(".total_comments").text(parseInt($(".total_comments:first").text())+1);
				//window.location = '#comments';
				if ($("#facebookcomment").attr('checked')) {
					FB.ensureInit(function () {
						FB.Connect.streamPublish(message, fb_attachment, fb_action_link);
					});
				};
				$("#comment-form textarea").val('');
				$("#comment-form #submit").removeClass('disable');
			}
		}
	});
	
	/*
	$(".post-list-block .date").each(function(i, item) {
		var r = Math.floor(Math.random()*2+1);
		var op = (r==1) ? 1 : -1;
		var r = Math.floor(Math.random()*15+0) * op;
		$(item).css('-moz-transform', 'rotate('+r+'deg)');
		$(item).css('-webkit-transform', 'rotate('+r+'deg)');
		$(item).css('-o-transform', 'rotate('+r+'deg)');
	});
	*/
	
	// z-index fixed
	$("#navigation li, #navigation li a, .tags-cloud li, .tags-cloud li a").hover(function() {
			$(this).css('z-index', 10);
		}, 
		function () {
			$(this).css('z-index', 9);
		}
	);

	$(window).resize(function() {
		scaleImages();
	})

	// set external link
	$("a.external").attr('target', '_blank');
	$("a[rel*='external']").attr('target', '_blank');
	$("form").uniform();
	//$("#primary-nav li").hover(mouseenter, mouseleave);
	
	Shadowbox.init({
		handleOversize: "resize",
		overlayColor: "transaprent",
		overlayOpacity: 0.95,
		animate: false,
		onOpen: function() {
			// fix shadowbox scroll for mobile devices
			if((navigator.userAgent.match(/iPhone/i))||(navigator.userAgent.match(/iPad/i))) {
				clearInterval(timerNav);
				$("#sb-container").css("top", $(window).scrollTop());
				setTimeout(function(){
					$(".site-name").css("top", $(window).scrollTop()-90);
				}, 500);
				$(window).bind('scroll', function() {
					$("#sb-container").css("top", $(window).scrollTop());
					$(".site-name").css("top", $(window).scrollTop());
				});
			}
		},
		onFinish: function() {
			$("#sb-body").addClass('visible');
			$(".site-name").addClass('watermark');
		},
		onChange: function() {
			//$("#sb-body").removeClass('visible');
		},
		onClose: function() {
			$("#sb-body").removeClass('visible');
			$(".site-name").removeClass('watermark');
			if((navigator.userAgent.match(/iPhone/i))||(navigator.userAgent.match(/iPad/i))) {
				$(".site-name").css("top", '0px');
				$(window).unbind('scroll');
				timerNav = setInterval(function() {
					showNavigation(0);
				}, 10000);
			}
		}
	});
	
	//timerNav = setInterval(function() {
	//	showNavigation(0);
	//}, 10000);

	setTimeout(function() {
		showTagsCloud(0);
		$(".node-header").addClass('visible');
		nodeMutlilangContent();
		scaleImages();
	}, 500);
	setTimeout(function() {
		showNavigation(0);
	}, 1000);

})

function shake(el) {
	var id = Math.ceil(Math.random()*el.length);
	//for (var i=0; i < 3; i++) {
		var i = Math.ceil(Math.random()*10);
		//var op = (i%2==0) ? '+=' : '-=';
		var op = (i%2==0) ? '+' : '-';
		var r = op + Math.floor(Math.random()*10+1) + 'deg';
		//$(el[id]).animate({rotate:r}, 0);
		$(el[id]).css('-moz-transform', 'rotate('+r+')');
		$(el[id]).css('-webkit-transform', 'rotate('+r+')');
		$(el[id]).css('-o-transform', 'rotate('+r+')');
	//};
}

function showNavigation(i) {
	var r = Math.floor(Math.random()*2+1);
	var op = (r==1) ? 1 : -1;
	var r = Math.floor(Math.random()*5+0) * op;
	var item = $($("#navigation nav li")[i]);
	if (item.length) {
		window.setTimeout(function() {showNavigation(++i);}, 100);
		item.css('-moz-transform', 'rotate('+r+'deg)');
		item.css('-webkit-transform', 'rotate('+r+'deg)');
		item.css('-o-transform', 'rotate('+r+'deg)');
		//item.fadeIn(function() {showNavigation(++i);});
		//item.fadeIn();
		item.addClass('visible');
	}
	else {
		// funky
		window.setTimeout(function(){showNavigation(0);}, 20000);
		//window.setInterval(function() {
		//	shake($("#navigation nav li"));
		//}, 10000);
	}
}
function showTagsCloud(i) {
	var r = Math.floor(Math.random()*2+1);
	var op = (r==1) ? 1 : -1;
	var r = Math.floor(Math.random()*6+0) * op;
	var item = $($(".tags-cloud li")[i]);
	if (item.length) {
		window.setTimeout(function() {showTagsCloud(++i);}, 100);
		item.css('-moz-transform', 'rotate('+r+'deg)');
		item.css('-webkit-transform', 'rotate('+r+'deg)');
		item.css('-o-transform', 'rotate('+r+'deg)');
		//item.css('visibility', 'visible').fadeIn();
		item.addClass('visible');
	}
	else {
		// funky
		//window.setTimeout(function(){showTagsCloud(0);}, 45000);
	}
}

function featuredSlideshow(id) {
	if (id >= $("#featured .slide-thumbs img").length) {
		id = 0;
	}
	$("#featured .slide:visible").removeClass('visible');
	$("#featured .slide-thumbs img:visible").removeClass('visible');
	$("#featured .slide[rel="+id+"]").addClass('visible');
	$("#featured .slide-thumbs img[rel="+id+"]").addClass('visible');
	window.clearTimeout(featuredSlideshowTimer);
	featuredSlideshowTimer = window.setTimeout(function() {
		featuredSlideshow(parseInt(id)+1);
	}, 5000);
}

$.urlParam = function(name){
	var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href);
	if (results) {
		return results[1] || 0;
	};
	return 0;
}

function coloration(target) {
	target.each(function(i, item) {
		var lang = $(item).attr('lang');
		$.post("/geshi.php", {"lang":lang, "linenumber":1, "source": $(item).html()}, function(result) {
			if (result) {
				$(item).hide();
				//$(result).find('a').attr('rel', 'external');
				$("<div></div>").addClass("coloration").html(result).insertAfter($(item)); //.find('a').attr('target', '_blank');
			};
		});
	});
}

function fb_login(api_key) {
	var loggedin = false;
	FB.init(api_key);
	FB.ensureInit(function() {
		FB.Connect.requireSession();
		/*
		FB.ConnectState().waitUntillReady(function(status) {
			switch(status) {
				case FB.ConnectState.connected:
					loggedin = true;
				break;
				case FB.ConnectState.appNotAuthorized:
				case FB.ConnectState.userNotLoggedIn:
					FB.Connect.requireSession();
				break;
			}
		});
		*/
	});
	//FB.init(api_key, "/xd_receiver.php", {"reloadIfSessionStateChanged":true}); 
}

function fb_logout() {
	/*
	FB.ensureInit(function() {
		FB.Connect.logout();
		// give facebook a little time
		setTimeout(function() {
			window.location = '/user/signout';
		}, 1000);
	});
	*/
	$.post("/user/signout", {}, function(result) {
		setTimeout(function() {
			window.location.reload();
		}, 500);
	}, "json");
}

function fb_onlogin() {
	$.post("/user/signin_facebook", {}, function(result) {
		if (result.success) {
			window.location.reload();
		};
	}, "json");
}

function redirect() {
	window.location = '/user/?redirect=' + window.location.href;
}

function nl2br(str) {
	var br = '<br />';
	return (str + '').replace(/([^>]?)\n/g, '$1'+ br +'\n');
}

function addslashes(str) {
	return (str+'').replace(/([\\"'])/g, "\\$1").replace(/\u0000/g, "\\0");
}


function validForm(form_id) {
	$(form_id + " :text,:password")
	.each(function() {
		var val = $.trim($(this).val());
		$(this).val(val);
		if (val == $(this).attr("rel")) {
			//$(this).val($(this).attr('rel')).removeClass('uniform-placeholder');
			$(this).val("").removeClass('uniform-placeholder');
		}
	});
	// check require fields
	var valid = true;
	$(form_id + " .require").each(function() {
		$(this).removeClass("uniform-form-invalid");
		//if ($(this).val() == "" || $(this).val() == $(this).attr("rel")) {
		if ($(this).val() == "") {
			$(this).addClass("uniform-form-invalid");
			valid = false;
		};
	});
	if (!valid) {
		$(form_id).uniform();
	};
	//$("#" + form_id + " .x-form-invalid:first").focus();
	//$("#" + form_id + " .x-form-invalid:first").trigger('click');
	return valid;
}

function t(str) {
	if (l10n) {
		var key = str.toLowerCase();
		str = l10n[key] ? l10n[key] : str;
	};
	return str;
}

function mouseenter(e) {
	$(this).addClass('hover');
}

function mouseleave(e) {
	$(this).removeClass('hover');
}

function mouseclick(e) {
	$(this).toggleClass('active');
}

function scaleImages(el) {
	//$("div.img").width($(".column-content").width());
	if (el) {
		//alert(el.css('width'));
		el.css('width', 'auto');
		//alert(el.css('width'));
		el.find('img').css('width', '100%');
	}
	else {
		// adjust all
		$("div.img").css('width', 'auto');
		$("div.img img").css('width', '100%');
	}
}

function loadGalleryThumb(id, data, width, group) {
	var me = $("div.img[rel=" + id + "]");
	var thumb = new Image();
	data.thumb = "/thumb.php?w=" + width + "&zc=0&src=" + data.path;
	$(thumb).load(function() {
		var img = $("<img>").attr('src', data.thumb).attr('alt', data.name);
		var link = $("<a></a>").attr('href', data.path).attr('title', data.name).attr('rel', 'shadowbox[' + group + ']');
		link.wrapInner(img);
		me.prepend(link);
	}).attr('src', data.thumb);
}

function loadThumb(id, data) {
	var me = $("div.img[rel=" + id + "]");
	if (data.mime == 'image/gif' ||
			data.mime == 'image/jpg' ||
			data.mime == 'image/jpeg' ||
			data.mime == 'image/pjpeg' ||
			data.mime == 'image/png') {
		var thumb = new Image();
		data.thumb = data.path;
		if (data.isthumb) {
			data.thumb = "/thumb.php?w=" + data.width + "&zc=0&src=" + data.path;
		}
		//me.append('<span class="spin"><img src="/images/spin4.gif" width="16" height="16" border="0" align="absmiddle"> Loading</span>');
		me.addClass('visible');
		$(thumb).load(function() {
			//me.find('span.spin').remove();
			me.removeClass('visible');
			//src = "/thumb.php?src=" + src;
			var href = $("<a />").attr('href', data.path).attr('rel', "shadowbox['node']").attr('title', me.text());
			var img = $("<img />").attr('src', data.thumb).attr('alt', data.name);//.width(me.width());
			href.wrapInner(img);
			if (!me.text().length) {
				me.prepend(href);//.fadeIn('slow');
			}
			else {
				me.wrapInner('<div class="desc"></div>').prepend(href);//.fadeIn('slow');
			}
			me.addClass('visible');
			// fix safari bug
			setTimeout(function() {
				scaleImages(me);
				// due to server weak performance tweak
				Shadowbox.init({
					handleOversize: "resize",
					overlayColor: "transaprent",
					overlayOpacity: 0.95,
					animate: false,
					onFinish: function() {
						$("#sb-body").addClass('visible');
						$(".site-name").addClass('watermark');
					},
					onChange: function() {
						//$("#sb-body").removeClass('visible');
					},
					onClose: function() {
						$("#sb-body").removeClass('visible');
						$(".site-name").removeClass('watermark');
					}
				});
			}, 500);
		}).attr('src', data.thumb);
	}
	else {
		var link = $("<a class='button blue'></a>").attr('href', data.path).attr('title', data.name);
		me.find('span.spin').remove();
		me.wrapInner(link).addClass('visible');;
	}
	
/*	
	switch(data.mime) {
		case 'image/gif':
		case 'image/jpg':
		case 'image/jpeg':
		case 'image/pjpeg':
		case 'image/png':
			var thumb = new Image();
			me.append('<span class="spin"><img src="/images/spin2.gif" border="0"> Loading</span>');
			$(thumb).load(function() {
				//src = "/thumb.php?src=" + src;
				var img = $("<img>").attr('src', data.path).attr('alt', data.name);
				//me.find('span.spin').remove();
				//me.wrapInner('<div class="desc"></div>').prepend(img).fadeIn('slow');
			}).attr('src', data.path);
		break;
		default:
			var link = $("<a></a>").attr('href', data.path).attr('title', data.name).addClass('orange awesome');
			me.wrapInner(link).show();
		break;
	}
	*/
	return false;
}

function loadThumbTag(f, width) {
	var q = new Array();
	var shadowbox = 0;
	$("div.img").each(function(i, item) {
		var id = $(this).attr('rel');
		var w;
		if ($(item).attr('style')) {
			w = $(item).width();
		}
		else {
			w = width;
		}
		f[id]['isthumb'] = true;
		if ($(this).is('.nothumb')) {
			f[id]['isthumb'] = false;
		}
		if (f[id] && q[id]!=1) {
			q[id] = 1; // to prevent load more then once
			f[id]['width'] = w;
			loadThumb(id, f[id]);
		}
	});
	/*
	if (shadowbox) {
		setTimeout(function() {
			//scaleImages();
		}, 2000);
	};
	*/
}

function loadThumbTag_100713(f) {
	//$("div.img").hide();
	var q = new Array();
	var shadowbox = 0;
	$("div.img").each(function(i, item) {
		//$(this).append('<span class="spin"><img src="/images/spin6.gif" border="0" align="middle"></span>');
		var id = $(this).attr('rel');
		if (f[id] && !q[id]) {
			q[id] = 1; // to prevent load more then once

			if ($(item).parent('div.shadowbox').length) {
				var w = 100;
				if ($(item).parent('div.shadowbox').is('.thumb1')) {
					w = 600;
				};
				if ($(item).parent('div.shadowbox').is('.thumb2')) {
					w = 290;
				};
				if ($(item).parent('div.shadowbox').is('.thumb3')) {
					w = 190;
				};
				if ($(item).parent('div.shadowbox').is('.thumb4')) {
					w = 140;
				};
				if ($(item).parent('div.shadowbox').is('.thumb5')) {
					w = 110;
				};
				loadGalleryThumb(id, f[id], w, $(item).parent('div.shadowbox').attr('rel'));
				shadowbox = 1;
			}
			else {
				loadThumb(id, f[id]);
			}
		}

		
	});
	if (shadowbox) {
		setTimeout(function() {
			// wait for image render complete
			Shadowbox.init({
			    handleOversize: "resize",
				overlayOpacity: 0.75
			});
		}, 1000);
	};
}

function intval(num) {
	//num = $.trim(num);
	num = parseInt(num, 10);
	if (/\D/.test(num)) {
		return 0;
	}
	return num;
}

function replyComment(id) {
	$("#comment-form [name='comment_id']").val(id);
	$("#comment-form textarea").focus();
}

function getComments(page) {
	page = (page) ? page : 1;
	$("#comments-box").fadeOut('fast').load("/node/comment/"+nid+"/?page="+page, function() {
		$("#comments-box").fadeIn('fast');
	});
}

// multi-lang
function nodeMutlilangContent() {
	var lang = $.urlParam('lang');
	$(".content-ml-block").each(function(i, item) {
		var a = $('<a href="javascript:void(0);"></a>').attr('rel', $(this).attr('rel')).text(t('lang-' + $(this).attr('rel'))).click(function() {
			$(".content-ml-block").hide();
			$(".content-ml-block[rel='" + $(this).attr('rel') + "']").fadeIn();
			return false;
		});
		if (i > 0) {
			$(".entry-translation").append(", ");
		};
		$(".entry-translation").append(a);
		$(".entry-translation").show();
	});
	if (lang && $(".content-ml-block[rel='" + lang + "']").length) {
		//$(".content-ml-block").hide();
		$(".content-ml-block[rel='" + lang + "']").show();
	};
}