/*
 * SillyCube Core Function
 *
 * Copyright (c) 2009 SILLYCUBE TECHNOLOGY LIMITED (http://www.sillycube.com)
 * 
 */
function scNavigation(element){
	element.children().filter("div").mouseenter(function(){
		$(this).children().filter("div").slideDown(400);
	}).mouseleave(function(){
		$(this).children().filter("div").fadeOut(100);
	});
}

function scShadow(element){
	element.each(function (){
		var innerHTML = $(this).eq(0).html();
		var innerContent = $("<div class='innerContent' id='innerContent'></div>").append(innerHTML);
		var shadowContent = $("<div class='shadowContent' id='shadowContent'></div>").css("opacity", "0.1").append(innerHTML);
		
		$(this).empty().append(shadowContent).append(innerContent);
		$(this).find("div[id=innerContent]").css("top", -1*innerContent.height()-12).mousemove(function (event){	
			$(this).siblings("div[id=shadowContent]").css("left", ($(this).offset().left+$(this).width()/2 - event.
clientX)/5).css("top", ($(this).offset().top+$(this).height()/2 - event.clientY)/5).effect("scale", {percent: 400, 
direction: "both"},100);
		});
	});
}

function scBold(element){
	var headerText = element.html();
	var newHeaderText = "";
	for(var i = 0; i<headerText.length; i++){
		newHeaderText += "<font>"+headerText.charAt(i)+"</font>";
	}
	element.html(newHeaderText);
	element.find("font").each(function (){
		$(this).mousemove(function (event){
			$(this).css("font-weight", "bold");
		}).mouseout(function (event){
			$(this).css("font-weight", "");
		}).css("position", "relative");
	});
}

function scHighlight(element, bannerValue){
	var dummy = 0;
	if(navigator.appName.indexOf("Micro") != -1 && 
			(navigator.appVersion.indexOf("MSIE 4.0") != -1)||
			(navigator.appVersion.indexOf("MSIE 5.0") != -1)||
			(navigator.appVersion.indexOf("MSIE 6.0") != -1)){
		dummy = 2;
	}
	
	var normalContent = element.attr("id", "normalContent").css("position","relative")
	.css("z-index","2").css("background","url(images/banner/bw/banner"+bannerValue+".jpg) top");
	
	var highlightContent = element.clone().attr("id", "highlighContent")
		.css("position","relative")
		.css("z-index","1")
		.css("color", reverseColor(element.css("color")))
		//.css("background-color", reverseColor(element.css("background-color")));
		.css("background","url(images/banner/banner"+bannerValue+".jpg) top");
	element.parent().eq(0).append(highlightContent)
	.mousemove(function (event){
		//$("font[id=debug]").html($(this).find("div[id=normalContent]").css("height")+" || "+event.clientY+" || "+$(this).find("div[id=normalContent]").offset().top+" || "+$(window).scrollTop());
		$(this).find("div[id=normalContent]").css("height", event.clientY - $(this).find("div[id=normalContent]").offset().top+$(window).scrollTop()-dummy);
		$(this).find("div[id=highlighContent]").css("top", -1*(event.clientY - $(this).find("div[id=normalContent]").offset().top+$(window).scrollTop()-dummy));
	}).mouseleave(function (event){
		if(event.clientY<=$(this).find("div[id=normalContent]").offset().top+5){
			$(this).find("div[id=normalContent]").css("height", 0);
			$(this).find("div[id=highlighContent]").css("top", 0);
		}
	});
}

function reverseColor(value){
	var color = new RGBColor(value);
	return new RGBColor("rgb("+(255-color.r)+","+(255-color.g)+","+(255-color.b)+")").toHex();
}

