if(!mapness){
	var mapness = {};
}

/****************************
 *  UI FOR PROFILE :
 ****************************/

if(!mapness.ui){
	mapness.ui = {};
}

mapness.ui.toggleEditProfileInfo = function(section) {
	$("#"+section).find("h2 a.edit").toggle();
	$("#"+section).find("h2 a.button2").toggle();
	$("#"+section).find('div.notice').remove();
	$("#"+section).find('div.success').remove();
	
	switch(section){
		case "profile-aboutInfo":
			mapness.ui.toggleTextarea($("#"+section).find("#profile-aboutMe"), (mapness.profile.about === null? '':mapness.profile.about));
		break;
		
		case "profile-personalInfo":
			mapness.ui.toggleInput(DOMcache.get("#personalInfo-name"), mapness.profile.name);
			mapness.ui.toggleInput(DOMcache.get("#personalInfo-DoB"), mapness.profile.birth);
			mapness.ui.bindCalendar($("#personalInfo-DoB").find("input"));
			mapness.ui.toggleSelect(DOMcache.get("#personalInfo-sex"),['n','f','m'],[mapness.dict.words.sex_none, mapness.dict.words.female, mapness.dict.words.male], [mapness.profile.sex], false);
			mapness.ui.toggleInput(DOMcache.get("#personalInfo-live .locality"),mapness.profile.city);
			mapness.ui.toggleSelect(DOMcache.get("#personalInfo-live .country-name"),mapness.dict.countries.codes, mapness.dict.countries.names,  [mapness.profile.country], false);
			mapness.ui.toggleInput(DOMcache.get("#personalInfo-street"), mapness.profile.street);
			mapness.ui.toggleSelect(DOMcache.get("#personalInfo-languages"),mapness.dict.languages.codes, mapness.dict.languages.names, mapness.profile.languages, true);
			$("#personalInfo-languages").find("option:first").html(mapness.dict.words.add_language);
			mapness.ui.toggleInput(DOMcache.get("#personalInfo-website"), mapness.profile.website);
		break;
		
		case "profile-interests":
			mapness.ui.toggleSelect(DOMcache.get("#interests-countries"),mapness.dict.countries.codes, mapness.dict.countries.names, mapness.profile.interestsCountries, true);
			$("#interests-countries").find("option:first").html(mapness.dict.words.add_country);
			if($("#profile-interests div#sports").length == 0){
				$("#profile-interests div.profile-d:first").before('<div id="sports" class="s-4"><h4>'+ mapness.dict.words.interests_games_and_sports +'</h4><div class="interestList"></div></div><div id="lifestyle" class="s-4"><h4>'+mapness.dict.words.interests_leisure_and_lifestyle+'</h4><div class="interestList"></div></div><div id="culture" class="s-4 last"><h4>'+mapness.dict.words.interests_culture_art_and_history+'</h4><div class="interestList"></div></div><hr class="space">');
				$("#profile-interests div.profile-d:first").hide();
				$("#profile-interests div.profile-dt:first").hide();
				$("#personalInterests-countries").find("option:first").html(mapness.dict.words.add_language);
			}else{
				$("#profile-interests div#sports").remove();
				$("#profile-interests div#culture").remove();
				$("#profile-interests div#lifestyle").remove();
				$("#profile-interests hr.space:first").remove();
				$("#profile-interests div.profile-d:first").show();
				$("#profile-interests div.profile-dt:first").show();
			}
			mapness.ui.toggleCheckboxes($("#profile-interests #sports div.interestList"),mapness.dict.interests.sports.name, mapness.dict.interests.sports.value, mapness.profile.interests);
			mapness.ui.toggleCheckboxes($("#profile-interests #culture div.interestList"),mapness.dict.interests.culture.name, mapness.dict.interests.culture.value, mapness.profile.interests);
			mapness.ui.toggleCheckboxes($("#profile-interests #lifestyle div.interestList"),mapness.dict.interests.lifestyle.name, mapness.dict.interests.lifestyle.value, mapness.profile.interests);
			mapness.ui.toggleTextarea($("#interests-bestExperience"), mapness.profile.bestExperience);
			mapness.ui.toggleTextarea($("#interests-worstExperience"), mapness.profile.worstExperience);
			mapness.ui.toggleViewHints($("#profile-interests"));
			mapness.ui.toggleSubmit($("#profile-interests-submit2"));
		break
	}
}

