var gPrevPostId = 0;
function exploreObject(elm){
    var s = "";
    for (var val in elm){
        s += (val + " = " + elm[val]) + "\n";
    }
    alert(s);
}

function addEventToLog(eventTitle, extraData){
     if (!extraData)
         extraData = ""
     ajaxify("/addEventToLog.psp", {'eventTitle': eventTitle, "extraData": extraData })
     return
}
function getJSONFromResponse(resp){
    try{

        return eval('(' + resp.responseText + ')');
    }catch(e){
        //alert(e.message)
        alert("ajax bug")
        return null;
    }

}
function defaultCallback()
{
    //alert("defaultcallback");
}
function failureCallback()
{
   alert("Unable to reach " + gSiteName);
}
function exceptionCallback(req, ex2)
{
   //alert("exception in ajaxify");
   exploreObject(ex2);
}
function ajaxify(url, params, callback)
{
    pars = "";
    if (!callback) callback = defaultCallback();
    //alert("params is " + params);
    if (!params) params = {};
    if (params) params["ajax"] = "1";
    if (params) {
        for(key in params) {
            pars += "&" + key + "=" + encodeURIComponent(params[key]);
        }
    }
    var wrappedCallback = wrapAjaxCallback(callback)
    //alert("url is " + url + " and pars are " + pars);
    var myAjax = new Ajax.Request(url, {method:'post', asynchronous: true, parameters: pars, onException: exceptionCallback, onSuccess: wrappedCallback, onFailure: failureCallback  });
}
function wrapAjaxCallback(fn){
    return function(response){
        if (response.responseText.indexOf("LOGIN_REQUIRED")>=0){
            window.location.reload();
        }else{
            if (fn) return fn(response);
        }
    }
}
function switchFollow(resp){
    var json = getJSONFromResponse(resp);
    var id = json.id;
    var name = json.name;
    var public = json.public;
    var sitename;
    
    if (public) {
        sitename = json.sitename;
    }
    
    var elm = $("follow-item-"+id);
    var val = elm.value;
    if (val=='Follow'){
        elm.value='Unfollow';
        elm.className='unfollow';
        if (public) {
            showPageMessage("You are now following " + name + " on " + sitename);
        }
        else {
            showPageMessage("You are now following " + name);
        }
    }else{
        elm.value='Follow';
        elm.className='follow';
        showPageMessage("You have stopped following " + name)
    }
  }

function showPostActions(id){
    if (gPrevPostId == id) return;
    try{
        if(gPrevPostId) $('postAction-'+gPrevPostId).hide()
    }catch(e){}
    try{
    $('postAction-'+id).show()
    }catch(e){}
    gPrevPostId = id;
}
function showPostDetails(doodleid,uid){
    if (typeof uid == "undefined") {
        uid = doodleid;
    }
    service = "/GetDoodleContent.psp";
    if (gPublic) {
        service = "/PublicGetDoodleContent.psp";
    }
    ajaxify(service, {'doodleId': doodleid, "viewType":"blogView"}, function(resp){
        var responseJSON = getJSONFromResponse(resp);
        $('postDetails-'+uid).innerHTML =  responseJSON.editorContent;
        $('postDetails-'+uid).show();
        $('hidePostDetailsOption-'+uid).show();
        $('showPostDetailsOption-'+uid).hide();

    })
}
//function showPostEditDetails(id){
//    ajaxify("/GetDoodleContent.psp", {'doodleId': id, "viewType":"blogView"}, function(resp){
//        var responseJSON =  getJSONFromResponse(resp);
//        $('postDetails-'+id).innerHTML =  responseJSON.editorContent;
//        $('postDetails-'+id).show();
//        $('hidePostDetailsOption-'+id).show();
//        $('showPostDetailsOption-'+id).hide();
//
//    })
//}
function hidePostDetails(id){
    $('postDetails-'+id).hide();
     $('showPostDetailsOption-'+id).show();
     $('hidePostDetailsOption-'+id).hide();
}

