﻿

/******** AJAX related scripts ********/


function GetXMLHTTPObject()
{
    var xmlHttp;
    try
    {   //Firefox, Opera 8.0+, Safari  
        xmlHttp=new XMLHttpRequest();  
    }
    catch (e)
    {  // Internet Explorer  
        try
        {    
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");    
        }
        catch (e)
        { 
           try
            {
                  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");      
            }
            catch (e)
            {
                  alert("Browser-ul tau nu suporta AJAX!");      
                  return false;      
            }    
        }  
    }  
    return xmlHttp;
}

/******   CommentObject  ******/
function CommentObj(commentString)
{
    var members = new Array();
    this.Render = RenderCommentObject;   
    try
    {  
        members = commentString.split("^");      
        this.CommentId      = members[0];
        this.Author         = members[1];
        this.PostingDate    = members[2];        
        this.Rating         = members[3];
        this.CommentText    = members[4];    
    }
    catch (e)
    {
        this.CommentId      = "";
        this.Author         = "";
        this.PostingDate    = "";
        this.Rating         = "";
        this.CommentText    = "";
    }
}

function RenderCommentObject()
{
    var row = document.createElement("tr");
    var cell = document.createElement("td");
    cell.innerHTML = "<div style=\"border:solid 1px #eee; width:565px;\"><div style=\"background-color:#eee;padding-left:10px;padding-bottom:2px;padding-top:2px;\"><b>"+this.Author+"</b> - (" + this.PostingDate+") &nbsp; Rating: "+ this.Rating+"</div><div style=\"padding:10px;\">"+this.CommentText+"</div></div><div style=\"clear:both;\">&nbsp</div>";    
    row.appendChild(cell);
    
    return  row;
}
/******   END CommentObject  ******/

var globalComents = false;

function HitEntity(id,elementId, getComments)
{
    var xmlHttp = GetXMLHTTPObject();
    globalComents = getComments;
    
    xmlHttp.onreadystatechange = function()
    {
        if(xmlHttp.readyState==4)
        {
            var elem = document.getElementById(elementId);
            if(false == globalComents)
                elem.innerHTML = "Vizualizari: " + xmlHttp.responseText;
            else
            {
                //var values = new Array();
                //values = xmlHttp.responseText.split("_");
                //elem.innerHTML = "Vizualizari: " + values[0];
                elem.innerHTML = "Vizualizari: " +xmlHttp.responseText;
                //document.getElementById("lblRatingGeneral").innerHTML = "Rating general: " + values[1];
                //RenderCommentsControl(values[2]);
            }
        }
    }        
    xmlHttp.open("GET", "AJAXHandler.ashx?getComments=" + getComments + "&inc=true&id=" + id + "&no=" + Math.random());
    xmlHttp.send(null);  
}

function RenderCommentsControl(commentsXML)
{    
    return;
    var table = document.getElementById("tablePostComment");    
    var elements = new Array();
    elements = commentsXML.split("+");
    var rating = elements[1];
    var cElement = document.getElementById("lblComentarii");
    if(null!= cElement)
    {    
        if(elements[0]=="")   
        {   
            cElement.innerHTML = "Nu exista comentarii";
        }
        else
        {             
            var comments = GetObjectCollection(elements[0]);
            cElement.innerHTML = "Comentarii: " + comments.length;
            var commentsContainerTable = document.getElementById("tableComments");
            for(var i=0; i<comments.length; i++)
            {
                if(document.all)
                commentsContainerTable.tBodies[0].appendChild(comments[i].Render());
                  else
                commentsContainerTable.appendChild(comments[i].Render());      
            }
        }
    }            
}

function GetObjectCollection(commentsString, objectType)
{
    if(commentsString == "")
        return null;
        
    var stringObjArray = new Array();
    stringObjArray  = commentsString.split("|");
    
    var ObjArray = new Array(stringObjArray.length);
    for(var i = 0; i < stringObjArray.length; i++)
        ObjArray[i] = new CommentObj(stringObjArray[i]);    
    return ObjArray;
}

function ShowPostPanel(show)
{
    if(show)
    {
        document.getElementById("tablePostComment").style.display = "";
        document.getElementById("tableComments").style.display = "none";
    }
    else
    {
        document.getElementById("tablePostComment").style.display = "none";
        document.getElementById("tableComments").style.display = "";
    }    
}

function PostComment()
{
    debugger;
    var author = document.getElementById("txtPostAuthor").value;
    var comment = document.getElementById("txtPostText").value;
    var entityId = _EntityId;
    var selectElement = document.getElementById("selectRating")
    var rating = selectElement.options[selectElement.selectedIndex].text;
    
    //if(!comment.Match("([A-Z,a-z,0-9]*)"))
    if( false == PrimaryInputValidation(comment,new Array("^","&","_","|","?"), "Comentariul") || false == PrimaryInputValidation(author, new Array("^","&","_","|","?"), "Comentariul"))
        return;
        
    var url = "AJAXHandler.ashx?postMessage=true&author="+author+"&rating="+rating+"&commentText="+comment+"&entityId="+entityId;
    var xmlHttp = GetXMLHTTPObject();
        
    xmlHttp.onreadystatechange = function()
    {
        if(xmlHttp.readyState==4)
        {
            var currentTime = new Date()
            var month = currentTime.getMonth() + 1
            var day = currentTime.getDate()
            var year = currentTime.getFullYear()
            
            var c = new CommentObj();            
            c.Author         = author;
            c.PostingDate    = month + "/" + day + "/" + year;
            c.Rating         = rating;
            c.CommentText    = comment;
            
            var commentsContainerTable = document.getElementById("tableComments");
            if(document.all)
            commentsContainerTable.tBodies[0].appendChild(c.Render());
              else
            commentsContainerTable.appendChild(c.Render());      
            ShowPostPanel(false);
            document.getElementById("lblRatingGeneral").innerHTML = "Rating general:" + xmlHttp.responseText; 
            alert("Comentariul a fost trimis");
        }
    }        
    xmlHttp.open("GET", url+"&no=" + Math.random());
    xmlHttp.send(null);  
}

function PrimaryInputValidation(inputText, characters, inputName)
{
    if(inputText == "" || inputText == null)
        return false;
        
    if(characters == null || characters.length == 0)
        return true;
    if(inputText.length>1500)
    {
        alert("Comentariul nu poate avea mai mult de 1500 de caractere.");
        return;
    }
        
    for(var i=0;i<characters.length;i++)
    {
        if(inputText.lastIndexOf(characters[i])!=-1)
        {
            alert(inputName+" contine caractere interzise: "+characters[i]);
            return false;
        }
    }
    return true;
}
