// outerHTML for Gecko Browsers
var callbackEmpty = {
        success: function () {;},
        failure: function () {;}
}

var call

if (window.Node && window.XMLSerializer)
{
  Node.prototype.__defineGetter__('outerHTML', function() {
    return new XMLSerializer().serializeToString(this);
  });
}

function setTimeDiapazone(date){
        var low = document.getElementById('f[5][0]').value;
        var high = document.getElementById('f[5][1]').value;
        
        var date = date + ',' + date;
        filter_products(date, 5);
        // restore previous data;
        f[5] = low + ',' + high;
}

function adjustImage(img){
        var cell = img.parentNode;
        if (!cell) return;
        width = img.clientWidth;
        height = img.clientHeight;
        
        aspect = width / height;
        
        if (img.clientWidth > cell.clientWidth){
                width = cell.clientWidth;
                height = width / aspect;
        }
        
        if (height > cell.clientHeight) {
                scale = height / cell.clientHeight;
                width /= scale;
                height /= scale;
        }
        
        width -=1;
        height -=1;
        
        width = Math.round(width,0);
        height = Math.round(height,0);
        
        if (width<0) width = 0;
        if (height <0 ) height = 0;
        
        img.style.width = width + 'px';
        img.style.height = height + 'px';
        img.style.visibility = 'visible';
        cell.removeChild( cell.getElementsByTagName('img')[1] );
        
}

function strreplaceall(str, search, replace){
    if (typeof(str)!='string' || typeof(search) != 'string' || typeof(replace) != 'string')
        return "";
    
    re = new RegExp(search, 'g');
    
    str = str.replace(re, replace);
    return str;
}

function adjustFlash(cell){
        el = document.getElementById(cell);
        if (!el) {
                setTimeout( 'adjustFlash("'+cell+'")' , 1000);
        }
        else{
                var flash = el.getElementsByTagName('object')[0]; 
                if(!flash) return;
                
                width = owidth = flash.width;
                height = oheight = flash.height;

                aspect = width / height;
                
                if (width > el.clientWidth){
                        width = el.parentNode.clientWidth;
                        height = width / aspect;
                }
                
                if (height > el.parentNode.clientHeight) {
                        scale = height / el.parentNode.clientHeight;
                        width /= scale;
                        height /= scale;
                }
                
                flashHtml = flash.outerHTML;
                
                width = Math.round(width,0);
                height = Math.round(height,0);
                
                if (width<0) width = 0;
                if (height <0 ) height = 0;
                
                flashHtml = strreplaceall(flashHtml, '"'+owidth.toString(), '"'+width.toString());
                flashHtml = strreplaceall(flashHtml, '"'+oheight.toString(), '"'+height.toString());
                
                if (oLib.isMSIE){
                        // stupid MSIE not serializes el.innerHTML propertly
                        flashHtml = strreplaceall(flashHtml, '='+owidth.toString(),  '='+width.toString());
                        flashHtml = strreplaceall(flashHtml, '='+oheight.toString(), '='+height.toString());
                }
                
                el.innerHTML = flashHtml;
                
                el.style.visibility = 'visible';
                el.parentNode.removeChild(el.parentNode.getElementsByTagName('img')[0]);
        }
        
}

function $(id){
	return document.getElementById(id);	
}

function readed(id){
	postData = 'id='+id;			
	request = YAHOO.util.Connect.asyncRequest('POST', '/rssreader/usr/extensions/set_readed.inc.php', callbackEmpty, postData);
	
}


function jsonDummy() {return window.JSONResponse[0];}

// Create a callback object to handle the response and pass an array of values to success and failure as the argument
var handleSuccess = function(o){
	if(o.responseText !== undefined){
		window.JSONResponse = eval(o.responseText);
		if (window.JSONResponse[1] != 0){
			ws = getWindowSize();
			jQuery('#product_layout').treemap(ws.width-offsetX+3, ws.height-0, {getData:jsonDummy, nativeColors:true, sort:true, headHeight:18, borderWidth:0});
		}else{
			jQuery('#product_layout').html('No news found. Try to enchance your query');
		}
		jQuery('#p_count').html(window.JSONResponse[1] + ' objects on screen');
	}
}

