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

(function() {
	MYNAMESPACE.namespace('modules.ForResidence');
	MYNAMESPACE.modules.ForResidence = function() {
		this.xmlPath = "";
		this.targetId = "";
		this.prefixPath = "";
		this.termsType = "";
		this.callback;
		this.initialize.apply(this, arguments);
	};
	MYNAMESPACE.modules.ForResidence.prototype = {
		// コンストラクタ
		initialize: function(prefixPath, targetId, callbackInfo) {
			var thisObj = this;
			thisObj.prefixPath = prefixPath;
			thisObj.targetId = targetId;
			thisObj.callbackInfo = callbackInfo;
		},
		
	//	load: function(fileLoader, xmlPath, retryNum) {
		load: function(fileLoader, xmlPath, retryNum, termsType) {
			var thisObj = this;
			thisObj.xmlPath = xmlPath;
			thisObj.termsType = (termsType !== undefined && termsType !== null) ? termsType : "";
		//	console.log('thisObj.termsType = ' + thisObj.termsType);
			fileLoader.load(xmlPath, retryNum, {method:thisObj.onSuccessHandler, scope:thisObj}, {method:thisObj.onErrorHandler, scope:thisObj});
		},
		
		fixPath: function(prefixPath, basePath) {
			var retPath = basePath;
			if (prefixPath !== "") {
				var splitArr = basePath.split("/");
				
				if (splitArr[0] === "." || splitArr[0] === "") {
				//	splitArr[0] = prefixPath;
					splitArr[0] = prefixPath.replace("/", "");
					retPath = splitArr.join("/");
				} else {
					retPath = prefixPath + splitArr.join("/");
				}
			}
			
			return retPath;
		},
		
		getAreaImage: function(targetId, prefixPath) {
			var thisObj = this;
			var areaImage = "common/img/residence/in" + targetId.replace("residenceOf", "") + ".gif";
			
			return thisObj.fixPath(prefixPath, areaImage);
		},
		
		getAreaImage2: function(thumbnailPath, prefixPath) {
			var thisObj = this;
			
			var basePath = "common/img/residence/";
			var splitArr = thumbnailPath.split(basePath);
			var splitArr2 = splitArr[1].split("/");
			var areaName = splitArr2[0].substring(0, 1).toUpperCase() + splitArr2[0].substring(1);
			var areaImage = basePath + "in" + areaName + ".gif";
			
			return thisObj.fixPath(prefixPath, areaImage);
		},
		
		onSuccessHandler: function(data, dataType) {
			var thisObj = this;
			
			var template = $("#" + thisObj.targetId + " div.residence");
			var master = $(template).clone();
			var message = "";
			var preElem = $("#" + thisObj.targetId + " div.residence").eq(0);
			var index = 0;
			var row = 0;
					
		//	var areaImage = thisObj.getAreaImage(thisObj.targetId, thisObj.prefixPath);
			
			var isEmpty = true;
			var setElement = function(data) {
				var isTermsFlg = ($(thisObj.termsType, data).text() === "true") ? true : false;
				
			//	console.log($("name", data).text() + ' = ' + $(thisObj.termsType, data).text());
				if (thisObj.termsType === "" || (thisObj.termsType !== "" && isTermsFlg === true)) {
					isEmpty = false;
					var clone = $(master).clone();
					
				//	var id = $("id", data).text();
					var name = $("name", data).text();
					var thumbnail = thisObj.fixPath(thisObj.prefixPath, $("thumbnail", data).text());
					var isVisibleOfNew = ($("isVisibleNew", data).text() === "true") ? true : false;
				//	var areaImage = thisObj.fixPath(thisObj.prefixPath, $("areaImage", data).text());
					var areaImage = thisObj.getAreaImage2($("thumbnail", data).text(), thisObj.prefixPath);
					var prMessage = $("prMessage", data).text();
					/*
					if (maxPRMessageNum < prMessage.length) {
						prMessage = prMessage.substr(0, maxPRMessageNum) + "...";
					}
					*/
					var address = $("address", data).text();
					var access = $("access", data).text();
					var count = $("count", data).text();
					var introduceUrl = $("introduceUrl", data).text();
					var requestUrl = $("requestUrl", data).text();
					
				//	var idElem = $("input[name='residenceId']", clone);
					var nameElem = $("a.itemName", clone);
					var cBox = $("input:checkbox", clone);
					var thumbnailElem = $("img.thumbnail", clone);
					var isNewElem = $("img.isNew", clone);
					var areaImageElem = $("img.area", clone);
					var prMessageElem = $("p.prMessage", clone);
					var addressElem = $("p.address", clone);
					var accessElem = $("p.access", clone);
					var countElem = $("p.count", clone);
					var introduceElem = $("a.introduce", clone);
					var requestElem = $("a.request", clone);
					
				//	idElem.val(id);
					nameElem.html(name);
					cBox.val(name);
					thumbnailElem.attr("src", thumbnail);
					thumbnailElem.attr("alt", name);
					isNewElem.css({"visibility":((isVisibleOfNew === true) ? "visible" : "hidden")});
					areaImageElem.attr("src", areaImage);
					prMessageElem.html(prMessage);
					addressElem.html(address);
					accessElem.html(access);
					countElem.html(count);
					introduceElem.attr("href", introduceUrl);
					requestElem.attr("href", requestUrl);
					
					if (index % 3 === 0) {
						clone.addClass("firstColumn");
					} else if (index % 3 === 1) {
						clone.addClass("secondColumn");
					} else if (index % 3 === 2) {
						clone.addClass("thirdColumn");
					}
					
					$("div.messages", clone).addClass("messagesIn_" + thisObj.targetId + "_Row" + row);
					clone.addClass("residenceIn_" + thisObj.targetId + "_Row" + row);
					if (index % 3 === 2) {
						row ++;
					}
					
					preElem.after(clone);
					preElem = clone;
					
					index ++;
				}
			};
		//	console.log('');
			
		//	var isEmpty = true;
			if (dataType === "array") {
			//	isEmpty = (0 < data.length) ? false : true;
				for (var i=0,len=data.length; i<len; i++) {
					setElement(data[i]);
				}
			} else {
				$("items > item", data).each(
					function() {
					//	isEmpty = false;
						setElement(this);
					}
				);
			}
			
			if (isEmpty === true) {
				var elem = $("<p>").addClass("caution scalable").text("現在掲載中の物件はありません。");
				$("#" + thisObj.targetId + " div.residence").after(elem);
			}
			
			$("#" + thisObj.targetId + " div.residence").eq(0).remove();
			
			if (thisObj.callbackInfo.method) {
				thisObj.callbackInfo.method.call(thisObj.callbackInfo.scope, thisObj.xmlPath, thisObj.targetId, row);
			}
		},
		
		onErrorHandler: function(data, dataType) {
			var thisObj = this;
			alert(thisObj.xmlPath + "のファイルのロード失敗");
		}
	};
})();

