﻿// JScript File

var replyControl;
var replyTextBox;
var replyTextBox_remaining;

var answerText;
var currentQuestionId = 0;
var newQuestionText;
var currentDate = new Date();
var firstQuestionId="";
var gotFirstQuestionId=false;
var replyMaxChars = 400;
var questionMaxChars = 400;

function askQuestion()
{
    if(ID!=0)
    {
        newQuestionText = getItem('questionField').value;
        if(newQuestionText.length ==0)
            return;
        newQuestionText = newQuestionText.replace(/\n/,"<br />");  
        var userId  = (ID==0? 1638:ID);
        getItem("questionsLoadingImage").style.display='block';
        getItem("remainingQuestionText").innerHTML=questionMaxChars;
        if(isClassifiedDetailPage)
        	AdsContribution.AskQuestion(newQuestionText, userId, getItem('itemIdField').value, onAskQuestionComplete, onTimeout, onAskQuestionError);
		else if (isDirectoryDetailPage)
			DirContribution.AskQuestion(newQuestionText, userId, getItem('itemIdField').value, onAskQuestionComplete, onTimeout, onAskQuestionError);
        else            
            Contribution.AskQuestion(newQuestionText, userId, getItem('itemIdField').value,onAskQuestionComplete, onTimeout, onAskQuestionError);
    }
    else
    {
        ActionAfterLogin = "askQuestion()";
        showAccessCard();
    }
   
}


function login(){
	window.parent.ActionAfterLogin+="frames[0].checkLogin();";
	window.parent.ActionAfterLogOut+="frames[0].checkLogin();";
	window.parent.showAccessCard();
}

//updated by mhassan 
function onAskQuestionComplete(result)
{
    if(result != -1)
    {    
        currentQuestionId = result;
        var divNewQuestion = document.createElement("div");
        var divNewAnswersBlock = document.createElement("div");
        divNewQuestion.innerHTML = getItem('divDummyQuestion').innerHTML.replace(/99999/g,result);
        
        divNewQuestion.id = 'divQuestion' + result;
        divNewAnswersBlock.id = 'answersBlock' + result;
        $get('askingUserName',divNewQuestion).innerHTML = (ID==0?'Anonymous':USERNAME);
        $get('questionDate',divNewQuestion).innerHTML = currentDate.toDateString();
        $get('questionText',divNewQuestion).innerHTML = newQuestionText;
        divNewQuestion.style.display = 'none';
        divNewQuestion.className = 'question-box';
        
        divNewQuestion.appendChild(divNewAnswersBlock);
        if(firstQuestionId == "")
            getItem('divQuestionsContainer').appendChild(divNewQuestion);
        else
            getItem('divQuestionsContainer').insertBefore(divNewQuestion,getItem(firstQuestionId));
        getItem('questionField').value = '';
        QuestionsId[QuestionsId.length] = result;
        //update first question id 
        firstQuestionId = divNewQuestion.id ;
        //getItem("firstQuestionId").value = divNewQuestion.id ;
        showHideAnswers(); //without params to close all questions
        
        
        //Reintialize paging (calc pages and view the first page with the new question)
        AllQuestions = document.getElementsByClassName("question-box",getItem("divQuestionsContainer"));
        intializePaging(1); //intialize with add new question option
        //close all opened questions

        //update the count of the questions in the navigation pan for classifieds only
        if (isClassifiedDetailPage)
        {
        	var iQuestionsCount = parseInt(getItem("spnQuestionCount").innerHTML.replace('(','').replace(')',''));
        	if (!iQuestionsCount) iQuestionsCount = 0;
        	getItem("spnQuestionCount").innerHTML = '(' + (iQuestionsCount + 1) + ')';
        }
	}
    else
        onAskQuestionError();
        
   getItem("questionsLoadingImage").style.display='none';
}
function onAskQuestionError(err)
{
    showMessage('Error submitting your question, please try again later.',1);
}