function generateDateSelect(dateFieldName, minYear, maxYear){
	
	$("select[id*="+dateFieldName+"_]").remove();
	
	var now = new Date();
	
	if($("input[id="+dateFieldName+"]").val() == ""){
		
		$("input[id="+dateFieldName+"]").val((now.getFullYear())+"-"+(now.getMonth()+1)+"-"+now.getDate());
	}
		
	var year = $("input[id="+dateFieldName+"]").val().split("-")[0];
	var month = $("input[id="+dateFieldName+"]").val().split("-")[1];
	var date = $("input[id="+dateFieldName+"]").val().split("-")[2];

	var dayOfMonthArray = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	if(year%4 == 0){
		dayOfMonthArray[1]=29;
	}

	var maxY = maxYear;
	var minY = minYear;
	if(isNaN(maxY)){
		maxY = now.getFullYear();
	}
	if(isNaN(minY)){
		minY = 1900;
	}
	
	var disabled = "";
		
	if($("#"+dateFieldName).attr("disabled")){
		disabled = "disabled";
	}
	
	var yearSelect = "<select "+disabled+" id='"+dateFieldName+"_Year' onchange='$(\"input[id="+dateFieldName+"]\").val(this.value+\"-"+month+"-"+date+"\");generateDateSelect(\""+dateFieldName+"\","+minY+","+maxY+")'>";
	for(var i=minY; i<=maxY; i++){
		if(i==year){
			yearSelect += "<option value='"+i+"' selected='selected'>"+i+"</option>";
		}else{
			yearSelect += "<option value='"+i+"'>"+i+"</option>";
		}
	}
	yearSelect += "</select>";

	var monthSelect = "<select "+disabled+" id='"+dateFieldName+"_Month' onchange='$(\"input[id="+dateFieldName+"]\").val(\""+year+"-\"+this.value+\"-"+date+"\");generateDateSelect(\""+dateFieldName+"\","+minY+","+maxY+")'>";
	for(var i=1; i<=12; i++){
		if(i==month){
			monthSelect += "<option value='"+i+"' selected='selected'>"+i+"</option>";
		}else{
			monthSelect += "<option value='"+i+"'>"+i+"</option>";
		}
	}
	monthSelect += "</select>";

	var dateSelect = "<select "+disabled+" id='"+dateFieldName+"_Date' onchange='$(\"input[id="+dateFieldName+"]\").val(\""+year+"-"+month+"-\"+this.value);generateDateSelect(\""+dateFieldName+"\","+minY+","+maxY+")'>";
	for(var i=1; i<=dayOfMonthArray[month-1]; i++){
		if(i==date){
			dateSelect += "<option value='"+i+"' selected='selected'>"+i+"</option>";
		}else{
			dateSelect += "<option value='"+i+"'>"+i+"</option>";
		}
	}
	dateSelect += "</select>";

	var dateSelector = $(yearSelect+monthSelect+dateSelect);

	$("input[id="+dateFieldName+"]").val(year+"-"+month+"-"+date).after(dateSelector);
}

function generatePagingBanner(firstPage, prevPage, nextPage, lastPage, 
		pageNumber, numOfItem, numOfItemPerPage, numOfPagingButton,
		action){

	var totalPages = parseInt(numOfItem/(numOfItemPerPage)+(numOfItem%numOfItemPerPage!=0?1:0));
	
	if(totalPages <= 1) return "";
	
	var halfNumPerPage = parseInt(numOfPagingButton/2);
		
	var result = "<div>";
	
	if(pageNumber <= 1){
		result += "<span style='visibility:hidden'>'"+firstPage+"&nbsp;</span>";
	} else {
		result += "<a onclick='"+action+"(1)'>"+firstPage+"</a>&nbsp;";
	}
	
	if(pageNumber <= 1){	
		result += "<span style='visibility:hidden'>&nbsp;"+prevPage+"&nbsp;</span>";
	} else {
		result += "&nbsp;<a onclick='"+action+"("+(pageNumber-1)+")'>"+prevPage+"</a>&nbsp;";
	}

	if(Math.max(1, (pageNumber-halfNumPerPage>=1?pageNumber-halfNumPerPage-(pageNumber+halfNumPerPage-totalPages>0?pageNumber+halfNumPerPage-totalPages:0):1))>=2){
		result += "&nbsp;...&nbsp;";
	}
	
	for(var i=Math.max(1, (pageNumber-halfNumPerPage>=1?pageNumber-halfNumPerPage-(pageNumber+halfNumPerPage-totalPages>0?pageNumber+halfNumPerPage-totalPages:0):1)); i<pageNumber; i++){
		result += "<a onclick='"+action+"("+i+")'>&nbsp;"+i+"&nbsp;</a>";
	}

	result += "<b style='cursor:default; text-decoration: underline;'>&nbsp;"+pageNumber+"&nbsp;</b>";
	
	for(var i=pageNumber+1; i<=Math.min(totalPages, (pageNumber+halfNumPerPage<=totalPages?pageNumber+halfNumPerPage+(pageNumber<1+halfNumPerPage?1+halfNumPerPage-pageNumber:0):totalPages)); i++){
		result += "<a onclick='"+action+"("+i+")'>&nbsp;"+i+"&nbsp;</a>";
	}
	
	if(Math.min(totalPages, (pageNumber+halfNumPerPage<=totalPages?pageNumber+halfNumPerPage+(pageNumber<1+halfNumPerPage?1+halfNumPerPage-pageNumber:0):totalPages))<=totalPages-1){
		result += "&nbsp;...&nbsp;";
	}
	
	if(pageNumber >= totalPages){
		result += "<span style='visibility:hidden'>&nbsp;"+nextPage+"&nbsp;</span>";
	} else {
		result += "&nbsp;<a onclick='"+action+"("+(pageNumber+1)+")'>"+nextPage+"</a>&nbsp;";
	}
	
	if(pageNumber >= totalPages){
		result += "<span style='visibility:hidden'>&nbsp;"+lastPage+"</span>";
	} else {
		result += "&nbsp;<a onclick='"+action+"("+totalPages+")'>"+lastPage+"</a>";
	}
	
	result += "</div>";
	
	return result;
}

