﻿// JScript File
//var g_xmlpath = "http://localhost:11803/www.viikee.com/inc/js/faceset.xml";
//var g_xmlpath = "http://www.viikee.com/inc/js/faceset.xml";
var g_xmlpath = location.href.substr(0, location.href.lastIndexOf('/')+1);
g_xmlpath = g_xmlpath + "inc/js/faceset.xml";


if( document.implementation.hasFeature("XPath", "3.0") ) 
{ 
   // prototying the XMLDocument 
   XMLDocument.prototype.selectNodes = function(cXPathString, xNode) 
   { 
      if( !xNode ) { xNode = this; }  
      var oNSResolver = this.createNSResolver(this.documentElement) 
      var aItems = this.evaluate(cXPathString, xNode, oNSResolver,  
                   XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null) 
      var aResult = []; 
      for( var i = 0; i < aItems.snapshotLength; i++) 
      { 
         aResult[i] =  aItems.snapshotItem(i); 
      } 
      return aResult; 
   } 
   // prototying the Element 
   Element.prototype.selectNodes = function(cXPathString) 
   { 
      if(this.ownerDocument.selectNodes) 
      { 
         return this.ownerDocument.selectNodes(cXPathString, this); 
      } 
      else{throw "For XML Elements Only";} 
   } 
} 


var XMLDOM=function()
{
    var xmlDoc;
    // To create an instance of Microsoft's XML parser, use the following code:
    if (window.ActiveXObject) 
        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    // To create an instance of the XML parser in Mozilla browsers, use the following code:
    else if (document.implementation&&document.implementation.createDocument)
        xmlDoc = document.implementation.createDocument("","doc",null); 
    return xmlDoc;
}

function LoadXMLDoc(path)
{
    var xmlDoc;
    // code for IE
    if (window.ActiveXObject)
    {
        xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
    }
    // code for Mozilla, Firefox, Opera, etc.
    else if (document.implementation && document.implementation.createDocument)
    {
        xmlDoc=document.implementation.createDocument("","",null);
    }
    else
    {
        alert('Your browser cannot handle this script');
    }
    xmlDoc.async=false;
    xmlDoc.preserveWhiteSpace=true
    xmlDoc.load(path);
    if (window.ActiveXObject)
    {
        if (xmlDoc.parseError.errorCode != 0) 
        {
            var myErr = xmlDoc.parseError;
            alert("LoadXMLDoc Error:" + myErr.reason);
            return null;
        }
    }
    return(xmlDoc);
}


function GetFaceSetNodeAttr(node)
{
    var attrList = node.attributes;
    var attrObj = new Object();
    attrObj.id = attrList.getNamedItem("id").value;
    attrObj.title = attrList.getNamedItem("title").value;
    attrObj.ext = attrList.getNamedItem("ext").value;
    attrObj.width = parseInt(attrList.getNamedItem("width").value);
    attrObj.height = parseInt(attrList.getNamedItem("height").value);
    return attrObj;
}

function GetFaceNodeAttr(node)
{
    var attrList = node.attributes;
    var attrObj = new Object();
    attrObj.src = attrList.getNamedItem("s").value;
    attrObj.alt = attrList.getNamedItem("a").value;
    return attrObj;
}

