var lsVote;
var lsVoteClass = new Class({
Implements: Options,
options: {
classes_action: {
voted:          'voted',                       
plus:           'plus',
minus:          'minus',
positive:       'positive',
negative:       'negative',
quest:          'quest'
},
classes_element: {
voting:         'voting',
count:          'count',                       
total:          'total',                       
plus:           'plus',
minus:          'minus'
}              
},
typeVote: {
topic_comment: {
url: DIR_WEB_ROOT+'/include/ajax/voteComment.php',
targetName: 'idComment'
},
topic: {
url: DIR_WEB_ROOT+'/include/ajax/voteTopic.php',
targetName: 'idTopic'
},
blog: {
url: DIR_WEB_ROOT+'/include/ajax/voteBlog.php',
targetName: 'idBlog'
},
user: {
url: DIR_WEB_ROOT+'/include/ajax/voteUser.php',
targetName: 'idUser'
}
},
initialize: function(options){         
this.setOptions(options);                      
},
vote: function(idTarget,objVote,value,type) {          
if (!this.typeVote[type]) {
return false;
}
this.idTarget=idTarget;
this.objVote=$(objVote);
this.value=value;
this.type=type;        
thisObj=this;
var params = new Hash();
params['value']=value;
params[this.typeVote[type].targetName]=idTarget;
JsHttpRequest.query(
this.typeVote[type].url,                       
params,
function(result, errors) {     
thisObj.onVote(result, errors, thisObj);                               
},
true
);             
},
onVote: function(result, errors, thisObj) {            
if (!result) {
msgErrorBox.alert('Error','Please try again later');           
}      
if (result.bStateError) {
msgErrorBox.alert(result.sMsgTitle,result.sMsg);
} else {
msgNoticeBox.alert(result.sMsgTitle,result.sMsg);
var divVoting=thisObj.objVote.getParent('.'+thisObj.options.classes_element.voting);                
divVoting.addClass(thisObj.options.classes_action.voted);
if (this.value>0) {
divVoting.addClass(thisObj.options.classes_action.plus);
}
if(this.value<0) {
divVoting.addClass(thisObj.options.classes_action.minus);
}              
var divCount=divVoting.getChildren('.'+thisObj.options.classes_element.count);
if (divCount && divCount[0]) {
divCount.set('text',result.iCountVote);
}
var divTotal=divVoting.getChildren('.'+thisObj.options.classes_element.total);              
result.iRating=parseFloat(result.iRating);  
divVoting.removeClass(thisObj.options.classes_action.negative);    
divVoting.removeClass(thisObj.options.classes_action.positive);         
if (result.iRating>0) {                        
divVoting.addClass(thisObj.options.classes_action.positive);
divTotal.set('text','+'+result.iRating);
}
if (result.iRating<0) {                        
divVoting.addClass(thisObj.options.classes_action.negative);
divTotal.set('text',result.iRating);
}
if (result.iRating==0) {
divTotal.set('text','0');
}
if (thisObj.type=='user' && $('user_skill_'+thisObj.idTarget)) {
$('user_skill_'+thisObj.idTarget).set('text',result.iSkill);
}
}      
}
});

window.addEvent('domready', function() {       
lsVote=new lsVoteClass();
});


var lsFavourite;

var lsFavouriteClass = new Class({

Implements: Options,

options: {
classes_action: {                        
active:    'active',
quest:     'quest'
},
classes_element: {
favorite:  'favorite'                        
}              
},

typeFavourite: {                
topic: {
url: DIR_WEB_ROOT+'/include/ajax/topicFavourite.php',
targetName: 'idTopic'
}
},

initialize: function(options){         
this.setOptions(options);                      
},

toggle: function(idTarget,objFavourite,type) {          
if (!this.typeFavourite[type]) {
return false;
}

this.idTarget=idTarget;
this.objFavourite=$(objFavourite);
this.value=value;
this.type=type;        
thisObj=this;

var value=1;      
if (this.objFavourite.getParent('.'+this.options.classes_element.favorite).hasClass(this.options.classes_action.active)) {
value=0;
} 

var params = new Hash();
params['type']=value;
params[this.typeFavourite[type].targetName]=idTarget;

JsHttpRequest.query(
this.typeFavourite[type].url,                       
params,
function(result, errors) {     
thisObj.onToggle(result, errors, thisObj);                               
},
true
);             
},

onToggle: function(result, errors, thisObj) {            
if (!result) {
msgErrorBox.alert('Error','Please try again later');           
}      
if (result.bStateError) {
msgErrorBox.alert(result.sMsgTitle,result.sMsg);
} else {
msgNoticeBox.alert(result.sMsgTitle,result.sMsg);

var divFavourite=thisObj.objFavourite.getParent('.'+thisObj.options.classes_element.favorite);
divFavourite.removeClass(thisObj.options.classes_action.active);
if (result.bState) {
divFavourite.addClass(thisObj.options.classes_action.active);
}
}      
}

});

window.addEvent('domready', function() {       
lsFavourite=new lsFavouriteClass();
});

