/*
  Copyright (c) 2008 Negeso Ukraine

  This software is the confidential and proprietary information of Negeso
  ("Confidential Information"). You shall not disclose such Confidential 
  Information and shall use it only in accordance with the terms of the 
  license agreement you entered into with Negeso.

  Script for dynamic acting with news list. First approximation :)
  
  Script uses /www/script/AJAX_webservice.js
 
  @version		2008.01.03
  @author		Rostislav 'KOTT' Brizgunov
*/

/* This message should be re-defined in the XSL */
var s_DeleteConfirmation = "DELETE_CONFIRMATION";

function deleteNewsListItem(listId, listItemId) {
	if (confirm(s_DeleteConfirmation)) {
		var loc = location.href;
		AJAX_Send(
			"delete-list-item-command", 
			{listItemId: listItemId, listId: listId, summary: "true", details: "true", realClose: "true"},
			function(){
				var elm = document.getElementById("short_news_"+listId+"_"+listItemId);
				elm.parentNode.removeChild(elm);
			}
		)
	}
}

function editNewsList(listId) {
	var newWin = window.open("?command=get-list-command&listItemId=&listItems=&action=&listId="+listId+"&summary=true&details=true&moveToId=&isMove=&realClose=true", "newsAdminPart", "width=800, height=600, toolbar=0, menubar=0, location=0, scrollbars=1")
}

function editNewsListItem(listId, listItemId) {
	var newWin = window.open("?command=get-list-item-command&listId="+listId+"&listItemId="+listItemId, "newsAdminPart", "width=800, height=600, toolbar=0, menubar=0, location=0, scrollbars=1")
}

function addNewsListItem(listId) {
	var newWin = window.open("?command=create-list-item-command&listItemId=&listItems=&action=&listId="+listId+"&summary=true&details=true&moveToId=&isMove=&realClose=true", "newsAdminPart", "width=800, height=600, toolbar=0, menubar=0, location=0, scrollbars=1")
}

/*
В функцию необходимо передать количество символов, которое должно остаться ( q ) в строке или блоке
и айдишник блока, с содержимым которого будет работать функция - ObjId
*/


function CutHTML(q,ObjId)
{   
    var OurObj_back = document.getElementById(ObjId).innerHTML;        
    var OurObj = OurObj_back;        
    var patt1 = new RegExp("[<>]");  
                   
    TagText = -1; 
    counterFull = 0; 
    counterTags = 0;    
    counterText = 0;    
    IsNonpairTag = false;
    
    var steckT = new Array();    
    var steckS = new Array(); 
    while(OurObj.search('><')!=-1)    {
        OurObj = OurObj.replace('><','>$<');                
    }
    
    DocText = OurObj.split(patt1);                                
    
    if(OurObj.charAt(0)!='<') TagText = 1    
    else 
    {
        var agent = navigator.userAgent;	    
        if(!(agent.contains("MSIE"))) TagText = 1;        
    }
    
    while(DocText!='' && counterText <= q)   
    {    
        TagText = -1*TagText;        
        if (TagText == 1) 
        {
            // WORK WITH TAGS               
            if(DocText[0].indexOf('/')==-1) 
            {
                currentTag = DocText[0];                
                n1 = currentTag.indexOf(' ');                
                if (n1!=-1) currentTag = currentTag.substring(0,n1);                                  
                
                IsNonpairTag = TagPairs(currentTag); 
                if (IsNonpairTag) 
                {                    
                    steckT.push(DocText[0]);
                    counterTags = counterTags + steckT[steckT.length-1].length + 2;                                  
                }
                else counterTags = counterTags + DocText[0].length + 2;                  
            }
            else 
            {   
                currentTag = DocText[0];
                n2 = currentTag.lastIndexOf('/');
                if (n2 != 0) steckT.pop();                            
                
                counterTags = counterTags + DocText[0].length + 2;                                  
            }                        
            DocText = DocText.slice(1);                                    
        }
        else 
        {
            // WORK WITH STRING
            steckS.push(DocText[0]);            
            if(steckS[steckS.length-1].indexOf('$')!= 0 && steckS[steckS.length-1].length!=1) counterText = counterText + steckS[steckS.length-1].length;            
            DocText = DocText.slice(1);                                    
        };
    };   
    
    counterFull = counterTags + q;        
    text="";
    text = OurObj_back.substring(0,counterFull);    
    
    while(steckT.length>0)
    {
        currentTag = steckT.pop();
        n = currentTag.indexOf(' ');
        if (n!=-1) currentTag = currentTag.substring(0,n);                
        text = text + '</' + currentTag + '>';                 
    }
    document.getElementById(ObjId).innerHTML=text;
}


function TagPairs(tag)
{
    var result = new Boolean(false);  
    var ArrNonpairTegs = new Array();
    ArrNonpairTegs[0] = '!DOCTYPE';
    ArrNonpairTegs[1] = 'AREA';    
    ArrNonpairTegs[2] = 'BASE';    
    ArrNonpairTegs[3] = 'BASEFONT';
    ArrNonpairTegs[4] = 'BR';    
    ArrNonpairTegs[5] = 'BGSOUND';    
    ArrNonpairTegs[6] = 'DT';    
    ArrNonpairTegs[7] = 'FRAME'; 
    ArrNonpairTegs[8] = 'HR';    
    ArrNonpairTegs[9] = 'IMG';   
    ArrNonpairTegs[10] = 'INPUT'; 
    ArrNonpairTegs[11] = 'ISINDEX';    
    ArrNonpairTegs[12] = 'LINK';    
    ArrNonpairTegs[13] = 'META';    
    ArrNonpairTegs[14] = 'PARAM';
    
    for(var i=0; i < ArrNonpairTegs.length; i++)    
        if (tag.toUpperCase() == ArrNonpairTegs[i]) result=true;
      
    return result;
}
