/*
 * jQuery Transitions Plugin v0.0.1
 * http://whynotonline.com/
 *
 * Copyright (c) 2009 Nivanka Fonseka
 * BSD licenses.
 * http://open.whynotonline.com/license/
 * 
 * This plugin is a for which you can use to add different find of transitions to your webpage.
 * Feel free to use this on your websites, but please leave this message in the files
 */

$Transitions = {
	Box : []	
}


jQuery.fn.transition = function($options) {


    var defaults = {
        duration: 5000,
        images: [],
        type: 'default',
        randomStart: false
    };

    $current = jQuery(this);

    jQuery.extend(defaults, $options);

    var randomnumber = 0;
    if (defaults.randomStart) {
        randomnumber = Math.floor(Math.random() * defaults['images'].length);
    }

    for (i = 0; i < defaults['images'].length; i++) {
        $div = jQuery('<div></div>');
        $style = 'width:' + $current.width() + 'px; height: ' + $current.height() + 'px; background:url(' + defaults['images'][i] + ');';

        if (defaults['type'] != 'tinker')
            $style += 'position:absolute;';

        if (i != randomnumber) {
            $style += 'display:none;';
        }
        else {
            $style += 'display:block;';
        }

        $div.attr('style', $style);
        $div.addClass('transitionRotator-' + i);
        $div.addClass('transitionRotator');
        $current.append($div);

        $height = $current.height();

        $Transitions['Box'][$current.attr('id')] = {
            $id: $current.attr('id'),
            $TransitionCurrent: randomnumber,
            $TransitionItems: defaults['images'].length,
            $speed: defaults['duration'] / 3,
            $currentMargin: 0,
            $maxTopMargin: $height * defaults['images'].length * -1
        };

    }

    if (defaults['type'] == 'fade')
        setInterval("transitionRotatorFade('" + $current.attr('id') + "')", defaults['duration']);
    else if (defaults['type'] == 'tinker')
        transitionRotatorTinker($current.attr('id'), defaults['duration']);
    else
        setInterval("transitionRotator('" + $current.attr('id') + "')", defaults['duration']);


}

function transitionRotatorFade($id){	
	if($Transitions['Box'][$id]['$TransitionCurrent'] < ($Transitions['Box'][$id]['$TransitionItems'] - 1)){ 
		jQuery('#' + $id +'>.transitionRotator-' + $Transitions['Box'][$id]['$TransitionCurrent']).fadeOut($Transitions['Box'][$id]['$speed']);
		 $Transitions['Box'][$id]['$TransitionCurrent'] =  $Transitions['Box'][$id]['$TransitionCurrent'] + 1;
		jQuery('#' + $id +'>.transitionRotator-' + $Transitions['Box'][$id]['$TransitionCurrent']).fadeIn($Transitions['Box'][$id]['$speed']);
	}
	else{
		jQuery('#' + $id +'>.transitionRotator-' +  $Transitions['Box'][$id]['$TransitionCurrent']).fadeOut($Transitions['Box'][$id]['$speed']);
		 $Transitions['Box'][$id]['$TransitionCurrent'] =  0;
		jQuery('.transitionRotator-' +  $Transitions['Box'][$id]['$TransitionCurrent']).fadeIn($Transitions['Box'][$id]['$speed']);
	}
}

function transitionRotatorTinker($id, $duration){
	jQuery('#' + $id +'>.transitionRotator').show();
	$Transitions['Box'][$id]['$maxTopMargin'] = $height *$Transitions['Box'][$id]['$TransitionItems'] * -1;
	
	setInterval("moveTop('" + $id + "')", $duration);
}

function moveTop($id){
	if($Transitions['Box'][$id]['$maxTopMargin'] + (jQuery('.transitionRotator-' + $Transitions['Box'][$id]['$TransitionCurrent']).height()) <= $Transitions['Box'][$id]['$currentMargin']){
		$Transitions['Box'][$id]['$currentMargin'] = $Transitions['Box'][$id]['$currentMargin'] - 1;
		$style = jQuery('#' + $id +'>.transitionRotator-0').css('margin-top',$Transitions['Box'][$id]['$currentMargin'] + 'px');
	}
	else{
		$Transitions['Box'][$id]['$currentMargin'] = 0;//jQuery('.transitionRotator-' + $TransitionCurrent).height();
		$style = jQuery('#' + $id +'>.transitionRotator-0').css('margin-top',$Transitions['Box'][$id]['$currentMargin'] + 'px');
	}
	
}

function transitionRotator($id){	
	if($Transitions['Box'][$id]['$TransitionCurrent'] < ($Transitions['Box'][$id]['$TransitionItems'] - 1)){ 
		jQuery('#' + $id +'>.transitionRotator-' + $Transitions['Box'][$id]['$TransitionCurrent']).hide($Transitions['Box'][$id]['$speed']);
		$Transitions['Box'][$id]['$TransitionCurrent'] = $Transitions['Box'][$id]['$TransitionCurrent'] + 1;
		jQuery('#' + $id +'>.transitionRotator-' + $Transitions['Box'][$id]['$TransitionCurrent']).show($Transitions['Box'][$id]['$speed']);
	}
	else{
		jQuery('#' + $id +'>.transitionRotator-' + $Transitions['Box'][$id]['$TransitionCurrent']).hide($Transitions['Box'][$id]['$speed']);
		$Transitions['Box'][$id]['$TransitionCurrent'] = 0;
		jQuery('#' + $id +'>.transitionRotator-' + $Transitions['Box'][$id]['$TransitionCurrent']).show($Transitions['Box'][$id]['$speed']);
	}
}