function ajaxQuestionVote(idTopic,idAnswer) {	
JsHttpRequest.query(
DIR_WEB_ROOT+'/include/ajax/questionVote.php',                       
{ idTopic: idTopic, idAnswer: idAnswer },
function(result, errors) {  
if (!result) {
msgErrorBox.alert('Error','Please try again later');           
}
if (result.bStateError) {
msgErrorBox.alert(result.sMsgTitle,result.sMsg);
} else {            	
msgNoticeBox.alert(result.sMsgTitle,result.sMsg);
if ($('topic_question_area_'+idTopic)) {
$('topic_question_area_'+idTopic).set('html',result.sText);
}  
}                               
},
true
);	
};

var lsBlockLoaderClass = new Class({

Implements: Options,

options: {    
classes_nav: {
nav: 	 'block-nav',
content: 'block-content',
active:  'active'                        
}                           
},

type: {
comment_stream: {
url: DIR_WEB_ROOT+'/include/ajax/stream_comment.php'                       
},
topic_stream: {
url: DIR_WEB_ROOT+'/include/ajax/stream_topic.php'                        
},
blogs_top: {
url: DIR_WEB_ROOT+'/include/ajax/blogs_top.php'                        
},
blogs_join: {
url: DIR_WEB_ROOT+'/include/ajax/blogs_join.php'                        
},
blogs_self: {
url: DIR_WEB_ROOT+'/include/ajax/blogs_self.php'                        
}
},

initialize: function(options){         
this.setOptions(options);                      
},

toggle: function(obj,type,params) {
if (!this.type[type]) {
return false;
}
thisObj=this;
this.obj=$(obj);

var liCurrent=thisObj.obj.getParent('li');
var blockNav=liCurrent.getParent('ul.'+thisObj.options.classes_nav.nav);
var liList=blockNav.getChildren('li');

liList.each(function(li,index) {   
li.removeClass(thisObj.options.classes_nav.active);        	
});

liCurrent.addClass(this.options.classes_nav.active);

var blockContent=blockNav.getParent('div').getChildren('div.'+this.options.classes_nav.content)[0].set('html','');
this.showStatus(blockContent);


JsHttpRequest.query(
this.type[type].url,                       
params,
function(result, errors) {     
thisObj.onLoad(result, errors, blockContent);                               
},
true
);

},

onLoad: function(result, errors, blockContent) {
blockContent.set('html','');
if (!result) {
msgErrorBox.alert('Error','Please try again later');           
}
if (!result.bStateError) {
blockContent.set('html',result.sText);
}
},

showStatus: function(obj) {
var newDiv = new Element('div');
newDiv.setStyle('text-align','center');
newDiv.set('html','<img src="'+DIR_STATIC_SKIN+'/images/loader.gif" >');

newDiv.inject(obj);
}
});

function ajaxToggleUserFrend(obj,idUser) {   
obj=$(obj);
JsHttpRequest.query(
DIR_WEB_ROOT+'/include/ajax/userFriend.php',                       
{ idUser: idUser },
function(result, errors) {  
if (!result) {
msgErrorBox.alert('Error','Please try again later');           
}
if (result.bStateError) {
msgErrorBox.alert(result.sMsgTitle,result.sMsg);
} else {            	
msgNoticeBox.alert(result.sMsgTitle,result.sMsg);
if (obj)  {
obj.set('text',result.sToggleText);
if (result.bState) {
obj.getParent('li').removeClass('add');
obj.getParent('li').addClass('del');
} else {
obj.getParent('li').removeClass('del');
obj.getParent('li').addClass('add');
}
}
}                               
},
true
);
}

function ajaxJoinLeaveBlog(obj,idBlog) {   
obj=$(obj);
JsHttpRequest.query(
DIR_WEB_ROOT+'/include/ajax/joinLeaveBlog.php',                       
{ idBlog: idBlog },
function(result, errors) {  
if (!result) {
msgErrorBox.alert('Error','Please try again later');           
}
if (result.bStateError) {
msgErrorBox.alert(result.sMsgTitle,result.sMsg);
} else {            	
msgNoticeBox.alert(result.sMsgTitle,result.sMsg);
if (obj)  {     
obj.getParent().removeClass('active');       		
if (result.bState) {            			
obj.getParent().addClass('active');
}
divCount=$('blog_user_count_'+idBlog);
if (divCount) {
divCount.set('text',result.iCountUser);
}
}
}                               
},
true
);
}


function ajaxBlogInfo(idBlog) { 	
JsHttpRequest.query(
DIR_WEB_ROOT+'/include/ajax/blogInfo.php',                       
{ idBlog: idBlog },
function(result, errors) {  
if (!result) {
msgErrorBox.alert('Error','Please try again later');           
}
if (result.bStateError) {

} else {            	
if ($('block_blog_info')) {
$('block_blog_info').set('html',result.sText);            		
}
}                               
},
true
);
}

function cl(letter)
{
location.hash = "#b"+letter;
}

