//------------------------------------------------------------------------------
// v0.12 by Bartosz Sierocinski - 07.05.2010 All rights reserved.
// sierocinski@cnsy.pl
//------------------------------------------------------------------------------

//function talkfinger(){};


var Talkfinger = function(forum_name, usr_id){    
    Talkfinger.forumName  	= forum_name;
    Talkfinger.usr_id  		= usr_id;
    Talkfinger.checkBrowser();
}

Talkfinger.checkBrowser = function(){
    //var ver = getInternetExplorerVersion();
     var rv = -1; // Return value assumes failure.  var rv = -1; // Return value assumes failure.    
    if (navigator.appName == 'Microsoft Internet Explorer'){
    	    Talkfinger.bName="IE";
            var ua = navigator.userAgent;
            var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
            if (re.exec(ua) != null)
	        rv = parseFloat( RegExp.$1 );
	    Talkfinger.bVer=rv;
    }else if( navigator.appName == "Netscape"){
            var re  = new RegExp("Firefox/(.*)");
            var ua = navigator.userAgent;
            if (re.exec(ua) != null)
	        rv = parseFloat( RegExp.$1 );
	    Talkfinger.bVer	= rv;
	    Talkfinger.bName	= "FF";
    }
}


Talkfinger.getForumName = function(){
	if( Talkfinger.forumName == undefined ){
	    forumName='default';
	}else{
	    forumName=Talkfinger.forumName;
	}   
	return forumName; 
}

Talkfinger.anchor	= function(){

    var section = "";
    var option = "";
    var href  = window.location.href;    
    Talkfinger.lastPath = "";
    if( href.indexOf("#")==-1 && (Talkfinger.lastPath = Talkfinger.getThreadPath(href)) ){
	    Talkfinger.goAnchor( Talkfinger.lastPath );
    }else if( href.indexOf("#")==-1 && ( section = Talkfinger.getSectionSeo(href) ) ){
	    Talkfinger.goAnchor( section );
    }else 
    if( href.indexOf("#")>-1 ){
	    var secSeo 	= Talkfinger.getSectionPath(href);
	    var tagName = Talkfinger.getThreadPath(href);
	    var sec 	= document.getElementsByName(secSeo).item(0);
	    	    
	    if( sec ){
		this.getPortion("/portion/"+tagName,sec.id);
	    }
    }
}

Talkfinger.goAnchor = function( link ){
    if( link ){
	//alert( "goAnchor: ["+link+"]" );
	window.location='#'+link;
    }
}

Talkfinger.getAnchorFromLink = function( link, full ){

    link = link.replace("#","/");
    var spl = link.split("/");
    //alert( spl.length+": "+spl[0]+"|"+spl[1]+"|"+spl[2]+"|"+spl[3]+"|"+spl[4]+"|"+spl[5]+"|"+spl[6]+"|"+spl[7] );        
    
    if( !full ){
	if( spl[3] == 'view'){
	    return spl[4]+"/"+spl[5];
	}else if( spl[3] == 'portion'){
	    return spl[4]+"/"+spl[5];
	}else if ( spl[1] == 'portion' ){
	    return spl[2]+"/"+spl[3];
	}
    }else if( full ){
    
	if(  spl.length == 6 && spl[1] == 'portion' && spl[4] == 'post'){
	    return spl[2]+"/"+spl[3]+"/post/"+spl[5];
        }else if(  spl.length == 8 && spl[6] == 'page'){
	    return spl[4]+"/"+spl[5]+"/page/"+spl[7];
	}else if ( spl.length == 6 && spl[1] == 'portion' && spl[4] == 'page' ){
	    return spl[2]+"/"+spl[3]+"/page/"+spl[5];
	}else if (spl.length == 6){
	    return spl[4]+"/"+spl[5];
	}
    }        

    //alert( spl.length+": "+spl[0]+"|"+spl[1]+"|"+spl[2]+"|"+spl[3]+"|"+spl[4]+"|"+spl[5]+"|"+spl[6]+"|"+spl[7] );        
    return false;    
}

Talkfinger.lastPost = function( obj ){
    Talkfinger.getLastPost = true;
}

Talkfinger.slpb = function( obj ){
    
    
    if( Talkfinger.bName == "IE" && Talkfinger.bVer < 7 ){
	Talkfinger.getLastPost = true;
	return false;
    }

    if(  !$('lastPostButton') ){
	var span = new Element('span', 
	    {
		id:'lastPostButton', 
		'class':'lastPost', 
		onclick:'return Talkfinger.lastPost(this);'
	    }).set('html','ostatni post &rarr;');
        span.inject(obj,'bottom');
    }
    //obj.removeEvent('mouseleave', new function(){});
    
    obj.addEvents({
	mouseleave: function(){
	    if(  $('lastPostButton') )
	    $('lastPostButton').dispose();
	}
    });

    return false;
}


Talkfinger.hlpb = function(){
    return false;
    if(  $('lastPostButton') ){
	    $('lastPostButton').dispose();

    }
    return false;
}

Talkfinger.execute	= function( option ){

    if( option.indexOf('/') == 0 ){
	option = option.substr(1);
    }

    if( option.indexOf('user/login') ==0 ){
	Talkfinger.onBox(option,850,100);
    }else if( option.indexOf('create/user') == 0 ){
	Talkfinger.onBox(option,550,100);
    }else if( option.indexOf('create/forum') == 0 ){
	Talkfinger.onBox(option,600,170);	
    }else if( option.indexOf('settings') == 0 ){
	Talkfinger.onBox(option,1000,500);
    }else if( option.indexOf('messages') == 0){
	Talkfinger.onBox(option,1000,400);
    }else{
	Talkfinger.onBox(option,1000,400);
    }
    
}

Talkfinger.onBox	= function( option, width, height){
	var link = new Element('a');
	if( option.indexOf("http") != 0 && option.indexOf("/") != 0 ) option="/"+option;
	link.rel = 'box['+width+' '+height+']';
	link.href= option;
	Talkfinger.ajaxBox(link);
}

