var mTool = { list : "a,span,label,input,img,select,iframe,textarea,tr", action_blocks : false, _hint : true, hint_id : "mTool_hint", hint_class : "mTool_hint", hint_X : 5, hint_Y : 15, hint : null, _popup : true, popup_menu_class : "mTool_menu", popup_element_class : "mTool_element", popup_type : "click", popup_horizontal : "mTool_horizontal", popup_vertical : "mTool_vertical", _rating : true, rating_class : "mTool_rating", rating_default_url : "http://mamarama.ru/article/vote/", rating_def_class : "rating", rating_cur_class : "rating-current", rating_sel_class : "rating-selected", rating_send : "url", max_value : 10, _post : true, post_result_id : "post_result", post_result_class : "hidden", _admin : true, admin_user : 0, admin_rigths : {}, admin_class : "mTool_admin", _dialog : true, dialog_opening : false, dialog_id : "mTool_dialog", dialog_visual_class : "mTool_dialog_background", dialog_message : "" , dialog_alert : "" , dialog_block : "" , dialog_class : "" , dialog_url : "" , brand : "" , category : "" , region : "" , editor : 0 , form_params : {}, form_no_errors : true, form_errors : "", form_sending : false, form_element_error : "#E5B5BA", form_element_ok : "#D1E1C4", check_do_like : 0, alert_id : "alert_dialog", alert_class : "mTool_alert", category_id : "_categories", region_id : "_regions", brand_id : "_brands", position : function( evt ) { var x = 0; var y = 0; if ( document.all ) { x = ( document.documentElement && document.documentElement.scrollLeft )? document.documentElement.scrollLeft : document.body.scrollLeft; y = ( document.documentElement && document.documentElement.scrollTop )? document.documentElement.scrollTop : document.body.scrollTop; x += window.event.clientX; y += window.event.clientY; } else { x = evt.pageX; y = evt.pageY; } return { "x" : x , "y" : y }; }, hint_move : function( evt ) { var pos = mTool.position( evt ); mTool.hint.style.left = ( pos.x + mTool.hint_X ) + "px"; mTool.hint.style.top = ( pos.y + mTool.hint_Y ) + "px"; }, hint_show : function ( text ) { if ( !this.hint ) return; this.hint.innerHTML = text; this.hint.style.display = "block"; }, hint_hide : function () { if ( !this.hint ) return ''; this.hint.innerHTML = ""; this.hint.style.display = "none"; }, popup_show : function ( el ) { var x = $( el ); var parent = x.parent().parent(); var cur = x.next(); if ( !cur ) return false; if ( mTool.popup_type == 'hover' ) cur.css( 'display' , 'block' ); }, popup_hide : function ( el ) { var x = $( el ); var parent = x.parent().parent(); var cur = x.next(); if ( !cur ) return false; if ( mTool.popup_type == 'hover' ) cur.css( 'display' , 'none' ); }, _hide : function( el ) { el.hide( 300 ); }, popup_click : function ( el ) { var x = $( el ); var cur = x.next(); var parent = x.parent().parent(); if ( cur.css( 'display' ) == 'none' ) { cur.show( 300 ); } else { cur.hide( 300 ); } }, rating_redraw : function ( container , selection , other , index ) { $('span:lt(' + index + ')' , container ).attr( 'class' , other ); $('span:gt(' + ( index - 1 )+')' , container ).attr( 'class', selection ); }, rating_mouseover : function() { var el = $( this ); var rating = el.attr( 'index' ); var status = el.parent().attr( 'status' ); if ( status == 'on' ) mTool.rating_redraw( el.parent() , mTool.rating_def_class , mTool.rating_sel_class , rating ); if ( mTool._hint ) mTool.hint_show( this.getAttribute( "hint" ) ); }, rating_mouseout : function() { var el = $( this ); var rating = el.parent().attr( 'rating' ); var status = el.parent().attr( 'status' ); if ( status == 'on' ) mTool.rating_redraw( el.parent() , mTool.rating_def_class , mTool.rating_cur_class , rating ); if ( mTool._hint ) mTool.hint_hide(); }, rating_mousemove : function( evt ) { if ( mTool._hint ) mTool.hint_move( evt ); }, rating_click : function() { var el = $( this ); var parent = el.parent(); var status = parent.attr( 'status' ); var url = parent.attr( 'url1' ); var id = parent.attr( 'id' ); var rating = el.attr( 'index' ); if ( url == null ) url = mTool.rating_default_url; if ( status == 'on' ) { parent.attr( 'status' , 'off' ); mTool.rating_redraw( parent , mTool.rating_def_class , mTool.rating_sel_class , rating ); var params = ''; switch( mTool.rating_send ) { case 'url': default: var url = url + 'id/' + id + '/rating/' + rating + '/'; } mTool.form_send( '' , url ); } return false; }, admin_add_option : function( adm , lnk ) { if ( mTool._hint ) mTool.init_hint( lnk ); $( adm ).append( '<td class="rasdel"></td><td>' ).append( lnk ).append( '</td>' ); }, admin_refresh : function( adm , type , id ) { var lnk = $('<img src="http://mamarama.ru/mamarama/images/icons/refresh.gif" ' + 'onClick="javascript: mTool.dialog_open( \'refresh\' , \'admin\' , \'http://mamarama.ru/' + type + '/refresh/id/' + id + '/\' );" title="Обновить кэш" class="click" border="0" width="16" height="16">'); mTool.admin_add_option( adm , lnk ); }, admin_edit : function( adm , type , id ) { var lnk = $('<img src="http://mamarama.ru/mamarama/images/icons/edit.gif" ' + 'onClick="javascript: mTool.dialog_open( \'edit\' , \'admin\' , \'http://mamarama.ru/' + type + '/edit/id/' + id + '/\' );" title="Редактировать" class="click" border="0" width="16" height="16">' ); mTool.admin_add_option( adm , lnk ); }, admin_delete : function( adm , type , id ) { var lnk = $('<img src="http://mamarama.ru/mamarama/images/icons/delete.gif" ' + 'onClick="javascript: mTool.dialog_open( \'delete\' , \'admin\' , \'http://mamarama.ru/' + type + '/delete/id/' + id + '/\' );" title="Удалить" class="click" border="0" width="16" height="16">' ); mTool.admin_add_option( adm , lnk ); }, admin_add : function( adm , type , id ) { var lnk = $('<img src="http://mamarama.ru/mamarama/images/icons/add.gif" ' + 'onClick="javascript: mTool.dialog_open( \'add\' , \'admin\' , \'http://mamarama.ru/' + type + '/add/id/' + id + '/\' );" title="Добавить к сообществу" class="click" border="0" width="16" height="16">' ); mTool.admin_add_option( adm , lnk ); }, admin_join : function( adm , type , id ) { var lnk = $('<img src="http://mamarama.ru/mamarama/images/icons/add.gif" ' + 'onClick="javascript: mTool.dialog_open( \'join\' , \'admin\' , \'http://mamarama.ru/' + type + '/join/id/' + id + '/\' );" title="Присоединиться / Выйти" class="click" border="0" width="16" height="16">' ); mTool.admin_add_option( adm , lnk ); }, admin_invite : function( adm , type , id ) { var lnk = $('<img src="http://mamarama.ru/mamarama/images/icons/add.gif" ' + 'onClick="javascript: mTool.dialog_open( \'invite\' , \'admin\' , \'http://mamarama.ru/' + type + '/invite/id/' + id + '/\' );" title="Пригласить в сообщество" class="click" border="0" width="16" height="16">' ); mTool.admin_add_option( adm , lnk ); }, admin_control_articles : function( adm , type , id ) { var lnk = $('<a href="http://mamarama.ru/interest/articles/id/' + id + '/" ' + 'title="Управление статьями сообщества"><img src="http://mamarama.ru/mamarama/images/icons/article.gif" border="0" width="16" height="16"></a>' ); mTool.admin_add_option( adm , lnk ); }, admin_control_news : function( adm , type , id ) { var lnk = $('<a href="http://mamarama.ru/interest/news/id/' + id + '/" ' + 'title="Управление новостями сообщества"><img src="http://mamarama.ru/mamarama/images/icons/news.gif" border="0" width="16" height="16"></a>' ); mTool.admin_add_option( adm , lnk ); }, admin_control_users : function( adm , type , id ) { var lnk = $('<a href="http://mamarama.ru/interest/members/id/' + id + '/" ' + 'title="Управление участниками сообщества"><img src="http://mamarama.ru/mamarama/images/icons/user.gif" border="0" width="16" height="16"></a>' ); mTool.admin_add_option( adm , lnk ); }, admin_personal : function( adm , right ) { var el = $( adm ); var par = { 'id' : el.attr( 'element' ) , 'type' : el.attr( 'type' ) , 'user' : el.attr( 'user' ) , 'time' : el.attr( 'time' ) }; if ( right > 1 ) switch( par.type ) { case 'article': mTool.admin_add( adm , par.type , par.id ); break; case 'interest': mTool.admin_join( adm , par.type , par.id ); break; } if ( right > 4 ) mTool.admin_refresh( adm , par.type , par.id ); if ( ( right == 4 && par.user == mTool.admin_user ) || right > 5 ) { if ( par.type == 'interest' ) { mTool.admin_control_articles( adm , par.type , par.id ); mTool.admin_control_news( adm , par.type , par.id ); mTool.admin_control_users( adm , par.type , par.id ); } mTool.admin_edit( adm , par.type , par.id ); } if ( right == 7 ) mTool.admin_delete( adm , par.type , par.id ); }, admin_global : function( adm , right ) { var el = $( adm ); var par = { 'id' : el.attr( 'element' ) , 'type' : el.attr( 'type' ) , 'user' : el.attr( 'user' ) }; if ( right > 1 ) switch( par.type ) { case 'user': mTool.admin_invite( adm , par.type , par.id ); break; } if ( right > 5 ) { mTool.admin_refresh( adm , par.type , par.id ); mTool.admin_edit( adm , par.type , par.id ); } if ( right == 7 ) mTool.admin_delete( adm , par.type , par.id ); }, init_admin : function( adm ) { var el = $( adm ); var type = el.attr( 'type' ); var right = mTool.admin_rigths[ type ]; switch( type ) { case 'article': case 'interest': case 'comments': mTool.admin_personal( adm , right ); break; default: mTool.admin_global( adm , right ); } }, init_hint : function( el ) { var title = el.attr( 'title' ); var lock = el.attr( 'lock' ); if( title !='' && lock != 'yes' ) { el.attr( 'hint', title ); el.removeAttr( 'title' ); el.removeAttr( 'alt' ); el.bind( "mouseover" , function() { mTool.hint_show( this.getAttribute( "hint" ) ); } ); el.bind( "mouseout" , function() { mTool.hint_hide(); } ); el.bind( "mousemove" , function( evt ) { mTool.hint_move( evt ); } ); } }, init_rating : function( el ) { var i = 0; var status = el.attr( 'status' ); var result = mTool.rating_cur_class; var rating = el.attr( 'rating' ); for( i = 0; i < mTool.max_value; i++ ) el.append( '<span index="' + ( i + 1 ) + '" hint="Баллов ' + ( i + 1 ) + '"></span>' ); if ( status != 'on' ) result = mTool.rating_sel_class; mTool.rating_redraw( el , mTool.rating_def_class , result , rating ); $( 'span' , el ).mouseover( mTool.rating_mouseover ); $( 'span' , el ).mouseout( mTool.rating_mouseout ); $( 'span' , el ).mousemove( mTool.rating_mousemove ); $( 'span' , el ).click( mTool.rating_click ); }, init_popup : function ( el , class_name ) { if ( class_name == mTool.popup_menu_class ) { if ( mTool.popup_type == 'click' ) el.bind( "click" , function() { mTool.popup_click( this ); return false; } ); } if ( class_name == mTool.popup_element_class ) { el.bind( "mouseover" , mTool.popup_show ); el.bind( "mouseout" , mTool.popup_hide ); } if ( class_name == mTool.popup_horizontal || class_name == mTool.popup_vertical ) { var top = el.attr( 'top' ); var left = el.attr( 'left' ); el.css( 'margin' , top + 'px 0px 0px ' + left + 'px' ); } }, get_content : function( id ) { var el = $( '#' + id ); var data = el.html(); el.html( "" ); return data; }, before_init : function() { var update = ""; update = '<div id="' + this.hint_id + '" class="' + this.hint_class + '"></div>' + '<div id="' + this.post_result_id + '" class="' + this.post_result_class + '"></div>' + '<div id="' + this.dialog_id + '" class="' + this.dialog_visual_class + '"></div>' + '<div id="' + this.alert_id + '" class="' + this.alert_class + '">' + mTool.get_content( "alert_message" ) + '</div>'; $( 'BODY' ).append( update ); this.hint = document.getElementById ( this.hint_id ); this.dialog_message = mTool.get_content( "dialog_message" ); mTool.action_blocks = true; }, init : function ( search_in ) { if ( typeof( search_in ) == 'undefined' || search_in == '' ) search_in = 'BODY'; if ( search_in != 'BODY' && search_in != '' ) search_in = '#' + search_in; if ( !mTool.action_blocks ) mTool.before_init(); $( search_in ).find( this.list ).each( mTool.init_element ); }, init_element : function() { var el = $( this ); var class_name = el.attr( 'class' ); if ( mTool._hint ) { mTool.init_hint( $( this ) ); } if ( mTool._admin ) if ( class_name == mTool.admin_class ) { mTool.init_admin( this ); } if ( mTool._popup ) { mTool.init_popup( $( this ) , class_name ); } if ( mTool._rating ) if ( class_name == mTool.rating_class ) { mTool.init_rating( $( this ) ); } }, content_action : function( sender , reciver , update ) { var snd = $( '#' + sender ); var rcv = $( '#' + reciver ); var temp = snd.html(); if ( temp != '' ) { switch( update ) { case 1: temp = rcv.html() + temp; rcv.html( temp ); break; case 0: default: rcv.html( temp ); } } snd.html(''); return false; }, content_move : function ( sender , reciver ) { mTool.content_action( sender , reciver , 0 ); }, content_append : function ( sender , reciver ) { mTool.content_action( sender , reciver , 1 ); }, dialog_correct : function( id ) { el = $( '#' + id ); win = $( window ); var marginLeft = Math.max( 40 , parseInt( ( win.width() / 2 ) - ( el.width() / 2 ) ) ); var marginTop = Math.max( 40 , parseInt( ( win.height() / 2 ) - ( el.height() / 2 ) + win.scrollTop() ) ); el.css( { 'margin-left' : marginLeft + 'px' , 'margin-top' : marginTop + 'px' } ); if ( id != "alert_dialog_text" ) mTool.dialog_reposition( el , 'upload_dialog' , -265 , 0 ); el.show( 500 ); el.css( "display" , "block" ); mTool.init( id ); }, dialog_show : function( text ) { var dialog = $( "#" + mTool.dialog_id ); var height = ( document.body.scrollHeight > document.body.offsetHeight )? document.body.scrollHeight : document.body.offsetHeight; dialog.css( 'height' , height + 'px' ); dialog.css( 'display' , 'block' ); dialog.html( text ); mTool.dialog_correct( mTool.dialog_block ); }, dialog_hide : function() { var dialog = $( "#" + mTool.dialog_id ); dialog.css( 'display' , 'none' ); dialog.html(); }, dialog_put_result : function ( data ) { data = '<div class="' + mTool.dialog_class + '" id="' + mTool.dialog_block + '">' + data + '</div>'; $( "HTML" ).data( mTool.dialog_url , data ); mTool.dialog_show( $( "HTML" ).data( mTool.dialog_url ) ); if ( mTool.editor == 1 ) editor_on(); }, dialog_drop : function() { $('HTML').data( mTool.dialog_url , '' ); }, dialog_open : function ( block , css_class , url , anyway ) { $('#create_menu').hide(); if ( mTool.dialog_opening ) { mTool.alert_show( "dialog" , "opening" ); return false; } if ( mTool._hint ) mTool.hint_hide(); mTool.dialog_opening = true; var block_data = $( "HTML" ).data( url ); if ( !block_data ) mTool.dialog_show( mTool.dialog_message ); mTool.dialog_block = block; mTool.dialog_class = css_class; mTool.dialog_url = url; if ( anyway == 1 ) mTool.dialog_drop(); if ( block_data && anyway != 1 ) { mTool.dialog_show( block_data ); } else { $.post( url , { par : 0 } , mTool.dialog_put_result ); } if ( mTool.editor == 1 ) editor_on(); mTool.dialog_opening = false; }, dialog_reposition : function ( main , id , x , y ) { var id = $( '#' + id ); var current_y = parseInt( main.css( 'margin-top' ) ) + y; var current_x = parseInt( main.css( 'margin-left' ) ) + x; var height = main.height(); id.css( { 'margin-left' : current_x , 'margin-top' : current_y , 'height' : height } ); }, cheange_view : function( el ) { var el = '#' + el; if ( $( el ).css( 'display' ) == 'none' ) { $( el ).show( 500 ); } else { $( el ).hide( 500 ); } }, popup_picture : function( el ) { window.open( $( el ).attr( 'big' ) , '' , "height=" + screen.availHeight + "px,width="+screen.availWidth + "px" ); }, add_social : function() { $( '#social' ).find( 'input' ).each( function () { if ( $( this ).attr( 'checked' ) == true ) { var id = $( this ).attr( 'value' ); window.open( $( '#' + id ).attr('href') , '' , "height=" + screen.availHeight + "px,width="+screen.availWidth + "px" ); $( '#' + id + 's' ).css( 'font-weight' , 'bold' ); $( this ).attr( 'checked' , false ); } } ); }, check : function ( el ) { var el = $( el ); switch ( mTool.check_do_like ) { case 0: el.attr( 'checked' , false ); break; case 1: el.attr( 'checked' , true ); break; case 2: if ( el.attr( 'checked' ) ) { el.attr( 'checked' , false ); } else { el.attr( 'checked' , true ); } break; } }, check_by_id : function( id , css_class , like ) { var search_str = 'input'; mTool.check_do_like = like; if ( css_class != '' ) search_str += '[@class=' + css_class + ']'; $( '#' + id ).find( search_str ).each( function(){ mTool.check( this ); } ); }, form_post_result : function( data ) { $( '#' + mTool.post_result_id ).html( data ); }, input_chenge : function( element , len ) { var count = $( element ).attr( 'value' ).length; if ( count > len ) $( element ).css( 'background' , mTool.form_element_error ); else $( element ).css( 'background' , mTool.form_element_ok ); }, check_form_data : function( like , value ) { switch( like ) { case 'no_empty': if ( value == '' ) return false; break; case 'mail': if ( !value.match( regexp ) ) return false; break; case 'yes/no': if ( !( value == 'yes' || value == 'no' ) ) return false; break; case 'on/off': if ( !( value == 'on' || value == 'off' ) ) return false; break; case 'article/news': if ( !( value == 'article' || value == 'news' ) ) return false; break; case 'article/news': if ( !( value == 'aprove' || value == 'on' ) ) return false; break; case 'right': if ( !( value == 'see' || value == 'use' || value == 'create' || value == 'self' || value == 'check' || value == 'edit' || value == 'delete' ) ) return false; break; case 'interest': if ( !( value == 'open' || value == 'request' || value == 'invite' ) ) return false; break; case 'user': if ( !( value == 'user' || value == 'bot' || value == 'admin' ) ) return false; break; default: } return true; }, form_elements : function() { var tagName = this.tagName.toLowerCase(); var name = this.name; var value = ''; var check = ''; var error = ''; if ( tagName != 'iframe' ) type = this.type.toLowerCase(); check = $( this ).attr( 'check' ); error = $( this ).attr( 'error' ); switch ( tagName ) { case 'input': case 'select': case 'textarea': value = $( this ).attr( 'value' ); break; case 'iframe': var d = $.browser.msie ? this.document : this.contentDocument; if ( d.body.innerHTML != '' ) $( '#' + this.id + '-ta' ).attr( 'value' , d.body.innerHTML ); break; } if ( check != '' ) if ( !mTool.check_form_data( check , value ) ) { mTool.form_no_errors = false; if ( mTool.form_element_error != '' ) $( this ).css( 'background' , mTool.form_element_error ); if ( error ) mTool.errors = mTool.errors + error + '<br>'; } else { if ( mTool.form_element_ok != '' ) $( this ).css( 'background' , mTool.form_element_ok ); } if ( type == 'text' || type == 'hidden' || type == 'password' || tagName == 'select' || tagName == 'textarea' ) { mTool.form_params[ name ] = value; } if ( ( type == 'radio' || type == 'checkbox' ) && $( this ).attr( 'checked' ) == true ) { mTool.form_params[ name ] = value; } }, form_send : function( id , url ) { if ( mTool.form_sending ) { mTool.alert_show( "form" , "sending" ); return false; } $( "#action_button" ).attr( "disabled" , true ); if ( mTool._hint ) mTool.hint_hide(); mTool.form_sending = true; mTool.form_params = {}; mTool.errors = '\n'; mTool.form_no_errors = true; if ( id != '' ) $( '#' + id ).find( 'input,select,iframe,textarea' ).each( mTool.form_elements ); if ( !mTool.form_no_errors ) { mTool.alert_show( 'Форма не может быть отправлена' , 'Обратите внимание на следующие поля:<br><br>' + mTool.errors ); mTool.form_sending = false; $( "#action_button" ).attr( "disabled" , false ); return false; } $.post( url , mTool.form_params , mTool.form_post_result ); mTool.form_sending = false; }, alert_show : function( title , text ) { var dialog = $( "#" + mTool.alert_id ); var height = ( document.body.scrollHeight > document.body.offsetHeight )? document.body.scrollHeight : document.body.offsetHeight; dialog.css( 'height' , height + 'px' ); dialog.css( 'display' , 'block' ); $( "#alert_title" ).html( title ); $( "#alert_text" ).html( text ); mTool.dialog_correct( "alert_dialog_text" ); }, alert_hide : function( title , text ) { var dialog = $( "#" + mTool.alert_id ); $( "#alert_dialog_text" ).hide( 500 ); dialog.css( 'display' , 'none' ); } ,category_result : function( data ) { $( "HTML" ).data( mTool.category , data ); $( "#" + mTool.category_id ).html( data ); } ,category_show : function( param ) { var param = 'http://mamarama.ru/' + param; mTool.category = param; var data = $( "HTML" ).data( mTool.category ); if( data ) { $( "#" + mTool.category_id ).html( data ); } else { $.post ( param , { "par" : param } , mTool.category_result ); } if ( mTool._hint ) mTool.hint_hide(); } ,brand_result : function( data ) { $( "HTML" ).data( mTool.brand , data ); $( "#" + mTool.brand_id ).html( data ); } ,brand_show : function( param ) { var param = 'http://mamarama.ru/' + param; mTool.brand = param; var data = $( "HTML" ).data( mTool.brand ); if( data ) { $( "#" + mTool.brand_id ).html( data ); } else { $.post ( param , { "par" : param } , mTool.brand_result ); } if ( mTool._hint ) mTool.hint_hide(); } ,region_result : function( data ) { $( "HTML" ).data( mTool.region , data ); $( "#" + mTool.region_id ).html( data ); } ,regions_show : function( param ) { var param = 'http://mamarama.ru/' + param; mTool.region = param; var data = $( "HTML" ).data( mTool.region ); if ( data ) { $( "#" + mTool.region_id ).html( data ); } else { $.post ( param , { "par" : param } , mTool.region_result ); } if ( mTool._hint ) mTool.hint_hide(); } }; window.onload = function () { mTool.init(''); };
