(function($) {

    $.fn.innerfade = function(options) {
        return this.each(function() {   
            $.innerfade(this, options);
        });
    };

    $.innerfade = function(container, options) {
        var settings = {
        		'animationtype':    'fade',
            'speed':            'normal',
            'type':             'sequence',
            'timeout':          2000,
            'containerheight':  'auto',
            'runningclass':     'innerfade',
            'children':         null
        };
        if (options)
            $.extend(settings, options);
        if (settings.children === null)
            var elements = $(container).children();
        else
            var elements = $(container).children(settings.children);
        if (elements.length > 1) {
            $(container).css('position', 'relative').css('height', settings.containerheight).addClass(settings.runningclass);
            for (var i = 0; i < elements.length; i++) {
                $(elements[i]).css('z-index', String(elements.length-i)).css('position', 'absolute').hide();
            };
            if (settings.type == "sequence") {
                setTimeout(function() {
                    $.innerfade.next(elements, settings, 1, 0);
                }, settings.timeout);
                $(elements[0]).show();
            } else if (settings.type == "random") {
            		var last = Math.floor ( Math.random () * ( elements.length ) );
                setTimeout(function() {
                    do { 
												current = Math.floor ( Math.random ( ) * ( elements.length ) );
										} while (last == current );             
										$.innerfade.next(elements, settings, current, last);
                }, settings.timeout);
                $(elements[last]).show();
						} else if ( settings.type == 'random_start' ) {
								settings.type = 'sequence';
								var current = Math.floor ( Math.random () * ( elements.length ) );
								setTimeout(function(){
									$.innerfade.next(elements, settings, (current + 1) %  elements.length, current);
								}, settings.timeout);
								$(elements[current]).show();
						}	else {
							alert('Innerfade-Type must either be \'sequence\', \'random\' or \'random_start\'');
						}
				}
    };

    $.innerfade.next = function(elements, settings, current, last) {
        if (settings.animationtype == 'slide') {
            $(elements[last]).slideUp(settings.speed);
            $(elements[current]).slideDown(settings.speed);
        } else if (settings.animationtype == 'fade') {
            $(elements[last]).fadeOut(settings.speed);
            $(elements[current]).fadeIn(settings.speed, function() {
							removeFilter($(this)[0]);
						});
        } else
            alert('Innerfade-animationtype must either be \'slide\' or \'fade\'');
        if (settings.type == "sequence") {
            if ((current + 1) < elements.length) {
                current = current + 1;
                last = current - 1;
            } else {
                current = 0;
                last = elements.length - 1;
            }
        } else if (settings.type == "random") {
            last = current;
            while (current == last)
                current = Math.floor(Math.random() * elements.length);
        } else
            alert('Innerfade-Type must either be \'sequence\', \'random\' or \'random_start\'');
        setTimeout((function() {
            $.innerfade.next(elements, settings, current, last);
        }), settings.timeout);
    };

})(jQuery);

function removeFilter(element) {
	if(element.style.removeAttribute){
		element.style.removeAttribute('filter');
	}
}

function tep_price() {
	var val = Number($('#attr_select option:selected').attr('rel'))
	var $attr = (isNaN(val) ? 0 : val);
	
	var $regular = Math.round((Number($('dfn.regular').text()) + $attr)*100)/100;
	var $special = Math.round((Number($('dfn.special').text()) + $attr)*100)/100;

	$('.cost-update').each(function() {
		$(this).html((
			$regular == $special ? '$' + tep_round_fix($regular) : '<s>$'+tep_round_fix($regular)+'</s>&nbsp;<span class="productSpecialPrice">$'+tep_round_fix($special)+'</span>'
		))
	});
}

function tep_round_fix(val) {
	return (String(val).indexOf(".") == -1 ? val + '.00' : (String(val).split('.')[1].length == 1 ? val + '0' : val));
}

function slideSwitch(id) {
	var $active = $('#prod_image a.showing');
	var $next = $('#image'+id);
	if ($next.attr('id') != $active.attr('id')) {
		$active.fadeOut('slow'); 
		$next.fadeIn('slow');
		$next.addClass('showing');
		$active.removeClass('showing');
  }
}
var fields = ['first_name','last_name','enquiry'];

function cfValidate() {
	var error = new Array();
	
	if (!emailCheck($('#cfemail').val())) { error.push($('#cfemail').attr('title')); }

	for (var i=0;i<fields.length;i++) {
		if ($('#'+fields[i]).val() == '') {
			error.push($('#'+fields[i]).attr('title'));
		}
	}
		
	if (error.length == 0) {
		$('form').each(function() {
			if ($(this).attr('id') == 'cform') {
				$(this).submit();
			}
		});
		return true;
	} else {
		alert('The following fields must be valid and not empty:'+"\n- "+error.join("\n- "));
		return false;
	}
}

function emailCheck(value) {
	var ePattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
	if (ePattern.test(value) && value != 'sample@email.tst') {
		return true;
	} else {
		return false;
	}
}

var selected;
	
function selectRowEffect(object, buttonSelect) {
	if (!selected) {
		if (document.getElementById) {
			selected = document.getElementById('defaultSelected');
		} else {
			selected = document.all['defaultSelected'];
		}
	}
	
	//if (selected) selected.className = 'moduleRow';
	//object.className = 'moduleRowSelected';
	selected = object;
	
	// one button is not an array
	if (document.checkout_payment.payment[0]) {
		document.checkout_payment.payment[buttonSelect].checked=true;
	} else {
		document.checkout_payment.payment.checked=true;
	}
}

function selectRowEffect(obj) {
	$(obj).find('input').attr('checked','checked');
	$('tr.default').attr('class','module');
	$(obj).attr('class','module default');
}
