﻿/*!
 * JavaScript Library v1.0.0
 * Copyright 2010, Saeed Rahman
 * Date: Wed May 26 20:37:56 2010 -0400
 */

        var CharCount = 500;
        var ClickObj1 = "";       
        var ClickObj2 = "";
        var ShowObj = "";
        var ShowObjType="";
        var Dataobj="";
        var EmotList=new Array();
        var EmotListCount=0;
        var SelectionRange=0;
        
function TextOnClick(obj)
    {
        //RestoreCursorPosition();
        if(document.getElementById(ClickObj2).innerHTML>0  )
        {
            var i = 0;
            document.getElementById(ClickObj1).focus();
            if(document.getElementById(ClickObj1).innerHTML =='Post a review on this place...' || document.getElementById(ClickObj1).innerHTML=='Add your review here...')
                {
                    document.getElementById(ClickObj1).innerHTML = "";
                }
            if (ShowObjType=='text')
            {
                if(navigator.appVersion.indexOf('Chrome',0)>0 || navigator.appVersion.indexOf('Safari',0) > 0 || navigator.appVersion.indexOf('MSIE',0)>0)
                {
               // alert(document.getElementById(ClickObj1).value);
                
                if( document.getElementById(ClickObj2).innerHTML > document.getElementById(obj).innerText.length )
                    {
                        //Added by Umer to provide insert functionality
                        //insertTextAtCursor(" " + document.getElementById(obj).innerText + ",");
                        if (document.selection)
                            document.selection.createRange().pasteHTML(" " + document.getElementById(obj).innerText + ",");        
                        else
                          document.execCommand("inserthtml",false," " + document.getElementById(obj).innerText + ",") ;
                        //document.getElementById(ClickObj1).innerHTML = document.getElementById(ClickObj1).innerHTML + " " + document.getElementById(obj).innerText + ",";
                        SetCharCount();
                       // document.getElementById(ClickObj2).innerHTML = 500 - document.getElementById(ClickObj1).innerHTML.length;
                   }
                    //document.getElementById(ClickObj2).value =  CharCount;             
                }
                else 
                {
                 if( document.getElementById(ClickObj2).innerHTML > document.getElementById(obj).firstChild.nodeValue.trim().length)
                    {
                         //Added by Umer to provide insert functionality
                        //insertTextAtCursor(" " + document.getElementById(obj).firstChild.nodeValue.trim() + ",");
                        if (document.selection)
                            document.selection.createRange().pasteHTML(" " + document.getElementById(obj).firstChild.nodeValue.trim() + ",");        
                        else
                          document.execCommand("inserthtml",false," " + " " + document.getElementById(obj).firstChild.nodeValue.trim() + ",") ;
                        //document.getElementById(ClickObj1).innerHTML = document.getElementById(ClickObj1).innerHTML + " " + document.getElementById(obj).firstChild.nodeValue.trim() + ",";//.firstChild.nodeValue;                             
                        //document.getElementById(ClickObj2).innerHTML = 500 - document.getElementById(ClickObj1).innerHTML.length;
                        SetCharCount();
                    }
                    //document.getElementById(ClickObj2).value =  CharCount;  
                }
            }
            else  // no condition required  as emoticon = 1 character
            {
               
               /////////////////////////////////
               //Added by Umer to provide insert functionality
                       // insertHtmlAtCursor("<img src='" + document.getElementById(obj).src + "'></img>");
               if (document.selection)
                            document.selection.createRange().pasteHTML("<img src='" + document.getElementById(obj).src + "' style='vertical-align:middle;'/>");        
               else
                          document.execCommand("inserthtml",false,"<img src='" + document.getElementById(obj).src + "' style='vertical-align:middle;'/>") ;
                           //Modified by Umer on 18 08 10 fix for firefox generating dirty code
                //saveSelection(); 
                //document.getElementById(ClickObj1).innerHTML=document.getElementById(ClickObj1).innerHTML.replace('<br _moz_dirty="">',' ');
                //document.getElementById(ClickObj1).innerHTML=document.getElementById(ClickObj1).innerHTML.replace('<br>',' ');
                //restoreSelection();
                //document.getElementById(ClickObj1).innerHTML = document.getElementById(ClickObj1).innerHTML + "<img src='" + document.getElementById(obj).src + "' style='vertical-align:middle'></img>";
               document.getElementById(ClickObj2).innerHTML = document.getElementById(ClickObj2).innerHTML - 1;
               AddEmotToList(document.getElementById(obj));//alert(document.getElementById(ClickObj1).innerHTML);
               //SetCharCount();
               
            }
            //document.getElementById(ClickObj1).focus();  
            getData();        
//            HideQRDiv();
        }
        
    }
        function putTxtDiv(obj,even,obj2,obj3)
        {
            
            ClickObj1 = obj;
            ClickObj2 = obj2;
            Dataobj=obj3;
            if(document.getElementById(ClickObj1).innerHTML =='Post a review on this place...' || document.getElementById(ClickObj1).innerHTML=='Add your review here...')
                {
                    document.getElementById(ClickObj1).innerHTML= "";
                }
            var Key = even.keyCode; 
            switch(Key)
            {
              case 16:
                 //alert("Shift");
                  break; 
              case 17:
                  //alert("Ctrl");
                  break;
              case 18:
                  //alert("Alt");
                  break;
              case 19:
                 //alert("Pause");
                  break;
              case 37:
                  //alert("Arrow Left");
                  break;
              case 38:
                  //alert("Arrow Up");
                  break;
              case 39:
                  //alert("Arrow Right");
                  break;
              case 40:
                  //alert("Arrow Down");
                  break;
              case 13:
//                 alert("Enter");
                getData();
              // countDown();
              // countDown();
                 break; 
              case 46:
//                  alert("Delete");
               //   countUp();
                    ResetIconArray();
                  getData();
                //  SetCharCount();
                  break;
              case 8:
//                  alert("Backspace");
               //   countUp();
               ResetIconArray();
                  getData();
                //  document.getElementById(ClickObj1).innerHTML = document.getElementById(ClickObj1).innerHTML;
               //   SetCharCount();
                  break;
              default:
               getData();
              // countDown();
//                alert(Key);
            }
                
            SetCharCount();
        }
       function ShowQRDiv(obj1,obj2,eObj,mObj,objType,dataObj)
        {
            ClickObj1 = obj1;
            ClickObj2 = obj2;
            ShowObjType=objType;
            Dataobj=dataObj;
            if(ShowObj!="")
            {
                document.getElementById(ShowObj).style.display='none';
            }
            ShowObj = mObj;
            var EmoDiv = document.getElementById(ShowObj);
            EmoDiv.style.display='inline';
            EmoDiv.style.position="absolute";                      
         if(document.all)
            {
                EmoDiv.style.left = eObj.x+5+"px";
                EmoDiv.style.top = eObj.y+5+"px";
            } 
            else
            {
                EmoDiv.style.left = (eObj.pageX-200)+"px";
                EmoDiv.style.top = (eObj.pageY)+"px";
               
            } 
        }
        function ShowEmotDiv(obj1,obj2,eObj,mObj,objType,dataObj)
        {
            ClickObj1 = obj1;
            ClickObj2 = obj2;
            ShowObjType=objType;
            Dataobj=dataObj;
            if(ShowObj!="")
            {
                document.getElementById(ShowObj).style.display='none';
            }
            ShowObj = mObj;
            var EmoDiv = document.getElementById(ShowObj);
            SetDivLocation(650,450,EmoDiv)
            EmoDiv.style.display='block';
            EmoDiv.style.position='fixed';
          //  EmoDiv.style.left = "200px";
          //  EmoDiv.style.top = "50px";

//            EmoDiv.style.position="absolute";                      
//         if(document.all)
//            {
//                EmoDiv.style.left = eObj.x-35+"px";
//                EmoDiv.style.top = eObj.y-330+"px";
//            } 
//            else
//            {
//                EmoDiv.style.left = (eObj.pageX-200)+"px";
//                EmoDiv.style.top = (eObj.pageY)+"px";
//               
//            } 
        }
       function HideQRDiv()
        {
            //ClickObj = "";
            if (ShowObj!="")
            {
                var EmoDiv = document.getElementById(ShowObj);
                EmoDiv.style.display='none';
            }
        }
        function MakeDivEmpty(obj)
        {
            if(obj.innerHTML =='Post a review on this place...' || obj.innerHTML=='Add your review here...')
                {
                    obj.innerHTML= "";
                }
        }
        function MakeDivWithDefaultText(obj)
        {
            if(obj.innerHTML =="")
            {
                obj.innerHTML ='Post a review on this place...' ;
            }
        }
        
        function VerifyCounter(doc,obj2)
        {
        
          document.getElementById(obj2).innerHTML = 500 - doc.value.length; 
        }
        function getData()
        {
            var data = "";
            var dataObj=document.getElementById(Dataobj);
                    data = document.getElementById(ClickObj1).innerHTML;
                    data = data.replace("<P>&nbsp;</P>", "");
                    data = data.replace("<P></P>", "");
                    data = data.replace("<P>", "");
                    data = data.replace("</P>", "");
                    
                    // Modified by Umer on 18 Aug 2010 to solve cursor issue
                    //document.getElementById(ClickObj1).innerHTML = data;
                    
                        while(data.indexOf("<")!=-1)
                            data = data.replace("<", "&lt;");
                        while(data.indexOf(">")!=-1)
                            data = data.replace(">", "&gt;");
                        dataObj.value = data;
                            
        }
        function ShowText(obj,msg)
        {
           document.getElementById('emoMsg').innerHTML = msg;
        }
        
        function AddEmotToList(obj)
        {
           EmotList[EmotListCount++]=obj;//alert(EmotList[0]);
        }
        function SetCharCount()
        {   //Modified by Umer on 18 08 10
            // Added code for firefox compatibility
            
            var hasInnerText = (document.getElementsByTagName("body")[0].innerText != undefined) ? true : false;
            if (hasInnerText ==true)
                document.getElementById(ClickObj2).innerHTML = CharCount - document.getElementById(ClickObj1).innerText.length;
            else 
                document.getElementById(ClickObj2).innerHTML = CharCount - document.getElementById(ClickObj1).textContent.length;
                
            document.getElementById(ClickObj2).innerHTML = document.getElementById(ClickObj2).innerHTML - EmotList.length;
            
            if (hasInnerText ==true)
            {
                if (document.getElementById(ClickObj1).innerText.length==0 && document.getElementById(ClickObj1).innerHTML.indexOf('<')==-1)
                {
                    document.getElementById(ClickObj2).innerHTML =CharCount ;
                }
            }
            else
            {
                if (document.getElementById(ClickObj1).textContent.length==0 && document.getElementById(ClickObj1).innerHTML.indexOf('<')==-1)
                {
                    document.getElementById(ClickObj2).innerHTML =CharCount ;
                }
            }
        }
        function CheckCharacterCount(obj1,obj2,even)
        {   
                ClickObj1 = obj1;
                if(document.getElementById(ClickObj1).innerHTML =='Post a review on this place...' || document.getElementById(ClickObj1).innerHTML=='Add your review here...')
                {
                    document.getElementById(ClickObj1).innerHTML= "";
                }
            ClickObj2 = obj2;
            if (even.keyCode==8 || even.keyCode==46 || even.keyCode == 37 ||even.keyCode == 38 || even.keyCode == 39 || even.keyCode == 40 )
            {
                return true;
            }
            if (document.getElementById(ClickObj2).innerHTML <=0)
            {
                return false;
            }
            else if (even.keyCode==60)
            {
                return false;
            }
            else if (even.keyCode==62)
            {
                return false;
            }
            else
            {
                return true;
            }
        }
        function ResetIconArray()
        {
            if (EmotList.length>0)
            {
                EmotList=new Array();
//                EmotList= document.getElementById(ClickObj1).innerHTML.split("<");
//            }
            var startInd=0;
            var endIndex=0;
            var substr="";
            var arrayIndex=0;
            var innerHTM=document.getElementById(ClickObj1).innerHTML;
            while(1)
            {
                startInd=innerHTM.toLowerCase().indexOf("<img>",startInd);
                endIndex=innerHTM.toLowerCase().indexOf("</img>",startInd)+6;
                if (startInd<0)
                    break;
                else 
                {
                    EmotList[arrayIndex]=innerHTM.substr(startInd+5,endIndex-startInd);
                    arrayIndex++;
                    startInd=startInd+1;
                 }   
            }
           }
        }
       