Talkfinger.postNew = function( data ){

    if( $( "post_"+data.pst_id ) == null && Talkfinger.savePostAction == false ){
    
    var limit = 15;
    var posts = $$('#posts div.post');
    if( posts.length == limit){
    	    posts[limit-1].destroy();
    }
    var element = new Element('div',{'id':'post_'+data.pst_id, 'class':'post'}).set('html', '<table style="width: 100%;">'+
	'<tr><td class="post_user_panel">'+
		'<div class="post_user_panel">'+
	    	    '<img class="post_user_avatar" src="'+data.usr_avatar+'"><span class="post_user_nick">'+data.usr_nick+'</span>'+
	        '</div>'+
	    '</td><td>'+
            '<div class="post_right">'+
		'<div class="post_created">'+data.pst_created+'</div>'+
	    '</div>'+
	    '<div class="post_content">'+
		data.pst_text+
	    '</div>'+    
	    '</td></tr>'+
	'</table>');
    element.inject($('posts'),'bottom');
    }
    Talkfinger.history( data );
//    $('scroll_box').scrollTo(0,99999);
}

Talkfinger.ignoreThread = function( obj, thread_id, confirmation){
    var yes = confirm(confirmation);
    if( yes ){
	Talkfinger.getAjax(obj);
	Talkfinger.ignored[Talkfinger.ignored.length] = thread_id;
    }
    return false;
}

Talkfinger.unignoreThread = function( obj, thread_id, confirmation){
    var yes = confirm(confirmation);
    if( yes ){
	Talkfinger.getAjax(obj);
	for (var i = 0; i < Talkfinger.ignored.length; i++) 
	    if (Talkfinger.ignored[i] == thread_id) {
    		Talkfinger.ignored[i] = -1;
    	        break;
	    }
    }    
    return false;    
}

Talkfinger.threadForm = function( link, id){

    //var id = link.rel.split(":");
    var obj	= $("threads_"+id);

    if( $('body') )
	$('body').set('style','cursor: wait;');

    new Request.HTML({
	url: Talkfinger.modifyLink( link.href ),
        method: 'get',
        evalScripts:  true,			    
        evalResponse: true,
        onRequest: function(){
    	    var element = null;
	    if( $( "thread_new" ) == null ){
		element = new Element('div', {'id':'thread_new', 'class':'thread'});
		element.inject( obj, 'top' );
	    }else{
		element =  $("thread_new");
	    }
	    element.set('html', '<img style="margin-left:5px;" src="/layout/'+Talkfinger.getForumName()+'/loading.gif">');
	},	
        onSuccess: function(response, xml){
        },
	onComplete: function(response,xml){
	    if( $("thread_new") ){
		$("thread_new").dispose();
	    }
	    var res = new Element('div').adopt(response).getChildren();
	    res.inject(obj, "top" );
	    if( $('body') )
		$('body').set('style','cursor: default;');

	}
	}).send();

	
    return false;
}


Talkfinger.saveThread = function(form, id){

    Talkfinger.saveThreadAction = true;
    
    if( $(form) ){
	form = $(form);
    }
    var frm = form.clone();    
    frm.set('action', Talkfinger.modifyLink(frm.get('action')));
    frm.set('send',{
        evalScripts: true,
        onRequest: function(){
    	    Talkfinger.saveThreadAction = true;
    	    if( $( "thread_new" ) ){
    		$( "thread_new" ).set('html', '<img style="margin-left:5px;" src="/layout/'+Talkfinger.getForumName()+'/loading.gif">');
    	    }
	},	
        onSuccess: function(response, xml){
	    Talkfinger.saveThreadAction = false;
        },
	onComplete: function(response, xml){
	    if( $("thread_new") ){
		$("thread_new").dispose();
	    }
	    if( $("threads_"+id) ){
	    	var res = new Element('div').set('html',response).getChildren();
		res.inject($("threads_"+id), "top" );
	    }
	    Talkfinger.saveThreadAction = false;
    	}
    });
    frm.send();
    return false;
}



Talkfinger.threadRemove = function( data ){
    $("thread_"+data.thread_id).destroy();
}

Talkfinger.threadRefresh = function( data ){

    var limit = 15;
    for (var i = 0; i < Talkfinger.ignored.length; i++) 
	if (Talkfinger.ignored[i] == data.trd_id) {
    	    Talkfinger.history( data );
    	    return;
	}
    
    if( data.sec_id+"_"+data.trd_id != Talkfinger.lastId ){ //&& (Talkfinger.data.sections[data.sec_seo] == undefined || Talkfinger.data.sections[data.sec_seo] == 1 ) ){
	
	if( $("thread_"+data.sec_id+"_"+data.trd_id) ){
	    $("thread_"+data.sec_id+"_"+data.trd_id).destroy();
	}
	
	/*Nie usuwaj watkow
	else{
    	    var thread = $$('#threads_'+data.section_id+" div.thread");
	    if( thread.length == limit){
		thread[limit-1].destroy();
	    }
	}*/

	var priv = '<a href="#">'+data.usr_nick+'</a>';
	if (Talkfinger.usr_id > 1){
	    priv = '<a rel="ajax: 640 200" onclick="return Talkfinger.ajaxBox(this);" href="/message/create/'+data.usr_seo+'">'+data.usr_nick+'</a>';
	}

	var element = new Element('div',{'id':'thread_'+data.sec_id+'_'+data.trd_id, 'class':'threadf'}).set('html', '<div class="thread_user_panel">'+
	    '<img class="thread_user_avatar" src="'+data.usr_avatar+'"/>'+
	    '<span class="thread_user_nick">'+priv+'</span>'+
	'</div>'+
	'<div class="thread_title_fresh" id="thread_read_'+data.sec_id+'_'+data.trd_id+'">'+
	    '<span id="arr_'+data.sec_id+'_'+data.trd_id+'" class="arr_thread"></span>'+
	    '<a class="thread" id="'+data.sec_id+'_'+data.trd_id+'" onmouseover="Talkfinger.showLastPostButton(this)" onclick="return Talkfinger.getThread(this);"  href="'+data.trd_href+'" name="'+data.sec_seo+"_"+data.trd_seo+'">'+
		'<span class="thread_date">'+data.pst_created+'</span> <h2>'+data.trd_title+'</h2>'+
	    '</a>'+
	'</div>'+
	'<div class="thread_info">'+
	    data.trd_post_count+
	'</div>'+
	'<div class="thread_status" id="thread_status_'+data.sec_id+'_'+data.trd_id+'"></div>'+
	'<div id="thread_content_'+data.sec_id+'_'+data.trd_id+'" name="thread_content_'+data.sec_id+'_'+data.trd_id+'" class="thread_content"></div>'
	);
	element.inject($('threads_'+data.sec_id),'top');
	
	/*
	if( data.thread_count > limit )
	    $('pagination_'+data.section_id).set('html',Talkfinger.paginator('/view/'+data.section_seo, data.thread_count ,1, "ajax-section-page:"+data.section_seo));
	*/
	Talkfinger.history( data );
    }	
}

