// JavaScript Document
// class TtipData
// code by Azer Manafov (azerman[at]hotmail[dot]com)

var ALBUM_LOCAL       = 'albumLocal';
var FLASH_PREFIX      = "magic";
var FLASH_DOCMENU     = "dockmenu";
var FLASH_VIDEO       = 'video';
var LINKED_IMAGES     = "booklist";
var MSGBOX_PREFIX     = "txtblk";
var YOUTUBE_PREFIX    = 'youtube';
var SCROLLBOX_PREFIX  = 'scrollbox';
var SLIDENAV_PREFIX   = 'slideholder';
var SHARED_SECTION    = 'shared';
var TITLESLIST_PREFIX = "titlesList";

var IMAGE_THUMB       = "imageLocalA";

function correctMacroIds( prefix)
{   var arId = new Array();
	var dvs  = document.getElementsByTagName( '*');	
	for ( var i = 0; i < dvs.length; i++ )
	{   if ( dvs[i].id == undefined || dvs[i].id.length == 0) continue;
		if ( dvs[i].id.indexOf( prefix ) !=0 ) continue;
		arId.push(dvs[i].id);
	}
	var bChanges = false;
	if ( arId.length > 1 )
	{   for ( var i = 0; i < arId.length; i++)
		{   var id = arId[i];
			for ( var j = i+1; j < arId.length; j++)
			{   if ( id == arId[j] )
				{   
				    var randomnumber = Math.floor(Math.random()*10000)+1;
				    arId[j] = id+randomnumber;
					bChanges = true;
				}
			}
		}
		if ( !bChanges ) return;
		for ( var i = 0, j = 0; i < dvs.length; i++ )
		{   if ( dvs[i].id == undefined || dvs[i].id.length == 0) continue;
			if ( dvs[i].id.indexOf( prefix ) !=0 ) continue;
			dvs[i].id = arId[j++];
		}
	}
}

function scrollBox( id )
{
    var m_speed   = 1;
    var m_bStop   = false;  
    var m_timeout = '';
	var m_id      = id;
	var m_height  = 150;
	
	this.init     = init;
	this.stop     = stop;
	this.startit  = startit;

    function init()
    {  
        var el = $( m_id );
		el.onmouseout     = this.startit;
		el.onmouseover    = this.stop;
        el.style.overflow = 'hidden';  
		
		var rc = visi.getObjectRect( el );
		m_height = rc.height;
        scrollFromBottom();  
    }  

    function scrollFromBottom( )
	{
        clearTimeout(m_timeout);  
        var el =  $( m_id );
        if ( el.scrollTop >= el.scrollHeight-m_height)
		{  
            el.scrollTop = 0;  
        }  
        el.scrollTop = el.scrollTop + m_speed;  
        if ( m_bStop == false )
		{  
            m_timeout = setTimeout(scrollFromBottom,50);  
        }  
    }  
    function stop()
	{  
        m_bStop = true;  
    }  
    function startit( )
	{  
        m_bStop = false;  
        scrollFromBottom();  
    }  
};
var snav = null;
function cnvDiv2SlideNav  ( callback, iconwidth, prefix )
{
	if ( prefix    == undefined ) prefix    = SLIDENAV_PREFIX;
	if ( iconwidth == undefined ) iconwidth = 100;
	var dvs = document.getElementsByTagName( '*');
	var o   = null;
	for ( var i = 0; i < dvs.length; i++ )
	{   if ( dvs[i].id == undefined ) continue;
		if ( dvs[i].id.indexOf( prefix ) !=0 ) continue;
		o = dvs[i];
		break;
	}
    if ( o == null ) return;
	
	var a = o.getElementsByTagName("a");
	for ( var i = 0; i < a.length; i++ )
	{   var im   = a[i].getElementsByTagName("img")[0];
	    var name = a[i].title;
		var csrc = a[i].href;
		var src  = im.src;
		var p = csrc.indexOf('#');
		var index = slidesArray.length;
		var link = '';
		if ( p > 0 )
		{   var ret = csrc.substring(p+1);
		    var chr = ret.charAt(0);
		    if ( chr >= "0" && chr <= "9")
		         index = parseInt(ret)-1;
			else link  = ret;	 
			csrc  = csrc.substring( 0,p);
		}
		slidesArray[index] = {'src':im.src,'csrc':csrc,'title':name,'link':link};
	}
	var divid     = o.id;
	var mainDiv   = $(MAINDIV_PREFIX+'1');
	var parentDiv = mainDiv.parentNode;
	if ( divid.indexOf('_share') > 0 && o.parentNode.id != undefined && o.parentNode.id.indexOf(MAINDIV_PREFIX) == 0)
	{   var divshare = document.createElement( "div");
        divshare.id  = o.id+"copy";
        parentDiv.insertBefore( divshare, mainDiv);
        visi.copyStyle(divshare.id, o.id);
        o.parentNode.removeChild( o );
		divshare.setAttribute("id",divid );
	}
	
    snav = new clsFloatNavigation2(divid,visi, slidesArray);
	if ( callback != undefined )
	     snav.setProperty( {'callbackSliderMove':callback});
		 
	var rTbl = visi.getObjectRect(parentDiv);
	var nIcons = Math.round((rTbl.width-108)/iconwidth);
 	
	snav.setProperty( {'slidesFrame':nIcons});
    snav.createTable( );
}
function cnvDiv2ScrollBox ( prefix )
{
	if ( prefix == undefined ) prefix = SCROLLBOX_PREFIX;
	var tags = document.getElementsByTagName( "*");
	for ( var i = 0; i < tags.length; i++ )
	{   if ( tags[i].id == undefined ) continue;
		if ( tags[i].id.indexOf( prefix ) !=0 ) continue;
		var scrollbox = new scrollBox( tags[i].id);
		scrollbox.init();
	}
}