function updateSlideshowCard(){
	$(".slideshow div.ecard_block").hover(function(){
		$(this).children("div.ecard_menu").stop(true, true).animate({opacity:"show"}, "fast");
	}, function(){
		$(this).children("div.ecard_menu").animate({opacity:"hide"}, "fast");
	});
}

/*****************/
/*** Light Box ***/
/*****************/

function showLightBox2(innerHTML, timeout){
	var newDiv = $(
		"<div id='lightBoxDivBG' class='lightBoxDivBG'></div>" +
		"<div id='lightBoxDiv' class='lightBoxDiv'>"+innerHTML+"</div>");

	if(navigator.appVersion.match("MSIE 6.0") == "MSIE 6.0"){
		$("select,checkbox").css("visibility", "hidden");
	}
	
	$("embed,object").css("visibility", "hidden");
	
	$(document.body).append(newDiv);
	
	$("div[id=lightBoxDivBG]").fadeTo(0,0.3);
	
	$("div[id=lightBoxDiv]").css("top", ( $(window).height() - $("div[id=lightBoxDiv]").height()) / 2+$(window).scrollTop() + "px")
		.css("left", ( $(window).width() - $("div[id=lightBoxDiv]").width()) / 2+$(window).scrollLeft() + "px")
		.css("visibility", "visible");
		
	if(!isNaN(timeout)){
		setTimeout("removeLightBox2()", timeout); 
	}
}

function removeLightBox2(){

	if(navigator.appVersion.match("MSIE 6.0") == "MSIE 6.0"){
		$("select,checkbox").css("visibility", "visible");
	}

	$("embed,object").css("visibility", "visible");

	$('div[id*=lightBoxDiv]').remove();
}

function alertLightBox2(message, word, timeout){
	
	var newDiv = message + "<div style='text-align:center; min-width: 400px'><input type='button' class='inputBtn' value='"+word+"' onclick='removeLightBox2()' style='margin:10px'/></div>";
	showLightBox2(newDiv, timeout);
}

/* Plug-in: jQuery BlockUI (jquery.blockUI.js) */
function showLightBox(title, content, timeout){
	
	var blockDiv = 
		"<div class='lightBoxCT'>"+
			"<div class='lightBoxT'>" + title + "</div>"+
			"<div class='lightBox'>"+ content + "</div>"+
		"</div>";
	
	$("embed,object").css("visibility", "hidden");
	
	$.blockUI({
		message: blockDiv,
		fadeIn: 300,
    	fadeOut: 300, 
		css: {
			centerX: true,
			centerY: true,
			border: "3px solid #999999",
			backgroundColor: "#e9e9e9",
			width: "400px"
		}
	});
	
	if(timeout != null && timeout > 0){
		setTimeout("removeLightBox()", timeout);
	}
}