Talkfinger.paginator = function( link, items, current, rel){

    var pages 	= items/15;
    var page	= Math.floor(pages);
    
    if( pages - page > 0 ){
	pageCount = page+1;
    }else{
	pageCount = page;    
    }

    if( current>1){
	previous=current-1;
    }else{
	previous=0;
    }

    if( current+1<=pageCount){
	next=current+1;
    }else{
	next=0;
    }

    paginator ='<div class="paginator"><div class="paginationControl"';
    if( previous > 0){
	paginator += ' <a href="'+link+'/page/'+previous+'" rel="'+rel+'">&lArr; previous</a>';
    }else{
	paginator += ' <span class="paginationDisabled">&lArr; previous</span>';
    }

    for( var page=1;page<=pageCount; page++){
	if( page == current ){
	    paginator += ' <font class="paginatorSelected">'+page+'</font>';
	}else{
	    paginator += ' <a href="'+link+"/page/"+page+'" rel="'+rel+'">'+page+'</a>';
	}
    }

    if( next > 0){
	paginator += ' <a href="'+link+'/page/'+next+'" rel="'+rel+'">next &rArr;</a>';
    }else{
	paginator += ' <span class="paginationDisabled">next &rArr;</span>';
    }

    paginator += '</div></div>';
    return paginator;    
}

Talkfinger.switchSection = function( link, id ){

    var sc	= "threads_"+id;

    if( ($(sc).get('html')).replace("\t","") != '' ){
	if( $("arr_"+id).get('class') == "section_down" ){
		$("arr_"+id).set('class',"section_right")
	}else if( $("arr_"+id).get('class') == "sub_section_down" ){
		$("arr_"+id).set('class',"sub_section_right")
	}
	$(sc).set('html','');
	//$('section_new_thread_'+id).set('html','');

    }else{
	if( $("arr_"+id).get('class') == "section_right" ){
		$("arr_"+id).set('class',"section_loading")
	}else if( $("arr_"+id).get('class') == "sub_section_right" ){
	        $("arr_"+id).set('class',"sub_section_loading")
	}

	//alert( Talkfinger.modifyLink( link.href ) );

	new Request.HTML({
	    url: Talkfinger.modifyLink( link.href ),
	    method: 'get',
	    update: sc,
	    evalScripts: true, 
	    onComplete: function(){
		if( $("arr_"+id).get('class') == "section_loading" ){
		    $("arr_"+id).set('class',"section_down")
		}else if( $("arr_"+id).get('class') == "sub_section_loading" ){
		    $("arr_"+id).set('class',"sub_section_down")
		}
	    }
	    }).send();
    }
    return false;
    //return Talkfinger.getAjax( link );
}

Talkfinger.toggleMainContent = function( mode ){
    if( Talkfinger.mainContent != mode ){
	$(mode).setStyle('display',"");
	$(Talkfinger.mainContent).setStyle('display',"none");
	Talkfinger.mainContent = mode;
    }
}

Talkfinger.remove = function( element ){
	if( $(element ) )
	    $(element).dispose();
	return false;
}

Talkfinger.moveThread = function( thread_seo ){

	if( $("thread_content_"+Talkfinger.lastId) ){
	    $("thread_content_"+Talkfinger.lastId).empty();
	    Talkfinger.goAnchor( Talkfinger.lastPath );
	}	
	
	$("thread_read_"+Talkfinger.lastId).set('class','thread_title_moved');
	$(Talkfinger.lastId).set('onclick', 'return false;');
	$(Talkfinger.lastId).set('onmouseover', 'return false;');
	$(Talkfinger.lastId).set('href', '');
	$("thread_read_"+Talkfinger.lastId).set('id','');
	
	Talkfinger.lastId = "";
	if( Talkfinger.tfc )
	    Talkfinger.tfc.threadLeft();
	return false;
}


Talkfinger.closeThread = function( thread ){
	
	if( $("thread_border") ){
	    $("thread_border").dispose();
	}
	
	if( $("thread_content_"+Talkfinger.lastId) ){
	    $("thread_content_"+Talkfinger.lastId).empty();
	    Talkfinger.goAnchor( Talkfinger.lastPath );
	}	
	
	if( Talkfinger.tfc )
	    Talkfinger.tfc.threadLeft();
	    
	Talkfinger.lastLink = "";
	Talkfinger.lastId = "";
	return false;
}

