var NUMBER_OF_CLOUDS = 10;
var NUMBER_OF_CLOUD_KINDS = 9;
var PAGE_APP = "PageApp";
var URL = "/";
var $w, $b, $Base;
var clouds = [];


// Background Cloud Class
var C_MIN = 1,
C_MAX = 100,
C_RANGE = C_MAX - C_MIN;
function Cloud() {
this.x = (Math.random() * 200) - 50;
this.y = (Math.random() * 200) - 50;
this.z = (Math.random() * C_RANGE + C_MIN) * .01;
this.kinds = Math.floor(Math.random() * NUMBER_OF_CLOUD_KINDS);
//window.console.log( "x: " + this.x + ", y: " + this.y + ", z: " + this.z + ", kinds: " + this.kinds );
}


// Position Method
function cloudsPosition() {
var p = "", c, s = $w.scrollTop(), h = $Base.height(), x, y;
var ratio = (s / h - .5) * 200;
for (var i=0; i<NUMBER_OF_CLOUDS; i++) {
c = clouds[i];
y = c.y - ratio * c.z;
x = c.x + ratio * .1 * c.z;
p += x + "% " + y + "%,";
}
//p += SUN_POSITION;
p = p.slice(0,-1);
return p;
}


// Scroll Background
function bgScroll() {
$Base.css({ backgroundPosition: cloudsPosition() });
}


// App Images
function appImages() {

var FADE_DURATION = 500,
INTERVAL = 4000,
mainImages = [],
currentImage = 0,
numberOfLoadedMainImage = 0,
timerId,
$mainImage = $("#MainImage img").after("<img>"),
$overlayImage = $mainImage.next().attr("src", $mainImage.attr("src"));

// load images
var path = $overlayImage.attr("src").split("0.jpg").join("");
var newImage;
for (var i=0; i<NUM_OF_MAIN_IMAGES; i++) {
newImage = new Image();
newImage.onload = function() {
numberOfLoadedMainImage++;
if (numberOfLoadedMainImage == NUM_OF_MAIN_IMAGES) {
timerId = setInterval(function(){ fade() }, INTERVAL);
}
}
newImage.src = path + i + ".jpg?" + new Date().getTime();
mainImages.push( newImage );
}

function fade() {
currentImage += 1 - NUM_OF_MAIN_IMAGES * (currentImage >= NUM_OF_MAIN_IMAGES-1);
$overlayImage.attr("src", $mainImage.attr("src"));
$mainImage.attr("src", mainImages[currentImage].src);
$overlayImage.css({ opacity: 1 })
.animate({ opacity: 0 }, { duration: FADE_DURATION });
}

}


// Initialize
function init() {

$b = $("body");
$w = $(window);
$Base = $("#Base");

// prepare clouds
var images = "";
for (var i=0; i<NUMBER_OF_CLOUDS; i++) {
var c = new Cloud();
clouds.push(c);
images += "url("+URL+"images/bg/cloud" + c.kinds + ".png),"
}
images = images.slice(0,-1);

// background
$Base.css({
   backgroundImage: images,
   backgroundPosition: cloudsPosition()
   });

// bind to scroll
$w.scroll(function(){ bgScroll(); })

// animation
setTimeout( function(){ $Base.css("-webkit-transition-duration", "4s").css("-moz-transition-duration", "4s").css("-ms-transition-duration", "4s").css("-o-transition-duration", "4s"); }, 100 );

// application page
if ($b.attr("id") === PAGE_APP) appImages();

// social buttons
$("#SBHatena").socialbutton('hatena');
$("#SBMixi").socialbutton('mixi_check', { key: '[登録キー]' });
$("#SBTwitter").socialbutton('twitter', {
 button: 'horizontal',
 text: $("title").text() });
$("#SBFaceBook").socialbutton('facebook_like', { button: 'button_count' });
}


$(function(){ init() })



/* 小数点を4桁に丸めて文字列で返す
 */
var TRIM_NUM_LIMIT = 6;
function trimNumber( num ) {
var snum = num + "",
lim = TRIM_NUM_LIMIT + (num < 0 ? 1 : 0);
snum = snum.length > lim ? snum.substring(0, lim) + "..." : snum;
return snum;
}



