function trim(string) {
	string = string.replace(/^\s+/g, '');
	return string.replace(/\s+$/g, '');
}

/*
Array.prototype.remove = function(s) {
	for(i=0; i < this.length; i++) {
		if(s == this[i]) {
			this.splice(i, 1);
			--i;
		}
	}
}
*/

function startajaxmode() {
	var lsXmlHttp;

	try {
		lsXmlHttp = new XMLHttpRequest();
	} catch(e) {
		try { lsXmlHttp = new ActiveXObject('Msxml2.XMLHTTP');
		} catch(e) {
			try { lsXmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
			} catch(e) {
				alert('Ваш браузер не поддерживает Ajax!');
				return false;
			}
		}
	}

	return lsXmlHttp;
}


function ajaxrate(id, value) {

	var lsXmlHttp = startajaxmode();

	var ratingdem = document.getElementById('ratingdem'+id);		// статус контейнер
	var countdem = document.getElementById('countdem'+id);			// статус контейнер

	lsXmlHttp.onreadystatechange = function() {
		var response;
		var mas;
		if(lsXmlHttp.readyState == 4) {
			setTimeout(function() {
				response = lsXmlHttp.responseText;
				mas = response.split('|'); 
				if(mas[0] == 'ok') {				// ок
					ratingdem.innerHTML = mas[1];
					countdem.innerHTML = mas[2];
				} 
				if(mas[0] == 'error') {				// ошибка
					ratingdem.innerHTML = mas[1];
					countdem.innerHTML = mas[2];
					alert(mas[3]);
				}
				if(mas[0] == 'register') {			// регистрация
					ratingdem.innerHTML = mas[1];
					countdem.innerHTML = mas[2];
					if(confirm(mas[3])) document.location = site+'register.html';
				}
			}, 500);
		}
	}
 
	//	отправка запросов
	lsXmlHttp.open('GET', site+'motivator/ajax/rating.html?id='+id+'&value='+value, true);
	lsXmlHttp.send(null);			
}


function ajaxaddfavorite(id, my) {
	var lsXmlHttp = startajaxmode();

	lsXmlHttp.onreadystatechange = function() {
		var response;
		var mas;
		if(lsXmlHttp.readyState == 4) {
			setTimeout(function() {
				response = lsXmlHttp.responseText;
				mas = response.split('|'); 
				if(mas[0] == 'ok') {				// ок
					my.style.background = 'url('+site+'design/icons/norm/001_06.png) no-repeat'; 
				} 
				if(mas[0] == 'error') {				// ошибка
					my.style.background = 'url('+site+'design/icons/norm/001_05.png) no-repeat'; 
					alert(data[1]);
				}
			}, 500);
		}
	}
 
	//	отправка запросов
	lsXmlHttp.open('GET', site+'motivator/ajax/addfavorite.html?id='+id, true);
	lsXmlHttp.send(null);	
}



	function submitform(link) {
		link.disabled = true;
		document.getElementById('create').submit();
	}

	function confirmcreate(link) {
		if(confirm('Пожалуйста, подтвердите правильность заполнения данных!') == true) {
			link.disabled = true;
			document.getElementById('create').submit();
		} else {
			link.disabled = false;
		}
	}


function select_tags() {
	input_tags = document.getElementById('input_tags');
	current_tags = trim(input_tags.value);
	var tags = current_tags.split(',');	


	links = document.getElementById('tagbox').getElementsByTagName('a');
	for(var k in links) links[k].className = '';

	for(var i in tags) {
		v = trim(tags[i]);
		tagname = 'tag' + Base64.encode(v);
		obj = document.getElementById(tagname);
		if(obj) {
			obj.className = 'selected';
		}
	}

}