Talkfinger.getThread = function( link, _id, _name ){

    //Przekierowanie po kliknieciu na watek w przypadku kiedy link w przegladarce nest brzydki

//    var id = null;
    var name = null;        
    var lastPath = "";
    
    var doc = window.location.href.split("/");
    var lnk = link.href.split("/");

    if( lnk[3]=="view" ){
	lastPath = Talkfinger.getAnchorFromLink(link.href, false);
    }else{
	lastPath = link.name;
    }

// Nie przenos z widoku single    
	
    if( doc[3]=="view" || doc[3]=="download" ){
	window.location.href = doc[0]+"//"+doc[2]+"/#"+Talkfinger.getAnchorFromLink(link.href, true);
	return false;
    }



    var id 	= document.getElementsByName( lastPath ).item(0).id;
/*
    if( _id == null && link.id != null){
	id	= link.id;
    }else if(_lastId && _lastId != null){
	id 	= _lastId;
    }else{
	id	= _id
    }
*/

    if( _name == null ){
	name 	= link.name;
    }else{
	name	= _name;
    }
    
    //jezeli otwieramy nowy watek
    if( lastPath != Talkfinger.lastPath ){

        //alert( lastPath+" / "+Talkfinger.lastPath );
        if( $("thread_border") ){
    	    Talkfinger.closeThread();
    	    /*
	    var parent = $("thread_border").getParent();
	    parent.empty();    
	    /*
	    if( parent.id != sc ){
		//parent.empty();    
	    }else if( Talkfinger.lastId != id  && $("thread_content_"+Talkfinger.lastId)){
		$("thread_content_"+Talkfinger.lastId).empty();
	    }
	    */

	}
	
	//alert( "anchor: "+lastPath );    	
	//Talkfinger.goAnchor( lastPath );
    }

/*
    if( !link.id ){
	_id = Talkfinger.lastId;
	_name = Talkfinger.lastPath;
    }else{
	
	if( Talkfinger.lastLink == link.href ){
	    alert("close");
	    Talkfinger.closeThread();
	    return false;
	}
	Talkfinger.lastLink = link.href;
    }
    
/*

    var sc	= 'thread_content_'+id;
    var goto	= link.href;
    var str	= link.href.split("/");


    
    if( $("thread_border") ){
	var parent = $("thread_border").getParent();
	if( parent.id != sc ){
	    //parent.empty();    
	}else if( Talkfinger.lastId != id  && $("thread_content_"+Talkfinger.lastId)){
	    $("thread_content_"+Talkfinger.lastId).empty();
	}
	alert( "anchor: "+name );
	Talkfinger.goAnchor( name );
    }
*/    


	if( !id ){
	    id = Talkfinger.lastId;
	}else{
	    //alert( Talkfinger.lastId+" - "+id );
	    Talkfinger.lastId = id;
	}	

	Talkfinger.lastPath = lastPath;
	var goto	= link.href;
	
	if( $("arr_"+id) && $("arr_"+id).get('class') == "arr_thread" ){
	    $("arr_"+id).set('class',"arr_thread_loading")
	}

	if( Talkfinger.getLastPost ){
	    goto = goto+"/last";
	    Talkfinger.getLastPost = false;
	}

	//alert( 'thread_content_'+id );

	new Request.HTML({
	    url: Talkfinger.modifyLink( goto ),
	    method: 'get',
	    update: 'thread_content_'+id,
	    evalScripts: true,
    	    onRequest: function(){
		Talkfinger.goAnchor( Talkfinger.getAnchorFromLink(goto, false));
	    },	
    	    onSuccess: function(response, xml){
    	    },
	    onComplete: function(){
		if( $("arr_"+id).get('class') == "arr_thread_loading" ){
		    $("arr_"+id).set('class',"arr_thread");
		}
    		$("thread_read_"+id).set('class',"thread_title_readed");
		if( Talkfinger.tfc ){
		    Talkfinger.tfc.threadLeft();
		    Talkfinger.tfc.threadJoin(MD5(id));
		}
		Talkfinger.goAnchor( Talkfinger.getAnchorFromLink(goto, true));
		
	    }
	    }).send();

    return false;
}

Talkfinger.getSection = function( link, id ){


    var s	= link.href.split("/");
    var anchor	= s[4];
	if( $("arr_"+id).get('class') == "section_right" || $("arr_"+id).get('class') == "section_down" ){
	    $("arr_"+id).set('class',"section_loading")
	}else if( $("arr_"+id).get('class') == "sub_section_right" || $("arr_"+id).get('class') == "sub_section_down"){
	    $("arr_"+id).set('class',"sub_section_loading")
	}
				    
	new Request.HTML({
	    url: Talkfinger.modifyLink( link.href) ,
	    method: 'get',
	    update: 'threads_'+id,
	    evalScripts: true, 
	    onComplete: function(){
		if( $("arr_"+id).get('class') == "section_loading" ){
		    $("arr_"+id).set('class',"section_down")
		}else if( $("arr_"+id).get('class') == "sub_section_loading" ){
		    $("arr_"+id).set('class',"sub_section_down")
		}
		Talkfinger.goAnchor(anchor);
	    }
	    }).send();

    return false;
}

Talkfinger.getPortion = function(link, id){

	//alert("portion: "+link+" - "+id)
	Talkfinger.closeThread();

	var href = link;	
        if( typeof link == 'object' )
	    href = link.href;	    
    
	if( $("arr_"+id).get('class') == "section_right" || $("arr_"+id).get('class') == "section_down" ){
	    $("arr_"+id).set('class',"section_loading")
	}else if( $("arr_"+id).get('class') == "sub_section_right" || $("arr_"+id).get('class') == "sub_section_down"){
	    $("arr_"+id).set('class',"sub_section_loading")
	}
        Talkfinger.toggleMainContent("forum");
	new Request.HTML({
	    url: Talkfinger.modifyLink( href ) ,
	    method: 'get',
	    update: 'threads_'+id,
	    evalScripts: true, 
	    onComplete: function(){
		if( $("arr_"+id).get('class') == "section_loading" ){
		    $("arr_"+id).set('class',"section_down")
		}else if( $("arr_"+id).get('class') == "sub_section_loading" ){
		    $("arr_"+id).set('class',"sub_section_down")
		}

		Talkfinger.lastPath = Talkfinger.getAnchorFromLink( href, false );
		
		Talkfinger.goAnchor( Talkfinger.getAnchorFromLink( href,false ));
		Talkfinger.goAnchor( Talkfinger.getAnchorFromLink( href, true ));
	    }
	    }).send();

    return false;
}

Talkfinger.confirmAjax = function(link,text){
    var yes = confirm(text);
    if( yes ){
	Talkfinger.getAjax(link);
	/*
	var destination = link.rel.split(":");
        new Request.HTML({
	    url: Talkfinger.modifyLink( link.href ),
            method: 'get',
    	    update: destination[1],
            evalScripts:  false,				    
	    evalResponse: false,
    	    onSuccess: function(response, xml){},
	    onComplete: function(response, xml){}
	}).send();
	*/
    }
    return false;
}

