
/*
 * global object.
 */
var Ginger = {
    config: {
        avatarUrl: '/hikishimeginger/club/Avatar/get',
        closetUrl: '/hikishimeginger/club/Avatar/closet',
        shopUrl: '/hikishimeginger/club/Shop/list',
        cartUrl: '/hikishimeginger/club/Cart'
    }
};



/*
 * avatar function.
 */
(function($){

	$.fn.avatar = function(params) {

		var defaults = {
			url: Ginger.config.avatarUrl,
			data: '',
			callback: undefined,
			useCache: false
		};

		return this.each(function(){
			if ((!this.id) || (!swfobject)) {
				return;
			}

			var option = $.extend(defaults, params);

			if (this.tagName === 'OBJECT') {
				// already exist.
				readyToGo(this);
			}
			else {
				// first creation.
				swfobject.embedSWF(
					'/hikishimeginger/club/swf/avatar.swf',
					this.id,
					'200',
					'267',
					'9.0.0',
					'/hikishimeginger/club/swf/expressInstall.swf',
					null,
					{ wmode: 'transparent' },
					null,
					function(e) {
						var id = e.ref.id;
						// wait for external interface.
						(function(){
							var swf = document.getElementById(id);
							if (!swf || !swf.loadXML) {
								setTimeout(arguments.callee, 100);
							}
							else {
								readyToGo(swf);
							}
						})();
					}
				);
			}

			/*
			 * load avatar xml.
			 *
			 * @param {object} swf element.
			 */
			function readyToGo(swf)
			{
				if (option.useCache && $(swf).data('xmlCache')) {
					// use cache xml.
					swf.loadXML($(swf).data('xmlCache'));
				}
				else {
					// request avatar xml.
					$.ajax({
						url: option.url,
						type: 'POST',
						data: option.data,
						dataType: 'text',
						error: function(xhr, status) {
							if ($.isFunction(option.callback)) {
								option.callback.call(this, false);
							}
						},
						success: function(data) {
							// store xml data.
							if (!$(swf).data('xmlCache')) {
								$(swf).data('xmlCache', data);
							}

							swf.loadXML(data);
							if ($.isFunction(option.callback)) {
								option.callback.call(this, true);
							}
						}
					});
				}
			}

		});
	};

})(jQuery);



/*
 * common function.
 */
(function($){

    // onload.
    $(document).ready(function(){

        // set default avatar.
        $('#avatar').avatar();

        // rollover.
        $('img.over, input.over').each(function(){
            // preload image.
            var img = new Image();
            img.src = this.src.replace(/^(.+)(\.[a-z]+)$/, '$1_over$2');
            $(this)
                // store the image sources.
                .data('image', {
                    defaultSrc: this.src,
                    hoverSrc: img.src
                })
                .hover(
                    function(){
                        this.src = $(this).data('image').hoverSrc;
                    },
                    function(){
                        this.src = $(this).data('image').defaultSrc;
                    }
                );
        });

        // status current.
        $('img.current').each(function(){
            this.src = this.src.replace(/^(.+)(\.[a-z]+)$/, '$1_over$2');
        });

        // open link as '_blank'.
        $('a[rel=external]').click(function(){
            window.open(this.href, '_blank');
            return false;
        });

        // avatar switcher.
        $('#status ul')
            .find('li:gt(0)')
                .hide()
            .end()
            .find('a')
                .click(function(){
                    var rel = $(this).attr('rel');

                    // switch action.
                    $(this).closest('ul').find('li').each(function(){
                        if ($('a', this).attr('rel') === rel) {
                            $(this).hide();
                        }
                        else {
                            $(this).show();
                        }
                    });

                    // request avatar.
                    if (rel === 'undo') {
                        $('#avatar').avatar({
                            useCache: true
                        });
                    }
                    else {
                        $('#avatar').avatar({
                            url: '/hikishimeginger/club/Avatar/first'
                        });
                    }

                    return false;
                })
            .end()
        ;
		
		$('.popup_window').click(
			function(){
				var popup = window.open(this.href, 'gingerHelp', 'menubar=yes,toolbar=no,location=yes,status=yes,scrollbars=yes,resizable=yes,width=800,height=800');
				popup.focus();
				return false;		
			}
		);

    });

})(jQuery);

