<!--
// Strip whitespace (or other characters) from the beginning and end of a string
// +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// +   improved by: mdsjack (http://www.mdsjack.bo.it)
// +   improved by: Alexander Ermolaev (http://snippets.dzone.com/user/AlexanderErmolaev)
// +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
function trimNew(str,charlist) { charlist = !charlist ? ' \s\xA0' : charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '\$1'); var re = new RegExp('^[' + charlist + ']+|[' + charlist + ']+$', 'g'); return str.replace(re, ''); }
// убирает все пробелы в конце строки
String.prototype.trimRight=function() { var r=/\s+$/g; return this.replace(r,""); }
// убирает все пробелы в начале строки
String.prototype.trimLeft=function() { var r=/^\s+/g; return this.replace(r,""); }
// убирает все пробелы в начале и в конце строки
String.prototype.trim=function() { return this.trimRight().trimLeft(); }
// убирает все пробелы в начале и в конце строки, заменяет несколько подряд идущих пробелов внутри строки на один пробел
String.prototype.trimMiddle=function() { var r=/\s\s+/g; return this.trim().replace(r," "); }
// убирает все пробелы в строке
String.prototype.trimAll=function() { var r=/\s+/g; return this.replace(r,""); }
//str_replace("что заменяем","чем заменяем","исходная строка");
function strReplace(search,replace,subject) { return subject.split(search).join(replace); } 
//получить полное имя сайта без валидации
function getFSName(path) { var str=strReplace("http://","",path.toString().toLowerCase().trimAll()); var arr=str.split("/"); return strReplace("www.","",arr[0]); }
//получить имя домена последнего уровня без валидации
function getLDName(path) { var sn=getFSName(path); var arr=sn.split("."); var dmn=arr[0]; var magnet=dmn.split(":");
	if (magnet[0]=="magnet") dmn="magnet";
	switch (dmn) {
		case undefined: return "Undefined"; break;
		case "magnet": return "[img]/uploads/magnet.gif[/img] Magnet"; break;
		case "ifolder": return "iFolder"; break;
		case "megaupload": return "MegaUpload"; break;
		case "mediafire": return "MediaFire"; break;
		case "metal-archives": return "Metal-Archives.com"; break;
		case "lastfm": return "Last.fm"; break;
		case "last": return "Last.fm"; break;
		default: return dmn[0].toUpperCase()+dmn.substring(1,dmn.length);
	}
}
//установить цвет фона
function BGC(obj,col) { obj.style.backgroundColor=col; }
//форматирование чисел
function frmt(num) { str=num.toString(); if (str.length==1) return '0'+str; else return str; }
//вкл/выкл. селекты
function setChecked(mf_id, mf_checked) { var objSel=document.getElementById(mf_id); objSel.disabled=!mf_checked; objSel.selectedIndex=0; }
//заполняем селекты числовыми значениями
function setData(mf_id,mf_start,mf_end,mf_default,mf_inc) { if (document.getElementById && document.getElementById(mf_id)) { var objSel=document.getElementById(mf_id); objSel.options[0]=new Option(mf_default, "NULL"); i=mf_start; while (i!=mf_end+mf_inc) { objSel.options[objSel.options.length]=new Option(i,i); i=i+mf_inc; } } }
//переменные
var maxpreview=8; var urlpreview=1; var maxlink=20; var urllink=1;
//инициализация
function Init() {
	var year=new Date();
	setData("filter_year",year.getFullYear()+1,1949,"[ Год ]",-1);
	setData("mf_yearofrelease",year.getFullYear()+1,1949,"[ Год ]",-1); setData("mf_yearofreissue",year.getFullYear()+1,1949,"[ Год ]",-1);
	setData("mf_hour",0,24,"[ часов ]",1); setData("mf_min",59,0,"[ мин ]",-1); setData("mf_sec",59,0,"[ сек ]",-1); setData("mf_percent",1,10,"[ % ]",1); 
}
//добавить превью
function addPreview() {
	if (urlpreview<maxpreview) {
		div=document.getElementById("divpreview");
		urlpreview++;
		newlink='#'+urlpreview+' : <input class="textin" type="text" name="mf_preview'+urlpreview+'" id="mf_preview'+urlpreview+'" style="width:250px;" value="" maxlength="60" /><br />';
		newnode=document.createElement("span");
		newnode.innerHTML=newlink;
		div.appendChild(newnode);
	}
}
//добавить ссылку
function addLink() {
	if (urllink<maxlink) {
		div=document.getElementById("divlink");
		urllink++;
		newlink='#'+frmt(urllink)+' : <input class="textin" type="text" name="mf_link'+urllink+'" id="mf_link'+urllink+'" style="margin-right:30px;width:250px;" value="" maxlength="60" />';
		newlink+=' Описание ссылки #'+frmt(urllink)+' : <input class="textin" type="text" name="mf_linkinfo'+urllink+'" id="mf_linkinfo'+urllink+'" style="width:200px;" value="" /><br />';
		newnode=document.createElement("span");
		newnode.innerHTML=newlink;
		div.appendChild(newnode);
	}
}
//получить значение поля
function getValue(mf_id) { var objmf=document.getElementById(mf_id); if (typeof(objmf.options)=="object") return objmf.options[objmf.selectedIndex].text; else return objmf.value; }
function cleanLink(mf_id) { cl=getValue(mf_id).trimAll(); return strReplace("www.","",cl); }
//получить список категорий
function getCatList() {
	var obj=document.getElementById("category"); var ml="";
	for (i=0;i<=obj.options.length-1;i++) { if (obj.options[i].selected) { if (ml=="") ml+=obj.options[i].text; else ml+=","+obj.options[i].text; } }
	return ml.trim();
}
//валидация поля
function validField(mf_id,xf_id) {
	var objmf=document.getElementById(mf_id); var objxf=document.getElementById(xf_id);
	if (typeof(objmf.options)=="object") { if ((objmf.selectedIndex==-1)||((objmf.options[objmf.selectedIndex].text==objmf.options[0].text)&&(!objmf.disabled))) { BGC(objmf,"#FF0000"); return false; } else BGC(objmf,""); }
	else { if (objmf.value.trimAll()=="") { BGC(objmf,"#FF0000"); objxf.value=""; return false; } else { objxf.value=objmf.value.trimMiddle(); BGC(objmf,""); } }
	return true;
}
//валидация картинки
function validImg(mf_id,xf_id) {
	var objmf=document.getElementById(mf_id); var objxf=document.getElementById(xf_id);
	var fullpath=objmf.value.trimAll().toLowerCase(); var img_ext="";
	if (fullpath.lastIndexOf(".jpg")>0) img_ext=".jpg"; else if (fullpath.lastIndexOf(".jpeg")>0) img_ext=".jpeg"; else if (fullpath.lastIndexOf(".gif")>0) img_ext=".gif"; else if (fullpath.lastIndexOf(".png")>0) img_ext=".png";
	if ((fullpath=="")||(fullpath.lastIndexOf(getFSName(window.location))<0)||(img_ext=="")||(fullpath.lastIndexOf("/uploads/")<0)) { BGC(objmf,"#FF0000"); return false; }
	else { objxf.value="[img]"+fullpath.substring(fullpath.lastIndexOf("/uploads/"),fullpath.lastIndexOf(img_ext)+img_ext.length)+"[/img]"; BGC(objmf,""); }
	return true;
}
//валидация полей и установка значений
function validFields() {
	var err_full="Не выбраны, не заполнены или неправильно заполнены поля, подсвеченные красным цветом.";
	var err_year="Год переиздания должен быть больше года издания!";
	var errors=0; var error=0;
	var mf_inp=new Array("mf_bandname","mf_albumname","mf_genre","mf_country");
	var xf_inp=new Array("xfield[bandname]","xfield[albumname]","xfield[genre]","xfield[country]");
	var mf_sel=new Array("mf_typeofalbum","mf_yearofrelease","mf_reissue","mf_yearofreissue","category","mf_hour","mf_min","mf_sec","mf_formatb");
//валидация полей ввода
	for (i=0;i<=mf_inp.length-1;i++) { if (!validField(mf_inp[i],xf_inp[i])) errors++; }
//валидация годов релиза и переиздания
	var objyor=document.getElementById("mf_yearofrelease"); var yor=getValue("mf_yearofrelease");
	var objyorr=document.getElementById("mf_yearofreissue"); var yorr=getValue("mf_yearofreissue");
	if ((!objyorr.disabled)&&((isNaN(yor))||(isNaN(yorr))||(yor>=yorr))) { err_full+="\n\n"+err_year; BGC(objyor,"#FF0000"); BGC(objyorr,"#FF0000"); errors++; error++; }
		else { BGC(objyor,""); BGC(objyorr,""); }
//валидация полей выбора
	for (i=0;i<=mf_sel.length-1;i++) { if (!validField(mf_sel[i])) errors++; }
//валидация картинки
	if (!validImg("mf_cover","short_story")) errors++;
//валидация Формат / размер
	var objformatc=document.getElementById("mf_formatc");
	var objsize=document.getElementById("mf_size");
	if (objformatc.value.trimAll()=="") { BGC(objformatc, "#FF0000"); errors++; } else BGC(objformatc, "");
	if (objsize.value.trimAll()=="") { BGC(objsize, "#FF0000"); errors++; } else BGC(objsize, "");
//валидация треклиста
	var objtracklist=document.getElementById("mf_tracklist");
	if (objtracklist.value.trimAll()=="") { BGC(objtracklist,"#FF0000"); errors++; } else BGC(objtracklist,"");
//валидация ссылки на скачивание
	var objlink=document.getElementById("mf_link1");
	if (objlink.value.trimAll()=="") { BGC(objlink,"#FF0000"); errors++; } else BGC(objlink,"");
//вывод инфы об ошибках / заполнение полей
	if ((error!=0)&&(errors==1)) { alert(err_year); return false; } else if (errors!=0) { alert(err_full+"\n\nВсего ошибок: "+errors); return false; }
	else { // Поля: Группа, Страна, Стиль, Название альбома - заполняются автоматом при валидации
	//заполняем название новости
		document.getElementById("title").value=getValue("xfield[bandname]")+' ['+yor+'] "'+getValue("xfield[albumname]")+' ('+getValue("mf_typeofalbum")+')"';
		//заполняем инфу о переиздании и дополняем название новости
		if (!document.getElementById("mf_reissue").disabled) { document.getElementById("xfield[reissue]").value=getValue("mf_reissue")+" "+yorr; document.getElementById("title").value+=" ("+getValue("xfield[reissue]")+")"; }
	//заполняем теги новости: Название группы, Год релиза
		document.getElementById("tags").value=getValue("xfield[bandname]")+", "+yor;
	//заполняем тип альбома
		var objtoa=document.getElementById("mf_typeofalbum");
		var objxf=document.getElementsByName("xfield[typeofalbum]");
		objxf[0].selectedIndex=objtoa.selectedIndex;
	//заполняем год релиза
		document.getElementById("xfield[yearofrelease]").value=yor;
	//заполняем формат
		document.getElementById("xfield[format]").value=getValue("mf_formatb")+" "+getValue("mf_formatc").trimMiddle();
		if (getValue("mf_formatb")=="Другой") document.getElementById("xfield[format]").value=strReplace("Другой ","",document.getElementById("xfield[format]").value);
	//заполняем размер
		document.getElementById("xfield[size]").value=getValue("mf_size").trimMiddle()+" Mb";
		if (!isNaN(getValue("mf_percent"))) document.getElementById("xfield[size]").value+=" ("+getValue("mf_percent")+"% на восстановление архива)";
	//формирования списка превью
		objxf=document.getElementById("xfield[preview]");
		var link=cleanLink("mf_preview1");
		if (link!="") objxf.value="[url="+link+"]"+getLDName(link)+"[/url]";
		for (i=2;i<=urlpreview;i++) { link=cleanLink("mf_preview"+i); if (link!="") objxf.value+=" // [url="+link+"]"+getLDName(link)+"[/url]"; }
	//формирование полной новости
		document.getElementById("full_story").value="[b]Треклист:[/b]<br /><br />"+getValue("mf_tracklist").trim()+"<br /><br />[b]Полное время альбома:[/b] ";
		document.getElementById("full_story").value+="["+getValue("mf_hour")+":"+frmt(getValue("mf_min"))+":"+frmt(getValue("mf_sec"))+"]<br /><br />[quote][b]Скачать:[/b]<br /><br />[hide]";
		link=cleanLink("mf_link1"); var linkinfo=getValue("mf_linkinfo1").trimMiddle();
		if (link!="") document.getElementById("full_story").value+="[url="+link+"]"+getLDName(link);
		if (linkinfo!="") document.getElementById("full_story").value+=" - "+linkinfo+"[/url]"; else document.getElementById("full_story").value+="[/url]";
		for (i=2;i<=urllink;i++) {
			link=cleanLink("mf_link"+i); linkinfo=getValue("mf_linkinfo"+i).trimMiddle();
			if (link!="") { document.getElementById("full_story").value+=" // [url="+link+"]"+getLDName(link); if (linkinfo!="") document.getElementById("full_story").value+=" - "+linkinfo+"[/url]"; else document.getElementById("full_story").value+="[/url]"; }
		}
		document.getElementById("full_story").value+="[/hide][/quote]"; 
	//добавление доп.инфы
		objtracklist=document.getElementById("mf_addinfo");
		if (objtracklist.value.trimAll()!="") document.getElementById("full_story").value+="<br /><br />[spoiler=Дополнительная информация]"+objtracklist.value.trim()+"[/spoiler]";
		return true;
	}
}
//превью новости
function myPreview() { if (validFields()) { preview(); } }
//отправка новости
function mySubmit() { if (validFields()) { entryform.submit(); } }
//замена картинки
function swapImg(img_id,src_new) { if (document.images) { document.images[img_id].src=src_new; } }
//
function setYear() { var obj=document.getElementById("filter_year"); if (obj.options[obj.selectedIndex].text!=obj.options[0].text) { window.location="/tags/"+obj.options[obj.selectedIndex].text+"/"; } }
//-->