Talkfinger.ajaxBox = function(link){

    if( $('body') )
	$('body').set('style','cursor: wait;');
	
    if(link)
	link.set('style','cursor: wait;');
    
    var rel = link.rel.split(/[\[\]\s]/);
    
    var width  = "980";
    var height = "100";

    if( rel[1] ) width=rel[1];
    if( rel[2] ) height=rel[2];

    new Request.HTML({
        url: Talkfinger.modifyLink( link.href ),
        method: 'get',
	//update: 'mediabox_content',
        evalScripts: false,				    
        evalResponse: false,
	onRequest: function(){
	    Mediabox.close();
	},
        onSuccess: function(response, xml){},
        onComplete: function(response,xml){
    	    /* style="width:'+width+'; height:'+height+';" */
	    //Mediabox.view('<div id="mediabox_content"></div>',width, height);
	    Mediabox.view('',width, height);
	    $("mediabox_content").adopt(response);//set('html',response);
	    //link.set('style',"cursor: pointer;");
	    if( $('body') )
		$('body').set('style',"cursor: default;");
		
	    if( link )
		link.set('style','cursor: default;');
	    
	}
    }).send();

    return false;
}

Talkfinger.getAjax = function(link){
    

    if( $('body') )
	$('body').set('style','cursor: wait;');
	
    if(link)
	link.set('style','cursor: wait;');
    

    if( link.rel ){
    var destination = link.rel.split(":");
    new Request.HTML({
        url: Talkfinger.modifyLink( link.href ),
        method: 'get',
	update: destination[1],
        evalScripts:  true,			    
        evalResponse: true,
        onSuccess: function(response, xml){},
	onComplete: function(response,xml){

	    if( $('body') )
		$('body').set('style',"cursor: default;");
		
	    if( link )
		link.set('style','cursor: default;');
	}
	}).send();
    }else{
    new Request.HTML({
        url: Talkfinger.modifyLink( link.href ),
        method: 'get',
        evalScripts:  true,			    
        evalResponse: true,
        onSuccess: function(response, xml){},
	onComplete: function(response,xml){
	    if( $('body') )
		$('body').set('style',"cursor: default;");
		
	    if( link )
		link.set('style','cursor: default;');
	}
	}).send();
    }
    return false;
}

Talkfinger.autoComplete = function( input, table, id, col ){
    if( Talkfinger.lastTimeoutId )
	clearTimeout( Talkfinger.lastTimeoutId );
    Talkfinger.lastTimeoutId = setTimeout("Talkfinger.getCompletion('"+input.id+"','"+table+"','"+id+"','"+col+"')", 500);
}

Talkfinger.getCompletion = function( name, table, id, col ){
    var obj	= $(name);
    var value 	= obj.value;
    
    var load = new Element('div',{'id':'dropdown_suggest_loading'}).set('html','<img src="/layout/'+Talkfinger.getForumName()+'/loading.gif">');;
	load.inject(obj,'after');
    
    if( $('dropdown_suggest') )
	$('dropdown_suggest').dispose();    

    new Request.HTML({
        url: "/extras/suggest/"+table+"/"+id+"/"+col+"/"+value,
        method: 'get',
        evalScripts:  true,			    
        evalResponse: true,
        onSuccess: function(response, xml){
        },
	onComplete: function(response,xml){

	    var pos = obj.getPosition();
	    var element = new Element('div',{'id':'dropdown_suggest', 'class':'dropdown_suggest'});
		element.adopt( response );
		//element.setStyle('background-color', obj.getStyle('background-color'));
		//element.setStyle('left', pos.x);
		//element.addEvent('mouseleave', function() { $('dropdown_suggest').dispose();} );
		element.inject(obj,'after');
	
	        if( $('dropdown_suggest_loading') )
			$('dropdown_suggest_loading').dispose();    
	        $('resource_suggest').focus();
	}
	}).send();

}

Talkfinger.selectSuggest = function( source, resource_name, resource_id  ){

    var ob = $(source);
    var name='';
    var value='';
    
    for (var i = 0; i < ob.options.length; i++) 
	if (ob.options[ i ].selected) {
		name = ob.options[ i ].text;
		value = ob.options[ i ].value;
	}

    $(resource_name).set('value', name);
    $(resource_id).set('value', value);
    $('dropdown_suggest').dispose();    

}

Talkfinger.getResourceOptions = function( type ){

    $('resource_select').set('html','<img src="/layout/'+Talkfinger.getForumName()+'/loading.gif">');
    $('rule_select').set('html','<img src="/layout/'+Talkfinger.getForumName()+'/loading.gif">');
    
    var ob = $('resource');
    var name='';
    var value='';
    
    for (var i = 0; i < ob.options.length; i++) 
	if (ob.options[ i ].selected) {
		name = ob.options[ i ].text;
		value = ob.options[ i ].value;
	}
    
    new Request.HTML({
        url: "/extras/get-resource-options/"+value,
        method: 'get',
	update: 'resource_select',
        evalScripts:  true,			    
        evalResponse: true,
        onSuccess: function(response, xml){},
	onComplete: function(response,xml){}
	}).send();

    new Request.HTML({
        url: "/extras/get-select-options/rule/"+type+"_rule/rule/"+value,
        method: 'get',
	update: 'rule_select',
        evalScripts:  true,			    
        evalResponse: true,
        onSuccess: function(response, xml){},
	onComplete: function(response,xml){}
	}).send();


    return false;
}

Talkfinger.getAjaxAfterRow = function(link, span){

    if( $('dynamic_row') )
	$('dynamic_row').dispose();

    var destination = link.rel.split(":");
    
    var element = new Element('tr',{'id':'dynamic_row'});
    new Element('td',{'id':'dynamic_row_content','colspan':span}).inject(element);
    element.inject(destination[1],'after');
    
    
    $('dynamic_row_content').set('html','<div style="padding:10px;"><img src="/layout/'+Talkfinger.getForumName()+'/loading.gif"></div>');
    
    new Request.HTML({
        url: Talkfinger.modifyLink( link.href ),
        method: 'get',
	update: 'dynamic_row_content',
        evalScripts:  true,			    
        evalResponse: true,
        onSuccess: function(response, xml){},
	onComplete: function(response,xml){}
	}).send();
	
    return false;
}