//    function saveSelection() 
//    {
//        if (window.getSelection) {
//            sel = window.getSelection();
//            if (sel.getRangeAt && sel.rangeCount) {
//                return sel.getRangeAt(0);
//            }
//        } 
//        else if (document.selection && document.selection.createRange) {
//            return document.selection.createRange();
//        }
//        return null;
//    }

//    function restoreSelection(range) 
//    {
//        if (range) 
//        {
//            if (window.getSelection) {
//            sel = window.getSelection();
//            sel.removeAllRanges();
//            sel.addRange(range);
//            }   
//            else if (document.selection && range.select) 
//            {
//                range.select();
//            }
//        }
//    }

//    function KeepCursorPosition()
//    {
//        SelectionRange=saveSelection() ;
//        
//    }
//    function RestoreCursorPosition()
//    {
//        restoreSelection(SelectionRange);
//    }
//    function insertTextAtCursor(text) {
//        var sel, range, html;
//        if (window.getSelection) 
//        {
//            sel = window.getSelection();
//            if (sel.getRangeAt && sel.rangeCount) {
//            range = sel.getRangeAt(0);
//            range.insertNode( document.createTextNode(text) );
//            }
//            } else if (document.selection && document.selection.createRange) {
//            range = document.selection.createRange();
//            range.pasteHTML(text);
//        }
//}