function replyToQuestion(questionId)
{
    if(ID!=0)
    {
            
            currentQuestionId=questionId;
            replyTextBox = getItem('replyTextBox'+questionId);
            replyTextBox_remaining = getItem("remaining"+questionId);
            replyControl = getItem("dvReplyControl"+questionId);
            if(replyTextBox.value == '')
            {
                //showHide('replyTextBox'+questionId);
                //close any open question
                showHideAnswers(); //without params to close all questions
                //open current question if closed but never close EVEN IF OPENED
                getItem("answersBlock" + questionId).style.display='block'; 
                
                replyControl.style.display='block';
                replyTextBox.focus();
                return;
            }
            answerText = replyTextBox.value;
            var userId  = (ID==0? 1638:ID);
            getItem("replyLoadingImage").style.display = 'block';
            if (isClassifiedDetailPage)
            	AdsContribution.ReplyToQuestion(replyTextBox.value, userId, questionId, onReplyCompleted, onTimeout, onReplyError);
			else if (isDirectoryDetailPage)
				DirContribution.ReplyToQuestion(replyTextBox.value, userId, questionId, onReplyCompleted, onTimeout, onReplyError);
            else
                Contribution.ReplyToQuestion(replyTextBox.value, userId, questionId, onReplyCompleted,onTimeout, onReplyError);
     }
    else
    {
        showAccessCard();
    }
}

function onReplyCompleted(result)
{
    // reply commited, show the answer div for it
    if(result != -1)
    {
        replyControl.style.display = 'none';
        
        addAnswer(result, answerText);
        replyTextBox.value = '';
        replyTextBox_remaining.innerHTML= replyMaxChars;
        
        adjustQuestionTextView(currentQuestionId);
    }
    else
        onReplyError();
        
    getItem("replyLoadingImage").style.display='none';
}

function onReplyError(err)
{
    showMessage('Error submitting your reply, please try again later.',1);
}
function onTimeout(err)
{
    showMessage('Reply submit has been timedout, please try again later.',1);
}
              
function addAnswer(answerId, answerText)
{
      var newAnswer = document.createElement("div");
      newAnswer.innerHTML  = getItem('dummyAnswer').innerHTML;
      newAnswer.id = "answerDiv" + answerId;
      $get('answerDate', newAnswer).innerHTML = 'answered at ' + currentDate.toDateString();
      $get('answerText', newAnswer).innerHTML = answerText.replace(/\n/,"<br />");
      getItem('divQuestion' + currentQuestionId).appendChild(newAnswer);
      getItem('answersBlock'+currentQuestionId).appendChild(newAnswer);
      $get(newAnswer.id).style.display='block';
      
}
  

//Added By mhassan
//show answers for selected quetsion only
function showHideAnswers(QuestionId){
    var answersBlock = "answersBlock";
    
    for(var i=0;i<QuestionsId.length;i++)
        {
            if(QuestionId == QuestionsId[i])
                {
                    showHide(answersBlock+QuestionId);
                    currentQuestionId =QuestionId;
                }
            else
               {
                    getItem(answersBlock+QuestionsId[i]).style.display='none';
               }
            getItem("dvReplyControl" + QuestionsId[i]).style.display='none';
            
            getItem("replyTextBox" + QuestionsId[i]).value='';
            getItem("remaining" + QuestionsId[i]).innerHTML=replyMaxChars;
        }
}


function adjustQuestionsTextView()
{
   //var QId = ControlID.substr(10,ControlID.length);
//   for(var x=0;x<QuestionHasNoAnswers.length;x++)
//   {
//        //replaceStyle("txtQuestion" +QuestionHasNoAnswers[x],"question-q-dimmed");
//   }
}
function adjustQuestionTextView(QuestionID)
{
   replaceStyle("txtQuestion" +QuestionID,"question-q");
}


//------------------------------------------------------//
// Paging functions  -- Added by mhassan on 1-12-2007   //
//------------------------------------------------------//
var currentPage = 1;
var previousPage = 0;
var pageSize = 7; 
var activePage = "<a href=\"javascript:adjustPagingView(##pageNum##);\"><p class=\"nav-page-no\">##pageNum##</p></a>";
var dimmedPage = "<p class=\"nav-page-no\">##pageNum##</p>";



