// initilize
(function(){
	$(function(){
			
		var CLASSIFIEDS = ['maker', 'series', 'chara'];//className
		var uri = "/qcart/shop/search/";
		var box = [];
		var method = '&method=json'
		var defaultValue = {'maker':'メーカーで検索', 'chara':'キャラクターで検索', 'series':'シリーズで検索'};
		var defaultValueKeyword = 'キーワードで検索';
		var ignoreClassify =  ['maker'];
		var VisibleClassify = 'series'
		var DenyClassify = 'series'
		var selectedValue = {'maker':"", 'chara':"", 'series':""};
		var clicked = ""
		var SearchBox = function(classifieds){
			this.classifieds = classifieds			
			this.Box = $("#" + this.name);		
		}
				
		SearchBox.prototype = {

			initialize: function(){			
				var self = this;				
				var callback = this.search;
				
				
					$('#keyword').click(function(){
						if($(this).val() == defaultValueKeyword)
							$(this).val("");
					});
												
					$('#keyword').blur(function(){
						if ($(this).val() == "") 
							$(this).val(defaultValueKeyword);						
					});
				
				
				// define onchange event
				(function() {
					$(self.classifieds).each(function() {						
						var classify = this;
						if (classify != DenyClassify) { 	//deny series
							$( "#" + classify ).change(function() {
								// global initialize
								clicked = ""								
								clicked = classify.toString()
								selectedValue = {'maker':"", 'chara':"", 'series':""};										
								callback(self);
							});	
						}
					});
				}());
			},			
			search: function(self) {
//				var param = self.makeSearchStr();
				var param = self.makeParamStr();
				
				$.ajax({
					dataType:"json",
					url:uri,
					data: param+method,
					success: function(s) {					   
						 	self.setBox(s);							
					}
				});						
			},
/*
			// @return hash
			makeParam: function() {
				var searchHash = new Array();
				var hash = new Array(); 
				$(this.classifieds).each(function() {
					var classify = this;
					 hash = { classify  : (parseInt($("#" + classify).val()) || 0)};
//					searchHash.push(hash);
				})
				
				return hash;
				return searchHash;
			},
*/			
			// @return string
			makeParamStr: function() {
				var searchStr = "";
				$(this.classifieds).each(function(){
					var classify = this;
					selectedValue[classify] = (parseInt($("#" + classify).val()) || 0);
					if (classify == 'chara' && clicked == 'maker') {
						selectedValue[classify] = 0
						searchStr += classify + "=" + 0 + "&";
					}
					else {
						searchStr += classify + "=" + (parseInt($("#" + classify).val()) || 0) + "&";	
					}
					

				})
				return searchStr.replace(/&$/, "");
			},
			
			setBox: function(json) {				
				
					for (var i in this.classifieds) {						

						var classify = this.classifieds[i];						
						var $box = $("#" + classify);

						if (classify != ignoreClassify[0]) {
							
							if (classify == 'chara') {
								if(selectedValue['maker'] != 0 && selectedValue['chara'] == 0) {									
									
									this.setOptions($box, json);
								}								
							}
							else {
								this.setOptions($box, json);
							}
						}
					}

					if ($('#' + VisibleClassify).children().length > 1 && !(selectedValue['maker'] == 0 && selectedValue['chara'] == 0)) {
							$('#' + VisibleClassify).css('visibility', 'visible');
					}	
					else {
						$('#' + VisibleClassify).css('visibility', 'hidden');
					}
			},
			
			setOptions: function($box, json) { // etc.) $('#chara')
				var classify = $box.attr('id'); 
				
				$box.children().remove();
				$('<option value="0">' + defaultValue[classify] + '</option>').appendTo($box);

				if (json[classify]) {
			  	$(json[classify]).each(function(k, v){
			  		for (var key in this) {

			  			if (key == selectedValue[classify]) {
			  				$('<option value="' + key + '" title="' + this[key] + '" selected>' + this[key] + '</option>').appendTo($box);
			  			}
			  			else {
			  				// +++ 080417
								if (this[key] != "")
									$('<option value="' + key + '" title="' + this[key] + '">' + this[key] + '</option>').appendTo($box);																								
			  			}
			  		}
			  	})
				}
			
			}			
		
		}
						
		box = new SearchBox(CLASSIFIEDS);
		box.initialize();

	})
})();
var c = function(value) {
	console.log(value)
}

