﻿/*
 * Global.js
 * 
 *
 * Written and maintained by Highmore Hill (highmore@163.com)
 */

/*
********************************************************************************************************
*
* 工具函数
*
********************************************************************************************************
*/

function getRequestParam(idx) {
	var _urlpars = new Object();
	var _pars = document.location.search.substr(1).split("&");

	for (i = 0; i < _pars.length; i++) {
		var _par = _pars[i].split("=");
		_urlpars[_par[0]] = _par[1];
	};

	return _urlpars[idx];
}

function reloadCaptcha(r) {
	$("#CAPTCHA").replaceWith("<img id=\"CAPTCHA\" src=\"captcha.asp?r=" + r + "\" alt=\"Code Image - Please contact webmaster if you have problems seeing this image code\" />");
}

/*
********************************************************************************************************
*
* 字符串处理函数
*
********************************************************************************************************
*/
function adjustByTagPostion(str) {
	var left_brace_index = str.lastIndexOf('<');  
	var right_brace_index = str.lastIndexOf('>');
	// 为true的话则表示字符串处于第一种情况，需要进行删除操作。
	var inTagDefinition = left_brace_index > right_brace_index;
	return inTagDefinition ? str.substring(0,left_brace_index) : str;
}  
// 将未闭合的标签按序闭合。  
function modifyDisplayString(original, addTags) {
	var tagLenth = addTags.length;
	for(var i = tagLenth-1; i >= 0; i--){
		original += '</' + addTags[i] + '>';
	}
	return original;
}
//
function splitString(original, length) {
	// 此数组用于保存那些未闭合的标签。  
	var non_match_tag = [];
	// 如果大于字符串的总长度，返回整个字符串；否则返回指定长度的子串  
	var to = length >= original.length ? original.length : length;
	var substring = original.substring(0,to);

	// 调整字符串。
	adjustedSubString = adjustByTagPostion(substring);
	var tag_pattern = /<\s*(\w+\b)(?:[^>]*[^\/])?>|<(\/\w+)>/ig;

	adjustedSubString.replace(tag_pattern, function(match,$1,$2) {
		var value = $1 == '' ? ($2 == '' ? '' : $2) : $1;
		if (value.charAt(0) == '/') {
			// 为真表示这个标签是前面最后一个为闭合标签的闭合，因此，将此标签从数组中删除。
			if (non_match_tag.length > 0 && non_match_tag[non_match_tag.length-1] == value.substring(1)) {
				non_match_tag.pop();
			}
		} else {
			// 新的未闭合的标签，将其添加到数组中。
			non_match_tag.push(value);
		}
	});
	return modifyDisplayString(adjustedSubString, non_match_tag);
}