function alertLightBox(message, word, timeout){
	
	var newDiv = message + "<br/><br/><input type='button' class='inputBtn' value='"+word+"' onclick='removeLightBox()'/>";
	showLightBox("", newDiv, timeout);
}

function removeLightBox(){
	$.unblockUI();
	
	$("embed,object").css("visibility", "visible");
}

/*** Captcha ***/
function reloadCaptcha(){

	$.post("creloadCaptcha", {}, function(data){
		if($(data).find("result").text() == "y"){
			$("#captcha").attr("src", "captcha?r="+Math.random());
		}
		checkCaptcha($("input[id=captchaValue]").val());
	}, "xml");
}

function checkCaptcha(value){
	$("#captchaResult").removeClass("ok").removeClass("error").removeClass("missing");
	if(value == "" || value.length < 5){
		$("#captchaResult").addClass("missing");
		return;
	}else if(value.length != 5){
		$("#captchaResult").addClass("error");
		return;
	}
	$.post("ccheckCaptcha", {value: value}, function(data){
		if($(data).find("result").text() == "y"){
			$("#captchaResult").addClass("ok");
		}else {
			$("#captchaResult").addClass("error");
		}
	}, "xml");
}

/*** SillyCube jQuery Plug-in ***/
;(function($){
	$.fn.sillyInput = function(options){
		var defaults = {
			instance: this,
			focusColor: "#FFC573",
			blurColor: "#FFFFFF",
			okColor: "#FFFFFF",
			errorColor: "#ff7f7f",
			missingColor: "#BDBFED",
			okMessage: "&nbsp;",
			errorMessage: "&nbsp;",
			missingMessage: "&nbsp;",
			duration: 300,
			rule: "^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$",
			target: "#emailResult",
			checkFunc: null,
			ajaxCheck: "false",
			ajaxURL: null,
			ajaxAction: null,
			ajaxParameterName: null
		};
		var options = $.extend(defaults, options);
		var target = options.target;
		
		return $(this).each(function(){
			$(this).blur(function(){
				$(target).removeClass("ok").removeClass("error").removeClass("missing");
				$(target).html("");
				$(this).stop(true, true);
				
				if($(this).attr("value") == ""){
					$(target).addClass("missing");
					$(target).html(options.missingMessage);
					$(this).stop(true, true).animate({backgroundColor: options.missingColor}, options.duration);
				}
				else if($(this).attr("value").match(options.rule) != null){
					if(options.ajaxCheck == "true"){
						var parameterString = options.ajaxParameterName+"="+$(this).val();
						
						$.post(options.ajaxURL+"?"+parameterString, "", function(data, instance){
							var result = $(data).children("result");
							
							if($(result).text() == "y"){
								$(target).addClass("ok");
								$(target).html(options.okMessage);
								$(instance).stop(true, true).animate({backgroundColor: options.okColor}, options.duration);
							}else{
								$(target).addClass("error");
								$(target).html(options.errorMessage);
								$(instance).stop(true, true).animate({backgroundColor: options.errorColor}, options.duration);
							}
						});
					}
					else if(options.checkFunc != null){
						if((options.checkFunc).call($(this), $(this).attr("value")) == true){
							$(target).addClass("ok");
							$(target).html(options.okMessage);
							$(this).stop(true, true).animate({backgroundColor: options.okColor}, options.duration);
						}
						else{
							$(target).addClass("error");
							$(target).html(options.errorMessage);
							$(this).stop(true, true).animate({backgroundColor: options.errorColor}, options.duration);
						}
					}
					else{
						$(target).addClass("ok");
						$(target).html(options.okMessage);
						$(this).stop(true, true).animate({backgroundColor: options.okColor}, options.duration);
					}
				}
				else{
					$(target).addClass("error");
					$(target).html(options.errorMessage);
					$(this).stop(true, true).animate({backgroundColor: options.errorColor}, options.duration);
				}
			});
		});
	};
})(jQuery);