//base common fnc

//this fnc can'not support utf8 string
function urlencode(s) {
	s = encodeURIComponent(s);
	return s.replace(/~/g,'%7E').replace(/%20/g,'+');
}

/**
 * ajax get Reviews
 * @param softwareAlias
 */
function ajaxGetReviews(url,replaceId){
	jQuery(function($) {
		ajaxGetReviewHtml(url,replaceId);
	});
}
function ajaxGetReviewHtml(url,replaceId){
	$.ajax({
		type: "GET",
		url: url,
		dataType: "json",
		cache: false,
		beforeSend: function() {
			$('#'+replaceId).html('Loading...');
		},
		success: function(response){
			$('#'+replaceId).html(response.data);
		},
		error:function(){
			$('#'+replaceId).html('Can not load reviews data!');
		}
	});
}

function reviewUseful(elm){
	var id=elm.id;
	var strArr = id.split("_");
	var useful = strArr[1];
	var reviewId = strArr[2];
	$.post(gSiteRoot+'/ajax/useful.htm',	{
		useful: useful,
		reviewId: reviewId
	},
	function(data){
		if(data.success){
			var num=$(elm).next().text();
			num=parseInt(num)+1;
			$(elm).next().text(num);
		}
		if(data.msg.length>0)
			alert(data.msg);
	},'json');
	return false;
}
function regLike(className,numClass,url){

	$('.'+className).click(function(){
		if (!MemberObj.CheckLogin()) return false;
		var id=$(this).attr('id');
		var strArr = id.split("_");
		var idVal = strArr[1];
		var numObj=$(this).find("."+numClass).first();
		var loveNum=numObj.html();
		loveNum=parseInt(loveNum)+1;
		$.post(url,{
			id: idVal
		},
		function(data){
			if(data.success){
				numObj.text(loveNum);
			}
			if(data.msg.length>0)
				alert(data.msg);
		},'json');
	});
}
function regAssess(){
	$("a[name='assess_link']").click(function(){
		if(MemberObj.CheckLogin()){
			var id=$(this).attr('id');
			var strArr = id.split("_");
			var type = strArr[0];
			var idVal = strArr[1];
			var numObj=$(this).find(".assess_num").first();
			var assessNum=numObj.html();
			assessNum=parseInt(assessNum)+1;
			$.post(gSiteRoot+"/index.php?r=ajax/assess",{
				type:type,
				id: idVal
			},
			function(data){
				if(data.success){
					numObj.text(assessNum);
				}
				if(data.msg.length>0)
					alert(data.msg);
			},'json');
		}

	});
}
function noticeNewVersion(softId){
	$.post(gSiteRoot+'/ajax/noticeNewVersion.htm',{
		id:softId
	},
	function(data){
		if(data.success)
			alert('Thanks for your remind! We will update the software as soon as possible!');
		if(data.msg.length>0)
			alert(data.msg);
	},'json');
	return false;
}
function regLoginLayer(){
	$("#login_layer_form").submit(function(event){
		$.post(gSiteRoot+'/login.htm',$(this).serialize(),function(data){
			if(data.success)
				location.reload();
			else
				$('#login_layer_form_error').html('Login failed');
		},'json');
		event.preventDefault();
	});
}
function regNotify(){
	jQuery(function($) {
		$('#notify_form').submit(function(){
			$.post(gSiteRoot+"/index.php?r=ajax/notify", $('#notify_form').serialize(), function(data){
				if(data.success){
					alert('Thanks for your notify! We will update the software as soon as possible!');
					$("#notify_layer_form_error").hide();
					$("#notify_layer_form_error").html('');
					$('#notify_form').each(function(){
						this.reset();
					});
					$('#notify_layer').hide();
					$('#notify_modalOverlay').hide();
				}
				if(data.msg.length>0){
					$("#notify_layer_form_error").show();
					$("#notify_layer_form_error").html(data.msg);
				}
			},'json');
			return false;
		});
	});
}
function submitReviewForm(){
	if(MemberObj.CheckLogin()){
		$.post(gSiteRoot+"/index.php?r=ajax/review", $('#comment_form').serialize(),function(data){
			if(data.success){
				$('#review-error-msg').html('Review success');
				//refresh reviews area
				var softId=$("#comment_form > input[name='Review[pid]']").val();
				ajaxGetReviews(gSiteRoot+"/index.php?r=ajax/getReviews&id="+softId,'ajax_get_reviews');
				$('#comment_form')[0].reset();
				$("#rating-score-img").css('width','0px')
				$("#rating-score").html('0');
				$("#comment_form input[name='Review[score]']").val('');
				$("#rating-score-msg").html('Waiting for your rating, thanks!');
			}
			if(data.msg.length>0){
				$('#review-error-msg').html(data.msg);
			}
		},'json');
	}
}
function regAddArticle(){
	jQuery(function($) {
		//change category when change platform
		$('#Article_platform').change( function() {
			var platform=$(this).val();
			var newOptions=$('#select_'+platform).html();
			$('#Article_class').html(newOptions);
		});
		$('#submit_article').submit(function(){
			$('#title_info').html('');
			$('#content_info').html('');
			//check title
			var titleObj=$('#Article_title');
			var title=$.trim(titleObj.val());
			if (!title) {
				$('#title_info').html('<div class="error_message">Title can not be blank!</div>');
				titleObj.focus();
				return false;
			}
			if (title.length<10 || title.length>60) {
				$('#title_info').html('<div class="error_message">Title must be within 10-60 characters!</div>');
				titleObj.focus();
				return false;
			}
			//check content
			var contentObj=$('#Article_content');
			var content=$.trim(contentObj.val());
			if (!content) {
				$('#content_info').html('<div class="error_message">Content can not be blank!</div>');
				contentObj.focus();
				return false;
			}
			if (content.length<300) {
				$('#content_info').html('<div class="error_message">Content must be at least 300 characters!</div>');
				contentObj.focus();
				return false;
			}
		});
	});
}
function regRegisterValidate(){
	jQuery(function($) {
		$('#page_username').blur(function(){
			return registerCheckUsernameAndEmail('username');
		});
		$('#page_email').blur(function(){
			return registerCheckUsernameAndEmail('email');
		});
		$('#page_password').blur(function(){
			return registerCheckPassword();
		});
		$('#page_password2').blur(function(){
			return registerCheckPassword2();
		});
		$('#page_regform').submit(function(){
			var ret= (registerCheckUsernameAndEmail('all') && registerCheckPassword() && registerCheckPassword2());
			return ret;
		});
	});
}
function registerCheckPassword(){
	var password=$('#page_password').val();
	if(password.length<6 || password.length>15){
		$('#page_password_info').html('<div class="error_message">Password must be within 6-15 characters</div>');
		return false;
	}
	else{
		$('#page_password_info').html('<div class="success_message">Password ok</div>');
		return true;
	}

}
function registerCheckPassword2(){
	if($('#page_password2').val()!=$('#page_password').val()){
		$('#page_password2_info').html('<div class="error_message">Confirm Password must be repeated exactly</div>');
		return false;
	}
	else{
		$('#page_password2_info').html('<div class="success_message">Confirm Password ok</div>');
		return true;
	}

}
/**
*  typeStr:[username|email|all]
 */
