if ( typeof Kawatsuku == 'undefined' ) Kawatsuku = {};
var data;

new function(){
	Kawatsuku.session = (function(){
		var config;
		var third_party_check = false;
		var login_flag        = false;
		var auto_start_flag   = false;
		var auto_start_timer;
		
		return {
			init : function(settings, type){
				config = settings;
				this.check(type);
			},
			check : function(type){
				if ( typeof type == 'undefined' ) type = 'top';
				var self = this;
				var date = new Date().getTime();
				var site_log = Kawatsuku.sitemap.get_log_data();
				var src = config.file.login+'?type='+type+'&date='+date+'&id='+site_log.point_num;
				$('head').append('<script type="text/javascript" src="'+src+'" charset="UTF-8"></script>');
				
				auto_start_timer = setTimeout(function(){
					self.check_end('exception');
					auto_start_flag = true;
				}, 20000);
			},
			check_end : function(type){
				if ( auto_start_flag ) return;
				clearTimeout(auto_start_timer);
				
				if ( type == 'exception' ) return;
				if ( data.initialized == false && third_party_check == false ) {
					this.check( type );
					third_party_check = true;
					return;
				} else if ( data.initialized == false && third_party_check == true ) {
					var tp = config.third_party;
					$(tp.target).after(tp.template);
					type = 'exception';
				}
				
				this.set_login_flag();
				
				Kawatsuku.commons.post_log(this.get_user_id());
				Kawatsuku.commons.set_token(this.get_token());
				
				if ( type == 'first' && login_flag ) {
					Kawatsuku.membership.hide();
					Kawatsuku.membership.first_show();
					Kawatsuku.membership.show_tab();

					Kawatsuku.rank.hide();
					Kawatsuku.rank.first_show();
					Kawatsuku.rank.show_tab();
					
					Kawatsuku.tab.change_display();
				} else if ( type == 'top' ) {
					Kawatsuku.tab.init(config);
					Kawatsuku.maincontents.init(config);
					Kawatsuku.membership.init(config);
					Kawatsuku.rank.init(config);
				} else if ( type == 'exception' ) {
					data = {
						initialized : true,
						user : {
							id : '',
							level : '',
							nickname : '',
							point : ''
						},
						data : {
							data : {
								point : '',
								users : '',
								total : ''
							}
						},
						token : ''
					}
					login_flag = true;
					Kawatsuku.tab.init(config);
					Kawatsuku.maincontents.init(config);
					$(config.selector.login+','+config.selector.membership).hide();
					$(config.selector.rank_login+','+config.selector.rank_membership).hide();

				} else {
					Kawatsuku.tab.init(config);
					Kawatsuku.membership.init(config);
					Kawatsuku.rank.init(config);
				}
			},
			check_login : function(){
				return login_flag;
			},
			set_login_flag : function(){
				if ( typeof data == 'undefined' ) return login_flag = true;
				login_flag = ( data.user != '' ) ? true : false;
			},
			get_user_id : function(){
				if ( typeof data == 'undefined' ) return id = '';
				var id = '';
				if ( login_flag ) id = data.user.id;
				return id;
			},
			get_token : function(){
				if ( typeof data == 'undefined' ) return '';
				return ( typeof data.token != 'undefined' && typeof data.token == 'string' ) ? data.token : '';
			}
		}
	})();
	
	Kawatsuku.maincontents = (function(){
		var config;
		
		return {
			init : function(settings){
				config = settings;
				this.show();
			},
			show : function(){
				var settings = Kawatsuku.commons.get_base_settings();
				var flashvars = this.make_flashvars();
				
				settings = $.extend(settings, {
					params : {
						wmode : 'transparent',
						allowscriptaccess : 'always'
					},
					attributes : {
						id   : config.swf_id_list.top,
						name : config.swf_id_list.top
					},
					swf_path  : config.file.top,
					target    : config.target.top_box,
					width     : config.swf_size_list.top.width,
					height    : config.swf_size_list.top.height,
					flashvars : flashvars
				});
				
				Kawatsuku.commons.write_swf(settings);
			},
			make_flashvars : function(){
				var login      = Kawatsuku.session.check_login();
				var user_id    = '';
				var login_form = false;
				var point      = 0;
				var users      = '';
				var match;
				
				if ( login ) {
					user_id = data.user.id;
				} else {
					if ( match = location.hash.match(config.regexp.is_login) ) {
						login_form = true;
						if ( typeof match == 'object' ) location.hash = match[1]+false;
					}
				}
				
				var point = ( data.data.point && typeof data.data.point != 'undefined' ) ? data.data.point : 0;
				var users = ( data.data.users && typeof data.data.users != 'undefined' ) ? data.data.users : '';
				var total = ( data.data.total && typeof data.data.total != 'undefined' ) ? data.data.total : 0;
				
				return {
					login        : login,
					user_id      : user_id,
					login_form   : login_form,
					point        : point,
					users        : Kawatsuku.commons.encode_to_json(users),
					member_total : total
				}
			}
		}
	})();
	
	Kawatsuku.membership = (function(){
		var config;
		
		return {
			init : function(settings){
				config = settings;
				this.set_show_event();
				this.hover_close_btn();
			},
			set_show_event : function(){
				var self = this;
				var selector = config.selector;
				
				$(selector.login).unbind('login').bind('click.login', function(){
					self.show_login_view();
				});
				
				$(selector.membership).unbind('member').bind('click.member', function(){
					self.show_default_view();
				});
			},
			hover_close_btn : function(){
				var s = config.selector;
				
				if (!($.browser.msie && $.browser.version <= 6)) {
					$(s.close_btn_img).hover(
						function(){
							$(this).parent().find(s.tab_hover_out_img).hide();
							$(this).parent().find(s.tab_hover_img).show();
						},
						function(){
							$(this).parent().find(s.tab_hover_img).hide();
							$(this).parent().find(s.tab_hover_out_img).show();
						}
					);
				} else {
					$(s.close_btn_span).hover(
						function(){
							$(this).parent().find(s.tab_hover_out_span).parent().hide();
							$(this).parent().find(s.tab_hover_span).parent().show();
						},
						function(){
							$(this).parent().find(s.tab_hover_span).parent().hide();
							$(this).parent().find(s.tab_hover_out_span).parent().show();
						}
					);
				}
			},
			show_login_view : function(){
				var settings = Kawatsuku.commons.get_base_settings();
				settings = $.extend(settings, {
					params : {
						wmode : 'window',
						allowscriptaccess : 'always'
					},
					attributes : {
						id   : config.swf_id_list.passport_guest,
						name : config.swf_id_list.passport_guest
					},
					swf_path : config.file.passport_guest,
					target   : config.target.login_box,
					width    : config.swf_size_list.login.width,
					height   : config.swf_size_list.login.height
				});
				
				Kawatsuku.commons.trace(settings, 'center');
				Kawatsuku.commons.write_swf(settings);
				
				setTimeout(function(){
					$('#'+config.target.sitemap).hide();
					$('#'+config.target.login+', #'+config.target.login_btn).show();
				}, 0);
			},
			show_default_view : function(){
				var settings = Kawatsuku.commons.get_base_settings();
				var wmode = ( Kawatsuku.session.check_login() ) ? 'window' : 'transparent';
				var flashvars = this.get_flashvars();
				
				settings = $.extend(settings, {
					params : {
						wmode : wmode,
						allowscriptaccess : 'always',
						base : config.commons.swf_uri+'passport/'
					},
					attributes : {
						id : config.swf_id_list.passport,
						name : config.swf_id_list.passport
					},
					flashvars : flashvars,
					swf_path  : config.file.passport,
					target    : config.target.passport_box,
					width     : config.swf_size_list.passport.width,
					height    : config.swf_size_list.passport.height
				});
				
				Kawatsuku.commons.trace(settings);
				Kawatsuku.commons.write_swf(settings);
				
				$('#'+config.target.sitemap).hide();
				$('#'+config.target.passport).show();
			},
			first_time : function(){
				Kawatsuku.session.check('first');
			},
			first_show : function(){
				var settings  = Kawatsuku.commons.get_base_settings();
				var flashvars = this.get_flashvars();
				flashvars = $.extend(flashvars, {
					regist : true
				});
				
				settings = $.extend(settings, {
					params : {
						wmode : 'window',
						allowscriptaccess : 'always',
						base : config.commons.swf_uri+'passport/'
					},
					flashvars : flashvars,
					swf_path  : config.file.passport,
					target    : config.target.passport_box,
					width     : config.swf_size_list.passport.width,
					height    : config.swf_size_list.passport.height
				});
				
				Kawatsuku.commons.trace(settings);
				Kawatsuku.commons.write_swf(settings);
				
				$('#'+config.target.sitemap).hide();
				$('#'+config.target.passport).show();
			},
			get_flashvars : function(){
				var flashvars;
				if ( Kawatsuku.session.check_login() ) {
					var user = data.user;
					flashvars = {
						level     : user.level || 1,
						id        : user.id || '',
						nickname  : user.nickname || '',
						point     : user.point || 0
					}
				}
				return flashvars
			},
			login : function(){
				location.reload();
			},
			regist : function(){
				var c = config.commons;
				var uri = c.root_uri;
				var redirct_uri = uri + '#register=true';
				var href = location.href;
				var reg = config.regexp;
				var match;
				
				if ( match = href.match(reg.is_regist_uri) ) {
					if ( match && typeof match == 'object' && match.length == 2 ) {
						if ( match[1] == '' || match[1].match(reg.is_regist) ) {
							location.href = redirct_uri;
							location.reload();
						} else {
							location.href = redirct_uri;
						}
					}
				}
			},
			login_view : function(){
				$(config.selector.login).click();
			},
			show : function(){
				$(config.selector.membership).click();
			},
			hide : function(){
				var t = config.target;
				$('#'+config.swf_id_list.passport+', #'+config.swf_id_list.passport_guest).remove();
				$('#'+t.login).hide();
				$('#'+t.login_container).append('<div id="'+t.login_box+'"></div>');
				
				$('#'+t.passport).empty().hide();
				$('#'+t.passport).append('<div id="'+t.passport_box+'"></div>').focus();
				
				$('#'+t.overlay).remove();
			},
			show_input_area : function(){
				this.hide_tab();
				
				var settings  = Kawatsuku.commons.get_base_settings();
				settings = $.extend(settings, {
					params : {
						wmode : 'window',
						allowscriptaccess : 'always'
					},
					attributes : {
						id   : config.swf_id_list.register,
						name : config.swf_id_list.register
					},
					swf_path : config.file.register,
					target   : config.target.regist_box,
					width    : config.swf_size_list.register.width,
					height   : config.swf_size_list.register.height
				});
				
				Kawatsuku.commons.write_swf(settings);
				
				var t = config.target;
				$('#'+t.regist+', #'+t.regist_box).show();
			},
			hide_input_area : function(){
				var t = config.target;
				$('#'+t.regist).empty().hide();
				$('#'+t.regist_parent).hide();
				$('#'+t.regist).append('<div id="'+t.regist_box+'"></div>').focus();
			},
			show_tab : function(){
				$(config.selector.navigation).show();
			},
			hide_tab : function(){
				$(config.selector.navigation).hide();
			}
		}
	})();
	
	Kawatsuku.rank = (function(){
		var config;
		
		return {
			init : function(settings){
				config = settings;
				this.set_show_event();
				this.hover_close_btn();
			},
			set_show_event : function(){
				var self = this;
				var selector = config.selector;
				
				$(selector.rank_login).unbind('login').bind('click.login', function(){
					self.show_login_view();
				});
				
				$(selector.rank_membership).unbind('member').bind('click.member', function(){
					self.show_default_view();
				});
			},
			hover_close_btn : function(){
				var s = config.selector;
				
				if (!($.browser.msie && $.browser.version <= 6)) {
					$(s.rank_close_btn_img).hover(
						function(){
							$(this).parent().find(s.tab_hover_out_img).hide();
							$(this).parent().find(s.tab_hover_img).show();
						},
						function(){
							$(this).parent().find(s.tab_hover_img).hide();
							$(this).parent().find(s.tab_hover_out_img).show();
						}
					);
				} else {
					$(s.rank_close_btn_span).hover(
						function(){
							$(this).parent().find(s.tab_hover_out_span).parent().hide();
							$(this).parent().find(s.tab_hover_span).parent().show();
						},
						function(){
							$(this).parent().find(s.tab_hover_span).parent().hide();
							$(this).parent().find(s.tab_hover_out_span).parent().show();
						}
					);
				}
			},
			show_login_view : function(){
				var settings = Kawatsuku.commons.get_base_settings();
				settings = $.extend(settings, {
					params : {
						wmode : 'window',
						allowscriptaccess : 'always'
					},
					attributes : {
						id   : config.swf_id_list.passport_guest,
						name : config.swf_id_list.passport_guest
					},
					swf_path : config.file.passport_guest,
					target   : config.target.rank_login_box,
					width    : config.swf_size_list.login.width,
					height   : config.swf_size_list.login.height
				});
				
				Kawatsuku.commons.trace(settings, 'center');
				Kawatsuku.commons.write_swf(settings);
				
				setTimeout(function(){
					$('#'+config.target.sitemap).hide();
					$('#'+config.target.rank_login+', #'+config.target.rank_login_btn).show();
				}, 0);
			},
			show_default_view : function(){
				var settings = Kawatsuku.commons.get_base_settings();
				var wmode = ( Kawatsuku.session.check_login() ) ? 'window' : 'transparent';
				var flashvars = this.get_flashvars();
				
				settings = $.extend(settings, {
					params : {
						wmode : wmode,
						allowscriptaccess : 'always',
						base : config.commons.swf_uri+'passport/'
					},
					attributes : {
						id : config.swf_id_list.passport,
						name : config.swf_id_list.passport
					},
					flashvars : flashvars,
					swf_path  : config.file.passport,
					target    : config.target.rank_passport_box,
					width     : config.swf_size_list.passport.width,
					height    : config.swf_size_list.passport.height
				});
				
				Kawatsuku.commons.trace(settings);
				Kawatsuku.commons.write_swf(settings);
				
				$('#'+config.target.sitemap).hide();
				$('#'+config.target.rank_passport).show();
			},
			first_time : function(){
				Kawatsuku.session.check('first');
			},
			first_show : function(){
				var settings  = Kawatsuku.commons.get_base_settings();
				var flashvars = this.get_flashvars();
				flashvars = $.extend(flashvars, {
					regist : true
				});
				
				settings = $.extend(settings, {
					params : {
						wmode : 'window',
						allowscriptaccess : 'always',
						base : config.commons.swf_uri+'passport/'
					},
					flashvars : flashvars,
					swf_path  : config.file.passport,
					target    : config.target.rank_passport_box,
					width     : config.swf_size_list.passport.width,
					height    : config.swf_size_list.passport.height
				});
				
				Kawatsuku.commons.trace(settings);
				Kawatsuku.commons.write_swf(settings);
				
				$('#'+config.target.sitemap).hide();
				$('#'+config.target.rank_passport).show();
			},
			get_flashvars : function(){
				var flashvars;
				if ( Kawatsuku.session.check_login() ) {
					var user = data.user;
					flashvars = {
						level     : user.level || 1,
						id        : user.id || '',
						nickname  : user.nickname || '',
						point     : user.point || 0
					}
				}
				return flashvars
			},
			login : function(){
				location.reload();
			},
			regist : function(){
				var c = config.commons;
				var uri = c.root_uri;
				var redirct_uri = uri + '#register=true';
				var href = location.href;
				var reg = config.regexp;
				var match;
				
				if ( match = href.match(reg.is_regist_uri) ) {
					if ( match && typeof match == 'object' && match.length == 2 ) {
						if ( match[1] == '' || match[1].match(reg.is_regist) ) {
							location.href = redirct_uri;
							location.reload();
						} else {
							location.href = redirct_uri;
						}
					}
				}
			},
			login_view : function(){
				$(config.selector.rank_login).click();
			},
			show : function(){
				$(config.selector.rank_membership).click();
			},
			hide : function(){
				var t = config.target;
				$('#'+config.swf_id_list.passport+', #'+config.swf_id_list.passport_guest).remove();
				$('#'+t.rank_login).hide();
				$('#'+t.rank_login_container).append('<div id="'+t.rank_login_box+'"></div>');
				
				$('#'+t.rank_passport).empty().hide();
				$('#'+t.rank_passport).append('<div id="'+t.rank_passport_box+'"></div>').focus();
				
				$('#'+t.overlay).remove();
			},
			show_input_area : function(){
				this.hide_tab();
				
				var settings  = Kawatsuku.commons.get_base_settings();
				settings = $.extend(settings, {
					params : {
						wmode : 'window',
						allowscriptaccess : 'always'
					},
					attributes : {
						id   : config.swf_id_list.register,
						name : config.swf_id_list.register
					},
					swf_path : config.file.register,
					target   : config.target.regist_box,
					width    : config.swf_size_list.register.width,
					height   : config.swf_size_list.register.height
				});
				
				Kawatsuku.commons.write_swf(settings);
				
				var t = config.target;
				$('#'+t.regist+', #'+t.regist_box).show();
			},
			hide_input_area : function(){
				var t = config.target;
				$('#'+t.regist).empty().hide();
				$('#'+t.regist_parent).hide();
				$('#'+t.regist).append('<div id="'+t.regist_box+'"></div>').focus();
			},
			show_tab : function(){
				$(config.selector.navRank).show();
			},
			hide_tab : function(){
				$(config.selector.navRank).hide();
			}
		}
	})();

	Kawatsuku.sitemap = (function(){
		var config;
		var site_log;
		
		return {
			init : function(settings){
				config   = settings;
				site_log = config.cookie.site_log.value
				this.set_show_event();
				this.set_log();
			},
			set_show_event : function(){
				var self = this;
				var selector = config.selector;
				
				$(selector.sitemap).unbind().click(function(){
					var logs = self.get_log();
					
					var settings = Kawatsuku.commons.get_base_settings();
					settings = $.extend(settings, {
						params : {
							wmode : 'transparent',
							allowscriptaccess : 'always'
						},
						attributes : {
							id   : config.swf_id_list.sitemap,
							name : config.swf_id_list.sitemap
						},
						flashvars : {
							site_log  : logs
						},
						swf_path : config.file.sitemap,
						target   : config.target.sitemap_box,
						width    : config.swf_size_list.sitemap.width,
						height   : config.swf_size_list.sitemap.height
					});
					
					Kawatsuku.commons.trace(settings);
					Kawatsuku.commons.write_swf(settings);
					
					var t = config.target;
					$('#'+t.passport).hide();
					$('#'+t.sitemap).show();
				});
			},
			show : function(){
				$(config.selector.sitemap).click();
			},
			hide : function(){
				var t = config.target;
				$('#'+t.overlay).remove();
				$('#'+t.sitemap).empty().hide();
				$('#'+t.sitemap).append('<div id="'+t.sitemap_box+'"></div>').focus();
			},
			set_log : function(){
				var cookie = config.cookie.site_log;
				var cookie_string = $.cookie(cookie.name);
				if ( cookie_string ) {
					site_log = eval('({'+cookie_string+'})');
					site_log = $.extend(cookie.value, site_log);
				}
				
				var log_data = this.get_log_data();
				if ( typeof site_log[log_data.key] != 'undefined' && site_log[log_data.key] == false ) {
					site_log[log_data.key] = true;
					$.cookie(cookie.name, Kawatsuku.commons.to_json(site_log), { expires: cookie.limit, path: cookie.path });
				}
			},
			get_log : function(){
				return $.cookie(config.cookie.site_log.name);
			},
			get_log_data : function(){
				if ( $(config.selector.site_log).length == 0 ) return;
				
				var site_log_id;
				var site_log = {
					key       : '',
					page_id   : '',
					page_num  : '',
					point_num : ''
				}
				if ( site_log_id = $(config.selector.site_log).attr('id').match(config.regexp.is_page_id) ) {
					var site_log_array = site_log_id[0].split('_');
					if ( typeof site_log_array == 'object' && site_log_array.length == 4 ) {
						site_log = {
							page_id   : site_log_array[1] || 'A',
							page_num  : site_log_array[2] || 001,
							point_num : site_log_array[3]
						}
						site_log.key = ( site_log.page_id == 'C' )
									 ? site_log.page_id+'_'+site_log.page_num
									 : site_log.page_id;
						site_log.key = ( site_log.page_id == 'H' )
									 ? site_log.page_id+'_'+site_log.page_num
									 : site_log.page_id;
					}
				}
				return site_log;
			}
		}
	})();
	
	Kawatsuku.tab = (function(){
		var config;
		var timer;
		
		return {
			init : function(settings){
				config = settings;
				this.start();
				this.set_move_tab();
				this.change_display();
				this.rotation_login_tab();
			},
			start : function(){
				if (!($.browser.msie && $.browser.version <= 6)) return;
				
				var nav = config.selector.navigation;
				var p   = config.position.tab;
				
				$(nav).css({ 'position' : 'absolute' });
				
				var nav_style = $(nav).get(0).style;
				if ( nav_style.getExpression('behavior') ) return;
				nav_style.setExpression(
					'behavior', 'Kawatsuku.commons.fixed(this,'+p.top+','+p.left+')'
				);
			},
			end : function(){
				var nav_style = $(config.selector.navigation).get(0).style;
				if ( nav_style.getExpression('behavior') ) return;
				nav_style.removeExpression('behavior');
			},
			set_move_tab : function(){
				var self = this;
				var s = config.selector;
				var selector = [s.login, s.membership, s.sitemap].join(',');
				
				if (!($.browser.msie && $.browser.version <= 6)) {
					$(selector).hover(
						function(){
							self.stop_rotation();
							$(s.tab_img, this).hide();
							$(s.tab_hover_img, this).show();
						},
						function(){
							self.rotation_login_tab();
							$(s.tab_img, this).hide();
							$(s.tab_hover_out_img, this).show();
						}
					);
				} else {
					$(selector).hover(
						function(){
							self.stop_rotation();
							$(s.tab_span, this).hide();
							$(s.tab_hover_span, this).parent().show();
						},
						function(){
							self.rotation_login_tab();
							$(s.tab_span, this).hide();
							$(s.tab_hover_out_span, this).parent().show();
						}
					);
				}
			},
			change_display : function(){
				var selector = config.selector;
				if ( Kawatsuku.session.check_login() ) {
					$(selector.login).hide();
					$(selector.membership).show();
					$(selector.rank_login).hide();
					$(selector.rank_membership).show();
				} else {
					$(selector.membership).hide();
					$(selector.login).show();
					$(selector.rank_membership).hide();
					$(selector.rank_login).show();
				}
				$(selector.sitemap).show();
			},
			display_type_present : function(){
				$(config.selector.sitemap).hide();
				$(config.selector.membership).hide();
				$(config.selector.rank_membership).hide();
			},
			rotation_login_tab : function(){
				var s = config.selector;
				var index = 0;
				
				if (!($.browser.msie && $.browser.version <= 6)) {
					timer = setInterval(function(){
						var max = $(s.tab_rotation_img, config.selector.login).length;
						if ( index >= max ) index = 0;
						$(s.tab_rotation_img+':not(:eq('+index+'))', config.selector.login).hide();
						$(s.tab_rotation_img+':eq('+index+')', config.selector.login).show();
						index++;
					}, config.timer.change_tab);
				} else {
					timer = setInterval(function(){
						var max = $(s.tab_rotation_span, config.selector.login).length;
						if ( index >= max ) index = 0;
						$(s.tab_rotation_span+':not(:eq('+index+'))', config.selector.login).hide();
						$(s.tab_rotation_span+':eq('+index+')', config.selector.login).show();
						index++;
					}, config.timer.change_tab);
				}
			},
			stop_rotation : function(){
				clearInterval(timer);
			}
		}
	})();
	
	Kawatsuku.commons = (function(){
		var swf_settings = {
			params : {
				wmode : 'transparent',
				allowscriptaccess : 'always'
			},
			attributes : {
				id   : 'external_swf',
				name : 'external_swf'
			}
		}
		
		return {
			init : function(settings){
				config = settings;
			},
			get_base_settings : function(){
				return swf_settings;
			},
			set_token : function(token){
				config.commons.token = token;
			},
			get_token : function(){
				return config.commons.token || '';
			},
			write_swf : function(settings){
				var s = settings;
				var flashvars = s.flashvars || {};
				s.flashvars = $.extend(flashvars, {
					timestamp : config.commons.timestamp,
					domain    : config.commons.api_domain,
					token     : this.get_token()
				});
				
				if ( $('#'+s.target).length == 1 ) {
					swfobject.embedSWF(s.swf_path, s.target, s.width, s.height, "9.0.0", "/swf/src/expressInstall.swf", s.flashvars, s.params, s.attributes);
				}
			},
			trace : function(settings, type){
				this.write_overlay();
				
				if ( type == 'center' ) {
					this.set_click_close();
					this.trace_window_center(settings);
				} else {
					this.trace_window(settings);
				}
				$(window).resize();
			},
			trace_window : function(settings){
				if (!($.browser.msie && $.browser.version <= 6)) return;
				
				var div = $('#'+settings.target).parent('div');
				$(window).bind('resize', function(){
					div.css({
						'width' : $(window).width(),
						'height' : $(window).height()
					});
				});
			},
			trace_window_center : function(settings){
				if (!($.browser.msie && $.browser.version <= 6)) return;
				
				var s    = settings;
				var node = ( config.target.login_box.match($('#'+s.target).attr('id')) )
						 ? $('#'+s.target).parents('#'+config.target.login)
						 : $('#'+s.target).parent('div');
				
				var margin_top  = - Math.round((config.swf_size_list.login.height)/2);
				var margin_left = - Math.round((config.swf_size_list.login.width)/2);
				
				$(window).bind('resize', function(){
					if ( node.get(0).style.getExpression('behavior') )
						node.get(0).style.removeExpression('behavior');
					
					var top  = Math.round($(window).height()/2);
					var left = Math.round($(window).width()/2);
					
					$(node).css({
						'position'    : 'absolute',
						'top'         : top,
						'left'        : left,
						'margin-top'  : margin_top,
						'margin-left' : margin_left
					});
					
					node.get(0).style.setExpression(
						'behavior', 'Kawatsuku.commons.fixed(this,'+top+','+left+')'
					);
				});
			},
			write_overlay : function(){
				$('#'+config.target.sitemap).after('<div id="'+config.target.overlay+'"></div>');
				
				if ( $.browser.msie ) {
					$('#'+config.target.overlay).css({
						'filter'   : 'alpha(opacity=60)'
					});
				}

				if (!($.browser.msie && $.browser.version <= 6)) return;
				
				$(window).bind('resize.overlay', function(){
					$('#'+config.target.overlay).css({
						'position' : 'absolute',
						'width'    : $(window).width(),
						'height'   : $(window).height(),
						'filter'   : 'alpha(opacity=60)'
					});
				});
				
				var top  = 0;
				var left = 0;
				$('#'+config.target.overlay).get(0).style.setExpression(
					'behavior', 'Kawatsuku.commons.fixed(this,'+top+','+left+')'
				);
			},
			set_click_close : function(){
				var target = config.target;
				$('#'+target.overlay+', #'+target.login_btn).unbind().click(function(){
					setTimeout(function(){
						Kawatsuku.membership.hide();
						Kawatsuku.sitemap.hide();
					}, 0);
				});
			},
			fixed : function(el, top, left){
				el.style.top  = (document.body.scrollTop || document.documentElement.scrollTop) + top + 'px';
				el.style.left = (document.body.scrollLeft || document.documentElement.scrollLeft) + left + 'px';
			},
			encode_to_json : function(object){
				return encodeURI($.toJSON(object));
			},
			to_json : function(object){
				var json = $.toJSON(object);
				json = json.replace(/{(.*)}/, '$1');
				return json.replace(/\"/g, '');
			},
			post_log : function(id){
				if ( (!id && typeof id == 'undefined') || id == '' ) id = 'non';
				else id = 'kwtk'+id;
				if ( typeof kao_member == 'function' ) kao_member(id);
			},
			window_open : function(url){
				window.open(url, '', 'location=yes,menubar=no,resizable=yes,scrollbars=yes,status=no,titlebar=yes,toolbar=yes,width=800,height=600');
			},
			reload : function(){
				location.reload();
			}
		}
	})();
}

$(function(){
	var config = {};
	var C = config.commons = {};
	C.domain     = location.hostname;
	C.api_domain = 'kawatsuku.com';
	//C.api_domain = 'kawatsuku.dev.up-arrows.co.jp';
	C.host       = 'http://'+C.domain+'/';
	C.api_host   = 'http://'+C.api_domain+'/';
	C.root_uri   = C.host + 'kawatsuku/';
	C.root_dir   = '/kawatsuku/';
	C.swf_uri    = C.root_dir+'swf/';
	C.timestamp  = new Date().getTime();
	
	config.selector = {
		navigation     : '#navUtility',
		login          : '#unavLogin',
		membership     : '#unavMembersCard',
		sitemap        : '#unavSitemap',
		site_log       : 'div[id^=pageId_]',
		close_btn_img  : '#btnCloseLbLogin img',
		close_btn_span : '#btnCloseLbLogin span',
		tab_img        : 'img',
		tab_span       : 'span',
		tab_hover_img  : 'img[class*=hover]',
		tab_hover_span : 'span img[class*=hover]',
		tab_hover_out_img  : 'img:not([class*=hover]):first',
		tab_hover_out_span : 'span img:not([class*=hover]):first',
		tab_rotation_img   : 'img:not(img:last)',
		tab_rotation_span  : 'span:not(span:last)',
		header     : 'div:first[id*=MicroSiteHeadFoot] table td:first',
		header_kww : 'div:first[id*=MicroSiteHeadFoot] table td:last a',
		footer     : 'div:last[class*=MicroSiteFoot]',
		footer     : 'div:last[id*=MicroSiteHeadFoot]',
   	        navRank    : '#navRankUtility',
                rank_login : '#unavRankLogin',
	        rank_membership : '#unavRankMembersCard',
		rank_close_btn_img  : '#btnCloseLbLogin img',
		rank_close_btn_span : '#btnCloseLbLogin span'
	}
	
	config.target = {
		top             : 'blockMainEntrance',
		top_box         : 'contentMainEntrance',
		login           : 'lbLogin',
		login_container : 'lbLoginInner',
		login_box       : 'lbLoginContent',
		login_btn       : 'btnCloseLbLogin',
		regist          : 'blockRegistMembers',
		regist_box      : 'contentRegistMembers',
		passport        : 'lbMembersCard',
		passport_box    : 'lbMembersCardContent',
		sitemap         : 'lbSitemap',
		sitemap_box     : 'lbSitemapContent',
		overlay         : 'overlay',
		rank_login           : 'lbLogin',
		rank_login_container : 'lbLoginInner',
		rank_login_box       : 'lbLoginContent',
		rank_login_btn       : 'btnCloseLbLogin',
		rank_passport        : 'lbMembersCard',
		rank_passport_box    : 'lbMembersCardContent'
	}
	
	var P = C.swf_uri;
	config.file = {
		login    : C.api_host+'api/js.php',
		top      : P+'src/preloader.swf',
		sitemap  : P+'sitemap/sitemap.swf',
		register : P+'src/register.swf',
		passport : P+'passport/passport.swf',
		passport_guest : P+'passport/passport_guest.swf'
	}
	
	config.swf_id_list = {
		top      : 'external_top_swf_'+C.timestamp,
		sitemap  : 'external_sitemap_swf_'+C.timestamp,
		register : 'external_register_swf_'+C.timestamp,
		passport : 'external_passport_swf_'+C.timestamp,
		passport_guest : 'external_passport_guest_swf_'+C.timestamp
	}
	
	config.swf_size_list = {
		top : {
			width  : '100%',
			height : 478
		},
		register : {
			width  : '100%',
			height : '100%'
		},
		login : {
			width  : 386,
			height : 386
		},
		passport : {
			width  : '100%',
			height : '100%'
		},
		sitemap : {
			width  : '100%',
			height : '100%'
		}
	}
	
	config.position = {
		tab : {
			top    : 232,
			left   : 0,
			zindex : 300
		}
	}
	
	config.regexp = {
		is_member     : new RegExp(/(?:unavlogin|unavmemberscard)/),
		is_login      : new RegExp(/(register\=)(true)/),
		is_regist     : new RegExp(/register\=/),
		is_regist_uri : new RegExp('^'+C.root_uri+'(.*)$'),
		is_page_id    : new RegExp(/^pageId\_([A-Z]{1})_([0-9]{3})_(|[0-9]{3})$/),
		is_present    : new RegExp(/^\/kawatsuku\/present/)
	}
	
	config.timer = {
		change_tab : 3000
	}
	
	config.cookie = {
		site_log : {
			name  : 'kawatsuku_site_log',
			path  : '/kawatsuku',
			limit : 31,
			value : {
				'A'     : false,
				'B'     : false,
				'C_001' : false,
				'C_002' : false,
				'D'     : false,
				'E'     : false,
				'F'     : false,
				'G'     : false,
				'H_001' : false,
				'H_401' : false,
				'H_501' : false,
				'I'     : false,
				'J'     : false,
				'J_002' : false,
				'K'     : false,
				'L'     : false,
				'P'     : false,
				'Q'     : false,
				'U' 	: false,
				'V'	: false
			}
		}
	}
	
	config.third_party = {
		target : 'noscript',
		template : [
			'<p id="msgNoCookie">',
			'<a href="/kawatsuku/alerts/">このWebサイトは、cookie を Onにしてお楽しみください。 設定方法はこちら</a>',
			'</p>'
		].join('')
	}
	
	config.no_flash = {
		target : config.target.top_box,
		template : [
			'<p><a href="http://www.adobe.com/go/getflashplayer">',
			'<img alt="Get Adobe Flash player" src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif">',
			'</a></p>'
		].join('')
	}
	
	var varsion = swfobject.getFlashPlayerVersion();
	if ( varsion.major == 0 && location.pathname == '/kawatsuku/') return $('#'+config.no_flash.target).append(config.no_flash.template);
	
	Kawatsuku.commons.init(config);
	Kawatsuku.sitemap.init(config);
	Kawatsuku.session.init(config, 'top');
	
	$(config.selector.header).attr('id', 'KaoLogo');
	$(config.selector.footer).addClass('MicroSiteFoot');
	if ($.browser.msie && $.browser.version <= 7) $('img[name*=s_i_kaocojp]').css('position', 'absolute');
	if ($.browser.msie && $.browser.version == 7) $(config.selector.header_kww).css('zoom', 1);
});

