$(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(); });