function cnvDiv2Album ( projectfile, prefix )
{   if ( prefix == undefined ) prefix = ALBUM_LOCAL;
	var tags = document.getElementsByTagName( "*");

	for ( var i = 0; i < tags.length; i++ )
	{   if ( tags[i].id == undefined ) continue;
		if ( tags[i].id.indexOf( prefix ) !=0 ) continue;
		var a = tags[i].getElementsByTagName('P');
		if ( a.length == 0 ) { tags[i].innerHTML = "&nbsp;"; return; }
        var a1 = visi.trim(a[0].innerHTML,' \t\n\r\f\"\'' + String.fromCharCode(8207) + String.fromCharCode(8206));
		a1 = a1.replace(/\r/g,"");
	    a1 = a1.replace(/\n/g,"");

        tags[i].innerHTML = "&nbsp;";

        var prop = 
		{ 'btnPictPrevId'   : "picture_left",
		  'btnPictNextId'   : "picture_right",
		  'imgPictPrev'     : "images/sys/picture_left.png",
		  'imgPictNext'     : "images/sys/picture_right.png",
		  'ctrlPictTextCell': "picture_num",
		  'albumtblid'      : "albumTbl"      + i,
          'normimgid'       : 'albumImage'    + i,
          'descriptid'      : 'description1'  + i,
          'btnPictPrevId'   : "picture_left"  + i,
          'btnPictNextId'   : "picture_right" + i,
          'ctrlPictTextCell': "picture_num"   + i,
		  'btnimgleft'      : "images/sys/albtn_lef_silver.png",//"images/sys/albtn_lef.png",
		  'btnimgright'     : "images/sys/albtn_rig_silver.png",
		  'btnimgindex'     : "images/sys/albtn_ind.png"
		};
		
        var paramqs = new Querystring(a1);
        var title   = paramqs.get('title','');
        var project = paramqs.get('project',projectfile);
        var album = new clsAlbumLoad4( project, title, tags[i].id );
	    album.setProperties( prop );
	    album.createTable( );
	    album.start( );
	}
}
function cnvDiv2TitlesList(  prefix )
{
	if ( prefix == undefined ) prefix = TITLESLIST_PREFIX;
	var tags = document.getElementsByTagName( "*");
	for ( var i = 0; i < tags.length; i++ )
	{
		if ( tags[i].id == undefined ) continue;
		if ( tags[i].id.indexOf( prefix ) !=0 ) continue;
        var s   = tags[i].innerHTML;
        var p2 = s.indexOf('.xml');
		if ( p2 == -1 ) continue;
		var prj = visi.trim(s.substring(0,p2+4),' \t\n\r\f\"\'');
		prj = prj.replace(/\r/g,"");
	    prj = prj.replace(/\n/g,"");
		var titlelist = new clsBuildTitlesList( tags[i].id,prj);
        titlelist.start( );
		break;
	}
}
function cnvDiv2LinkedImgs( prefix, local )
{   if ( prefix == undefined ) prefix = LINKED_IMAGES;
	var tags = document.getElementsByTagName( "*");
	for ( var i = 0; i < tags.length; i++ )
	{
		if ( tags[i].id == undefined ) continue;
		if ( tags[i].id.indexOf( prefix ) !=0 ) continue;
        var s   = tags[i].innerHTML;
        var p2 = s.indexOf('.xml');
		if ( p2 == -1 ) continue;
		var prj = visi.trim(s.substring(0,p2+4),' \t\n\r\f\"\'');
		prj = prj.replace(/\r/g,"");
	    prj = prj.replace(/\n/g,"");
        var album = new clsAlbumLoadLinks( prj, "", tags[i].id, local );
		album.buildAlbum( );

		break;
	}
}