Talkfinger.formAjaxUpload = function( form ){
    var parent = null;
    
    if( typeof(form)=='string'){	
	parent = $(form).getParent();
	$(form).submit();	
    }else{
	parent = form.getParent();
	form.submit();
    }
    
    var size = parent.getSize();    
    parent.set('html','<div style="position: relative; left:'+((size.x/2)-64)+'px; top:'+(size.y/2)+'px; width:200px; height:30px;"><img src="/layout/'+Talkfinger.getForumName()+'/ajax-loader.gif"></div>');
    return false;
}

Talkfinger.savePost = function(form, target){

    Talkfinger.savePostAction = true;

    if( $(form+'_submit') ){
	 $(form+'_submit').set('class','big_submit_disable');
	 $(form+'_submit').set('disable','true');
    }

    if( typeof form != 'object' ){
	form = $(form);
    }
    
    var frm = form.clone();

    if( $( "post_progress" ) == null ){

	var element = new Element('div',{'id':'post_progress', 'class':'postf'}).set(
	'html', '<table style="width: 100%;">'+
	'<tr><td class="post_user_panel">'+
	    '</td><td>'+
            '<div class="post_right">'+
	    '</div>'+
	    '<div class="post_content" id="post_result">'+
		'<img src="/layout/'+Talkfinger.getForumName()+'/loading.gif">'+
	    '</div>'+    
	    '</td></tr>'+
	'</table>');

	if(target && target != "post_editor"){
	    $(target).empty();
	    $(target).adopt( element );
	}else{
	    element.inject($('post_editor'), 'before');
	}

    }
    
    frm.set('action', Talkfinger.modifyLink(frm.get('action')));
    frm.set('send',{
	    	onRequest: function(){
		},
	    	onComplete: function(response, xml){
	    	    if( $('post_progress') )
		        $('post_progress').dispose();
		    
		    if( target && target != "post_editor"){
		    	var res = new Element('div').set('html', response);
			$(target).empty();
			$(target).adopt( res );
		    }else{
			$('post_editor').dispose();
			var res = new Element('div').set('html', response).getChildren();
			res.inject($("posts"), "bottom" );
		    }
		    
		    Talkfinger.savePostAction = false;
		},
	    	onSuccess: function(){
		},
    		onFailure: function(response,xml){
		    Talkfinger.savePostAction = false;
		}
	    });
    frm.send();
    return false;
}

Talkfinger.enablePostEditor = function(form){
    if( $(form+'_submit') ){
	 $(form+'_submit').set('class','big_submit');
	 $(form+'_submit').set('disable','false');
    }
}

Talkfinger.formAjaxSubmit = function( form, target ){
    form.set('action', Talkfinger.modifyLink(form.get('action')));
    return Talkfinger.formSubmit( form, target );
}

Talkfinger.formSubmit = function( form, target ){

    var on 		= "in";
    var progress 	= "progress:none";
    var progress_type	= "big";
    var progress_on 	= "target"
    var destination	= "mediabox_content";

    if( target != null){
    
	var dest = target.split(" ");
	for( var i=0; i<dest.length; i++ ){
	    if(	dest[i]=='top' || 
		dest[i]=='bottom' ||
		dest[i]=='after' ||
		dest[i]=='before' ||		
		dest[i]=='in'	){
		
		on = dest[i];
		
	    }else if(	dest[i]=='progress:form:small' || 
			dest[i]=='progress:form:big' ||
			dest[i]=='progress:target:small' || 
			dest[i]=='progress:terget:big' ||
			dest[i]=='progress:none'
			){
		progress = dest[i];
		var _p = dest[i].split(':');
		if( _p.length == 3){
		    progress_type 	= _p[2];
		    progress_on		= _p[1];
		}
	    }else{
		destination = dest[i];
	    }
	}
    }
    
    if( typeof form != 'object' )
	form = $(form);

    if( $('body') )
	$('body').set('style',"cursor: wait;");

    var frm = form.clone();
    
    new Request.HTML({
        url: frm.get('action'),
        evalScripts:  true,		    
        evalResponse: true,
	onRequest: function (){

		var progress_target = null;
	
		if( progress_on == 'form' ){
    		    progress_target = frm;
		}else if( progress_on == 'target' ){
		    progress_target = $(destination);
		}
		
		var size = $(progress_target).getSize();
		var prg = null;
		
		if( progress_type=='big' ){
		    
		    prg = new Element('div', { 'id':'progress_bar','style':'position: relative; left:'+((size.x/2)-64)+'px; top:'+(size.y/2)+'px; width:200px; height:'+size.y+'px;'})
			.set('html','<img src="/layout/'+Talkfinger.getForumName()+'/ajax-loader.gif">');
		    
		}else if( progress_type =='small' ){

		    prg = new Element('div', { 'id':'progress_bar', 'style':'position: relative; width: 32px;'})
			.set('html','<img src="/layout/'+Talkfinger.getForumName()+'/loading.gif">');
		}
		
		if( on != 'in' ){
		    prg.inject($(progress_target), on );
		}else{
		    $(progress_target).empty();
		    $(progress_target).adopt( prg );
		}
	},
        onFailure: function(response,xml){

		if( $('progres_bar') )
		    $('progres_bar').dispose();

		var result = new Element('div').set('html',response).getChildren();

		if( on != 'in' ){
		    result.inject($(destination), on );
		}else{
		    $(destination).empty();
		    result.inject($(destination));
		}
		
		if( $('body') )
		    $('body').set('style',"cursor: default;");
	},
        onSuccess: function(response, xml){
        	if( $('body') )
		    $('body').set('style',"cursor: default;");
	},
	onComplete: function(response,xml){

		if( $('progres_bar') )
		    $('progres_bar').dispose();

		if( on != 'in' ){
		    var result = new Element('div').set('html',response).getChildren();
		    result.inject($(destination), on );
		}else{
		    $(destination).empty();
		    $(destination).adopt( response );
		}
		
		if( $('body') )
		    $('body').set('style',"cursor: default;");
	    }
	}).post(frm);

    return false;
}

Talkfinger.dropdownSwitch = function(id,name,set){

    if( Talkfinger.data.switchTab[id] == undefined )
	Talkfinger.data.switchTab[id] = {};
    
    Talkfinger.data.switchTab[id][name]=set;
    return false;
}