function showTip(elm, tipDivId){
    var tipDiv = $(tipDivId);
    var display = tipDiv.style.display;
    if (display != "none"){
        tipDiv.hide();
        return false;
    }
    hideTip(tipDiv)
    var xy = Position.page(elm);
    //adjust horizontally so tip fits within site width (789px);
    var siteWidth = 789;
    //alert("element-x = " + xy[0] + " tipDiv Width = " +tipDiv.getWidth());
    if (tipDiv.getWidth() > xy[0]){ // Element will disappear off left edge
        tipDiv.style.left = 10 + 'px';
        tipDiv.style.top = f_scrollTop() + xy[1] + 20 + 'px';
    }
    else {
        tipDiv.style.left=xy[0]-tipDiv.getWidth()+ elm.offsetWidth + 'px';
        tipDiv.style.top = f_scrollTop() + xy[1] + 20 + 'px';
    }
    tipDiv.show();
    }

function hideTip(tipDivId){
    var tipDiv = $(tipDivId);
    if (tipDiv)
    tipDiv.hide();
    return false;
   }

function showDropDown(elm, url){
    var el = $("dropDownPopup");
    var display = el.style.display;
    if (display != "none"){
        el.hide();
        return false;
    }
    hideDropDown()
    showLoadingImageInDropDown();
    var xy = Position.page(elm);
    var ddPopup = $("dropDownPopup");
    ddPopup.style.left=xy[0] + 'px';
    ddPopup.style.top= f_scrollTop() + xy[1] + 20 + 'px';
    ddPopup.show();

    ajaxify(url, {}, function(resp){
               var ddPopupContent = $("dropDownPopupContent");
                ddPopupContent.innerHTML = resp.responseText;

                }
            )
}
function hideDropDown(){
    var ddPopup = $("dropDownPopup");
    if (ddPopup)
    ddPopup.hide();
    return false;
   }
function showLoadingImageInDropDown(){
    var ddPopupContent = $("dropDownPopupContent");
    if(ddPopupContent) ddPopupContent.innerHTML  = "<img src='/Theme/networks/image/loading/indicator-black.gif'> loading";
    return false;
}

function createNewTagAndInsert(fieldid, type, doodleId, id){
    $("loadingImageTagDropDown").show();
    var tagNames = $(fieldid).value;
    ajaxify('/CreateNewTag.psp',{'tagNames': tagNames, 'mode':'ajax'},function(resp){
        var responseJSON =  getJSONFromResponse(resp);
        var tagNames = responseJSON.tagNames
        var cleanTagNames = responseJSON.cleanTagNames
        if (tagNames.length == cleanTagNames.length) {
            if (cleanTagNames.length == 1){
                takeAction(cleanTagNames[0], type, doodleId, id);
            }
            else {
                for (var i=0; i <= cleanTagNames.length-1; i++)
                    takeAction(cleanTagNames[i], type, doodleId, id);
            }
        }
        else{
            showError("Only letters, numbers, '-' and '_' allowed.  Please correct and try again.");
        }
       $("loadingImageTagDropDown").hide();
    })
}
function takeAction(tagName, type, doodleId, id) {

    if (id && type== "post"){
        el = $("briefTA_"+id);
        tag = "#" + tagName + " ";
        if ( el.value.indexOf(tag)==-1 ) {
            el.value = el.value + " " + tag;
            showPageMessage("Tag <b>"+ tagName +"</b> added to post.");
        }
        else {
            showPageMessage("Post already tagged <b>" + tagName + "</b>");
        }
        hideDropDown();
    }
    else if (type == "streamview" ) {
       ajaxify('/AddTagToDoodle.psp', {"doodleId": doodleId, 'tagName': tagName}, 
           function(resp){
              hideDropDown();
              var responseJSON =  getJSONFromResponse(resp);
              showPageMessage(responseJSON.status);
              if (responseJSON.success){
                  if($('postBrief-'+doodleId))
                      $('postBrief-'+doodleId).innerHTML = responseJSON.data;
                  if($('postViewBrief-'+doodleId))
                     $('postViewBrief-'+doodleId).innerHTML = responseJSON.data;
              }
           }
       )
    }
}

