/*
 * 表单验证函数val_form(form_array)
 * @参数 数组 form_array
 * 格式: 字段id: {选项}
 * 此选项可以为下列属性：
 * - name 字段的名称
 * - text 指定错误信息
 * - function 使用特定函数对字段进行判断
 * - function_params 特定函数所所使用的参数
 * 例如:
	{
		'username': {
			'text': 'Please type a valid username.',
			'function': 'funct_username',
			'function_params': [param_1, param_2]
		},
		'password': {
			'name': 'Password',
		}
	}
 */
function val_form(FORM_ARRAY) {

	//初始检测结果为真
	var RESULT = true;
	var FUNCTION_PARAMS = '';
	var ERROR_MSG = [];
	var ERROR_ID = [];
	//用$.each这个jquery自带函数对form_array数组进行循环
	$.each(FORM_ARRAY, function(id, PARA_ARRAY){
		
		if (PARA_ARRAY['function_params'] != undefined) { 
			if (isArray(PARA_ARRAY['function_params'])) {
				$.each(PARA_ARRAY['function_params'], function(id, function_param){
					FUNCTION_PARAMS += ', \''+ function_param + '\'';
				});
			}else{
				FUNCTION_PARAMS = ', \''+ PARA_ARRAY['function_params'] + '\'';
			}
		}
		//input[text],select,textarea都可以通过这个方法拿到值
		$field_value = $('#'+ id).val();
		$field_type = $('#'+ id).attr('type');
		//如果指定类型为undefined,说明指定类型为radio或checkbox
		if ($field_type == undefined) {
			$field_type = $('input[@name='+ id +']').attr('type')
		}
		//如果指定类型为单选按钮
		if ($field_type == 'radio') {
			$field_value = $('input[@type=radio][@name='+ id +'][@checked]').val();
		}
		//如果指定类型为复选按钮
		if ($field_type == 'checkbox') {
			
			$('input[@type=checkbox][@name='+ id +']').each(function() {
				if ($(this).attr('checked') == true) {
					$field_value = $(this).val();
					return false;
				}else{
					$field_value = '';
				}
			}); 
		}		
		//如果指定类型为下拉菜单和文本区
		//if ($field_type == 'select' || $field_type == 'textarea') {
			
			//$field_value = addslashes($('#'+ id).val());
		//}
		//对特殊符号进行转义操作
		$field_value = addslashes($field_value);
		//if ($field_value != '') {
			//如果没有指定用相应的函数来判断是否符合要求,则默认判断字段值是否为空,只有当所有的字段都符合条件,检测结果才为真
			RESULT = RESULT && ((PARA_ARRAY['function'] == undefined) ?(($field_value == undefined || $.trim($field_value) == '') ?false :true) :eval(PARA_ARRAY['function'] + '(\''+ $.trim($field_value) +'\''+ FUNCTION_PARAMS +')'));
		//}else{
			//RESULT = false;
		//}
		if (!RESULT) {
			//如果没有指定错误信息,但是指定了字段名,则使用'The "字段名" cannot be left blank.',否则默认为'This field cannot be left blank.',并把错误信息和字段id存放到相信的数组中
			ERROR_MSG.push((PARA_ARRAY['text'] == undefined) ?((PARA_ARRAY['name'] == undefined) ?'This field' :'The "'+ PARA_ARRAY['name'] +'" field') +' cannot be left blank.' :PARA_ARRAY['text']);
			ERROR_ID.push(id);
		}
	});
	//对数组进行反向排序,满足自上而下的验证
	ERROR_MSG.reverse;
	ERROR_ID.reverse;
	if (RESULT) {
		return true;
	}else{
		alert(ERROR_MSG[0]);
		$('#' + ERROR_ID[0]).focus(); 
		return false;
	}
}

function isArray(obj) {
	
	return (obj instanceof Array); 
}

