//
// PDZ.AddTo.js
// http://pdz.t999.ru/devel/pdzaddtojs
//
// Author: PERODOZO aka PDZ
// Site: http://pdz.t999.ru/
// Feedback: http://pdz.zlog.in/
//

if(!pdz) var pdz = {};

pdz.addFavorite = function(a) { 
	title = a.getAttribute('title') ? a.getAttribute('title') : document.title; 
	url = a.href ? a.href : document.location; 
	try { 
		window.external.AddFavorite(url, title); 
	}
	catch (e) { 
		try { 
			window.sidebar.addPanel(title, url, ""); 
		}
		catch (e) { 
			if(typeof(opera)=="object") {
				a.rel="sidebar"; 
				a.title=title; 
				a.url=url; 
				return true; 
			} 
			else { 
				alert('Нажмите Ctrl-D чтобы добавить страницу в закладки'); 
			} 
		} 
	}
	return false; 
};

pdz.addtoTypes = {
	vkontakte: ['ВКонтакте', 'url', 'http://vkontakte.ru/share.php?url={PDZADDTO_URL}&title={PDZADDTO_TITLE}&description={PDZADDTO_DESC}&image={PDZADDTO_IMG}'],
	facebook: ['FaceBook', 'url', 'http://www.facebook.com/sharer.php?u={PDZADDTO_URL}&t={PDZADDTO_TITLE}'],
	twitter: ['Twitter', 'url', 'http://twitter.com/home?status={PDZADDTO_URL}%20-%20{PDZADDTO_TITLE}'],
	livejournal: ['LiveJournal', 'url', 'http://www.livejournal.com/update.bml?event={PDZADDTO_URL}&subject={PDZADDTO_TITLE}'],
	memori: ['Memori', 'url', 'http://memori.ru/link/?sm=1&u_data[url]={PDZADDTO_URL}&u_data[name]={PDZADDTO_TITLE}'],
	yandex: ['Яндекс', 'url', 'http://zakladki.yandex.ru/userarea/links/addfromfav.asp?bAddLink_x=1&lurl={PDZADDTO_URL}&lname={PDZADDTO_TITLE}'],
	mailru: ['Mail.ru', 'url', 'http://connect.mail.ru/share?share_url={PDZADDTO_URL}'],
	google: ['Google', 'url', 'http://www.google.com/bookmarks/mark?op=edit&bkmk={PDZADDTO_URL}&title={PDZADDTO_TITLE}'],
};

pdz.addtoDelimit = function(el) {
	var els = el.getElementsByTagName('a');
	for(i=0;i<els.length;i++) {
		if(m = els[i].getAttribute('class').match(/^(.*?) hide$/i)) els[i].setAttribute('class', m[1]);
		if(m = els[i].getAttribute('class').match(/^limiter$/i)) el.removeChild(els[i]);
	}
	return false;
};

pdz.addtoOpen = function(url) {
	w = window.open(url, 'pdzAddTo', 'toolbar=0,resizable=1,scrollbars=1,status=1,width=730,height=500');
	if(w) return false;
	else return true;
};

pdz.addto = function(opts) {
	
	if(!opts) opts = {}
	if(!opts.css) opts.css = 'pdzaddto';
	if(!opts.url) opts.url = document.location;
	if(!opts.title) opts.title = document.title;
	if(!opts.img) opts.img = '';
	if(!opts.desc) opts.desc = '';
	if(!opts.prepend) opts.prepend = 'Поделиться ссылкой - ';
	if(!opts.limit) opts.limit = 0;

	var originalTitle = opts.title;
	var originalUrl = opts.url;

	opts.url = encodeURI(opts.url);
	opts.img = encodeURI(opts.img);
	opts.title = encodeURIComponent(opts.title);
	opts.desc = encodeURIComponent(opts.desc);

	var each = [];
	if(opts.only) {
		if(typeof opts.only == 'string') {
			opts.only = opts.only.replace(/\|/, ' ');
			opts.only = opts.only.replace(/\,/, ' ');
			opts.only = opts.only.replace(/\s\s/, ' ');
			each = opts.only.split(" ");
		}
		else each = opts.only;
	}
	else {
		for (key in pdz.addtoTypes) {
			each.push(key);
		}
	}

	_write = '';
	
	var chide = '';

	for(i=0;i<each.length;i++){
		_to = pdz.addtoTypes[each[i]];
		_title = opts.prepend + _to[0];
		if(_to[1] == 'url') {
			_url = _to[2];
			_url = _url.replace(/\{PDZADDTO_URL\}/, opts.url);
			_url = _url.replace(/\{PDZADDTO_TITLE\}/, opts.title);
			_url = _url.replace(/\{PDZADDTO_DESC\}/, opts.desc);
			_url = _url.replace(/\{PDZADDTO_IMG\}/, opts.img);
			_write += '<a ';
			if(!opts.noblank) _write += 'target="_blank" ';
			_write += 'class="'+each[i]+chide+'" href="'+_url+'" onclick="return pdz.addtoOpen(\''+_url+'\');" title="'+_title+'">';
			if(opts.text) _write += _to[0];
			else _write += ' ';
			_write += '</a>';
		}
		if(opts.limit > 0 && (i + 2) > opts.limit) chide = ' hide';
	}

	_write += '<a class="email'+chide+'" href="mailto:?subject='+encodeURIComponent('Зацени - ')+opts.title+'&body='+opts.url+'" title="Отправить на E-Mail"> </a>';
	_write += '<a class="browser'+chide+'" href="'+originalUrl+'" title="'+originalTitle+'" onclick="return pdz.addFavorite(this);"> </a>';
	
	if(opts.limit > 0 && (each.length + 1) > opts.limit) {
		_write += '<a class="limiter" href="#" title="..." onclick="return pdz.addtoDelimit(this.parentNode);"> </a>';
	}
	
	if(opts.el) {
		newel = document.createElement('div');
		newel.setAttribute('class', opts.css);
		newel.innerHTML = _write;
		newparent = opts.el.parentNode;
		newparent.replaceChild(newel, opts.el);
	} else {
		_write = '<div class="'+opts.css+'">'+_write+'</div>';
		document.writeln(_write);
	}

};

