/**
 * ...
 * @author DefaultUser
 */

(function() {
	MYNAMESPACE.namespace('modules.ForResidenceInTop');
	MYNAMESPACE.modules.ForResidenceInTop = function() {
		this.targetElemId = "";
		this.prefixPath = "";
		this.fileArr = [];
		this.residenceCount = 0;
		this.resultXmlObj = {};
		this.compCount = 0;
		this.compNum = 0;
		this.callbackInfo;
		this.initialize.apply(this, arguments);
	};
	MYNAMESPACE.modules.ForResidenceInTop.prototype = {
		
		initialize: function(targetElemId, prefixPath, fileArr, residenceCount, callbackInfo) {
			var thisObj = this;
			thisObj.targetElemId = targetElemId;
			thisObj.prefixPath = prefixPath;
			thisObj.fileArr = fileArr;
			thisObj.residenceCount = residenceCount;
			thisObj.compNum = thisObj.fileArr.length;
			thisObj.callbackInfo = callbackInfo;
		},
		
		execute: function() {
			var thisObj = this;
			
			for (var i = 0, len = thisObj.fileArr.length; i < len; i++) {
				var fileLoader = new MYNAMESPACE.modules.FileLoader();
				fileLoader.load(thisObj.fileArr[i], -1, {method:thisObj.callback, scope:thisObj}, {method:null, scope:null});
			}
		},
		callback: function(data, dataType, filePath) {
			var thisObj = this;
			thisObj.resultXmlObj[filePath] = data;
			
			if ((++thisObj.compCount) === thisObj.compNum) {
				var classyArr = [];
				var otherArr = [];
				for (var i=0, len=thisObj.fileArr.length; i<len; i++) {
					$("items > item", thisObj.resultXmlObj[thisObj.fileArr[i]]).each(
						function() {
							if ($("name", this).text().indexOf("クラッシィ") !== -1) {
								classyArr.push(this);
							} else {
								otherArr.push(this);
							}
						}
					);
				}
				if (0 < classyArr.length) {
					var shuffledClassyArr = classyArr.shuffle();
					var startIndex = 0;
					var endIndex = Math.ceil((startIndex + thisObj.residenceCount) * 0.8);
					var slicedClassyArr = shuffledClassyArr.slice(startIndex, endIndex);
					
					var shuffledOtherArr = otherArr.shuffle();
					endIndex = thisObj.residenceCount - slicedClassyArr.length;
					var slicedOtherArr = shuffledOtherArr.slice(startIndex, endIndex);
					
					var concatedArr = slicedClassyArr.concat(slicedOtherArr);
					var slicedArr = concatedArr;
					
				} else {
					var shuffledArr = otherArr.shuffle();
					var startIndex = 0;
					var endIndex = startIndex + thisObj.residenceCount;
					var slicedArr = shuffledArr.slice(startIndex, endIndex);
				}
				
				
				
				
				
				
				/*
				var combineXmlArr = [];
				
				for (var i=0, len=thisObj.fileArr.length; i<len; i++) {
					$("items > item", thisObj.resultXmlObj[thisObj.fileArr[i]]).each(
						function() {
							combineXmlArr.push(this);
						}
					);
				}
				var shuffledArr = combineXmlArr.shuffle();
				var startIndex = 0;
				var endIndex = startIndex + thisObj.residenceCount;
				var slicedArr = shuffledArr.slice(startIndex, endIndex);
				*/
				
				var forResidenceCls = new MYNAMESPACE.modules.ForResidence(thisObj.prefixPath, thisObj.targetElemId, {method:thisObj.callback2, scope:thisObj});
				forResidenceCls.onSuccessHandler(slicedArr, "array");
			}
		},
		callback2: function(filePath, targetId, row) {
			var thisObj = this;
			if (thisObj.callbackInfo.method) {
				thisObj.callbackInfo.method.call(thisObj.callbackInfo.scope, filePath, targetId, row);
			}
		}
	};
})();