function addslashes(str) {
	
	if (str == undefined) {
		return '';
	}
	str = str.replace(/\\/g, '\\\\');
	str = str.replace(/\'/g, '\\\'');
	str = str.replace(/\"/g, '\\"');	
	str = str.replace(/\0/g, '\\0');
	return str;
}

function tinymce_content(value, target) {
	
	var content = tinyMCE.get(target).getContent();
	if(content != '') {
		return true;
	}else{
		return false;
	}
}

function doConfirm() {
	return ((confirm('Are you sure you want to delete this record?'))? true: false);
}

function delete_page_record(id) {
	//alert ($(this).id);
	//$(this).parent().parent().remove();
	//return false;
	if (doConfirm()) {
		$.post("include/jquery_handler_function.php", {type: 'page_delete', id: id}, function(data){
			if (data) {					
				$('#page-' + id).remove();
			}
    	});
	}
}

function change_page_sort(action, id) {
	if (action == 'up') {
		other_id = $('#page-' + id).prev().attr('id');
	}else{
		other_id = $('#page-' + id).next().attr('id');
	}
	//$('#page-' + id + ' span[@class=up]').unbind('click');
	//$('#page-' + id + '').attr('disalb');
	other_id = other_id.replace('page-', '');
	tmp = $('#page-' + id).html();
	if (other_id != undefined) {
		other_id = other_id.replace('page-', '');
		
		$('#page-' + id).html('<td colspan="4" height="18">Sorting</td>');
		
		$.post("include/jquery_handler_function.php", {type: 'page_sort', id: id, other_id: other_id}, function(data){
			if (data) {					
				if (action == 'up') {
					$('#page-' + id).html($('#page-' + id).prev().html());
					$('#page-' + other_id).html(tmp);
				}else{
					$('#page-' + id).html($('#page-' + id).next().html());
					$('#page-' + id).next().html(tmp);
				}
				if ($.browser.msie && action == 'up') {
					$('#page-' + id).attr('id', 'page-' + other_id);
					$('#page-' + other_id).attr('id', 'page-' + id);
				}else{
					$('#page-' + other_id).attr('id', 'page-' + id);
					$('#page-' + id).attr('id', 'page-' + other_id);
				}
				//$(this).bind("click", function(){ change_page_sort(action, id); });
				
			}
    	});	
	}

}

function delete_record(type) {
	
	$("input[name='delete[]']").each(function(){
		if (this.checked) {
			id = this.value;
			
			//$("#page_list input[@value=" + id + "][@type='checkbox']").parent().parent().remove();
			//$.ajax({ type: "POST", url: "include/jquery_handler_function.php", data: "id=" + id + "&db_name=news" , success: function(data){
					//if (data) {					
						//$("#page_list input[@value=" + id + "][@type='checkbox']").parent().parent().remove();
					//}
				//}
			//});
			
			//$.post("include/jquery_handler_function.php", {id: id, db_name: 'news'});
			$.post("include/jquery_handler_function.php", {type: type, id: id}, function(data){
				if (data === 0) {					
					alert('Error!');
				}
      		});			
			$("#page_list input[@value=" + id + "][@type='checkbox']").parent().parent().remove();
			//$.post("include/jquery_handler_function.php", {id: id, db_name: 'news'}, function(data){
				//if (data) {					
					//$("#page_list input[@value=" + id + "][@type='checkbox']").parent().parent().remove();
				//}
      		//});
		}
	});
	$("#checkall").attr('checked', false);
	if ($("#page_list tr").length < 2) {
		$("#page_list").append('<tr><td colspan="' + $("#page_list th").length + '">No Record Yet.</td></tr>');
	}
	//alert($("input[name='delete[]']").length);
	//
}

function change_sort(controller, db_name, action, id) {
	
	//alert($("#page_list input[@value=" + id + "][@type='checkbox']").parents().parents().prev().html());
	//length = $("#page_list input[@value=" + id + "][@type='checkbox']").parent().parent().children().length;
	//$("#page_list input[@value=" + id + "][@type='checkbox']").parent().parent().html('<td colspan="'+ length +'">Sorting</td>');
	$.post("include/jquery_handler_function.php", {type: 'sort', id: id, db_name: db_name, action: action}, function(data){
		if (data) {					
			
			if (action == 'up') {
				$tmp = $("#page_list input[@value=" + id + "][@type='checkbox']").parent().parent().prev().html();
				$("#page_list input[@value=" + id + "][@type='checkbox']").parent().parent().prev().html($("#page_list input[@value=" + id + "][@type='checkbox']").parent().parent().html());
				$("#page_list input[@value=" + id + "][@type='checkbox']").parent().parent().next().html($tmp);
			}else{
				$tmp = $("#page_list input[@value=" + id + "][@type='checkbox']").parent().parent().next().html();		
				$("#page_list input[@value=" + id + "][@type='checkbox']").parent().parent().next().html($("#page_list input[@value=" + id + "][@type='checkbox']").parent().parent().html());
				//alert($("#page_list input[@value=" + id + "][@type='checkbox']").parent().parent().prev().html());
				if ($.browser.msie) {
					$("#page_list input[@value=" + id + "][@type='checkbox']").parent().parent().before().html($tmp);
				}else{
					$("#page_list input[@value=" + id + "][@type='checkbox']").parent().parent().prev().html($tmp);
				}		
			}
		}
    });		
	//$("#page_list input[@value=" + id + "][@type='checkbox']").parent().parent().remove();
}

function do_search() {
	url = top.window.location.href;
	url = url.replace(/&s=([\w%]+)/gi, '');
	if ($('#post-search-input').val() != '') {
		url = url + '&s=' + encodeURI($('#post-search-input').val());
		window.location.href = url;
	}
}

function do_orderby() {
	url = top.window.location.href;
	url = url.replace(/&order_by=(\w+)/gi, '');
	if ($('#order_by').val() != '') {
		url = url + '&order_by=' + encodeURI($('#order_by').val());
		window.location.href = url;
	}
}

function add_category() {
	category_name = $('#cat_name').val();
	if (category_name == '') {
		alert('Type a Category name.');
		return false;
	}
	//$('#page_list').insertAfter($('#test').html('<tr><td>234234234234</td></tr>'));
	//alert($('#cid').get(0).options[].length);
 
	$.post("include/jquery_handler_function.php", {type: 'news category', text: category_name}, function(data){
		if (data) {					
			$('<tr><td><input type="checkbox" name="delete[]" value="' + data + '" /></td><td><a href="index.php?controller=Categories&action=Edit&id='+ data +'">'+ category_name +'</a></td></tr>').appendTo($('#page_list'));
			$('#cat_name').val('');
		}
	});	
}

function CheckUpload(FileType, url) {
	
	ExtendName = FileType.split('|');
	var string=url;
	lowcase = string.toLowerCase();
	start = lowcase.lastIndexOf('.');
	ss = lowcase.substr(start, 4);
	for (i = 0; i < ExtendName.length; i++) {
		if ('.' + ExtendName[i] !== ss) {
			continue;
		}else{
			return true;
		}
	}
	alert ('Not support this file type ' + ss);
	return false;
}
function browserinfo() {
	var Browser_Name = navigator.appName;
	var Browser_Version = parseFloat(navigator.appVersion);
	var Browser_Agent = navigator.userAgent;

	var Actual_Version, Actual_Name;

	var is_IE = (Browser_Name == "Microsoft Internet Explorer");
	var is_NN = (Browser_Name == "Netscape");

	if (is_NN) {
		//upper 5.0 need to be process,lower 5.0 return directly
		if (Browser_Version>=5.0) {
			var Split_Sign = Browser_Agent.lastIndexOf("/");
			var Version = Browser_Agent.indexOf(" ", Split_Sign);
			var Bname = Browser_Agent.lastIndexOf(" ", Split_Sign);

			Actual_Version = Browser_Agent.substring(Split_Sign+1, Version);
			Actual_Name = Browser_Agent.substring(Bname+1, Split_Sign);
		} else {
			Actual_Version = Browser_Version;
			Actual_Name = Browser_Name;
		}
	} else if (is_IE) {
		var Version_Start = Browser_Agent.indexOf("MSIE");
		var Version_End = Browser_Agent.indexOf(";", Version_Start);
		Actual_Version = Browser_Agent.substring(Version_Start+5, Version_End);
		Actual_Name = Browser_Name;

		if (Browser_Agent.indexOf("Maxthon") != -1) {
			Actual_Name += "(Maxthon)";
		} else if (Browser_Agent.indexOf("Opera") != -1) {
			Actual_Name = "Opera";
			var tempstart = Browser_Agent.indexOf("Opera");
			var tempend = Browser_Agent.length;
			Actual_Version = Browser_Agent.substring(tempstart+6, tempend);
		}
	} else {
		Actual_Name = "Unknown Navigator";
		Actual_Version = "Unknown Version";
	}
	/*------------------------------------------------------------------------------
	        --Your Can Create new properties of navigator(Acutal_Name and Actual_Version) --
	        --Userage:                                                                    --
	        --1,Call This Function.                                                       --
	        --2,use the property Like This:navigator.Actual_Name/navigator.Actual_Version;--
	        ------------------------------------------------------------------------------*/
	navigator.Actual_Name = Actual_Name;
	navigator.Actual_Version = Actual_Version;

	/*---------------------------------------------------------------------------
	        --Or Made this a Class.                                                    --
	        --Userage:                                                                 --
	        --1,Create a instance of this object like this:var browser=new browserinfo;--
	        --2,user this instance:browser.Version/browser.Name;                       --
	        ---------------------------------------------------------------------------*/
	this.Name = Actual_Name;
	this.Version = Actual_Version;
}
function getCssFileName(){
	var cssName;
	browserinfo();
	if (navigator.Actual_Name=="Microsoft Internet Explorer"){
		cssName = "ie7";
	}else if (navigator.Actual_Name=="Firefox"){
		cssName = "firefox";
	}else if (navigator.Actual_Name=="Safari"){
		cssName = "safari";
	}else{
		cssName = "firefox";
	}
	return cssName;
}
function printCss(){
	document.write('<link rel="stylesheet" type="text/css" media="screen, projection" href="css/'+getCssFileName()+'.css" />');
	document.write('<link rel="stylesheet" type="text/css" media="print" href="css/print.css" />');	
}

function addFileInTable(title,linkname,linkurl){
	table = document.getElementById("file_list");
	tr = table.insertRow(-1);
	
	td = tr.insertCell(-1);
	td.innerHTML = title;
	td = tr.insertCell(-1);
	td.innerHTML = "<a href='downloads/"+linkurl+"'>"+linkname+"</a>";
	td = tr.insertCell(-1);
	td.innerHTML = "<a href='#'>Edit</a> | <a href='#'>Del</a>";
}

function resetform(f){
	document.forms[f].reset();
}