
var PhotoTagElement = function (photoId, linkId, targetId, selectId, target, newnaiNum, userName) {
	PhotoTagElement.currentnewnaiNum = newnaiNum;
	PhotoTagElement.currentuserName = userName?userName:null;
	PhotoTagElement.current_photoId = photoId;
	if (target) {
		PhotoTagElement.target = YAHOO.util.Dom.get(target);
	}
	var link = YAHOO.util.Dom.get(linkId);
	var target = YAHOO.util.Dom.get(targetId);
	PhotoTagElement.taget_panel = target;
	PhotoTagElement.target_element = YAHOO.util.Dom.getElementsByClassName(PhotoTagElement.LIST_CLASS, "UL")[0];
	var select = YAHOO.util.Dom.get(selectId);
	select.href = "javascript:void(0);";
	PhotoTagElement.select_element = select.parentNode;
	link.href = "javascript:void(0);";
	PhotoTagElement.linkTag = link;
	PhotoTagElement.linkTag.showOrHide = function () {
		if (YAHOO.util.Dom.getStyle(target, "display") == "none") {
			this.innerHTML = "\u53d6\u6d88\u6dfb\u52a0\u6807\u7b7e";
			this.title = "\u53d6\u6d88\u6dfb\u52a0\u6807\u7b7e";
			YAHOO.util.Dom.setStyle(target, "display", "block");
		} else {
			this.innerHTML = "\u6dfb\u52a0\u6807\u7b7e";
			this.title = "\u5feb\u6765\u4e3a\u7167\u7247\u6dfb\u52a0\u6807\u7b7e\u5427\uff01";
			YAHOO.util.Dom.setStyle(target, "display", "none");
		}
	};
	YAHOO.util.Event.on(link, "click", PhotoTagElement.linkTag.showOrHide);
	YAHOO.util.Event.on(select, "click", function () {
		if (PhotoTagElement.user_tags != null) {
			var results = PhotoTagElement.user_tags.split(" ");
			for (var i = 0; i < results.length; i++) {
				PhotoTagElement.select_element.appendChild(PhotoTagElement.createSelect(results[i]));
			}
		}
		var opt = {success:function (o) {
			PhotoTagElement.user_tags = o.responseText;
			PhotoTagElement.select_load = true;
			if (PhotoTagElement.user_tags.length < 1) {
				PhotoTagElement.select_element.innerHTML = "\u60a8\u8fd8\u6ca1\u6709\u6dfb\u52a0\u8fc7\u6807\u7b7e\u5462\uff01";
				return;
			}
			var results = splitTags(PhotoTagElement.user_tags);
			PhotoTagElement.select_element.removeChild(select);
			for (var i = 0; i < results.length; i++) {
				PhotoTagElement.select_element.appendChild(PhotoTagElement.createSelect(results[i]));
				if (i < results.length - 1) {
					PhotoTagElement.select_element.appendChild(document.createTextNode(" "));
				}
			}
		}, failure:function (o) {
			window.alert("对不起，服务器正忙，请稍后重试！");
		}};
		YAHOO.util.Connect.asyncRequest("POST", PhotoTagElement.AJAX_GET_URL, opt, "");
	});
};
PhotoTagElement.AJAX_GET_URL = "doPhotoTag.do?method=select";
PhotoTagElement.AJAX_SET_URL = "doPhotoTag.do?method=add";
PhotoTagElement.AJAX_DEL_URL = "doPhotoTag.do?method=delete";
PhotoTagElement.LIST_CLASS = "tag-list";
PhotoTagElement.TAG_CLASS = "plain tags";
PhotoTagElement.GLOB_CLASS = "tag-globe";
PhotoTagElement.DEL_CLASS = "delete";
PhotoTagElement.GLOB_URL = "explorePhoto.do?method=tag&tagName=";
PhotoTagElement.select_load = false;
PhotoTagElement.currentnewnaiNum = 0;
PhotoTagElement.currentuserName = null;
PhotoTagElement.current_photoId = null;
PhotoTagElement.target_element = null;
PhotoTagElement.select_element = null;
PhotoTagElement.taget_panel = null;
PhotoTagElement.user_tags = null;
PhotoTagElement.linkTag = null;
PhotoTagElement.target = null;
PhotoTagElement.inputTarget = "photo_tag";
PhotoTagElement.addTag = function (tag) {
	var tagList = splitTags(tag);
	var length = tagList.length;
	var num = YAHOO.util.Dom.getElementsByClassName("plain","A",PhotoTagElement.target_element).length;
	var nTags = "";
	var count = 0;
	var hasTag = false;
	for (var i = 0; i < length; i++) {
		if (PhotoTagElement.checkTag(tagList[i])) {
			hasTag = true;
			continue;
		}
		if(tagList[i]=='')continue;
		if(count + num > 19){
			alert("对不起，每张照片最多只能添加20个标签，\n超过的标签将无法添加成功！");
			break;
		}
		nTags = nTags + tagList[i] + " ";
		count++;
	}
	if(hasTag){
		alert("您输入的标签和照片上已有的标签有重复，\n重复的标签将不会添加！");
	}
	if (nTags.length < 1) {
		return;
	}
	nTags = nTags.substr(0, nTags.length - 1);
	var data = "photoId=" + PhotoTagElement.current_photoId + "&tags=" + nTags;
	data = encodeURI(data);
	var opt = {success:function (o) {
		if (o.responseText == "ajax_failure") {
			alert("\u6dfb\u52a0\u6807\u7b7e\u5931\u8d25 \u8bf7\u7a0d\u540e\u91cd\u8bd5\uff01");
			return;
		}
		nTags = splitTags(nTags);
		for (var i = 0; i < nTags.length; i++) {
			//PhotoTagElement.user_tags = PhotoTagElement.user_tags + " " + nTags[i];
			PhotoTagElement.target_element.appendChild(PhotoTagElement.createTag(nTags[i]));
			/*
			if (PhotoTagElement.select_load) {
				var sesect = PhotoTagElement.createSelect(nTags[i]);
				if(sesect == null){
					continue;
				}
				PhotoTagElement.select_element.appendChild();
				if (i < nTags.length - 1) {
					PhotoTagElement.select_element.appendChild(document.createTextNode(" "));
				}
			}*/
		}
		PhotoTagElement.linkTag.showOrHide();
	}, failure:function (o) {
		window.alert("对不起，服务器正忙，请稍后重试！");
	}};
	YAHOO.util.Connect.asyncRequest("POST", PhotoTagElement.AJAX_SET_URL, opt, data);
};
PhotoTagElement.deleteTag = function (tag) {
	if (!window.confirm("\u662f\u5426\u786e\u8ba4删除 " + tag + " \u6807\u7b7e?")) {
		return;
	}
	tag = tag.replace(/\"/g,'');
	var data = "tagName=" + tag + "&photoId=" + PhotoTagElement.current_photoId;
	data = encodeURI(data);
	var opt = {success:function (o) {
		if (o.responseText == "ajax_failure") {
			alert("\u5220\u9664\u6807\u7b7e\u5931\u8d25 \u8bf7\u7a0d\u540e\u91cd\u8bd5\uff01");
			return;
		}
		var parent = PhotoTagElement.target_element;
		var tags = YAHOO.util.Dom.getElementsByClassName(PhotoTagElement.TAG_CLASS, "A", parent);
		for (var i = 0; i < tags.length; i++) {
			if (tag == tags[i].innerHTML) {
				parent.removeChild(tags[i].parentNode);
				break;
			}
		}
	}, failure:function (o) {
		window.alert("对不起，服务器正忙，请稍后重试！");
	}};
	YAHOO.util.Connect.asyncRequest("POST", PhotoTagElement.AJAX_DEL_URL, opt, data);
};
PhotoTagElement.checkTag = function (tag) {
	if(tag == "" || tag == " ")return true;
	var bl = false;
	var parent = PhotoTagElement.target_element;
	var tags = YAHOO.util.Dom.getElementsByClassName(PhotoTagElement.TAG_CLASS, "A", parent);
	for (var i = 0; i < tags.length; i++) {
		var str = tags[i].innerHTML;
		if(str.indexOf(' ') > 0){
			str = '"'+str+'"';
		}
		if (tag == str) {
			return true;
		}
	}
	return bl;
};
PhotoTagElement.createTag = function (tag) {
	var li = document.createElement("LI");
	var glob = document.createElement("A");
	glob.href = PhotoTagElement.GLOB_URL + tag;
	glob.title = "\u6309\u4e00\u4e0b\u6b64\u56fe\u793a\u4fbf\u53ef\u67e5\u770b\u6807\u7b7e\u4e3a " + tag + " \u7684\u6240\u6709\u516c\u5f00\u7167\u7247";
	YAHOO.util.Dom.addClass(glob, PhotoTagElement.GLOB_CLASS);
	var a = document.createElement("A");
	a.href = "userTag.do?method=photo&newnaiNum=" + PhotoTagElement.currentnewnaiNum + "&tagName=" + encodeURI(tag);
	if(tag.indexOf('"')==0){
		a.innerHTML = tag.substr(0,tag.length-1).substr(1);
	}else{
		a.innerHTML = tag;
	}
	if(PhotoTagElement.currentuserName != null){
		a.title = "\u7531“"+PhotoTagElement.currentuserName+"”\u6dfb\u52a0";
	}else{
		a.title = "\u7531“"+PhotoTagElement.currentnewnaiNum+"”\u6dfb\u52a0";
	}
	YAHOO.util.Dom.addClass(a, PhotoTagElement.TAG_CLASS);
	var del = document.createElement("A");
	del.href = "javascript:PhotoTagElement.deleteTag('" + tag + "')";
	YAHOO.util.Dom.addClass(del, PhotoTagElement.DEL_CLASS);
	li.appendChild(glob);
	li.appendChild(a);
	li.appendChild(del);
	return li;
};
PhotoTagElement.createSelect = function (tag) {
	if (tag.length < 1 || tag == " ") {
		return document.createTextNode("");
	}
	var select = document.createElement("A");
	if(tag.indexOf('"')==0){
		select.href = "javascript:PhotoTagElement.addSelectTag('" + tag + "');";
		select.innerHTML = tag.substr(0,tag.length-1).substr(1);
	}else{
		select.href = "javascript:PhotoTagElement.addSelectTag('" + tag + "');";
		select.innerHTML = tag;
	}
	return select;
};
PhotoTagElement.addSelectTag = function (tag) {
	if (PhotoTagElement.target != null) {
		var tags = splitTags(PhotoTagElement.target.value);
		if(tags.length + 1 > 20){
			alert("对不起，每张照片最多只能添加20个标签，\n请删减几个再保存。");
			return;
		}
		for(var i = 0; i < tags.length; i++) {
			if(tags[i] == tag){
				alert("\u8be5\u7167\u7247\u4e0a\u5df2\u7ecf\u8d34\u8fc7\u8be5\u6807\u7b7e\u4e86\uff01");
				return;
			}
		}
		if (PhotoTagElement.target.value.length > 0) {
			PhotoTagElement.target.value = PhotoTagElement.target.value + " " + tag;
		} else {
			PhotoTagElement.target.value = tag;
		}
		PhotoTagElement.linkTag.showOrHide();
	} else {
		if (PhotoTagElement.checkTag(tag)) {
			alert("\u8be5\u7167\u7247\u4e0a\u5df2\u7ecf\u8d34\u8fc7\u8be5\u6807\u7b7e\u4e86\uff01");
			return;
		}
		var data = "photoId=" + PhotoTagElement.current_photoId + "&tags=" + tag;
		data = encodeURI(data);
		var opt = {success:function (o) {
			if (o.responseText == "ajax_failure") {
				alert("\u6dfb\u52a0\u6807\u7b7e\u5931\u8d25 \u8bf7\u7a0d\u540e\u91cd\u8bd5\uff01");
				return;
			}
			PhotoTagElement.user_tags = PhotoTagElement.user_tags + " " + tag;
			PhotoTagElement.target_element.appendChild(PhotoTagElement.createTag(tag));
			PhotoTagElement.linkTag.showOrHide();
		}, failure:function (o) {
			window.alert("对不起，服务器正忙，请稍后重试！");
		}};
		YAHOO.util.Connect.asyncRequest("POST", PhotoTagElement.AJAX_SET_URL, opt, data);
	}
};
//修改照片基本信息页面 验证
PhotoTagElement.checkTarget = function(){
	var tags = splitTags(PhotoTagElement.target.value);
	if(tags.length > 20){
		alert("对不起，每张照片最多只能添加20个标签，\n请删减几个再保存。");
		return false;
	}
	var photo_title = YAHOO.util.Dom.get("photo_title");
	if(photo_title.value.length < 1){
		alert("照片名字的建议不要为空！");
		photo_title.focus();
		return false;
	}
	if(photo_title.value.length > NEWNAI_PARAMS.photoNameLength){
		photo_title.value = photo_title.value.substr(0, NEWNAI_PARAMS.photoNameLength);
		alert("照片名字的长度应小于"+NEWNAI_PARAMS.photoNameLength+"个字，超出的部分系统将自动截取！");
	}
	var photo_descption = YAHOO.util.Dom.get("photo_descption");
	if(photo_descption.value.length > NEWNAI_PARAMS.photoDescLength){
		photo_descption.value = photo_descption.value.substr(0, NEWNAI_PARAMS.photoDescLength);
		alert("照片描述的长度应小于"+NEWNAI_PARAMS.photoDescLength+"个字，超出的部分系统将自动截取！");
	}
	return true;
};
PhotoTagElement.submitTag = function () {
	var tag = YAHOO.util.Dom.get("addtagbox").value;
	if (tag.length < 1) {
		alert("\u8981\u6dfb\u52a0\u7684\u6807\u7b7e\u4e0d\u80fd\u4e3a\u7a7a\uff01");
		return;
	}
	PhotoTagElement.addTag(tag);
};
PhotoTagElement.appendTag = function () {
	var tag = YAHOO.util.Dom.get("addtagbox").value;
	if (tag.length < 1) {
		alert("\u8981\u6dfb\u52a0\u7684\u6807\u7b7e\u4e0d\u80fd\u4e3a\u7a7a\uff01");
		YAHOO.util.Dom.get("addtagbox").focus();
		return false;
	}
	var tagList = splitTags(tag);
	var length = tagList.length;
	var photo_tag = YAHOO.util.Dom.get(PhotoTagElement.inputTarget);
	var tags = splitTags(photo_tag.value);
	var nTags = "";
	var hasTag = false;
	for (var i = 0; i < length; i++) {
		if(tagList[i]=='')continue;
		var count = 0;
		var has = false;
		for(var n = 0; n < tags.length; n++){
			if(tags[n] == tagList[i]){
				has = true;
				hasTag = true;
				break;
			}
		}
		if(has)continue;
		if(count + tags.length > 19){
			alert("对不起，每张照片最多只能添加20个标签，\n超过的标签将无法添加成功！");
			break;
		}
		nTags = nTags + tagList[i] + " ";
		count++;
	}
	if(hasTag){
		alert("您输入的标签和照片上已有的标签有重复，\n重复的标签将不会添加！");
	}
	if (nTags.length < 1) {
		return;
	}
	nTags = nTags.substr(0, nTags.length - 1);
	if(YAHOO.util.Dom.get(PhotoTagElement.inputTarget).value.length > 0){
		YAHOO.util.Dom.get(PhotoTagElement.inputTarget).value = YAHOO.util.Dom.get(PhotoTagElement.inputTarget).value + " ";
	}
	YAHOO.util.Dom.get(PhotoTagElement.inputTarget).value = YAHOO.util.Dom.get(PhotoTagElement.inputTarget).value + nTags;
};
PhotoTagElement.loadingTags = function(target){
	if(target){
		PhotoTagElement.inputTarget = target;
	}
	var opt = {success:function (o) {
		var user_tags = o.responseText;
		var taget = YAHOO.util.Dom.get("loadTags");
		if (user_tags.length < 1) {
			taget.innerHTML = "您还没有任何标签~";
			return;
		}
		var results = splitTags(user_tags);
		for (var i = 0; i < results.length; i++) {
			var tag = results[i];
			var a = document.createElement("A");
			a.innerHTML = tag;
			a.href = "javascript:addToPhotoTag('"+tag+"');";
			taget.appendChild(a);
			if (i < results.length - 1) {
				taget.appendChild(document.createTextNode(" "));
			}
		}
	}, failure:function (o) {
		window.alert("对不起，服务器正忙，请稍后重试！");
	}};
	YAHOO.util.Connect.asyncRequest("POST", PhotoTagElement.AJAX_GET_URL, opt, "");
};
function addToPhotoTag(tag){
	var target = YAHOO.util.Dom.get(PhotoTagElement.inputTarget);
	var tags = null;
	if(target.value.indexOf(" " + tag + " ") > -1){
		tags = target.value.split(" " + tag + " ");
	}else if(target.value.indexOf(tag + " ") == 0){
		tags = ["", target.value.substr(tag.length + 1, target.value.length)];
	}else if(target.value.substr(target.value.length - tag.length - 1, target.value.length) == " " + tag){
		tags = [target.value.substr(0, target.value.length - tag.length - 1), ""];
	}else if(target.value == tag){
		target.value = "";
		return;
	}
	if(tags != null){
		target.value = "";
		if(tags[0].length > 0){
			target.value = tags[0];
		}
		if(tags[1].length > 0){
			if(target.value.length > 0){
				target.value += " ";
			}
			target.value += tags[1];
		}
		return;
	}
	if(target.value.length > 0){
		target.value = target.value + " ";
	}
	target.value = target.value + tag;
}
function splitTags(tagValue) {
	tagValue = tagValue.replace(/^\s*/g, "").replace(/(\s*$)/g, "").replace(/\s*\"\s*/g, "\"").replace(/\s+/g, " ");
	if (tagValue.length < 1) {
		return [];
	}
	var parts = tagValue.split("\"");
	var tags = [];
	if (parts.length == 1) {
		tags = parts[0].split(" ");
	} else {
		if (parts.length == 2) {
			if (parts[0].length > 0) {
				tags = parts[0].split(" ");
			}
			if (parts[1].length > 0) {
				if (parts[1].indexOf(" ") > 0) {
					tags[tags.length] = "\"" + parts[1] + "\"";
				} else {
					tags[tags.length] = parts[1];
				}
			}
		} else {
			var group = true;
			if (parts[0].length > 0) {
				tags = parts[0].split(" ");
			}
			for (var i = 1; i < parts.length - 1; i++) {
				if(group){
					if (parts[i].indexOf(" ") > 0) {
						tags[tags.length] = "\"" + parts[i] + "\"";
					} else {
						tags[tags.length] = parts[i];
					}
					group = false;
				}else{
					if (parts[i].indexOf(" ") > 0) {
						var vals = parts[i].split(" ");
						for (var n = 0; n < vals.length; n++) {
							tags[tags.length] = vals[n];
						}
					} else {
						tags[tags.length] = parts[i];
					}
					group = true;
				}
			}
			if (parts[parts.length - 1].length > 0) {
				if(parts.length%2 == 0){
					if (parts[parts.length - 1].indexOf(" ") > 0) {
						tags[tags.length] = "\"" + parts[parts.length - 1] + "\"";
					} else {
						tags[tags.length] = parts[parts.length - 1];
					}
				}else{
					var tt = parts[parts.length - 1].split(" ");
					for(var i = 0; i < tt.length; i++){
						var t = tt[i];
						tags[tags.length] = t;
					}
				}
			}
		}
	}
	var newTags = [];
	for (var i = 0; i < tags.length; i++) {
		var tag = tags[i];
		if(tag.length == 0)
			continue;
		var has = false;
		for (var n = 0; n < newTags.length; n++) {
			if (newTags[n] == tag) {
				has = true;
				break;
			}
		}
		if (!has) {
			newTags[newTags.length] = tag;
		}
	}
	return newTags;
}