function cnvDiv2Flash( prefix, local )
{   if ( prefix == undefined ) prefix = FLASH_PREFIX;
	var tags = document.getElementsByTagName( "*");
	for ( var i = 0; i < tags.length; i++ )
	{
		if ( tags[i].id == undefined || tags[i].id.length == 0) continue;
		if ( tags[i].id.indexOf( prefix ) !=0 ) continue;

		var o   = tags[i].parentNode;
        var s   = visi.trim(o.innerHTML);
        var p2 = s.indexOf('.swf');
        if ( p2 == -1 ) continue;
		var p1 = s.lastIndexOf( ">", p2);
		if (p1 == -1) continue;
		
		p2 = s.indexOf("<",p1);
        s = visi.trim(s.substring(p1+1,p2),' \t\n\r\f\"\''+String.fromCharCode(8207) + String.fromCharCode(8206));
		s = s.replace(/\r/g,"");
	    s = s.replace(/\n/g,"");

        var paramqs = new Querystring(s);
        var file    = paramqs.get('file');

		if ( file == null ) continue;
		file = visi.trim(file);
		if ( file.indexOf("http://") != 0)
		     file = urlbase()+file;
			 
		var id      = paramqs.get('id');
		var rc      = visi.getObjectRect( o );
		var width   = paramqs.get('width',rc.width);
		var height  = paramqs.get('height',rc.height);
		var styles  = {"z-index":'auto',"visibility":'visible'};

		var flashvars = null;
		var flashparams   = paramqs.get('flashparams','');
		if ( flashparams )
		{   
		    eval("flashvars = " + flashparams + ";");//{'SXMLPATH':'images//topslides.xml','CALLBACKCLICK':'callbackSlideClick'};");
		}
		var stlobj = null;
        s =  paramqs.get('style','');

        if ( s )
		{   
		    eval("stlobj = " + s + ";");
			if ( stlobj )
			{   for ( var k in stlobj )
				      styles[k] = stlobj[k];
			}
		}

		var params     = {};
		var attributes = {};
		params.wmode   = "transparent";
		params.loop    = paramqs.get('loop',true);

		if (browser.isOpera )
		{
//		    params.wmode   = "opaque";
		}
		if (  flashvars )
		{   if ( flashvars.SXMLPATH != undefined )
			     flashvars.SXMLPATH = urlbase()+flashvars.SXMLPATH;
			if ( flashvars.CSSPATH != undefined )
			     flashvars.CSSPATH = urlbase()+flashvars.CSSPATH;
				  
		}

		if ( file.indexOf(FLASH_DOCMENU) < 0 )
		{   
/*
			id = tags[i].id;
            var flash = new clsFlashLayer( id, file, width, height,flashvars,params,styles );
	        flash.createFlashLayer( id,HTM_INS);
*/

				id = tags[i].id;
		        swfobject.embedSWF(file, id, width, height, "10.0.0", false, flashvars, params, attributes);
				
		}
		else
		{   if ( !flashvars ) flashvars = new Object( );
		    flashvars.settingsXML = "xml/" + local + "/docmenusetting.xml";

			flashvars.imagesXML   = flashvars.SXMLPATH;//xmlpath;
			flashvars.dockWidth   = ""+width;//"750";
			flashvars.dockHeight  = ""+height;//"130"

			params.scale          = "noscale";
			params.salign         = "tl";

			    id = o.id;
		        swfobject.embedSWF(file, id, width, height, "10.0.0", false, flashvars, params, attributes);

/*
			if ( !browser.isOpera )
			{   id = o.id;
//              swfobject.addLoadEvent(forceRedraw);
		        swfobject.embedSWF(file, id, width, height, "9.0.0", false, flashvars, params, attributes);
			}
			else
			{   id = tags[i].id; 
                var flash = new clsFlashLayer( id, file, width, height,flashvars,params,styles );
	            flash.createFlashLayer( id,HTM_INS);
			}
*/			
			
		}
		o = $(id);
		visi.setStyles(o,styles);
		visi.setVisible(o,true);
	}
}
function isEmpty(ob)
{   for(var i in ob){ return false;}
    return true;
}