var callback =
{
  success:handleSuccess,
  failure: ''
};
		
YAHOO.namespace("panels");
var oManager = new YAHOO.widget.OverlayManager(); 

// create panels		
function init_filters() {
        //YAHOO.panels.float_wnd = new YAHOO.widget.Panel("float_wnd", { iframe:true, constraintoviewport:true,fixedcenter:false, dragOnly:true, width:"750px", close:false, visible:false, modal:false} );
        //YAHOO.panels.float_wnd.render('float');
        //YAHOO.panels.float_wnd.show();
        //YAHOO.panels.float_wnd.dragEvent.subscribe(markDrag);
        
        //if (getWindowSize().width>800 && getWindowSize().height>400){					
        //        var x = (getWindowSize().width - 900) /2 + 90;
        //        var y = 20;
        //        YAHOO.panels.float_wnd.moveTo(x,y);
        //}else YAHOO.panels.float_wnd.hide();
        
        YAHOO.panels.filters = new YAHOO.widget.ResizePanel("filters", {iframe:true, x:10, y:240, constraintoviewport:true,fixedcenter:false, dragOnly:true, width:"205px", close:false, visible:false} );
        YAHOO.panels.filters.render('panels');
        YAHOO.panels.filters.show();
        YAHOO.panels.filters.dragEvent.subscribe(markDrag);
                        
        YAHOO.panels.mailform = new YAHOO.widget.Panel("mailform", {iframe:true, constraintoviewport:true,fixedcenter:true, dragOnly:true, width:"400px", close:true, visible:false, modal:true} );
        YAHOO.panels.mailform.render('other');
        YAHOO.panels.mailform.beforeHideEvent.subscribe(clearMailForm);
        YAHOO.panels.settings = new YAHOO.widget.ResizePanel("settings", {iframe:true, x:10, y:10, constraintoviewport:true,dragOnly:true, width:"205px", close:false, visible:false} );
        YAHOO.panels.settings.render('panels');
        YAHOO.panels.settings.show();
        YAHOO.panels.settings.dragEvent.subscribe(markDrag);
        oManager.register([YAHOO.panels.settings,YAHOO.panels.filters /*,YAHOO.panels.float_wnd/**/]);
        YAHOO.panels.settings.bringToTop();
}
function loadOne(){
        var itemId = rExpRes[1];
        var clb={
                success:function(o)
                {
                        var cat = o.responseText;
                        if (cat.indexOf('no items')==-1)
                        {
                                var clb=
                                {
                                        success: function(o)
                                        {
                                          handleSuccess(o);
                                          var cellId = 'area-' + itemId;
                                          if (!document.getElementById(cellId)){
                                            return;
                                          } else {
                                            i = document.getElementById(cellId);
                                          }
                                          
                                          i.onmouseover();
                                          i.onmousemove();
                                          i.onclick();
                                          
                                        },
                                        failure: function() {;}
                                }
                                YAHOO.util.Connect.asyncRequest('GET', srvName+'/rssreader/usr/extensions/get_feed.php?itemid='+itemId+'&width='+(getWindowSize().width-140) + '&height='+ (getWindowSize().height - 6), clb );
                        }else{
                                filter_products();
                        }
                },
                failure:function(){;}
        };
document.getElementById('product_layout').innerHTML='<img src="/rssreader/usr/templates/images/ani_load.gif" style="vertical-align:middle" /> Loading...</div>';

request = YAHOO.util.Connect.asyncRequest('POST', srvName+'/rssreader/usr/extensions/getCatByItemId.php', clb, "id="+itemId);

}

// floating window

var offsetX = 0; //227;
var offsetY = 0; //107;
var f = new Array(); var request=null;

floatWnd = new Object();
floatWnd = {bottomWnd:false, isOpacity:false};