function showPageMessage(message, time){
    if (!message) return;
    var timer;
    if(!time) time = 10000;
    var el = $('PageMessage');
    el.style.width = '';
    el.innerHTML = '<div class="PageMessageContent">' + message + '</div>';
    divWidth = el.getWidth();
    el.style.left = f_centeredLeft(divWidth) + 'px';
    el.style.width = divWidth + 'px';
    if (isIE()) el.style.top = f_scrollTop() + 1 + 'px';
    el.innerHTML = '<div class="PageMessageContent">' + message + '</div>';
    new Effect.Appear('PageMessage', { duration: 0.35 });
    timer=window.setTimeout("Effect.Fade('PageMessage', { duration: 0.35 });", time)
    Event.observe(el, 'click', function() { window.clearTimeout(timer); Effect.Fade('PageMessage', { duration: 0.35 });});
}
function showPageMessage2(){
    time = 10000;
    var el = $('PageMessage2');
    divWidth = el.getWidth();
    el.style.left = f_centeredLeft(divWidth) + 'px';
    el.style.width = divWidth + 'px';
    if (isIE()) el.style.top = f_scrollTop() + 1 + 'px';
    message = el.innerHTML
    el.innerHTML = '<div class="PageMessageContent">' + dismissHTML + "<br>" + message + '</div>';
    new Effect.Appear('PageMessage2', { duration: 0.35 });
    timer=window.setTimeout("Effect.Fade('PageMessage2', { duration: 0.35 });", time)
    Event.observe(el, 'click', function() { window.clearTimeout(timer); Effect.Fade('PageMessage2', { duration: 0.35 });});
}
function showError(message) {
    showPageMessage(message);
}

function hidePageMessage(){
     try{
         $('PageMessage').hide();
     }catch(e){
         parent.document.getElementById('PageMessage').hide();
     }
}
function hidePageMessage2(){
     try{
         $('PageMessage2').hide();
     }catch(e){
         parent.document.getElementById('PageMessage2').hide();
     }
}
function addRemoveCircleMember(elm, categoryId, personId, persoNickName){
     $('tdspan-'+personId).innerHTML = "<img src='/Theme/networks/image/loading/indicator-black.gif'>";
     ajaxify('/AddRemoveMember.psp', {"categoryId": categoryId, 'participantId': personId},
         function(resp){
                var responseJSON = getJSONFromResponse(resp)
                if (responseJSON.added){
                        elm.innerHTML = 'Remove';
                        elm.className= 'unfollow width80';
                        showPageMessage(persoNickName + " added, and notified by email.")
                    }
                 else if (responseJSON.removed)
                 {
                     elm.innerHTML = 'Add';
                    elm.className= 'follow width80';
                    showPageMessage(persoNickName + " removed.")
                 }
                $('tdspan-'+personId).innerHTML = '';

                 }
         )

 }
function listInCircleDirectory(listingType, categoryId, personId){
     ajaxify('/ListInCircleDirectory.psp', {"listingType": listingType, "categoryId": categoryId, 'participantId': personId},
         function(resp){
                var responseJSON = getJSONFromResponse(resp);
                if (responseJSON.listingType == 0){
                    showPageMessage("Group is not listed.");
                    }
                 else if (responseJSON.listingType == 1){
                    showPageMessage("Group is listed, but co-workers must ask to join.");
                 }
                 else if (responseJSON.listingType == 2){
                    showPageMessage("Group is listed, and any co-worker can join.");
                 }
                 }
         )

}
function joinCircle(elm, categoryId){
    $('tdspan-'+categoryId).innerHTML = "<img src='/Theme/networks/image/loading/indicator-black.gif'>";
    ajaxify('/JoinCircle.psp', {"categoryId": categoryId},
        function(resp){
            var responseJSON = getJSONFromResponse(resp);
            if (responseJSON.joined != 1){
                showError("Please try again.");
            }
            else {
                elm.innerHTML = 'Join';
                elm.disabled = true;
                elm.className= 'unfollow width90';
                showPageMessage("Joined group. <a href='/CircleView.psp?id=" + categoryId + "' class='blueLink'>Click here</a> to view it.");
            }
            $('tdspan-'+categoryId).innerHTML = '';
        }
    )
}
function requestToJoinCircle(elm, categoryId){
    $('tdspan-'+categoryId).innerHTML = "<img src='/Theme/networks/image/loading/indicator-black.gif'>";
    ajaxify('/RequestToJoinCircle.psp', {"categoryId": categoryId},
        function(resp){
            var responseJSON = getJSONFromResponse(resp);
            if (responseJSON.request != 1){
                showError("Please try again.");
            }
            else {
                elm.innerHTML = 'Ask to join';
                elm.disabled = true;
                elm.className= 'unfollow width90';
                showPageMessage("Your request was emailed to the group owner for approval.");
            }
            $('tdspan-'+categoryId).innerHTML = '';
        }
    )
}
function focusText(el) {
    if (el.defaultValue==el.value) {
        el.value = '';
    }
    el.style.color = '#333';
 }