//function outerHTML    ( node ){     return node.outerHTML || new XMLSerializer().serializeToString(node); } 
//http://beebole.com/pure/
function outerHTML(node)
{
		// if IE, Chrome take the internal method otherwise build one
		return node.outerHTML || (
			function(n){
			var div = document.createElement('div'), h;
			div.appendChild( n.cloneNode(true) );
				h = div.innerHTML;
				div = null;
				return h;
			})(node);
}
function propFromComment( htmltext, propname,id )//propname={key1:val1,key2:val2....}
{
	var ret = {prop:null,trunkhtm:htmltext};
	var op1 = htmltext.indexOf('<!--');
	if ( op1 >= 0)
	{   var op2 = htmltext.indexOf('-->',op1);
		if ( op2 > 0 )
		{   ret.trunkhtm = htmltext.substring(0,op1) + " " + htmltext.substring(op2+3);//htmltext.substring(op1,op2+3);
		    var s1 = htmltext.substring(op1,op2-1);
			op1 = s1.indexOf(propname);
			
			if ( op1 > 0 )
			{   op2 = s1.indexOf("}",op1);
				if ( op2 > 0 )
				{   s1  = s1.substring(op1,op2+1);
					ret.prop = eval(s1 + ";");
				}
			}
		}
	}
	return ret;
}

function cnvDiv2MsgBox( prefix, boxoptions )
{   if ( prefix == undefined ) prefix = MSGBOX_PREFIX;
correctMacroIds(prefix);
	var tags = document.getElementsByTagName( "*");
	for ( var i = 0; i < tags.length; i++ )
	{
		if ( tags[i].id == undefined ) continue;
		if ( tags[i].id.indexOf( prefix ) !=0 ) continue;
        var s   = tags[i].innerHTML;
		var p   = propFromComment(s, 'msgboxprop');

		var blk = new clsMsgBox( tags[i].id, "Id"+tags[i].id, visi );// box id do not start with prefix!
		var rc  = visi.getObjectRect( tags[i]);
		
        var h = visi.getStyle(tags[i],'height');
        h = (h==''?rc.height:parseInt(h,10));

        var w = visi.getStyle(tags[i],'width');
        w = (w=='' || w.indexOf('px')==-1?rc.width:parseInt(w,10));

		blk.setcontent( p.trunkhtm );
		blk.setProperties   ( {minwidth:w - 24, height: h});
		blk.setProperties   ( boxoptions );
		blk.setProperties   ( p.prop );
		blk.create    ( );
		
		visi.setVisible(tags[i],true);
	}
}

function cnvDiv2Youtube( prefix )
{   if ( prefix == undefined ) prefix = YOUTUBE_PREFIX;
	var tags    = document.getElementsByTagName( "*");
	for ( var i = 0; i < tags.length; i++ )
	{
		if ( tags[i].id == undefined ) continue;
		if ( tags[i].id.indexOf( prefix ) !=0 ) continue;
		var o   = tags[i].parentNode;
        var s   = o.innerHTML;
		var p1  = s.indexOf( ">");
		if (p1 == -1) continue;
		var p2  = s.indexOf("<",p1);
		if ( p2 == -1 ) continue;
		s = visi.trim(s.substring(p1+1,p2));
		
        var rc = visi.getObjectRect( o );		

        var params = { 'allowScriptAccess': "always",'allowFullScreen': "true",'fs':"1" };
        var atts   = { id: "obj_"+tags[i].id };
        swfobject.embedSWF("http://www.youtube.com/v/" + s + "?enablejsapi=1&playerapiid=yt_"+tags[i].id, 
                       tags[i].id, rc.width , rc.height, "10.0.0", null, null, params, atts);
    }
}