Talkfinger.dropdown = function(obj, data){
    var pos = obj.getPosition();
    var menu = "";
    var width = 150;
    var separated = false;
    for(var key in data){ 
	if( key == 'OPTION_WIDTH'){
	    width = data[key];
	    separated = false;
	}else if( data[key] == 'SEPARATOR'){
	    if( menu != "" && separated == false){
		menu += "<span class=dropdown_separator style='width:"+(width-10)+"px; height:3px;'></span>";
		separated = true;
	    }
	}else{
	    separated = false;
	    menu += "<a class=dropdown_menuitem style='width:"+(width-10)+"px'";
	    if( data[key]['rel'] )
		menu += " rel='"+data[key]['rel']+"'" ; 	

		var swt 	= key.split(":");

		if( swt.length == 2 ){
		    var keys = swt[0].split("|");
		    var switchTo	= parseInt(swt[1]);
		    
		    if( Talkfinger.data.switchTab[obj.id] && Talkfinger.data.switchTab[obj.id][key] ){
			switchTo = parseInt(Talkfinger.data.switchTab[obj.id][key]);
		    }
		    
		    var switchNext = switchTo+1;
		    if( keys.length<= switchNext )
			switchNext=0;

		    if( data[key]['onclick'] )
			menu += " onclick=\"Talkfinger.dropdownSwitch('"+obj.id+"','"+key+"','"+switchNext+"'); "+data[key]['onclick']+"\"" ;

		    menu += " href='"+data[key]['href'+switchTo]+"'" ;
	    	    if( switchTo != 0){
	    		menu += ">"+keys[switchTo]+"</a>\n";
	    	    }else{
	    		menu += ">"+keys[switchTo]+"</a>\n";
	    	    }
		
		}else{
		    if( data[key]['onclick'] )
			menu += " onclick=\""+data[key]['onclick']+"\"" ;

		    menu += " href='"+data[key]['href']+"'" ;
	    	    menu += ">"+key+"</a>\n";	
		}
	}
    }

    var element = new Element('div',{'id':'dropdown_menu', 'class':'dropdown_menu'}).set('html', menu );
    element.setStyle('background-color', obj.getStyle('background-color'));
    if( width != 0 ){
	element.setStyle('width', width+'px');
    }
    
    element.addEvent('mouseleave', function() {
            $('dropdown_menu').dispose();
        });
        
    element.addEvent('click', function() {
            $('dropdown_menu').dispose();
        });

    element.inject(obj,'after');
}

Talkfinger.getCaretPosition = function(elemId){
    var textarea = document.getElementById(elemId);
    textarea.focus();
}

Talkfinger.switchTab = function(link){
    var tabPane = link.getParent();
    var tabs 	= tabPane.getChildren();
    for( var i=0; i < tabs.length; i++){
	if( tabs[i].get('class') == 'button_small_red_bottom'){
	    tabs[i].set('class', 'button_small_gray_bottom');
	}
    }

    var destination = link.rel.split(":");
    new Request.HTML({
        url: Talkfinger.modifyLink( link.href ),
        method: 'get',
	update: destination[1],
        evalScripts:  true,				    
        evalResponse: true,
	onRequest: function(){
		$(destination[1]).set('html','<div class="container"><div class="containerCenter"><img src="/layout/'+Talkfinger.getForumName()+'/ajax-loader.gif"></div></div>');
	},
        onSuccess: function(response, xml){},
	onComplete: function(response,xml){
	    link.set('class', 'button_small_red_bottom');
	}
	}).send();

    return false;
}

Talkfinger.progress=function(target){
    if( target == null )
	target = 'mediabox_content';
	
    if( $(target) )
	$(target).set('html','<div class="container"><div class="containerCenter"><img src="/layout/'+Talkfinger.getForumName()+'/ajax-loader.gif"></div></div>');
	
    return false;
}

Talkfinger.littleProgress=function(target){
    if( target == null )
	target = 'mediabox_content';
	
    if( $(target) )
	$(target).set('html','<img src="/layout/'+Talkfinger.getForumName()+'/loading.gif">');
	
    return false;
}

Talkfinger.setCaretPosition = function(elemId, caretPos) {
    var elem = document.getElementById(elemId);

    if(elem != null) {
        if(elem.createTextRange) {
            var range = elem.createTextRange();
            range.move('character', caretPos);
            range.select();
        }
        else {
            if(elem.selectionStart) {
                elem.focus();
                elem.setSelectionRange(caretPos, caretPos);
            }
            else
                elem.focus();
        }
    }
}

Talkfinger.insertAtCaret = function( areaId, text ) { 
    var txtarea = top.document.getElementById(areaId); 
    var scrollPos = txtarea.scrollTop;
    var strPos = 0; 
    var endPos = 0; 
    var selected = "";
    var br = ((txtarea.selectionStart || txtarea.selectionStart == '0') ? "ff" : (top.document.selection ? "ie" : false ) ); 
    if (br == "ie") { 
	txtarea.focus(); 
	var range = top.document.selection.createRange();
	selected = range.text;
	range.moveStart ('character', -txtarea.value.length);
	strPos = range.text.length; 
	endPos = txtarea.selectionEnd+selected.length;
    } else if (br == "ff"){
	strPos = txtarea.selectionStart;
	endPos = txtarea.selectionEnd;
	selected = (txtarea.value).substring(strPos,endPos);
    }

    var front = (txtarea.value).substring(0,strPos); 
    var back = (txtarea.value).substring(endPos, txtarea.value.length);

    var a=text.substring(0,text.indexOf("][")+1);
    var b=text.substring(text.indexOf("][")+1, text.length);
    
    text = a+selected+b;

    txtarea.value = front+text+back;
    strPos = strPos + a.length; 

    if (br == "ie") { 
        txtarea.focus(); 
        var range = top.document.selection.createRange();
        range.moveStart ('character', -txtarea.value.length); 
        range.moveStart ('character', strPos); 
	range.moveEnd ('character', selected.length); 
	range.select(); 
    } else if (br == "ff") { 
        txtarea.selectionStart = strPos; 
        txtarea.selectionEnd = endPos+a.length;
        txtarea.focus();
    } 
    txtarea.scrollTop = scrollPos; 

    //var curPos = text.indexOf("][")+front.length;
    //Talkfinger.setCaretPosition( areaId, curPos+1 );

} 