mapness.ui.toggleViewHints = function(container){
	container.find(".viewhint").toggle();
}

mapness.ui.toggleSubmit = function(targetBox){
	if (targetBox.html()) { targetBox.html('')} 
	else {targetBox.html('<div class="dt"><a href="javascript:;" class="button2 save hidden" style="display: inline;"><span>'+ mapness.dict.words.global_save +'</span></a></div>');}
}

mapness.ui.handleProfileInfoCallback = function(callback){
	if(callback.data.age === null || callback.data.birth === null){
		DOMcache.get("#personalInfo-DoB").html('-');
	}else{
		DOMcache.get("#personalInfo-DoB").html(callback.data.age+' <span class="minor">('+ mapness.dict.words.date_of_birth +' <span class="bday">'+ callback.data.birth +'</span>)</span>');
	}
	DOMcache.get("#personalInfo-website").wrapInner('<a rel="nofollow" href="'+callback.data.websiteUrl+'"></a>');
	if(callback.notice.length > 0){
		var msg = '<div class="notice">';
		for(var i in callback.notice){
			msg += callback.notice[i]+"<br/>";
		}
		msg += '</div>';
		DOMcache.get("#profile-personalInfo").find("h2").after(msg);
	}
}

mapness.ui.handleProfileInterestsCallback = function(callback){
	DOMcache.get("#interests-enjoy").html(callback.data.interests.join(" "));
	DOMcache.get("#interests-countries").html(callback.data.interestsCountries.join(" "))
	if(callback.notice.length > 0){
		var msg = '<div class="notice">';
		for(var i in callback.notice){
			msg += callback.notice[i]+"<br/>";
		}
		msg += '</div>';
		DOMcache.get("#profile-interests").find("h2").after(msg);
	}
}

mapness.ui.bindCalendar = function(selector){
	if(mapness.dict.lang != 'en'){
		$.datepicker.setDefaults($.datepicker.regional[mapness.dict.lang]);
	}else{
		$.datepicker.setDefaults($.datepicker.regional['']);
	}
	var curdate = new Date();
	var year = curdate.getFullYear();
	selector.datepicker({
		autoPopUp: 'both',
		changeYear: true,
		changeMonth: true,
		firstDay: 1,
		buttonImageOnly: true,
		buttonImage: '/images/calendar.gif', 
		buttonText: 'Calendar',
		minDate: (-110*365),
    	maxDate: (-18*365),		
		yearRange: (parseInt(year,10)-110)+":"+(parseInt(year,10)-18),
		dateFormat : 'yy-mm-dd'
	});
}
/**
 * Builds a select html placing all values from valueArray, and displaying names from displayArray
 * 
 * @param {Object} selector - jQuery selector
 * @param {Array} valueArray - array of values;
 * @param {Array} displayArray - array of names;
 * @param {Array} selectedValue - value to mark as selected
 * @param {Bool} isMulti - defines wheather the select is a Multiple one
 */