//Navigate between pages
function adjustPagingView(currentPage,addQuestion)
{
setCurrentPage(previousPage,currentPage);

//<!-- hide previous page Start -->   
 if(previousPage > 0)
 {
 var Start = (previousPage -1) * pageSize;
 var End = Start + pageSize;
 
 if(addQuestion)
    End += 1;
    
 if(End > AllQuestions.length )
    End = AllQuestions.length;
 
   for(var i= Start;i<End;i++)
   {
       AllQuestions[i].style.display = "none";
   }
 }
 //<!-- hide previous page End -->   
 
//<!-- Show new page Start -->   
 var Start = (currentPage-1) * pageSize;
 var End = Start + pageSize; 
 if(End > AllQuestions.length )
    End = AllQuestions.length;
  
for(var i= Start;i<End;i++)
{
   AllQuestions[i].style.display = "block";
}
//<!-- Show new page End -->   
 
 previousPage = currentPage;

//Close the opened question in the previous page
if(currentQuestionId != undefined && currentQuestionId != 0)
    {
        getItem("answersBlock" + currentQuestionId).style.display='none';
        getItem("dvReplyControl" + currentQuestionId).style.display='none';
        
        getItem("replyTextBox" + currentQuestionId).value='';
        getItem("remaining" + currentQuestionId).innerHTML=replyMaxChars;
        
    }
}


//calculate and draw pages
function calcPages()
{
    //Handle Pages 
    var pagesNav = getItem("questions-nav-pages");
    
    var numOfPages = getNumOfPages();
    
    pagesNav.innerHTML = "";
    for(var i=1;i<=numOfPages;i++)
    {
      var page = document.createElement("div");
      page.id = "questions-navPage" + i;
      page.className = "nav-page";
      page.innerHTML = replaceAll( activePage, [["##pageNum##", i]]);
      pagesNav.appendChild(page);
    }
}


//set current and previous pages style
function setCurrentPage(prevPage,currPage)
{
if(AllQuestions.length > 0)
{
     if(prevPage> 0)
     {
         replaceStyle("questions-navPage"+prevPage ,"nav-page");
         getItem("questions-navPage"+prevPage).innerHTML = replaceAll(activePage, [["##pageNum##", prevPage]]);
     }
     
     //Set current page
     replaceStyle("questions-navPage"+currPage ,"nav-page-current");
     getItem("questions-navPage"+currPage).innerHTML = dimmedPage.replace("##pageNum##",currPage);
}
}


//intialize paging (onload) and (on adding new question)
function intializePaging(addQuestion)
{
    calcPages();
    adjustPagingView(1,addQuestion);
}

//get number of pages depending on page size
function getNumOfPages ()
{
    var numOfQuestions = AllQuestions.length;
    if (numOfQuestions > 0)
    {
        var numOfPages = 1;
        if(numOfQuestions % pageSize >0 )
            numOfPages = parseInt(numOfQuestions /pageSize )+1;
        else
            numOfPages = parseInt(numOfQuestions /pageSize);

    }
    return numOfPages;
}


//to replace all occurrences in astring
//it's better to be in main.js
//sample: y = replaceAll( y , [["{6}", "#"]
function replaceAll( str, replacements ) {
	
    for (var repIndex = 0; repIndex < replacements.length; repIndex++ ) {
        var idx = str.indexOf( replacements[repIndex][0] );
		
        while ( idx > -1 ) {
            str = str.replace( replacements[repIndex][0], replacements[repIndex][1] ); 
            idx = str.indexOf( replacements[repIndex][0] );
        }
    }
    return str;
}



document.getElementsByClassName = function(className, parentElement) {
  if (Prototype.BrowserFeatures.XPath) {
    var q = ".//*[contains(concat(' ', @class, ' '), ' " + className + " ')]";
    return document._getElementsByXPath(q, parentElement);
  } else {
    var children = ($(parentElement) || document.body).getElementsByTagName('*');
    var elements = [], child;
    for (var i = 0, length = children.length; i < length; i++) {
      child = children[i];
      if (Element.hasClassName(child, className))
        elements.push(Element.extend(child));
    }
    return elements;
  }
};




 