function ajaxTextPreview(textId,save,divPreview) { 
var text;    
if (BLOG_USE_TINYMCE && tinyMCE && (ed=tinyMCE.get(textId))) {
text = ed.getContent();
} else {
text = $(textId).value;	
}	
JsHttpRequest.query(
DIR_WEB_ROOT+'/include/ajax/textPreview.php',                       
{ text: text, save: save },
function(result, errors) {  
if (!result) {
msgErrorBox.alert('Error','Please try again later');           
}
if (result.bStateError) {
msgErrorBox.alert('Error','Please try again later');
} else {    	
if (!divPreview) {
divPreview='text_preview';
}            	
if ($(divPreview)) {
$(divPreview).set('html',result.sText).setStyle('display','block');
}
}                               
},
true
);
}


function addField(btn){
tr = btn;
while (tr.tagName != 'TR') tr = tr.parentNode;
var newTr = tr.parentNode.insertBefore(tr.cloneNode(true),tr.nextSibling);
checkFieldForLast();
}
function checkFieldForLast(){	
btns = document.getElementsByName('drop_answer');      
for (i = 0; i < btns.length; i++){
btns[i].disabled = false;            
}
if (btns.length<=2) {
btns[0].disabled = true;
btns[1].disabled = true;
}
}
function dropField(btn){	
tr = btn;
while (tr.tagName != 'TR') tr = tr.parentNode;
tr.parentNode.removeChild(tr);
checkFieldForLast();
}



function checkAllTalk(checkbox) {
$$('.form_talks_checkbox').each(function(chk){
if (checkbox.checked) {
chk.checked=true;
} else {
chk.checked=false;
}		
});	
}
function showImgUploadForm() {	
if (!winFormImgUpload) {		
winFormImgUpload=new StickyWin.Modal({content: $('window_load_img'), closeClassName: 'close-block', useIframeShim: false});
}
winFormImgUpload.show();
winFormImgUpload.pin(true);
return false;
}
function hideImgUploadForm() {
winFormImgUpload.hide();
}
var winFormImgUpload;
function ajaxUploadImg(value,sToLoad) {	
var req = new JsHttpRequest();
req.onreadystatechange = function() {
if (req.readyState == 4) {
if (req.responseJS.bStateError) {
msgErrorBox.alert(req.responseJS.sMsgTitle,req.responseJS.sMsg);				
} else {				
lsPanel.putText(sToLoad,req.responseJS.sText);
hideImgUploadForm();
}
}
}
req.open(null, DIR_WEB_ROOT+'/include/ajax/uploadImg.php', true);
req.send( { value: value } );
}
function showLoginForm() {	
if (Browser.Engine.trident) {
return true;
}	
if (!winFormLogin) {		
winFormLogin=new StickyWin.Modal({content: $('login-form'), closeClassName: 'close-block', useIframeShim: false});
}
winFormLogin.show();
winFormLogin.pin(true);
return false;
}
function hideLoginForm() {
winFormLogin.hide();
}
var winFormLogin=false;
var lsPanelClass = new Class({	
initialize: function(){
},
putText: function(obj,text) {
obj=$(obj);
var scrollLeft=obj.scrollLeft;
var scrollTop=obj.scrollTop;		
if (Browser.Engine.trident && document.selection) {
obj.focus();
sel=document.selection.createRange();
sel.text=text;
} else {
obj.insertAtCursor(text);
}		
obj.scrollLeft=scrollLeft;
obj.scrollTop=scrollTop;
}, 
putTag: function(obj,tag) {
this.putText(obj,'<'+tag+'/>');
},
putTextAround: function(obj,textStart,textEnd) {
obj=$(obj);
var scrollLeft=obj.scrollLeft;
var scrollTop=obj.scrollTop;	
if (Browser.Engine.trident && document.selection) {
obj.focus();
sel=document.selection.createRange();
sel.text = textStart+sel.text+textEnd;
} else {
obj.insertAroundCursor({
before: textStart,
defaultMiddle: '',
after: textEnd
});
}
obj.scrollLeft=scrollLeft;
obj.scrollTop=scrollTop;
},
putTagAround: function(obj,tagStart,tagEnd) {
if (!tagEnd) {
tagEnd=tagStart;
}
this.putTextAround(obj,'<'+tagStart+'>','</'+tagEnd+'>');
},
putTagUrl: function(obj,sPromt) {
obj=$(obj);
if (url=prompt(sPromt,'http://')) {
var sel=obj.getSelectedText();
this.putText(obj,'<a href="'+url+'">'+sel+'</a>');
}
},
putQuote: function(obj) {
obj=$(obj);
if (selText=this.getSelectedText()) {			
this.putText(obj,'<blockquote>'+selText+'</blockquote>');
} else {
this.putTagAround(obj,'blockquote');
}
},
getSelectedText: function(){
if (Browser.Engine.trident) return document.selection.createRange().text;
return document.getSelection();
}
});
var lsPanel;
window.addEvent('domready', function() {
lsPanel = new lsPanelClass();   
});