floatWnd.loadPage= function(rew, el){
        var links = document.getElementById('float_menu_wrapper').getElementsByTagName('a');
        for (i in links) links[i].className='';
        if (el) el.className='selected';
        
        var baseUrl="http://"+(location.host || location.hostname) +"/";
        var el=document.getElementById("float_bd");
        var iFrame=el.getElementsByTagName('iframe')[0];
        if (!iFrame)
        {
                el.innerHTML = "<iframe width='747' height='325' frameborder='0' scrolling='auto' hspace='0' vspace='0'></iframe>";
                iFrame = el.getElementsByTagName('iframe')[0];
        }
        iFrame.src = baseUrl+rew;
        if (!this.bottomWnd){
                this.checkOpacity(document.getElementById('cb'));
        }
}
floatWnd.checkOpacity = function(el){
        if (this.bottomWnd){
                var links = document.getElementById('float_menu_wrapper').getElementsByTagName('a');
                for (i in links) links[i].className='';
                document.getElementById('float_bd').innerHTML="";
                document.getElementById('float_bd').style.height="0px";
                el.src = el.src.replace('_min', '_max');
                this.offOpacity();
                this.isOpacity = false;
                this.bottomWnd = false;
        }else{
                el.src = el.src.replace('_max', '_min');
                document.getElementById('float_bd').style.height="auto";
                this.onOpacity();
                this.isOpacity = true;
                this.bottomWnd = true;
        }
}
floatWnd.onOpacity = function(){
        var anim = new YAHOO.util.Anim('product_layout');
        anim.attributes.opacity = {from: 1, to: 0.3};
        anim.animate();
}
floatWnd.offOpacity = function(){
        var anim = new YAHOO.util.Anim('product_layout');
        anim.attributes.opacity = {from: 0.3, to: 1};
        anim.animate();
}
        // main functionality ajax stuff
        
function getWindowSize() {
        if ( window.innerWidth ) {
                width=window.innerWidth; height=window.innerHeight;
        } else if ( (window.navigator.userAgent.indexOf("Opera") == -1) && document.documentElement  &&
                document.documentElement.clientHeight && document.documentElement.clientWidth
        ) {
                height = document.documentElement.clientHeight; width = document.documentElement.clientWidth;
        } else if ( document.body.clientWidth ) {
                width=document.body.clientWidth; height=document.body.clientHeight;
        }
        return {width:width,height:height};
}
	
function filter_products(value, fId, trigger){
        YAHOO.util.Connect.abort(request);
        oLib.clear();		
        if(fId != null )
                f[fId] = value;
        if(value == '') delete f[fId];
        var postData = "";
        for(key in f){
                postData += 'f['+key+']='+f[key]+'&';
        }
        windowSize = getWindowSize();
        postData +='width='+(windowSize.width-offsetX)+'&height='+(windowSize.height-offsetY)+'';
        document.getElementById('product_layout').innerHTML = "<img src='/rssreader/usr/templates/images/ani_load.gif' style='vertical-align:middle'> Proccessing data...";
        request = YAHOO.util.Connect.asyncRequest('POST', srvName+'/rssreader/usr/extensions/get_filtered_inf.inc.php', callback, postData);
}
        // Resizeable YUI Panel class extension //
YAHOO.widget.ResizePanel = function(el, userConfig) {
    if (arguments.length > 0) {
        YAHOO.widget.ResizePanel.superclass.constructor.call(this, el, userConfig);
    }
}

YAHOO.widget.ResizePanel.CSS_PANEL_RESIZE = "yui-resizepanel";