function registerCheckUsernameAndEmail(typeStr){
	var ajaxValidate='';
	var ret=true;
	if(typeStr=='all')
		ajaxValidate='username,email';
	else
		ajaxValidate= typeStr;
	$.post(gSiteRoot+"/index.php?r=index/register",{
		ajaxValidate:ajaxValidate,
		'RegForm[username]':$('#page_username').val(),
		'RegForm[email]':$('#page_email').val()
	},function(data){
		if(typeStr=='all'){
			if(data.username){
				$('#page_username_info').html('<div class="error_message">'+data.username[0]+'</div>');
				ret=false;
			}
			if(data.email){
				$('#page_email_info').html('<div class="error_message">'+data.email[0]+'</div>');
				ret=false;
			}
		}
		else if(typeStr=='username'){
			if(data.username){
				$('#page_username_info').html('<div class="error_message">'+data.username[0]+'</div>');
				ret=false;
			}
			else{
				$('#page_username_info').html('<div class="success_message">Username is available</div>');
				ret=true;
			}
		}
		else if(typeStr=='email'){
			if(data.email){
				$('#page_email_info').html('<div class="error_message">'+data.email[0]+'</div>');
				ret=false;
			}
			else{
				$('#page_email_info').html('<div class="success_message">Email is available</div>');
				ret=true;
			}
		}
	},'json');
	return ret;
}