function WriteTab(id)
{
    var xmlDoc = LoadXMLDoc(g_xmlpath);
    var nodeList = xmlDoc.getElementsByTagName('fs');

    document.write(
        "<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\"  >"+
        "    <tr>"+
        "        <td>"+
        "            <table cellpadding=\"0\" cellspacing=\"1\">"+
        "                <tr>"
        );
        
     
    for (var i=0; i<nodeList.length; i++)
    {
        var node = nodeList.item(i);
        var attrObj = GetFaceSetNodeAttr(node);
        
        if(i == 0)
        {
        
        document.write(
            "                    <td id='tab_" + attrObj.id + "' style=\"cursor:hand;border:solid 1px dimgray; height:11px; \" onclick=\"javascript:TabOnClick('" + attrObj.id + "')\"' >"
            );
        }
        else
        {
            document.write(
            "                    <td id='tab_" + attrObj.id + "' style=\"background-color:#D7D7D7;cursor:hand;border:solid 1px dimgray; height:11px; \" onclick=\"javascript:TabOnClick('" + attrObj.id + "')\"' >"
            );
        }
        document.write(
         "                    <div style=\"padding:2px;\">"+
            "                        <span style='vertical-align:middle;'>" + attrObj.title + "</span>" +
            "                        </div>"+
        "                    </td>");
    }
    
    document.write(
        "                </tr>"+
        "            </table>"+
        "        </td>"+
        "    </tr>"+
        "    <tr>"+
        "        <td>"+
        "        <div id='" + id + "'>"
        );
    
    for (var i=0; i<nodeList.length; i++)
    {
        var node = nodeList.item(i);
        var fs = GetFaceSetNodeAttr(node);
        
        if(i == 0)
            document.write(
                "	        <div id='" + fs.id + "' style=\"display: block; border: solid 1px Gray\">"
                );
        else 
             document.write(
                "	        <div id='" + fs.id + "' style=\"display: none; border: solid 1px Gray\">"
                );
       
       var nodes = node.selectNodes("f");
            
        var imgString = "";
        for(var j=0; j< nodes.length; ++j)
        {
            var subNode = nodes[j];
            var f = GetFaceNodeAttr(subNode);
            var paddingStr = "";
            if(fs.width <= 20)
            {
               paddingStr = "padding:4px";     
            }
            else if(fs.width <= 32)
            {
               paddingStr = "padding:2px"; 
            }
            else if(fs.width <= 50)
            {
               paddingStr = "padding:1px"; 
            }
            
            if(i == 0)            
            document.write(
                        "	            <img style='cursor:hand; " + paddingStr + "' src=\"./inc/img/emote/" + f.src + ".gif\" border=\"0\" "+
                        "	                onclick=\"javascript:FaceInsertIntoText('[Smilies" + f.src + "]');\" alt='" + f.alt + "'>"
                        );
                        
            var t =  "	            <img style='cursor:hand; " + paddingStr + "' src='./inc/img/emote/" + f.src + ".gif' border='0' "+
                        "	                onclick=\\\"javascript:FaceInsertIntoText('[Smilies" + f.src + "]')\\\" alt='" + f.alt + "'>";
            imgString += t;   
        }
        
        
        
        document.write(
            "	        </div>"
            );
        document.write("<script>");
        document.write("function " + fs.id + "_LazyLoadFace()");
        document.write("{");
        document.write("    if(_gel('"+ fs.id +"').innerHTML == '')");
        document.write("   _gel('"+ fs.id +"').innerHTML = \"" + imgString + "\";");
        document.write("}");
        document.write("</script>");  
     }  
     
    document.write(
        "           </div>"+
        "        </td>"+
        "    </tr>"+
        "</table>"
        );
}

// GetFaceInsertIntoText　需要在使用FaceTabCtrl的页面定义

function FaceSetfocus() 
{
    GetFaceInsertIntoText().focus();
}

function FaceInsertAtCaret(textEl, text){
    if (textEl.createTextRange && textEl.caretPos){
	    var caretPos = textEl.caretPos;
	    caretPos.text += caretPos.text.charAt(caretPos.text.length - 2) == ' ' ? text + ' ' : text;
    } else if(textEl) {
	    textEl.value += text;
    } else {
	    textEl.value = text;
    }
}

//function FaceInsertIntoText(str)
//{
//    var textObj = GetFaceInsertIntoText();
//    document.all ? FaceInsertAtCaret(textObj, str) : textObj.value += str;
//	FaceSetfocus();
//}

function FaceInsertIntoText(str)
{
    var editor = GetFCKEditor();
    editor.InsertHtml(str);
    return;
    alert(str);
    var textObj = GetFaceInsertIntoText();
    document.all ? FaceInsertAtCaret(textObj, str) : textObj.value += str;
	FaceSetfocus();
}

function FaceTabSwitch(faceDivId, divId)
{
    var tab = _gel('tab_' + divId);
    var tabList = tab.parentNode.childNodes;
    for(var i=0; i<tabList.length; ++i)
    {
        tabList[i].style.backgroundColor = '#D7D7D7';
    }
    tab.style.backgroundColor = 'white';

    var o = _gel(faceDivId);
    for(var i=0; i<o.childNodes.length; ++i)
    {
        var t = o.childNodes[i];
        if(t.id == divId)
        {
            if (t.style.display == 'none')
            {
                t.style.display='block';
                eval(divId + "_LazyLoadFace()");
            }
        }
        else
        {
            if (t.style.display == 'block')
            {
                t.style.display='none';
            }
        }
    }
}