//function insertHtmlAtCursor(html) {
//   var sel, range, html,node;
//        if (window.getSelection) 
//        {
//            sel = window.getSelection();
//            if (sel.getRangeAt && sel.rangeCount) {
//            range = sel.getRangeAt(0);
//            node = range.createContextualFragment(html);
//            range.insertNode(node);
//            }
//         } else if (document.selection && document.selection.createRange) {
//        document.selection.createRange().pasteHTML(html);
//    }
//}

var savedRange,isInFocus;
function saveSelection()
{
    if(window.getSelection)//non IE Browsers
    {
        savedRange = window.getSelection().getRangeAt(0);
    }
    else if(document.selection)//IE
    {
        savedRange = document.selection.createRange();  //alert(savedRange );
    } 
}

function restoreSelection()
{
    isInFocus = true;
    //document.getElementById('divtxt').focus();
    if (savedRange != null) {
        if (window.getSelection)//non IE and there is already a selection
        {
            var s = window.getSelection();
            if (s.rangeCount > 0) 
                s.removeAllRanges();
            s.addRange(savedRange);
        }
        else 
            if (document.createRange)//non IE and no selection
            {
                window.getSelection().addRange(savedRange);
            }
            else 
                if (document.selection)//IE
                {
                    savedRange.select();
                }
    }
}
//this part onwards is only needed if you want to restore selection onclick
var isInFocus = false;
function onDivBlur()
{
    isInFocus = false;
}

function cancelEvent(e)
{
    if (isInFocus == false && savedRange != null) {
        if (e && e.preventDefault) {
            //alert("FF");
            e.stopPropagation(); // DOM style (return false doesn't always work in FF)
            e.preventDefault();
        }
        else {
            window.event.cancelBubble = true;//IE stopPropagation
        }
        restoreSelection();
        return false; // false = IE style
    }
}
function focusFunc()
{
    document.getElementById(ClickObj1).focus();
}
         
        