YAHOO.extend(YAHOO.widget.ResizePanel, YAHOO.widget.Panel, {
    init: function(el, userConfig) {
        YAHOO.widget.ResizePanel.superclass.init.call(this, el);
        this.beforeInitEvent.fire(YAHOO.widget.ResizePanel);
        
        var Dom = YAHOO.util.Dom,
            Event = YAHOO.util.Event,
            oInnerElement = this.innerElement,
        oResizeHandleBR = YAHOO.util.Dom.getElementsByClassName('br','div', this.id)[0];
        oResizeHandleBL = YAHOO.util.Dom.getElementsByClassName('bl','div', this.id)[0];
        oResizeHandleTR = YAHOO.util.Dom.getElementsByClassName('tr','div', this.id)[0];
        oResizeHandleTL = YAHOO.util.Dom.getElementsByClassName('tl','div', this.id)[0];
        sResizeHandleBRId = this.id + "_resizehandleBR";
        sResizeHandleBLId = this.id + "_resizehandleBL";
        sResizeHandleTRId = this.id + "_resizehandleTR";
        sResizeHandleTLId = this.id + "_resizehandleTL";
        oResizeHandleBR.id = sResizeHandleBRId;
        oResizeHandleBL.id = sResizeHandleBLId;
        oResizeHandleTR.id = sResizeHandleTRId;
        oResizeHandleTL.id = sResizeHandleTLId;
        Dom.addClass(oInnerElement, YAHOO.widget.ResizePanel.CSS_PANEL_RESIZE);
        this.resizeHandleBR = oResizeHandleBR;
        this.resizeHandleBL = oResizeHandleBL;
        this.resizeHandleTR = oResizeHandleTR;
        this.resizeHandleTL = oResizeHandleTL;		
        function initResizeFunctionality() {
            var me = this,
                oHeader = this.header,
                oBody = this.body,
                oFooter = this.footer,
                nStartWidth,
                nStartHeight,
                aStartPos,
                nBodyBorderTopWidth,
                nBodyBorderBottomWidth,
                nBodyTopPadding,
                nBodyBottomPadding,
                nBodyOffset;
        this.ddResizeBR = new YAHOO.util.DragDrop(sResizeHandleBRId, this.id);
        this.ddResizeBL = new YAHOO.util.DragDrop(sResizeHandleBLId, this.id);
        this.ddResizeTR = new YAHOO.util.DragDrop(sResizeHandleTRId, this.id);
        this.ddResizeTL = new YAHOO.util.DragDrop(sResizeHandleTLId, this.id);
        this.ddResizeBR.setHandleElId(sResizeHandleBRId);
        this.ddResizeBL.setHandleElId(sResizeHandleBLId);
        this.ddResizeTR.setHandleElId(sResizeHandleTRId);
        this.ddResizeTL.setHandleElId(sResizeHandleTLId);
                                                
        this.ddResizeBR.onMouseDown = function(e) {
                if (oLib) oLib.drag=true;
                nStartWidth = oInnerElement.offsetWidth;
                nStartHeight = oInnerElement.offsetHeight;
                nBodyOffset = 0;
                me.cfg.setProperty("width", nStartWidth + "px");
                aStartPos = [Event.getPageX(e), Event.getPageY(e)];
            };
                        
        this.ddResizeBL.onMouseDown = this.ddResizeBR.onMouseDown;
        this.ddResizeTR.onMouseDown = this.ddResizeBR.onMouseDown;
        this.ddResizeTL.onMouseDown = this.ddResizeBR.onMouseDown;
  
        this.ddResizeBR.onDrag = function(e) {
                var aNewPos = [Event.getPageX(e), Event.getPageY(e)],
                nOffsetX = aNewPos[0] - aStartPos[0],
                nOffsetY = aNewPos[1] - aStartPos[1],
                nNewWidth = Math.max(nStartWidth + nOffsetX, 10),
                nNewHeight = Math.max(nStartHeight + nOffsetY, 10);
                var nBodyHeight = (nNewHeight - (oFooter.offsetHeight + oHeader.offsetHeight));
                if ( nNewWidth <200 ) nNewWidth = 200;
                me.cfg.setProperty("width", nNewWidth + "px");
                if (nNewHeight < 0) {
                    nNewHeight = 0;
                }
                oBody.style.height =  nBodyHeight + "px";
                me.syncPosition();
            };
                        
        this.ddResizeBL.onDrag = function(e) {
                var aNewPos = [(Event.getPageX(e)>10?Event.getPageX(e):10), Event.getPageY(e)],
                    nOffsetX = aNewPos[0] - aStartPos[0],
                    nOffsetY = aNewPos[1] - aStartPos[1],
                    nNewWidth = Math.max(nStartWidth - nOffsetX, 10),
                    nNewHeight = Math.max(nStartHeight + nOffsetY, 10),
                    nBodyHeight = (nNewHeight - (oFooter.offsetHeight + oHeader.offsetHeight + nBodyOffset));
                if (nNewWidth>200){
                        me.cfg.setProperty("x", aNewPos[0])
                        me.cfg.setProperty("width", (nNewWidth>200?nNewWidth:200) + "px");
                }
                oBody.style.height =  (nBodyHeight>0?nBodyHeight:0) + "px";
            };
        this.ddResizeTR.onDrag = function(e) {
               var aNewPos = [Event.getPageX(e), Event.getPageY(e)],
                   nOffsetX = aNewPos[0] - aStartPos[0],
                   nOffsetY = aNewPos[1] - aStartPos[1],
                   nNewWidth = Math.max(nStartWidth + nOffsetX, 10),
                   nNewHeight = Math.max(nStartHeight - nOffsetY, 10),
                   nBodyHeight = (nNewHeight - (oFooter.offsetHeight + oHeader.offsetHeight + nBodyOffset));
                if (nNewWidth>200)
                        me.cfg.setProperty("width", (nNewWidth>200?nNewWidth:200) + "px");
                                
                if (nBodyHeight > 0) {
                        me.cfg.setProperty("y", aNewPos[1]);
                        oBody.style.height =  nBodyHeight + "px";
                }
            };
        this.ddResizeTL.onDrag = function(e) {
                var aNewPos = [(Event.getPageX(e)>10?Event.getPageX(e):10), Event.getPageY(e)],
                    nOffsetX = aNewPos[0] - aStartPos[0],
                    nOffsetY = aNewPos[1] - aStartPos[1],
                    nNewWidth = Math.max(nStartWidth - nOffsetX, 10),
                    nNewHeight = Math.max(nStartHeight - nOffsetY, 10),
                    nBodyHeight = (nNewHeight - (oFooter.offsetHeight + oHeader.offsetHeight + nBodyOffset));
                if (nNewWidth>200){
                        me.cfg.setProperty("x", aNewPos[0])
                        me.cfg.setProperty("width", (nNewWidth>200?nNewWidth:200) + "px");
                }
                if (nBodyHeight > 0) {
                        me.cfg.setProperty("y", aNewPos[1]);
                        oBody.style.height =  nBodyHeight + "px";
                }
            };
        var _uns = function() { if (oLib) oLib.drag = false; }
        this.ddResizeBR.endDrag = _uns;
        this.ddResizeBL.endDrag = _uns;			
        this.ddResizeTR.endDrag = _uns;			
        this.ddResizeTL.endDrag = _uns;			
}
    
function onBeforeShow() {
        initResizeFunctionality.call(this);
        this.unsubscribe("beforeShow", onBeforeShow);
}
    
function onBeforeRender() {
        if (!this.footer)
                this.setFooter("&nbsp;");
        if (this.cfg.getProperty("visible"))
                initResizeFunctionality.call(this);
        else
                this.subscribe("beforeShow", onBeforeShow);
        this.unsubscribe("beforeRender", onBeforeRender);
}

this.subscribe("beforeRender", onBeforeRender);
        if (userConfig)
                this.cfg.applyConfig(userConfig, true);
        this.initEvent.fire(YAHOO.widget.ResizePanel);
    }
});

// autostart things
oLib.browserVer();
        
if (oLib.isMSIE){
        YAHOO.util.Event.addListener(document, "mouseout", oLib.hidePopupWindows);
}
YAHOO.util.Event.addListener(document, "mousemove", oLib.mouseMove);
YAHOO.util.Event.addListener(window, "load", updateLoginLink);
        
// opens content adding tab if requested by inFeeds button
var addContent = false;
var contentExp = new RegExp(".*?url=(.*)");
var match = contentExp.exec(window.location.search);

if (match && typeof(match[1]) != "undefined"){
        var addContentURL = match[1];
        addContent = true;
        YAHOO.util.Event.addListener(window, "load", loadFeedsTab1);
}

// initialize panels
YAHOO.util.Event.addListener(window, "load", init_filters);

// select what to show: message or filtered data
var url = window.location.href;
var re = new RegExp("/?msgid=([0-9]*)");
var rExpRes = re.exec(url);
if ( rExpRes && typeof(rExpRes[1])!="undefined"){
        YAHOO.util.Event.addListener(window, "load", loadOne);				
}else{
        YAHOO.util.Event.addListener(window, "load", filter_products);				
}