mapness.ui.toggleSelect = function(selector, valueArray, displayArray, selectedValues, isMulti){
	var id = selector.attr("id");
	if(selector.find("select").length !== 0){
		if(isMulti){
			var selected = [];
			selector.find("option.asmOptionDisabled").each(function(){
				selected.push($(this).html());
			});
			selector.html(selected.join(", "));
		}else{
			selector.html(selector.find("select option:selected").html());
		}
	}else{
		var html = '<select id="'+id+'-input" ' +(isMulti? 'multiple="multiple"':'')+'> ';
		var selected = '';
		for(var i in valueArray){
			selected = '';
			for(var j in selectedValues){
				if(valueArray[i] == selectedValues[j]){
					selected = 'selected="selected"';
					break;
				}
			}
			html += '<option value="' + valueArray[i] + '" '+ selected +'>'+displayArray[i]+'</option>';
		}
		selected += '</select>';
		selector.html(html);
		if (isMulti) {
			$('#' + id + '-input').asmSelect({
				animate: true,
				highlight: true,
				removeLabel: '<span>'+mapness.dict.words['delete']+'</span>',
				highlightAddedLabel: mapness.dict.words.added +": ",
				highlightRemovedLabel: mapness.dict.words.removed +": " 	
			});
		}
	}
}

mapness.ui.toggleCheckboxes = function(selector, valueArray, displayArray, selectedValues){
	var id = selector.attr("id");
	if(selector.find("input[type=checkbox]").length !== 0){
		var checked = [];
		selector.find("input:checked").each(function(){
			checked.push($(this).parent().text());
		});
		selector.html(checked.join(", "));
	}else{
		var html = '<div id="'+id+'-input"> ';
		var selected = '';
		for(var i in valueArray){
			selected = '';
			for(var j in selectedValues){
				if(valueArray[i] == selectedValues[j]){
					selected = 'checked="checked"';
					break;
				}
			}
			html += '<div><label><input type="checkbox" value="' + valueArray[i] + '" '+ selected +'>'+displayArray[i]+'</label></div>';
		}
		selector.html(html);
	}
}

mapness.ui.toggleInput = function(selector, value){
	var id = selector.attr("id");
	if(selector.find("input").length !== 0){
		selector.html(value);
	}else{
		selector.html('<input type="text" class="text" id="'+id+'-input" value="'+value+'">');
	}
}

mapness.ui.toggleTextarea = function(selector, value){
	if(selector.get(0).tagName.toLowerCase() == 'textarea'){
		var id = $(selector).attr("id");
		$(selector).parent().attr("id", id);
		$(selector).parent().html(value);
//		$(selector).replaceWith('<'+$(selector).attr("rel")+' id="'+selector.attr("id")+'">' + value + '</'+$(selector).attr("rel")+'>');
	}else{
		$(selector).replaceWith('<'+selector.get(0).tagName+' class="'+selector.attr('class')+'"><textarea id="'+selector.attr("id")+'">' + value + '</textarea></'+selector.get(0).tagName+'>');
	}
}

mapness.ui.toggleAvatarUploadForm = function(){
	
	$("#profile-edit-avatar").toggle(function(){})

	//toggle();
//	DOMcache.get("#profile-edit-avatar").toggle();
}

mapness.ui.showAvatarLoader = function(){
	DOMcache.get("#profile-userPhoto").prepend('<div id="profile-avatarLoader" class="overlayLoader"><img src="/images/ajax-loader2.gif"><span class="note">' + mapness.dict.words.global_saving +'</span></div>');
}
/**
 * Insert a loader inside jQuery element;
 * 
 * @param {Object} element - jQuery DOM object
 */
mapness.ui.showLoader = function(element, id){
	$(element).html('<div id="'+id+'" class="overlayLoader"><div><img src="/images/ajax-loader2.gif"><span class="note">' + mapness.dict.words.global_saving +'</span></div></div>');
}

mapness.ui.hideLoader = function(element){
	$(element).find(".overlayLoader").remove();
	$(element).find(".loaderHolder").remove();
}

mapness.ui.displayError = function(element, error){
	var msg = '<div class="error">';
	for(var i in error){
		msg += error[i]+"<br/>";
	}
	msg += '</div>';
	$(element).after(msg);
}

mapness.ui.hideError = function(element){
	$(element).parent().find(".error").remove();
} 