function unblurText(el) {
    el.style.color = '#333';
 }
function blurText(el) {
    el.style.color = '#aaa';
    el.value = el.defaultValue;
 }

function clickin(el){
   if (el.defaultValue==el.value) {
       el.value = '';
   }
   el.style.color = '#333';
   $('addLink').style.display='inline';
}

function clickout(el){
   if (el.value=='') {
     el.value = el.defaultValue;
     el.style.color = '#0078d4';
     $('addLink').style.display='none';
   }
}

function checkForSpecialChars(name){
    var re = /^[\.\s0-9a-zA-Z_\-]+$/;
    if (re.test(name)){
        return true
    }
    return false
}
function createNewCircle(){
     var circleName = $("circleName").value.strip();

     $("newCircleLoadingImg").show();
     if (!checkForSpecialChars(circleName))
     {
         showPageMessage("Names can only contain letters, nums, and . - _.");
         $("newCircleLoadingImg").hide();
         return
     }
     if (circleName.length > 20)
     {
         showPageMessage("Name too long -- has to be 20 characters or less.");
         $("newCircleLoadingImg").hide();
         return
     }
     ajaxify('/CreateNewCircle.psp', {"circleName": circleName},
         function(resp){
            var responseJSON =  getJSONFromResponse(resp);
             if (responseJSON.categoryId){
                 window.location.href = "/AddRemoveMembersList.psp?id="+ responseJSON.categoryId
                 }
             else{
                  showError(responseJSON.message);
             }
            $("newCircleLoadingImg").hide();
         }
     );

}

function DeletePost(id, viewType){
    if(confirm('Do you want to delete this post?')){
        ajaxify('/DeletePost.psp', {"doodleId": id, 'viewType': viewType}, function(resp){
            var responseJSON =  getJSONFromResponse(resp)
            if (responseJSON.success){
                if (viewType == 'post'){
                    window.location.href="/DbopError.psp?title=Message&message=" + "This post has been deleted.  <a class='blueLink' href='/'>Return to home page</a>."
                }
                else{
                showPageMessage("That post has been deleted");
                $('postdiv-'+id).hide();}
            }
            else{
                showError("Post cannot be deleted.")
            }
        })
    }
}
function showFeedback(email) {
    $('divReportABug').show();
    document.frmReportBug.bugcontent.value='';
    if (typeof email != 'undefined' ) document.frmReportBug.email.value=email;
    document.getElementById('content_post').value=document.getElementById('content_post_tpl').value.replace("__UA__",navigator.userAgent);
    $('divReportABug').style.left = f_scrollLeft() + f_clientWidth()/2 - 200 + "px";
    $('divReportABug').style.top = f_scrollTop() + f_maxClientHeight()/2 -100 + "px";
}

function setCircleFromDropDown(name, id, postFormTypeId){
    $("categoryNameSpan").innerHTML=name;
    if ("categoryId_"+postFormTypeId) $("categoryId_"+postFormTypeId).value=id;
    hideDropDown();
    return false;
}
function setFeedbackEmail(f){
    var s = f.content_post.value;
    f.content_post.value = s.replace(/__email__/g, f.email.value);
}
function setFeedbackURL(f){
    var s = f.content_post.value;
    var url = window.location.href;
    f.content_post.value = s.replace(/__url__/g, url);
}
function dismissTip(){
    params = {};
    ajaxify('/DismissTip.psp', params, function(resp){
          $('HomePageTip').hide();
    });
}