function cnvDiv2Video( prefix )
{   if ( prefix == undefined ) prefix = FLASH_VIDEO;
	var tags = document.getElementsByTagName( "*");
	for ( var i = 0; i < tags.length; i++ )
	{
		if ( tags[i].id == undefined ) continue;
		if ( tags[i].id.indexOf( prefix ) !=0 ) continue;
		var rc  = visi.getObjectRect( tags[i].parentNode );
		var p   = propFromComment( visi.trim(tags[i].innerHTML),'prop',tags[i].id );
		if ( p.prop == null )
		{   var f  = visi.getbaseurl()+"media/"+visi.trim(tags[i].innerHTML);
			p.prop = {file:f, backcolor: '0x666666',frontcolor: '0xffffff',lightcolor: '0xffffff',screencolor:'0x19081a'};
		}

        var video = new clsPlayerAPI( tags[i].id, null, rc.width, rc.height );
		video.setProperties( p.prop );//{backcolor: '0x666666',frontcolor: '0xffffff',lightcolor: '0xffffff',screencolor:'0x19081a'}); 
		video.create( );
		
	}
}

//style= { image:[url], link:[url],title:xx,height:128,align:right};
function cnvDiv2Thumb( prefix )
{   if ( prefix == undefined ) prefix = IMAGE_THUMB;
	var tags = document.getElementsByTagName( "*");
	for ( var i = 0; i < tags.length; i++ )
	{
		if ( tags[i].id == undefined ) continue;
		if ( tags[i].id.indexOf( prefix ) !=0 ) continue;
		var pall = propFromComment( visi.trim(tags[i].innerHTML),'prop' );
		var prop = pall.prop;

		var r     = visi.getObjectRect(tags[i]);
		var m     = parseInt(visi.getStyle(tags[i],'margin-top' ));
		if (  isNaN(m)) m = 0;
		var p     = parseInt(visi.getStyle(tags[i],'padding-top' ));
		if (  isNaN(p)) p = 0;
		var mg1   = Math.round(((r.height - 2*m-2*p)-(prop.height+20))/2 + 0.5); //20 - image padding
		var mg2   = Math.round(((r.height - 2*m-2*p)-(16))/2 + 0.5); //16 - font size


        var s = '';
	    var id1 = tags[i].parentNode.id + 1;
	    var id2 = tags[i].parentNode.id + 2;
		s += ' <div id="' + id1 + '" style="float:' + prop.align + '; margin-top: ' + mg1 + 'px; padding-right:10px;">' + "\n";
		s += ' <a href="' + prop.link + '" title="' + prop.title + '" target="_blank">' + "\n";
		s += ' <img src="' + prop.image + '" height="' + prop.height + '" border="1" style="margin:10px; padding:10px; background:url(images/sys/bg_transp_50wht.png) repeat;"></a>' + "\n";
		s += ' </div>' + "\n";
		s += ' <div id="' + id2 + '" style="text-align: ' + prop.align + '; margin-top:' + mg2 + 'px;">' + "\n";
		s += ' <a href="' + prop.link + '" title="' + prop.title + '" target="_blank" style="font-weight:bold; text-align: ' + prop.align + ';">' + prop.title + '</a>' + "\n";
		s += ' </div>' + "\n";

		var calc = new clsCalcObjectDim( "calcDivDim", {'display':'block', 'overflow':'hidden', 'border':'1px dotted #fff', 'text-align':'right', 'margin':'10px', 'width':'98%'} );
		var d = calc.calcObjectDim     ( s +' <div style="clear:both;"></div>');
        tags[i].style.height = d.height + 'px';
		
        s  =  s + " \n" + pall.trunkhtm;// rest of innerHTML!
        s += ' <div style="clear:both;"></div>';
        tags[i].innerHTML = s;
	}
}

function forceRedraw() 
{alert( 'forceRedraw');
document.getElementById("magic_1").style.display = "block";
}

function clickMusicLink( event, obj )// onclick event for musical link
{   if ( typeof document.body.player == 'undefined' ) return;
    event = event || window.event;
	var o = (obj != undefined)?obj:visi.getEventTarget( event );
	if (  o != null && o.tagName == "A")
        document.body.player.playFile( o.href );
    event.cancelBubble = true;
	if ( event.stopPropagation) event.stopPropagation();	
	return false;
}



