/**
 * javscript functions for funphoto
 * based on jquery
 * @author LaytonQuan
 */
//扩展string类
String.prototype.trim = function(){
    return this.replace(/(^\s*)|(\s*$)/g, "");
}

//为页面上的文本框添加高亮效果
$(document).ready(highLightActiveElement);

//页面头部搜索功能
function search_photo()
{
	var keyword = $.trim( $("#txt_search").val() );
	if(keyword == "")
	{
		alert("请先输入搜索关键词！");
		$("#txt_search").focus();
		return;
	}
	else if(!wordValidate(keyword))
	{
		alert("请输入数字、字母和汉字进行搜索！");
		$("#txt_search").focus();
		return;
	}
	else if(strlen(keyword) > 18)
	{
		alert("搜索的关键词最多支持6个汉字！");
		$("#txt_search").focus();
		return;
	}
	
	var type = $("#search_label a.search_a1").attr("val");
	redirect( "searchResult.php?type=" + type + "&key=" + encodeURIComponent(keyword) );
}

//用户登录
function ajax_login()
{
	var name = $.trim( $("#txt_username").val() );
	var pwd = $.trim( $("#txt_password").val() );
	var query = "AjaxResponse_User.php?action=login"
			+ "&name=" + name 
			+ "&pwd=" + pwd 
			+"&r=" + Math.random();//document.write(query); return;
	//登录，通过ajax注册cookie
	$.get(query, null, function(response){
		//cookie生成后，获取用户信息
		var query2 = "AjaxResponse_User.php?action=get" +"&r=" + Math.random();
		$.get(query2, null, function(response2){
			//alert(response2);
			var jsonData = evalJSONData(response2);
			if(jsonData.login > 0)
			{
				$("#span_userInfo").text(jsonData.nickname);
				$("#span_invitations").text(jsonData.invitations);
				$("#span_mails").text(jsonData.mails);
				$("#link_mail").attr("href", jsonData.maillink);
				$("#span_messages").text(jsonData.messages);
				
				document.getElementById("div_logout").style.display = "block";
				document.getElementById("div_login").style.display = "none";
				
				//切换首页的活跃用户页签
				if ($("#user_label")) {
					showFriendList();
				}
			}
			else{
				alert("登录失败，请确认用户名和密码后再试！");
			}
		});
	});
}

//用户退出
function ajax_logout()
{
	var query = "AjaxResponse_User.php?action=logout" + "&r=" + Math.random();
	$.get(query, null, function(response){
		$("#txt_username").val("");
		$("#txt_password").val("");
		document.getElementById("div_login").style.display = "block";
		document.getElementById("div_logout").style.display = "none";
		window.location.href = window.location.href;
	});
}

/**
 * 监视回车键行为
 */
$(document).keypress(keyListener);
function keyListener(evt)
{
	evt = (evt) ? evt : ((window.event) ? event : null);
	if (evt){
		if (evt.keyCode == 13){
			var source = evt.target.name ? evt.target.name : window.document.activeElement.id;
			switch(source)
			{
				case "txt_comment":
				case "txt_verify":
					$("#btn_addComment").click();//发表评论	
					break;
				case "txt_search":
				case "select_search":
					$("#btn_search").click();//搜索
					break;
				case "txt_username":
				case "txt_password":
					$("#btn_login").click();//登录
					break;
				case "txt_name":
				case "txt_pwd":
					$("#btn_login2").click();//独立登录页登录
					break;
				default:
					break;
			}
		}
	}
}

/**
 * 切换指定页面元素的显示状态
 * @param {int} elementId 页面元素的Id
 */
function display_alternate(elementId)
{
	if (elementId) 
	{
		var element = document.getElementById(elementId);
		element.style.display = (element.style.display == "block") ? "none" : "block";
	}
}

/**
 * 将JSON数据转化为Javascript可以解析的JSON格式
 * @param {Object} serverData
 */
function evalJSONData(serverData)
{
	if (serverData) 
	{
		return eval('(' + $.trim(serverData) + ')');
	}
	return "";
}

//对当前焦点的页面元素使用加亮效果
function highLightActiveElement()
{
	//原始样式
	var original = "1px solid #A7A6AA";
	//加亮样式
	var highLight = "2px solid #FFBF00";
	
	//文本框
	$(":text").focus( function(){
		$(this).css({border:highLight});
	} );
	
	$(":text").blur( function(){
		$(this).css({border:original});
	} );
	
	//密码框
	$(":password").focus( function(){
		$(this).css({border:highLight});
	} );
	
	$(":password").blur( function(){
		$(this).css({border:original});
	} );

	//textarea
	$("textarea").focus( function(){
		$(this).css({border:highLight});
	} );
	
	$("textarea").blur( function(){
		$(this).css({border:original});
	} );
}

//检测字符串长度，utf-8字符集下一个汉字占3个字符
function strlen(str)
{
	var myCharSet = document.charset ? document.charset : document.characterSet;
    var len = 0;
    for(var i = 0; i < str.length; i++) {
        len += str.charCodeAt(i) < 0 || str.charCodeAt(i) > 255 ? ( myCharSet.toLowerCase() == 'utf-8' ? 3 : 2) : 1;
    }
    return len;
}

