Array.prototype.in_array = function(p_val) {
    for(var i = 0, l = this.length; i < l; i++) {
        if(this[i] == p_val) {
            return true;
        }
    }
    return false;
}

function basename(path) {
    return path.replace( /.*\//, "" );
}

window.onload=function() {
    inittooltips();
    retractablebox();
}

isUrl = function(s) {
    var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
    return regexp.test(s);
}

panels = new Array();

confpopup={fixedcenter: true,draggable:true,close:true, visible:false, iframe:true, constraintoviewport:true ,width:"686px", modal:true, underlay:"none"}

/**display dynamically panels **/
var AjaxObject = Class.create();
AjaxObject.prototype = {
    initialize:function(div,header,uri,options){
        this.div=div;
        this.options=options;
        new Insertion.Bottom($('div_panels'), '<div id="panel_'+this.div+'"><div class="hd">'+header+'</div><div class="bd"><div style="text-align:center">'+$('loading').innerHTML+'</div></div><div class="ft"></div></div>');
        this.panel = new YAHOO.widget.Panel("panel_"+this.div,confpopup);
        if(YAHOO.util.Dom.getViewportHeight() <= 600) {
            YAHOO.util.Dom.setStyle(this.panel.body, 'height', YAHOO.util.Dom.getViewportHeight()-90 + 'px');
        }
        YAHOO.util.Dom.setStyle(this.panel.body, 'maxHeight', YAHOO.util.Dom.getViewportHeight()-90 + 'px');
        this.panel.render();
        this.panel.show();
        var resize = new YAHOO.util.Resize('panel_'+this.div, {
            handles: ["br"],
            autoRatio: false,
            minWidth: 300,
            minHeight: 100,
            status: false
        });
        resize.on('resize', function(args) {
            var panelHeight = args.height;
            this.cfg.setProperty("height", panelHeight + "px");
        }, this.panel, true);
        resize.on('startResize', function(args) {
            if (this.cfg.getProperty("constraintoviewport")) {
                var D = YAHOO.util.Dom;
                var clientRegion = D.getClientRegion();
                var elRegion = D.getRegion(this.element);
                resize.set("maxWidth", clientRegion.right - elRegion.left - YAHOO.widget.Overlay.VIEWPORT_OFFSET);
                resize.set("maxHeight", clientRegion.bottom - elRegion.top - YAHOO.widget.Overlay.VIEWPORT_OFFSET);
            } else {
                resize.set("maxWidth", null);
                resize.set("maxHeight", null);
            }
        }, this.panel, true);
        new Ajax.Request(uri,{method:'get',onSuccess:this.onSuccess.bind(this)});
    },
    onSuccess:function(o){
        if(o.responseText !== undefined){
            this.panel.setBody(o.responseText);
            o.responseText.evalScripts();
        }
    },
    show:function(){this.panel.show();},
    hide:function(){this.panel.hide();},
    destroy:function() {this.panel.destroy();},
    setBody:function(s) {this.panel.setBody(s);}
}

function bspanel(div,uri,options) {
  if(panels[div]==undefined){
        panels[div]=new AjaxObject(div,uri,options);
  }else{
      panels[div].show();
  }
  panels["current"]=panels[div];
  return false;
}

function updatebody(f) {
  $(f.id).request({onComplete:function(o) {
      if(o.responseText!=undefined) {
        if(o.responseText.indexOf('</form>')!=-1) {
           panels["current"].setBody(o.responseText);
           o.responseText.evalScripts();
         } else {
           window.location.href=o.responseText;
         }
    }}
  });
  return false;
}

function user_isloggedin() {
    // todo check cookie
    return true;
}

validateLogin = function(result,form) {
    if(!result) return false;
    showloading();
    $('form_login').request({
        onComplete:function(o) {
            if(o.responseText!==undefined) {
                j = o.responseText.evalJSON(true);
                hideloading();
                if(!j.error) {
                    document.location = registry.url;
                } else {
                    // should reload the page to show already voted
                    $('identification_error').show();
                }
            }
        }
    });
    return false;
}

sendcomment = function (result,form) {
    if(!result) return false;
    var v = new Validation(form.id);
    if(v.validate()) {
        showloading();
        form.request({
            method: 'post',
            onComplete: function(o) {
                // reload page
                document.location.reload();
            }
        })
    }
}

/** obsolete **/
voteit=function(id,w,k) {
    alert('obsolete');
    new Ajax.Request(registry.url+'vote.php',
                     {parameters:{evnt:'vote',post_id:id,points:w,k:k},
                     onSuccess:function(o) {
        json = o.responseText.evalJSON(true);
        if(json.error) {
            if(json.errorno==100) window.location = registry.url+'login';
        } else {
            if($('pc'+json.post_id)) $('pc'+json.post_id).innerHTML = json.votecount;
            if($('pc'+json.post_id)) $('pc'+json.post_id).addClassName('vote-count-voted');
            if($('pa'+json.post_id)) $('pa'+json.post_id).innerHTML = json.voteavg;
            if($('ps'+json.post_id)) $('ps'+json.post_id).innerHTML = json.votesum;
            if($('notvoted'+json.post_id) && $('alreadyvoted'+json.post_id)) {
                $('notvoted'+json.post_id).hide();
                $('alreadyvoted'+json.post_id).show();
            }
            if(voteit_callback) {
                voteit_callback(json.post_id, o.request.parameters.points);
            }
        }
    }});
}

var AjaxTalk =Class.create();
AjaxTalk.prototype = {
    initialize:function(uri,options){
        //showloading();
        this.options=options;
        new Ajax.Request(uri,{method:'post',onSuccess:this.onSuccess.bind(this)});
    },
    onSuccess:function(o){
        if(o.responseText=="<error>1</error>") {
            window.location = registry.url+'login';
        }
        json = o.responseText.evalJSON(true);
         if(json.error && json.noredirect!=true) {
            window.location = registry.url+'login';
        } else {
            this.json=json;
            if(this.options.redirect_url) {
                window.location = this.options.redirect_url;
            }
            if(this.options.actionnext) {
                this[this.options.actionnext]();
            }else {
                if(this.options.post_id) this.vote();
                if(this.options.debate_id) this.switchDebates();
                if(this.options.member_id) this.switchMembers();
                if(this.options.step_id) this.switchSteps();
                if(this.options.comment_id) this.commentvote();
                if(this.options.form) this.subscribercount();
            }
            //hideloading();
        }
     },
    subscribercount:function() {

        if($('alertdebate-result')) {
            $('alertdebate-result').show();
            $('alertdebate-result').next().hide();
        }
        if($('alertcat-result')) {
            $('alertcat-result').show();
            $('alertcat-result').next().hide();
        }
        if($('alertpost-result')  && this.options.form.id=='form_alertpost') {
            if(this.json.errorno==104) {
                $('alertpost-result').hide();
                $('alertpost-already-subscribe').show();
            } else {
                $('alertpost-result').show();
                $('alertpost-already-subscribe').hide();
            }
        }
        if($('abuse-result') && this.options.form.id=='form_abuse') {
            $('abuse-result').show();
            $('abuse-result').next().hide();
        }
        if($('doublepost-result') && this.options.form.id=='form_doublepost') {
            $('doublepost-result').show();
            $('doublepost-result').next().hide();
        }
        if($('sendfriend-result') && this.options.form.id=='form_sendfriend') {
            if(!this.json.error) {
                $('sendfriend-result').show();
                $('sendfriend-result-fail').hide();
                $(this.options.form.id).hide();
            } else {
                $('sendfriend-result-fail').show();
                $('sendfriend-result').hide();
                $(this.options.form.id).show();
            }
        }
        if(this.json.postsubscribercount && $('postsubscribercount')) {
            $('postsubscribercount').innerHTML = this.json.postsubscribercount;
        }
    },
    switchDebates:function() {
        var lists = $$('.subscribe_debate_'+this.options.debate_id);
        action = this.options.action;
        for(var i=0; i<lists.length; i++) {
            lists[i].innerHTML='<a href="javascript:void(0);" onclick="subscribe_debate(\''+this.options.debate_url+'\',\''+(action=='add'?'delete':'add')+'\','+this.options.user_id+','+this.options.debate_id+',\''+this.options.signature+'\')"><img src="'+registry.data_url+'graphics/'+(action=='add'?'delete':'add')+'_border.png"></a>';
        }
        if($('follow_debate_txt')) {
            if(action=='add') {
                $('follow_debate_sub').hide();
                $('follow_debate_unsub').show();
            } else {
                $('follow_debate_unsub').hide();
                $('follow_debate_sub').show();
            }
        }
    },
    switchMembers:function() {
        var lists = $$('.subscribe_status_'+this.options.member_id);
        action = this.options.action;
        for(var i=0; i<lists.length; i++) {
            lists[i].innerHTML='<a href="javascript:void(0);" onclick="subscribe_member(\''+this.options.member_url+'\',\''+(action=='add'?'delete':'add')+'\','+this.options.user_id+','+this.options.member_id+',\''+this.options.signature+'\')"><img src="'+registry.data_url+'graphics/'+(action=='add'?'delete':'add')+'_border.png"></a>';
        }
        if($('follow_user')) {
            $('follow_user').innerHTML='<a href="javascript:void(0);" onclick="subscribe_member(\''+this.options.member_url+'\',\''+(action=='add'?'delete':'add')+'\','+this.options.user_id+','+this.options.member_id+',\''+this.options.signature+'\')"><img src="'+registry.data_url+'graphics/'+(action=='add'?'dont_':'')+'follow_me.png"></a>';
        }
        if($('follow_user_txt')) {
            if(action=='add') {
                $('follow_user_sub').hide();
                $('follow_user_unsub').show();
            } else {
                $('follow_user_unsub').hide();
                $('follow_user_sub').show();
            }
        }

    },
    switchSteps:function() {
        var lists = $$('.subscribe_step_'+this.options.step_id);
        action = this.options.action;
        for(var i=0; i<lists.length; i++) {
            lists[i].innerHTML='<a href="javascript:void(0);" onclick="subscribe_step(\''+this.options.step_url+'\',\''+(action=='add'?'delete':'add')+'\','+this.options.user_id+','+this.options.step_id+','+this.options.debate_id+',\''+this.options.signature+'\')"><img src="'+registry.data_url+'graphics/icons/'+(action=='add'?'delete':'add')+'.png"></a>';
        }
        if($('follow_step_txt')) {
            if(action=='add') {
                $('follow_step_sub').hide();
                $('follow_step_unsub').show();
            } else {
                $('follow_step_unsub').hide();
                $('follow_step_sub').show();
            }
        }
    },
    vote:function() {
        if($('pc'+this.json.post_id)) $('pc'+this.json.post_id).innerHTML = this.json.votecount;
        if($('pc'+this.json.post_id)) $('pc'+this.json.post_id).addClassName('vote-count-voted');
        if($('pa'+this.json.post_id)) $('pa'+this.json.post_id).innerHTML = this.json.voteavg;
        if($('ps'+this.json.post_id)) $('ps'+this.json.post_id).innerHTML = this.json.votesum;
        if($('pp'+this.json.post_id)) $('pp'+this.json.post_id).innerHTML = this.json.voteweight;
        if($('notvoted'+this.json.post_id) && $('alreadyvoted'+this.json.post_id)) {
          $('notvoted'+this.json.post_id).hide();
          $('alreadyvoted'+this.json.post_id).show();
        }
    },
    commentvote:function() {
        if($('cc'+this.json.comment_id)) $('cc'+this.json.comment_id).innerHTML = this.json.votecount;
        if($('cc'+this.json.comment_id)) $('cc'+this.json.comment_id).addClassName('vote-count-voted');
        if($('ca'+this.json.comment_id)) $('ca'+this.json.comment_id).innerHTML = this.json.voteavg;
        if($('cs'+this.json.comment_id)) $('cs'+this.json.comment_id).innerHTML = this.json.votesum;
        if($('notvotedc'+this.json.comment_id) && $('alreadyvotedc'+this.json.comment_id)) {
            $('notvotedc'+this.json.comment_id).hide();
            $('alreadyvotedc'+this.json.comment_id).show();
        }
        if(commentvoteit_callback) {
            commentvoteit_callback(this.json.comment_id, this.options.w);
        }
    },
    followpost:function() {
        if(this.options.action=='add') {
            if($('follow_post_sub')) $('follow_post_sub').hide();
            if($('follow_post_unsub')) $('follow_post_unsub').show();
        } else {
            if($('follow_post_sub')) $('follow_post_unsub').hide();
            if($('follow_post_unsub')) $('follow_post_sub').show();
        }
    }
}

remove_anchor=function(url) {
    if(url.indexOf('#')!=-1) url=url.substr(0,url.indexOf('#'));
    return url;
}

subscribe_debate=function(debate_url,action,user_id,debate_id,signature,redirect_url) {
    debate_url=remove_anchor(debate_url);
    if(action == 'add') {
        url = debate_url+'?email=digest&evnt=alertdebate&user_id='+user_id+'&debate_id='+debate_id+'&signature='+signature;
        var options={debate_id:debate_id,action:'add',debate_url:debate_url,user_id:user_id,signature:signature,redirect_url:redirect_url};
        new AjaxTalk(url,options);
    } else {
        url = debate_url+'?evnt=unsubscribedebate&user_id='+user_id+'&debate_id='+debate_id+'&signature='+signature;
        var options={debate_id:debate_id,action:'delete',debate_url:debate_url,user_id:user_id,signature:signature,redirect_url:redirect_url};
        new AjaxTalk(url,options);
    }
}

subscribe_blog=function(blog_url,action,user_id,blog_id,signature,redirect_url) {
    blog_url=remove_anchor(blog_url);
    if(action == 'add') {
        url = blog_url+'?email=digest&evnt=alertblog&user_id='+user_id+'&blog_id='+blog_id+'&signature='+signature;
        var options={blog_id:blog_id,action:'add',blog_url:blog_url,user_id:user_id,signature:signature,redirect_url:redirect_url};
        new AjaxTalk(url,options);
    } else {
        url = blog_url+'?evnt=unsubscribeblog&user_id='+user_id+'&blog_id='+blog_id+'&signature='+signature;
        var options={blog_id:blog_id,action:'delete',blog_url:blog_url,user_id:user_id,signature:signature,redirect_url:redirect_url};
        new AjaxTalk(url,options);
    }
}

subscribe_pulses=function(debate_url,action,debate_id,answer,user_id,signature,redirect_url) {
    debate_url=remove_anchor(debate_url);
    if(action == 'add') {
        url = debate_url+'?evnt=subscribe_pulses&answer='+answer+'&user_id='+user_id+'&debate_id='+debate_id;
        var options={debate_url:debate_url,debate_id:debate_id,answer:answer,debate_url:debate_url,user_id:user_id,redirect_url:redirect_url};
        new AjaxTalk(url,options);
    } else {
        url = debate_url+'?evnt=unsubscribe_pulses&answer='+answer+'&user_id='+user_id+'&debate_id='+debate_id;
        var options={debate_url:debate_url,debate_id:debate_id,answer:answer,debate_url:debate_url,user_id:user_id,redirect_url:redirect_url};
        new AjaxTalk(url,options);
    }
}

subscribe_member=function(member_url,action,user_id,member_id,signature,redirect_url) {
    member_url=remove_anchor(member_url);
    if(action == 'add') {
      url=member_url+'?evnt=subscribemember&user_id='+user_id+'&member_id='+member_id+'&signature='+signature;
      var options={member_id:member_id,action:'add',member_url:member_url,user_id:user_id,signature:signature,redirect_url:redirect_url};
      new AjaxTalk(url,options);
    }else {
      url=member_url+'?evnt=unsubscribemember&user_id='+user_id+'&member_id='+member_id+'&signature='+signature;
      var options={member_id:member_id,action:'delete',member_url:member_url,user_id:user_id,signature:signature,redirect_url:redirect_url};
      new AjaxTalk(url,options);
    }
}

subscribe_post=function(post_url,action,user_id,post_id,signature,redirect_url) {
    post_url=remove_anchor(post_url);
    if(action == 'add') {
      url=post_url+'?evnt=subscribepost&user_id='+user_id+'&post_id='+post_id+'&signature='+signature;
      var options={actionnext:'followpost',post_id:post_id,action:'add',post_url:post_url,user_id:user_id,signature:signature,redirect_url:redirect_url};
      new AjaxTalk(url,options);
    }else {
      url=post_url+'?evnt=unsubscribepost&user_id='+user_id+'&post_id='+post_id+'&signature='+signature;
      var options={actionnext:'followpost',post_id:post_id,action:'delete',post_url:post_url,user_id:user_id,signature:signature,redirect_url:redirect_url};
      new AjaxTalk(url,options);
    }
}

subscribe_step=function(step_url,action,user_id,step_id,debate_id,signature,redirect_url) {
    step_url=remove_anchor(step_url);
    if(action == 'add') {
      url=step_url+'?evnt=subscribestep&user_id='+user_id+'&step_id='+step_id+'&debate_id='+debate_id+'&signature='+signature;
      var options={step_id:step_id,action:'add',step_url:step_url,user_id:user_id,debate_id:debate_id,signature:signature,redirect_url:redirect_url};
      new AjaxTalk(url,options);
    }else {
      url=step_url+'?evnt=unsubscribestep&user_id='+user_id+'&step_id='+step_id+'&debate_id='+debate_id+'&signature='+signature;
      var options={step_id:step_id,action:'delete',step_url:step_url,user_id:user_id,debate_id:debate_id,signature:signature,redirect_url:redirect_url};
      new AjaxTalk(url,options);
    }
}

subscribe_category=function(category_url,action,user_id,category_id,debate_id,signature,redirect_url) {
    category_url=remove_anchor(category_url);
    if(action == 'add') {
      url=category_url+'?evnt=subscribecategory&user_id='+user_id+'&category_id='+category_id+'&debate_id='+debate_id+'&signature='+signature;
      var options={category_id:category_id,action:'add',category_url:category_url,user_id:user_id,debate_id:debate_id,signature:signature,redirect_url:redirect_url};
      new AjaxTalk(url,options);
    }else {
      url=category_url+'?evnt=unsubscribecategory&user_id='+user_id+'&category_id='+category_id+'&signature='+signature;
      var options={category_id:category_id,action:'delete',category_url:category_url,user_id:user_id,signature:signature,redirect_url:redirect_url};
      new AjaxTalk(url,options);
    }
}

/** url,post_id,weight,key **/
vote_post=function(u,p,d,w,k) {
  url = u+'?evnt=votepost&debate_id='+d+'&post_id='+p+'&signature='+k+'&weight='+w+'&output=json';
  var options={debate_id:d,url:u,post_id:p,signature:k,w:w};
  new AjaxTalk(url,options);
}

widgetfooter = function(form,action,url) {
    if(!url) {
        u=window.location.href; /** the button is not on the correct page **/
    }else {
        u=url;
    }
    u=remove_anchor(u);
    url = u+'?'+$(form).serialize();
    var options={form:form,action:action};
    new AjaxTalk(url,options);
    return false;
}

commentvoteit=function(c,d,w,k) {
    u=window.location.href;
    u=remove_anchor(u);
    url=u+'?evnt=votecomment&debate_id='+d+'&comment_id='+c+'&signature='+k+'&weight='+w;
    var options={debate_id:d,url:u,comment_id:c,signature:k,w:w};
    new AjaxTalk(url,options);
}

/** for loading **/
var extendhidden = false;
showloading = function() {
    Extendhidden = true;
    $("opacity").style.height = document.body.offsetHeight+"px";
    var navVersion = navigator.appVersion.charAt(navigator.appVersion.indexOf('MSIE ')+5);
    if ( (navigator.appName == 'Microsoft Internet Explorer') && (navVersion < 7) ) {
      $("loading").style.position = "absolute";
      for(i=0; i< document.getElementsByTagName('select').length; i++) {
        document.getElementsByTagName('select')[i].disabled = "disabled";
      }
    }
    $("loading").show();
    $("opacity").show();
}
hideloading=function() {
    Extendhidden = false;
    setTimeout("hideloadingnow()", 150);
}

hideloadingnow=function() {
    if(extendhidden == false) {
      $("loading").hide();
      $("opacity").hide();
      if ( navigator.appName == 'Microsoft Internet Explorer' ) {
        for(i=0; i< document.getElementsByTagName('select').length; i++) {
          document.getElementsByTagName('select')[i].disabled = "";
        }
      }
    }
}

recoverPassword=function(result,form) {
    if(!result) return false;
    var v = new Validation(form.id);
    if(v.validate()) {
        showloading();
        form.request({
            onComplete:function(o) {
                if(o.responseText!==undefined) {
                    j = o.responseText.evalJSON(true);
                    hideloading();
                    if(!j.error) {
                        $('email_not_found').hide();
                        $('email_sent').show();
                    } else {
                        $('email_not_found').show();
                        $('email_sent').hide();
                    }
                }
            }
        });
    }
    return false;
}

yahoo_upload=function() {
  if($('yahoo_upload')) return;
  var script = document.createElement('script');
  script.setAttribute('type', 'text/javascript');
  script.setAttribute('src', registry.data_url+'javascript/yui/build/yahoo/yahoo-min.js');
  document.documentElement.firstChild.appendChild(script);
  var script = document.createElement('script');
  script.setAttribute('type', 'text/javascript');
  script.setAttribute('src', registry.data_url+'javascript/yui/build/event/event-min.js');
  document.documentElement.firstChild.appendChild(script);
  var script = document.createElement('script');
  script.setAttribute('id', 'yahoo_upload');
  script.setAttribute('type', 'text/javascript');
  script.setAttribute('src', registry.data_url+'javascript/yui/build/connection/connection-min.js');
  document.documentElement.firstChild.appendChild(script);
}

uploadAvatar=function() {
    if(Validation.get('validate-extension-image').test($('file_avatar').value,$('file_avatar'))) {
      $('avatar_upload_indicator').show();
      YAHOO.util.Connect.setForm($('form_account'), true);
      var uploadHandler = {
        upload:function(o) {
          if(o.responseText!=undefined) {
            j = o.responseText.evalJSON(true);
            if(!j.error) $('avatar').src=j.url;
          }
          $('avatar_upload_indicator').hide();
        }
      };
      YAHOO.util.Connect.asyncRequest('POST',registry.url+'upload_avatar.php', uploadHandler);
      return false;
    } else {
        alert('The extension should be .jpg,.png,.gif');
    }
}

uploadFile=function() {
    nbchar = $('file_upload').value.length;
    if(!nbchar) return false;
    extension = $('file_upload').value.substring($('file_upload').value.lastIndexOf('.')+1,nbchar).toLowerCase();
    if(registry.upload_extension.in_array(extension)) {
      $('file_upload_indicator').show();
      YAHOO.util.Connect.setForm($('form_create_new_post'), true);
      var uploadHandler = {
        upload:function(o) {
          if(o.responseText!=undefined) {
            j = o.responseText.evalJSON(true);
            if(!j.error) {
                var new_li = $('file_template').innerHTML;
                new_li = new_li.replace('#URL#',encodeURI(j.url));
                new_li = new_li.replace('#FILENAME#',basename(j.url));
                new_li += '<input type="hidden" name="file_upload[]" value="'+encodeURI(j.url)+'"/>'
                var new_file_list = $('file_list').innerHTML;
                new_file_list += new_li;
                $('file_list').innerHTML = new_file_list;
                $('files_uploaded').show();
            } else {
                alert('The extension should be : '+registry.upload_extension.join(', '));
            }
          }
          $('file_upload_indicator').hide();
        }
      };
      YAHOO.util.Connect.asyncRequest('POST',registry.url+'upload_file.php', uploadHandler);
      return false;
    } else {
        alert('The extension should be : '+registry.upload_extension.join(', '));
    }
}

uploadImage=function() {
    if(Validation.get('validate-extension-image').test($('file_image').value,$('file_image'))) {
      $('image_upload_indicator').show();
      YAHOO.util.Connect.setForm($('form_create_new_post'), true);
      var uploadHandler = {
        upload:function(o) {
          if(o.responseText!=undefined) {
            j = o.responseText.evalJSON(true);
            if(!j.error) insertImage(j.url);
          }
          $('image_upload_indicator').hide();
        }
      };
      YAHOO.util.Connect.asyncRequest('POST',registry.url+'upload_image.php', uploadHandler);
      return false;
    } else {
        alert('The extension should be .jpg,.png,.gif');
    }
}

uploadSound=function() {
    if(Validation.get('validate-extension-audio').test($('file_sound').value,$('file_sound'))) {
      $('sound_upload_indicator').show();
      YAHOO.util.Connect.setForm($('form_create_new_post'), true);
      var uploadHandler = {
        upload:function(o) {
          if(o.responseText!=undefined) {
            j = o.responseText.evalJSON(true);
            if(!j.error) insertSound(j.url);
          }
          $('sound_upload_indicator').hide();
        }
      };
      YAHOO.util.Connect.asyncRequest('POST',registry.url+'upload_file.php', uploadHandler);
      return false;
    } else {
        alert('The extension should be .mp3');
    }
}

var globaldata = new Array();
ddrivetipload=function(objtype, obj) {
    url = obj+'?evnt=tooltip';
    if(globaldata[url] && globaldata[url] != '404') {
        ddrivetip(globaldata[url], 400);
        $('dhtmltooltip').style.display="";
        $('dhtmlpointer').style.display="";
        return;
    } else if(globaldata[url]) {
        ddrivetip(globaldata[url], 400);
        $('dhtmltooltip').style.display="none";
        $('dhtmlpointer').style.display="none";
        return;
    }
    ddrivetip('<div style="text-align:center;margin:10px"><img src="'+registry.data_url+'graphics/loading.gif" /></div>', 400);
    new Ajax.Request(encodeURI(decodeURI(url)),
                     {method:'get',onSuccess:function(o) {
                        globaldata[o.request.url] = o.responseText;
                        $('dhtmltooltip').innerHTML = o.responseText;
                        $('dhtmltooltip').style.display="";
                        $('dhtmlpointer').style.display="";
                        $('dhtmltooltip').style.height="auto";
                     },
                     on404:function(o) {
                        globaldata[o.request.url] = '404'
                        $('dhtmltooltip').innerHTML ='404';
                        $('dhtmltooltip').style.display="none";
                        $('dhtmlpointer').style.display="none";
                     }
                     }
    );
}

inittooltips = function() {
    var users = $$('a.usertooltip');
    for(var i=0; i<users.length; i++) {
        users[i].onmouseout=hideddrivetip;
        users[i].onmouseover=function() {ddrivetipload('user', this.href)}
    }
    var posts = $$('a.posttooltip');
    for(var i=0; i<posts.length; i++) {
        posts[i].onmouseout=hideddrivetip;
        posts[i].onmouseover=function() {ddrivetipload('post', this.href)}
    }
    var blogs = $$('a.blogtooltip');
    for(var i=0; i<blogs.length; i++) {
        blogs[i].onmouseout=hideddrivetip;
        blogs[i].onmouseover=function() {ddrivetipload('blog', this.href)}
    }
}

retractablebox = function() {
    var boxes = $$('.box');
    for(var i=0; i<boxes.length; i++) {
        if(boxes[i].down('h2')) {
            boxes[i].down('h2').insert({top: '<a href="javascript:void(0);" onclick="retract(\''+boxes[i].readAttribute('id')+'\');" class="retractablebullet"><img src="'+registry.data_url+'graphics/icons/up.png" alt="" /></a>'});
            if(getCookie(boxes[i].readAttribute('id'))) {
                retract(boxes[i].readAttribute('id'),'without');
            }
        }
    }
}

retract = function(element,effect) {
    element_tochange = $(element).down('h2').up(2).nextSiblings();
    if(effect == 'without') {
        element_tochange[0].toggle();
        $(element).down('h2').down('img').src=registry.data_url+'graphics/icons/down.png';
    } else {
        Effect.toggle(element_tochange[0],'slide',{duration:0.5,queue:'retract'});
        if($(element_tochange[0]).style.display == 'none') {
            $(element).down('h2').down('img').src=registry.data_url+'graphics/icons/up.png';
            deleteCookie(element);
        } else {
            $(element).down('h2').down('img').src=registry.data_url+'graphics/icons/down.png';
            setCookie(element,1);
        }
    }
}


Form.Element.AfterActivity = function(element, callback, delay) {
    element = $(element);
    if (!delay) delay = 0.25;
    new Form.Element.Observer(element, delay, function(element, value) {
        // TODO: display loading indicator
        if (element.activity_timer) clearTimeout(element.activity_timer);
        element.activity_timer = setTimeout(function() {
            callback(element.value);
        }, delay * 1000 + 50);
    });
}

function toggleContent(action, postid) {
    if(action=='show') {
        $('showlink'+postid).hide();
        $('hidelink'+postid).show();
        $('source'+postid).show();
    } else {
        $('showlink'+postid).show();
        $('hidelink'+postid).hide();
        $('source'+postid).hide();
    }
}
function submitcommentanswer(parentid) {
    if($F('post_comment_source_'+parentid)=='') {
        $('advice-required-post_comment_source_'+parentid).show();
        return;
    }
    $('advice-required-post_comment_source_'+parentid).hide();
    $('form_post_comment').hide();
    $('post_comment_source').innerHTML=$F('post_comment_source_'+parentid);
    $('post_comment_parent').value=parentid;
    $('form_post_comment').submit();
}
function showComment(commentid) {
    if($('partial_'+commentid)) $('partial_'+commentid).hide();
    $('all_'+commentid).show();
    $('show_'+commentid).hide();
}
function selectMood(nb) {
    $('mood').value=nb;
    elts = $('moods').childElements();
    for(i=0;i<elts.length;i++) {
        elts[i].style.backgroundColor='transparent';
        elts[i].style.border='1px solid transparent';
        elts[i].style.opacity=null;
    }
    elts[nb-1].style.backgroundColor='#E0ECFF';
    elts[nb-1].style.border='1px solid #A5C9FF';
    elts[nb-1].style.opacity='1';
}

maxTextarea=function(o,i,maxLength) {
 if(o.value.length>maxLength) {
  o.value = o.value.substr(0,maxLength);
  i.innerHTML=0;
 } else {
    i.innerHTML=maxLength - o.value.length;
 }
}

//Manage cookies - Usage : http://www.webreference.com/js/column8/functions.html
var hoststr = document.location.hostname;
var hostname = hoststr.substring(hoststr.indexOf('.'), hoststr.length);

// Copyright (c) 1996-1997 Athenia Associates.
// http://www.webreference.com/js/
// License is granted if and only if this entire
// copyright notice is included. By Tomer Shiran.

function setCookie (name, value, expires, path, domain, secure) {
    var curCookie = name + "=" + escape(value) + ((expires) ? "; expires=" + expires.toGMTString() : "") + "; path=" + ((path) ? path : "/") + "; domain=" + ((domain) ? domain : hostname) + ((secure) ? "; secure" : "");
    document.cookie = curCookie;
}

function getCookie (name) {
  var dc = document.cookie;
  var prefix = name + "=";
  var begin = dc.indexOf("; " + prefix);
  if (begin == -1) {
    begin = dc.indexOf(prefix);
    if (begin != 0) return '';
  } else
    begin += 2;
  var end = document.cookie.indexOf(";", begin);
  if (end == -1)
    end = dc.length;
  return unescape(dc.substring(begin + prefix.length, end));
}

function deleteCookie (name, path, domain) {
  if (getCookie(name)) {
    document.cookie = name + "=" +
    "; path=" + ((path) ? path : "/") +
    "; domain=" + ((domain) ? domain : hostname) +
    "; expires=Thu, 01-Jan-70 00:00:01 GMT";
  }
}

/** js for sso **/

/** facebook **/
function permissionHandler(callSuccess,params,requestQUser) {
    var answer = true;
    if(requestQUser) {
        if(getCookie('fbintrusive')=='on') {
            var answer = true;
        } else if(getCookie('fbintrusive')=='off') {
            var answer = false;
        } else {
            var answer = confirm(askedFacebookQ);
            if(answer) {
                setCookie('fbintrusive', 'on');
            } else {
                setCookie('fbintrusive', 'off');
            }
        }
    }
    if(answer) {
      FB.Connect.showPermissionDialog("email", function(perms) {
        if (!perms) {
          alert(permFbnochoice);
          permissionHandler(callSuccess,params);
        } else {
            var permFbemail = perms.match(new RegExp("email","g"));
            if(permFbemail) {
                if(!params) {
                    callSuccess();
                } else {
                    callSuccess(params);
                }
            } else {
                alert(permFbnotAllowed);
            }
        }
      });
    }
}

function loginFacebook() {
    permissionHandler(fb_login_button_click,registry.url);
}

function addcommentFacebook() {
    permissionHandler(fb_addcomment_button_click);
}

function savepostFacebook() {
    permissionHandler(fb_savepost_button_click);
}

function fb_login_button_click(url){
    FB.Facebook.get_sessionState().waitUntilReady(
      function() {
           var fbUserLoginLink = url+"facebook.php";
           window.location = fbUserLoginLink;
    });
}

function fillFields(xhr){
    if (xhr.status == 200){
        if(xhr.responseText.evalJSON().error){
            alert(xhr.responseText.evalJSON().error);
        }else{
            var user_box = $('fbuserconnect');
            user_box.innerHTML = "<span><fb:profile-pic uid=loggedinuser facebook-logo=true></fb:profile-pic>"
   		                         +loginfblang+" <fb:name uid=loggedinuser useyou=false></fb:name></span>"
   		                         +"<span style=\"float:right;\"><a href=\"\" onclick='FB.Connect.logout(function() { reload(); }); return false;'>"+logoutfblang+"</a></span>";
            FB.XFBML.Host.parseDomTree();
   		    if($('advice-add_comment_error')) $('advice-add_comment_error').hide();
            if($('connect-forms')) $('connect-forms').hide();
            if($('facebookform')) $('facebookform').show();
   		    if($('connectform')) $('connectform').hide();
   		    if(xhr.responseText.evalJSON().cgu=='on'){
   		        if($('user_cgu_fb')) $('user_cgu_fb').show();
   		        if($('connectformfbfixfirst')) $('connectformfbfixfirst').show();
   		        if($('user_diplayname_fbfirst')) $('user_diplayname_fbfirst').innerHTML=xhr.responseText.evalJSON().user_displayname;
   		    }else{
                if($('connectformfbfix')) $('connectformfbfix').show();
                if($('user_diplayname_fb')) $('user_diplayname_fb').innerHTML=xhr.responseText.evalJSON().user_displayname;
   		    }
        }
    }else{
        alert('Error facebook');
   	}
}

function reload() {
    window.location.reload();
}

function displayFBconnected(callfunc) {
    var ajax = new Ajax.Request("/facebookcheckinfos.php?fieldsasked="+((fbnameasked!=false)?fbnameasked:'displayname'), {
        method: 'get',
        onComplete: callfunc
	});
}

function fb_addcomment_button_click() {
    FB.Facebook.get_sessionState().waitUntilReady(
	  function() {
	    displayFBconnected(fillFields);
 	  });
}
function fb_savepost_button_click() {
    FB.Facebook.get_sessionState().waitUntilReady(
	  function() {
	    displayFBconnected(fillFields);
 	  });
}
function publishByAuth() {
    var loginauth=new Validation('form_login_auth',{immediate:true});
    if(loginauth.validate()){
        $('extra_hidden_fields').innerHTML='';
        $('extra_hidden_fields').insert({bottom:new Element('input', {type:'hidden',name:'login_1_user_mail',value:$('login_1_user_mail').value})});
        $('extra_hidden_fields').insert({bottom:new Element('input', {type:'hidden',name:'login_1_user_password',value:$('login_1_user_password').value})});
        if(f1.validate()) {
            $('form_post_comment').submit();
        }
    }
}

function publishFBComment(title,posturl) {
    var fsso=new Validation('facebook_form',{immediate:true});
    $('advice-required-post_comment_source').hide();
    if(fsso.validate()){
        if($('user_publish_fb').checked){
            var template_var = {"post-title": title,
                "post-url": posturl,
                "images":[{"src":"http://corporate.blogspirit.com/images/blogspirit_logo.gif", "href":"http://www.blogspirit.com/fr/index.php"}]
                };
            FB.Connect.showFeedDialog("49208459994",template_var,'',$('post_comment_source').value,null,FB.RequireConnect.require,function() {$('form_post_comment').submit();});
        }else{
            $('extra_hidden_fields').insert({bottom:$('user_cgu_fb')});
            $('form_post_comment').submit();
        }
    }
};

function publishFBPost() {
    var fsso = new Validation('facebook_form',{immediate:true});
    if(fsso.validate()){
        if($('advice-required-post_source')) $('advice-required-post_source').hide();
        $('extra_hidden_fields').insert({bottom:$('user_cgu_fb')});
        $('form_create_new_post').submit();
    }
};

function scrolltoFormError(){
    if($('identification_error')){
        window.location.hash = '#identification_error';
    }
}

function cleanOthersFields(current) {
    if(current != 1) {
        $('login_1_user_mail').value = '';
        $('login_1_user_password').value = '';
    }
    if(current != 2) {
        $('login_2_user_mail').value = '';
        $('login_2_user_password').value = '';
        $('login_2_user_username').value = '';
    }
}
function desactivateErrors(current) {
    if(current != 2) {
        if($('advice-is-unique-value-login_2_user_mail')) $('advice-is-unique-value-login_2_user_mail').hide();
        $('advice-required-login_2_user_mail').hide();
        $('advice-required-login_2_user_password').hide();
        $('advice-required-login_2_user_username').hide();
        $('advice-required-login_2_user_eula').hide();
    }
    if(current != 1) {
        if($('connection_error')) $('connection_error').hide();
        $('advice-required-login_1_user_mail').hide();
        $('advice-required-login_1_user_password').hide();
    }
}
function desactivateOthers(current) {
    if(current != 1) {
        $('login_1_user_mail').removeClassName('required');
        $('login_1_user_password').removeClassName('required');
    }
    if(current != 2) {
        $('login_2_user_mail').removeClassName('required');
        $('login_2_user_password').removeClassName('required');
        $('login_2_user_username').removeClassName( 'required');
        $('login_2_user_eula').removeClassName('required');
    }
}
function activateCurrent(current) {
    switch(current) {
        case 1:
            $('login_1_user_mail').addClassName('required');
            $('login_1_user_password').addClassName('required');
            break;
        case 2:
            $('login_2_user_mail').addClassName('required');
            $('login_2_user_password').addClassName('required');
            $('login_2_user_username').addClassName('required');
            $('login_2_user_eula').addClassName('required');
            break;
        default:
            alert('No current:'+current+' attending');
            break;
    }
}

function getUnreadMessages(box){
  new Ajax.Request(registry.url+'inbox/unreadThread', {
    method: 'post',
    onSuccess: function(o) {
     json=o.responseText.evalJSON(true);
      if(json.count == 0){
        if(box == 'messages') $('countunread').update("");
        if($('countHomemailboxunread')) $('countHomemailboxunread').update("");
      }else{
        if(box == 'messages') $('countunread').update('('+json.count+')');
        if($('countHomemailboxunread')) $('countHomemailboxunread').update('('+json.count+')');
      }
    }
   });
}

/** Mobile **/
function loadmore(moburi,mobtype,mobcallbk,mobfrom,moblimit,mobstropts) {
	$('loading_mobile').toggle();
	new Ajax.Request(moburi+'loadmore.php', {
	method: 'post',
	parameters: {object: mobtype, from:mobfrom, limit:moblimit, stropts:mobstropts},
	onSuccess: function(o) {
	 $('loading_mobile').toggle();
	 json=o.responseText.evalJSON(true);
	 if(json.error == 0) {
		$('more-load-'+mobfrom).toggle();
        if($(mobcallbk)) {
            $(mobcallbk).insert(json.message);
            location.hash = 'more-load-'+(parseInt(mobfrom));
        }
	 }
	}
   });
}