Talkfinger.getSelected = function(){
    var txt = '';
    if (window.getSelection){
        txt = window.getSelection();
    }else if (document.getSelection){
        txt = document.getSelection();
	alert('2');
    }else if (document.selection){
        txt = document.selection.createRange().text;
	alert('3');
    }else return;
    return txt;
} 

Talkfinger.history = function( data ){
    /*
    var element = new Element('div',{'class':'thread'}).set('html', '<div class="thread_user_panel">'+
	'<img class="thread_user_avatar" src="'+data.avatar+'"/>'+
	'<span class="thread_user_nick">'+data.nick+'</span>'+
    '</div>'+
    '<div class="history_title">'+
        '<span class="thread_date">'+data.created+'</span>'+
        data.history_title+
    '</div>');

    element.inject($('history_data'),'top');
    */
}

Talkfinger.modifyLink = function( href ){

    var spl = href.split("/");
    var add = "";
    var where = 3;
    if( spl[0] == 'http:' || spl[0] == 'https:'){
	for( var i=0; i<spl.length; i++){
    	    if( i == where )
    		add +="ajax/";
    	    add += spl[i]+"/";
	}
    }else{
	add = "/ajax/";
	for( var i=0; i<spl.length; i++){
    	    if( spl[i] != "" && spl[i] != "ajax" )
		add += spl[i]+"/";
	}
    }
    return add;
}

Talkfinger.getThreadPath = function( href ){
    href = href.replace("#","/");
    var spl = href.split("/");
    if( spl[3] == 'view'){
	return spl[4]+"/"+spl[5];
    }else if(  spl.length == 6 && spl[1] == 'portion' && spl[4] == 'post'){
	return spl[2]+"/"+spl[3]+"/post/"+spl[5];
    }else if(  spl.length == 6){
	return spl[4]+"/"+spl[5];
    }else if(  spl.length == 4 && spl[1] == 'portion'){
	return spl[2]+"/"+spl[3];
    }else if(  spl.length == 8 && spl[6] == 'post'){
	return spl[4]+"/"+spl[5]+"/post/"+spl[7];
    }else if(  spl.length == 8 && spl[6] == 'page'){
	return spl[4]+"/"+spl[5]+"/page/"+spl[7];
    }else{
	//alert( spl.length+": "+spl[0]+"|"+spl[1]+"|"+spl[2]+"|"+spl[3]+"|"+spl[4]+"|"+spl[5]+"|"+spl[6]+"|"+spl[7] );
	return false;
    }
}

Talkfinger.getSectionPath = function( href ){
    href = href.replace("#","/");
    var spl = href.split("/");
    if(  spl.length == 6 ){
	return spl[4]
    }else if(  spl.length == 8 ){
	return spl[4]
    }else{
	return false;
    }
}


Talkfinger.getSectionSeo = function( href ){
    href = href.replace("#","/");
    var spl = href.split("/");
    if( spl.length < 9 && spl[3] == 'view'){
	return spl[4];
    }else{
	return false;
    }
}

Talkfinger.getStartOption = function( href ){
    href = href.replace("#","/");
    var spl = href.split("/");
    if( spl[3] ){
	return spl[3]+'/'+spl[4];
    }else{
	return false;
    }
}

Talkfinger.recolor = function( obj ){
    var ob = $('element');
    var color_name='';
    var color_value='';
    for (var i = 0; i < ob.options.length; i++) 
	if (ob.options[ i ].selected) {
		//alert(ob.options[ i ].text+"="+ob.options[ i ].value);
		ob.options[ i ].value=obj.value;
		color_name = ob.options[ i ].text;
		color_value = ob.options[ i ].value;
	    }

    new Request.HTML({
        url: "/layout/recolor/"+color_name+"/"+color_value,
        method: 'get',
	//update: 'recolor',
        evalScripts:  false,				    
        evalResponse: false,
	onRequest: function(){
		$('recolor').set('html','<table style="width:100%; margin:auto; padding:150px;"><tr><td style="height: 100%; text-align: center;"><img src="/layout/'+Talkfinger.getForumName()+'/loading.gif"></td></tr></table>');
	},
        onSuccess: function(response, xml){},
	onComplete: function(response,xml){
		$('recolor').empty();
		$('recolor').adopt(response);
	}
	}).send();
    return false;
}

Talkfinger.changeLayout = function(type){

    new Request.HTML({
        url: "/layout/change/"+type+"/"+Math.floor(Math.random()*99999999),
        method: 'get',
	//update: 'recolor',
	
        evalScripts:  false,				    
        evalResponse: false,
	onRequest: function(){
		$('recolor').set('html','<table style="width:100%; margin:auto; padding:150px;"><tr><td style="height: 100%; text-align: center;"><img src="/layout/'+Talkfinger.getForumName()+'/loading.gif"></td></tr></table>');
	},
        onSuccess: function(response, xml){},
	onComplete: function(response,xml){
		$('recolor').empty();
		$('recolor').adopt(response);
	}
	}).send();
    return false;
}

Talkfinger.showFrame = function(){

    var element = new Element('div',{'class':'absoluteBack'});
    element.inject($('body'),'bottom');

    var element = new Element('div',{'class':'absoluteBox'}).
    set('html', '<div class=""> test </div>');
    element.inject($('body'),'bottom');

}

Talkfinger.frameParser = function( name ){

    var ifr = document.getElementById(name);
    alert( ifr.contentWindow.document.body.innerHTML );

}

Talkfinger.bName	= "";
Talkfinger.bVer		= 0
Talkfinger.savePostAction = false;
Talkfinger.saveThreadAction = false;
Talkfinger.lastTimeoutId = false;
Talkfinger.lastId 	= "";
Talkfinger.lastPath 	= "";
Talkfinger.lastLink 	= "";
Talkfinger.mainContent 	= "forum";
Talkfinger.data 	= { sections:{}, switchTab:{} };
Talkfinger.tfc  	= null;
