$(function() {
$.datepicker.setDefaults(
$.extend($.datepicker.regional["ru"])
);
$(".datepicker").datepicker({
showOn: 'button',
buttonImage: '/i/datepicker.gif',
buttonImageOnly: true,
dateFormat: 'dd.mm.yy'
});
});
$(function accord() {
$("#js-project dt").bind('click', function() {
var el = $(this).next();
if( el.hasClass('visible') ) {
el.slideUp();
el.removeClass('visible');
} else {
$("#js-project dd").slideUp().removeClass('visible');
el.slideDown();
el.addClass('visible');
}
});
});
var hraward = {
init : function() {
this.captcha.init();
this.voting.init();
this.application.init();
this.dataset.init();
this.location.init();
this.uploader.init();
this.help.init();
},
uri : {
captcha_reload : '/ajax/captcha/reload/',
project_vote : '/ajax/project/vote/',
districts : '/ajax/locations/districts/',
localities : '/ajax/locations/localities/'
},
captcha : {
init : function() {
$('a#reload-captcha').click(function(e){
var hidden = $('input#captcha-public-key');
var img = $('img#captcha-image');
$.ajax({
url: hraward.uri.captcha_reload,
type: 'GET',
dataType: "json",
success: function( res ) {
img.attr( 'src', res.image_src );
hidden.attr( 'value', res.public_key );
}
});
return false;
});
}
},
voting : {
init : function() {
$('.vote a').click(function(){
var docID = $(this).attr('docid');
var votesBlock = $(this).closest('div').find('b');
$.ajax({
url: hraward.uri.project_vote,
type: 'GET',
data: {id:docID},
dataType: "json",
success: function( res ) {
if( res.captcha == 1 ) {
window.location.replace( '/project/' + docID + '/vote/' );
} else if( res.votes >= 0 ) {
votesBlock.html( res.votes );
}
}
});
return false;
});
}
},
application : {
init : function() {
$("#organization-type").change( function() {
var orgName = $('#organization-name');
var positionDiv = $('#contact-position').closest('div.text-field');
if( $(this).val() == 1 ) { positionDiv.show(); }
else { positionDiv.hide(); }
switch( $(this).val() ) {
case '2':
orgName.focus(function() {
if( this.value=='Укажите Ф.И.О' ) { this.value='' };
});
orgName.blur(function() {
if( orgName.val() == 'Укажите название' || orgName.val() == 'Укажите Ф.И.О' ) {
orgName.val('Укажите Ф.И.О');
}
});
orgName.val( 'Укажите Ф.И.О' );
break;
default:
orgName.focus(function() {
if( this.value=='Укажите название' ) { this.value='' };
});
orgName.blur(function() {
if( orgName.val() == 'Укажите название' || orgName.val() == 'Укажите Ф.И.О' ) {
orgName.val('Укажите название');
}
});
orgName.val( 'Укажите название' );
}
});
$('#project-is-lasting').change(function(){
if( $(this).is(':checked') ) {
$('#project-stop-date').hide();
} else {
$('#project-stop-date').show();
}
}).change();
$('.step-button > input').mousedown(function(){
if( $('#organization-name').val() == 'Укажите Ф.И.О' || $('#organization-name').val() == 'Укажите название' ) {
$('#organization-name').val('');
}
if( $('#contact-position').val() == 'Должность' ) {
$('#contact-position').val('');
}
if( $('#region').val() == 'Регион' ) {
$('#region').val('');
}
if( $('#locality').val() == 'Населенный пункт' ) {
$('#locality').val('');
}
var fileNames = [];
var hasDescError = [];
$('input.upload-desc').each(function(){
var descEl = $(this);
var tmpIndex = descEl.attr('name').indexOf('_description');
var baseName = descEl.attr('name').substr(0, tmpIndex);
var fileName = $('#'+baseName).val();
if( fileName && (descEl.val() == 'Описание' || descEl.val()=='') ) {
fileNames.push( fileName );
}
if( descEl.val().length > 256 ) {
hasDescError.push( fileName );
}
});
if( fileNames.length ) {
alert('Введите описание к файлам: '+fileNames.join(', '));
}
if( hasDescError.length ) {
alert('Слишком длинное (более 256 символов) описание к файлам: '+hasDescError.join(', '));
}
if( fileNames.length || hasDescError.length ) {
return false;
}
return true;
});
$('.upload-desc').live('focus', function(){
if( this.value=='Описание' ) this.value='';
});
$('.upload-desc').live('blur', function(){
if( this.value=='' ) this.value='Описание';
});
}
},
dataset : {
init : function() {
$('a.dataset-add-fields').live('click', function(){
var setName = $(this).attr('setname');
var dataSet = $('.dataset').filter('[name="'+setName+'"]');
var allSets = $('.dataset-fields').filter('[name="'+setName+'"]');
var fieldsSet = allSets.last();
if( fieldsSet.size() == 0 ) return false;
if( fieldsSet.is(':hidden') ) {
dataSet.show();
fieldsSet.show();
return false;
}
var input = fieldsSet.find('input');
if( input.size() == 0 ) {
input = fieldsSet.find('select');
if( input.size() == 0 ) return false;
};
var name = input.first().attr('name');
if( name.length == 0 ) return false;
var result = /_(\d+)_/.exec( name );
if( result == null ) return false;
var counter = result[1] * 1 + 1;
var clone = fieldsSet.clone();
clone.find('input').each(function(){
var name = $(this).attr('name');
$(this).attr('name', name.replace(/^([^\d]+)(\d+)(.+)$/, "$1" + counter + "$3") );
$(this).val('');
});
clone.find('select').each(function(){
var name = $(this).attr('name');
$(this).attr('name', name.replace(/^([^\d]+)(\d+)(.+)$/, "$1" + counter + "$3") );
var id = $(this).attr('id');
if( id ) {
$(this).attr('id', id.replace(/^([^\d]+)(\d+)(.+)$/, "$1" + counter + "$3") );
}
var target = $(this).attr('target');
if( target ) {
$(this).attr('target', target.replace(/^([^\d]+)(\d+)(.+)$/, "$1" + counter + "$3") );
}
$(this).val('');
});
dataSet.append( clone );
var maxFields = $(this).attr('maxfields');
if( maxFields > 0 && dataSet.find('.dataset-fields').size() >= maxFields ) $(this).hide();
return false;
});
$('a.dataset-remove-fields').live('click', function(){
var setName = $(this).attr('setname');
var dataSet = $('.dataset').filter('[name="'+setName+'"]');
if( dataSet.find('.dataset-fields').size() <= 1 ) {
dataSet.find('.dataset-fields').find('input').val('');
} else {
var countSelects = dataSet.find('.dataset-fields').find('select').size();
var currentIsSelect = $(this).closest('.dataset-fields').find('select').size();
if( !currentIsSelect || (currentIsSelect && countSelects > 3) ) {
$(this).closest('.dataset-fields').remove();
$('a.dataset-add-fields').show();
}
}
return false;
});
}
},
location : {
init : function() {
$('.location-area').live('change', function(){
var areaId = $(this).val();
var target = $('#' + $(this).attr('target'));
target.html('');
if( areaId > 0 ) {
$.ajax({
url: hraward.uri.districts,
type: 'GET',
data: {area_id:areaId},
dataType: "json",
success: function( data ) {
if( data.districts && data.districts.length > 0 ) {
for( var i in data.districts ) {
var district = data.districts[i];
var option = $('');
option.attr('value', district.id);
option.html( district.name );
target.append( option );
}
}
}
});
}
var option = $('');
option.attr('value', 0);
option.html( 'Выберите район' );
target.prepend( option );
target.change();
return false;
});
$('.location-district').live('change', function(){
var districtId = $(this).val();
var target = $('#' + $(this).attr('target'));
target.html('');
if( districtId > 0 ) {
$.ajax({
url: hraward.uri.localities,
type: 'GET',
data: {district_id:districtId},
dataType: "json",
success: function( data ) {
if( data.localities && data.localities.length > 0 ) {
for( var i in data.localities ) {
var locality = data.localities[i];
var option = $('');
option.attr('value', locality.id);
option.html( locality.name );
target.append( option );
}
}
}
});
}
var option = $('');
option.attr('value', 0);
option.html( 'Выберите населённый пункт' );
target.prepend( option );
return false;
});
}
},
uploader : {
limit : 15,
init : function() {
$('a.uploader-add-fields').click(function(){
var setName = $(this).attr('setname');
var fieldsSet = $('.uploader-fields').filter('[name="'+setName+'"]');
if( fieldsSet.size() == 0 ) return false;
var name = fieldsSet.find('input[type="file"]').first().attr('name');
if( name.length == 0 ) return false;
var result = /^(.+)_(\d+)$/.exec( name );
if( result == null ) return false;
var nameBase = result[1];
var counter = result[2] * 1 + 1;
if( counter > hraward.uploader.limit ) {
alert( 'Вы можете загрузить не более ' + hraward.uploader.limit + ' файлов в этом поле.' );
return false;
}
var clone = fieldsSet.clone();
clone.find('input[type="file"]').attr('name', nameBase + '_' + counter).attr('id', nameBase + '_' + counter).val('');
clone.find('input.upload-desc').attr('name', nameBase + '_' + counter + '_description').val('Описание');
clone.find('span.uploader-counter').html(counter);
clone.find('th').html(' ')
fieldsSet.removeClass('uploader-fields');
clone.addClass('uploader-fields').insertAfter(fieldsSet);
return false;
});
}
},
help : {
init : function() {
$('a.help').attr('title', 'Нажмите, чтобы узнать подробности');
$("#js-faq dt").bind('click', function() {
var el = $(this).next();
if( el.hasClass('visible') ) {
el.slideUp();
el.removeClass('visible');
} else {
$("#js-faq dd").slideUp().removeClass('visible');
el.slideDown();
el.addClass('visible');
}
});
var alias = document.location.hash.substr(1);
var el = $('dd#hint-'+alias);
el.slideDown().addClass('visible');
}
}
}
$(function() {
hraward.init();
});