//检查字符长度是否符合要求
function lengthValidate(str, length)
{
	$len = strlen(str);
	return ($len <= length) ? true : false;
}

//全选或者取消所有checkbox
function setCheckboxs(containerId, checked)
{
	var ids = "";
	if(containerId)
	{
		checked = checked ? true : false;
		containerId = "#" + containerId;
		var checkboxs = $(containerId).find(":checkbox");
		jQuery.each(checkboxs, function(i, n){
			this.checked = checked ? "checked" : "";
			ids += (this.id + ",");
		});
	}
	return ids;
}

function getCheckboxs(containerId)
{
	var ids = "";
	if(containerId)
	{
		containerId = "#" + containerId;
		var checkboxs = $(containerId).find(":checkbox");
		jQuery.each(checkboxs, function(i, n){
			ids += this.checked ? (this.id + ",") : "";
		});
	}
	return ids;
}

/**
 * 分页下拉菜单被触发时的页面跳转
 * /
 */
function gotoPage(url)
{
	if(url)
	{
		var list = document.getElementById("select_paging");
		var pageId = list.options[list.selectedIndex].value;
		url += pageId;
		window.location.href = url;
	}
}

/**
 * 页面跳转，用于非<a>元素的点击事件
 * @param {Object} url
 */
function redirect(url)
{
	if(url)
	{
		window.location.href = url;
	}
}

/**
 * 改变文字的颜色
 * @param {Object} 元素对象
 * @param {Object} 要改变的颜色
 */
function changeTextColor(element, color)
{
	if(element && color)
	{
		element.style.color = color;
	}
}

/**
 * 根据cookieId获取cookie值
 * @param {string} cookieName 要搜索的cookie的名字
 */
function getCookie(cookieName)
{
	if (cookieName) {
		return document.cookie.indexOf(cookieName);
	}
	return -1;
}

/**
 * 判断当前用户是否已经登录
 */
function isLogined()
{
	var id = getCurrentUserId();
	var exist = ( parseInt(id) >= 1) ? true : false;
	return exist;
}

/**
 * 从cookie中获取当前登录用户的Id,通过jquery.cookie实现
 */
function getCurrentUserId()
{
	return $.cookie('UserID');
}

/**
 * 检测用户登录状态，如果未登录则询问是否要登录并跳转到登陆页
 */
function loginValidate()
{
	if(!isLogined())
	{
		var ok = window.confirm("你还未登录，是否现在马上登录？");
		if(ok)
		{
			redirectToLogin();
		}
		return false;
	}
	return true;
}

/**
 * 跳转到登录页，登录后自动返回当前页
 */
function redirectToLogin()
{
	var index = window.location.href.lastIndexOf("/");
	var url = "../login.php?returnurl=" + "/funphoto/" + window.location.href.substr(index+1);
	window.location.href = url;
}

/**
 * 校验传入的字符是否只包含数字、字母和汉字
 * @param {string} str
 */
function wordValidate(str)
{
	if(str)
	{
		str = $.trim(str);
		var pattern = /^[A-Za-z0-9\u4e00-\u9fa5]+$/g;
		return pattern.test(str);
	}
	return false;
}

/**
 * 校验传入的字符是否指包含数字和字母
 * @param {string} str
 */
function isDigitAndLetter(str)
{
	if(str)
	{
		str = $.trim(str);
		var pattern = /^[A-Za-z0-9]+$/g;
		return pattern.test(str);
	}
	return false;
}

/**
 * 切换图片，两张图片中有一张必须以_a结尾。
 * @param {Object} element 触发事件的img对象
 */
function switchImage(element)
{
	if(element)
	{
		var src = element.getAttribute("src");
		var index = src.lastIndexOf(".");
		var ext = src.slice(index);
		//根据当前图片名字来切换对应的另一张图片
		if(src.indexOf("_a.") < 0){
			src = src.slice(0, index);
			src += "_a" + ext;
		}
		else{
			src = src.slice(0, index-2);
			src += ext;
		}
		element.setAttribute("src", src);
	}
}

/**
 * 获取24小时的统计数据并显示到页头上。
 */
function headerTips()
{
	var query = "AjaxResponse_Photo.php?action=statinfo&r=" + Math.random();
	$.get(query,null, function(response){
		response = decodeURIComponent( $.trim(response) );
		if(response != "")
		{
			$("#div_statisticInfo").text(response);
		}
	});
}

/**
 * 弹出消息提示框。依靠jquery.impromptu插件实现。
 * @param {string} msg
 * @param {int} width
 * @param {string} theme
 */
function message(msg)
{
	if(msg && $.trim(msg)!="")
	{
		$.prompt(msg, {opacity:0.2, top:'40%'} );
		setTimeout( function(){ jQuery.prompt.close(); }, 2000 );
	}
}