//	ололошная вставка тегов
function insert_tag(tag, id) {

	tag = trim(tag);
	if(tag == '') return false;

	input_tags = document.getElementById('input_tags');
	this_tag = document.getElementById(id);

	input_tags.value = trim(input_tags.value);
	current_tags = input_tags.value;
	var tags = current_tags.split(',');

	var new_tags = new Array();

	//	удалить тег
	if(this_tag.className == 'selected') {

		for(var k in tags) {
			var v = tags[k].replace(/^\s*(.*?)\s*$/gi, '$1');
			//alert(k+' = '+v);
			if(v.toLowerCase() != tag.toLowerCase())
				new_tags.push(v);
		}

		this_tag.className = '';
	}

	//	вставить тег
	else {

		for(var k in tags) {
			var v = tags[k].replace(/^\s*(.*?)\s*$/gi, '$1');
			if(v != '' && v != tag) new_tags.push(v);
		}

		new_tags.push(tag);

		this_tag.className = 'selected';

	}

//	if(new_tags.length > 0) {
		input_tags.value = new_tags.join(', ');
//	} else input_tags.value = '';
	input_tags.focus();

	return false;
}



//	captcha/index.php?PHPSESSID=75bc13a120437ee9abce33545a1a0c2f
function refresh_captcha(name, id) {
	document.getElementById('captcha').src = 'captcha/index.php?' + name + '=' + id + '&rand=' + Math.random();; 
}



var Base64 = {

	// private property
	//_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
	_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789ABC",

	// public method for encoding
	encode : function (input) {
		var output = "";
		var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
		var i = 0;

		input = Base64._utf8_encode(input);

		while (i < input.length) {

			chr1 = input.charCodeAt(i++);
			chr2 = input.charCodeAt(i++);
			chr3 = input.charCodeAt(i++);

			enc1 = chr1 >> 2;
			enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
			enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
			enc4 = chr3 & 63;

			if (isNaN(chr2)) {
				enc3 = enc4 = 64;
			} else if (isNaN(chr3)) {
				enc4 = 64;
			}

			output = output +
			this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
			this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);

		}

		return output;
	},

	// public method for decoding
	decode : function (input) {
		var output = "";
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;

		input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

		while (i < input.length) {

			enc1 = this._keyStr.indexOf(input.charAt(i++));
			enc2 = this._keyStr.indexOf(input.charAt(i++));
			enc3 = this._keyStr.indexOf(input.charAt(i++));
			enc4 = this._keyStr.indexOf(input.charAt(i++));

			chr1 = (enc1 << 2) | (enc2 >> 4);
			chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
			chr3 = ((enc3 & 3) << 6) | enc4;

			output = output + String.fromCharCode(chr1);

			if (enc3 != 64) {
				output = output + String.fromCharCode(chr2);
			}
			if (enc4 != 64) {
				output = output + String.fromCharCode(chr3);
			}

		}

		output = Base64._utf8_decode(output);

		return output;

	},

	// private method for UTF-8 encoding
	_utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";

		for (var n = 0; n < string.length; n++) {

			var c = string.charCodeAt(n);

			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}

		}

		return utftext;
	},

	// private method for UTF-8 decoding
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;

		while ( i < utftext.length ) {

			c = utftext.charCodeAt(i);

			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}

		}

		return string;
	}

}




//-------------------------------------------------------------- 
// Multi-onLoadEvents Script 
// Copyright (C) ManHunter / PCL 
// http://www.manhunter.ru 
//-------------------------------------------------------------- 
	
// onLoad event list 
onLoadFuncton=new Array(); 

// Add new function to onLoad event 
function safeAddLoadFunction(myFunction) { 
	// Function	
	if (typeof(myFunction) != 'function') { 
		return false; 
	} 
	 
	if (window.onload) { 
		 
		if (onLoadFuncton.length) { 
			// Add new function 
			onLoadFuncton[onLoadFuncton.length]=new function() { 
				myFunction(); 
			} 
		} 
		else { 
			// Add first function 
			oldOnLoadFunction=window.onload; 
			onLoadFuncton[onLoadFuncton.length]=new function() { 
				oldOnLoadFunction(); 
			} 
			// Add new function 
			onLoadFuncton[onLoadFuncton.length]=new function() { 
				myFunction(); 
			} 
		}	
	} 
	else { 
		// Add new function 
		onLoadFuncton[onLoadFuncton.length]=new function() { 
			myFunction(); 
		} 
	} 
	// Set global onLoad function 
	window.onload=function() { safeDoLoadEvents(); } 
	return true; 
} 
	
// Execute all onLoad functions 
function safeDoLoadEvents() { 
	for (i=0; i<onLoadFuncton.length; i++) { 
		onLoadFuncton[i]; 
	} 
}
