// JavaScript Document
// class AlbumLoad
// code by Azer Manafov (azerman[at]hotmail[dot]com)

function clsAlbumLoadLinks( xmlpath, basepath, placeholder,language )
{   
    var IMAGE_MAX      = 50;
    var NUM_COLS       = 5;

    var m_images       = new Array( );
    var m_count        = 0;
	var m_xmlpath      = xmlpath;

	var m_imgpath      = '';//imgpath;
	var m_timer        = -1;
	var m_placeholder  = placeholder;

	var m_loadthumbtm  = new timerAction( thumbsLoad, thumbsLoad, thumbsLoad );
	var m_header       = '';
	var m_this         = this;
	
	var m_imagesbase   = basepath;
	
//m_prop.semitranspbg	
	var m_prop = 
	{
		local        : language,
		bigimgholder : 'albumDiv',
		bigimgid     : 'albumImage',
		btnimgleft   : "images/sys/blank.png",
		btnimgright  : "images/sys/blank.png",
		btnimgindex  : "images/sys/blank.png",
		btnimgnone   : "images/sys/blank.png",
		thumbimg     : "images/sys/kadr.gif",
		thumbtblid   : "albumThumbs",
		deskbkgclr   : "#333333",
		titlecolor   : "#ffdd00",
		thumbprefix  : "thumb_",
		semitranspbg : "images/sys/bg_transp_50blk.gif",
		backbtnimg   : "images/sys/backbtn.png"
		
	}

	xmlparse.parseFile( m_xmlpath, processXmlAlbum);
	
	this.setProperties = function( prop )
	{   for (var i in prop )
			m_prop[i] = prop[i];
	}
	this.buildAlbum    = buildAlbum;


	this.getImgList    = function( )
	{
		return m_images;
	}
	
	function onImgload     ( ) { onComplete(1,this); }
	function onImgError    ( ) { onComplete(2,this); }
	function onImgAbort    ( ) { onComplete(2,this); }
	function onComplete    ( state,img ) { img.state = state; }
	
	
	function buildAlbum( )
	{   //m_loadthumbtm.setBreakTime( 10000 );
	    //m_loadthumbtm.starttm     ( );
		createTable       ( m_images );
		setOnClick        ( );
		
	}
	
	function xmlParseImage   ( imgnode, prop, bIsImage )
	{   var nodes = imgnode.childNodes;
		for ( var i = 0; i < nodes.length; i++ )
		{   if ( nodes[i].nodeType == 1)
			{   switch( nodes[i].nodeName )
				{   case 'url':
					var path = visi.trim(nodes[i].childNodes[0].nodeValue," \t\n\r\f\"");
					prop.name = path.substr( path.lastIndexOf("/")+1);
					if ( bIsImage == true )
					     prop.imgpth   = m_imagesbase + path;
					else prop.thumbpth = m_imagesbase + path;
					break;
				}
			}
		}
	}
    function xmlParsePicture( picnode )
	{   var nodes = picnode.childNodes;
        var prop = { img: '',name:'',thumbpth:'', imgpth:'', en:'', he:'',ru:'', lnk:'' };
		for ( var i = 0; i < nodes.length; i++ )
		{   if ( nodes[i].nodeType == 1)
			{   switch( nodes[i].nodeName )
				{   case 'title':    prop.en  = visi.trim(nodes[i].childNodes[0].nodeValue); break;
					case 'russian':  prop.ru  = visi.trim(nodes[i].childNodes[0].nodeValue); break;
					case 'hebrew':   prop.he  = visi.trim(nodes[i].childNodes[0].nodeValue); break;
					case 'image':      xmlParseImage( nodes[i], prop,true ); break;
					case 'smallimage': xmlParseImage( nodes[i], prop,false); break;
					case 'link':     prop.lnk = visi.trim(nodes[i].childNodes[0].nodeValue); break;
				}
			}
		}
		return prop;
	}

	function processXmlAlbum( xml )
	{   var header  = xml.getElementsByTagName( 'header' );
	    var content = xml.getElementsByTagName( "picture" );

	    if ( header.length )
		     m_header = header[0].childNodes[0].nodeValue;

		if ( content.length )
		{   for ( var i = 0; i < content.length; i++ )
			{   if ( content[i].nodeType != 1) continue;
			    var prop = xmlParsePicture( content[i] );

				if ( prop.name )
				{     var ind = m_images.length;
		            m_images[ind]              = prop;
					m_images[ind].img          = new Image();
					m_images[ind].img.state    = 0;
/*					
					m_images[ind].img.onload   = onImgload;
					m_images[ind].img.onabort  = onImgAbort;
					m_images[ind].img.onerror  = onImgError;
*/					
					m_images[ind].img.src      = prop.thumbpth;

				}
				if ( m_images.length >= IMAGE_MAX ) break;
			}
			m_count = m_images.length;
		}
	}
	function thumbsLoad( timerState, param )
	{   switch( timerState )
		{	case TM_STATE_START: break;
			case TM_STATE_RUN:
				var ok = true;
				for ( var i = 0; i < m_count; i++ )
				{   if ( m_images[i].img.state == 0 )
					{   ok = false;
						break;
					}
				}
				if ( ok == true )
				{   m_loadthumbtm.stoptm( );
				}
				break;
			case TM_STATE_STOP:
/*
				createTable       ( m_images );
				setOnClick        ( );
*/				
			    break;
		}
	}
	
	function createTable ( imgs )
	{
		var nimgs = imgs.length;
		
		if ( !nimgs ) return;
		var col = NUM_COLS;
		var row = Math.round( nimgs/col + 0.5 );

		var s = '';
		s += '<table id="' + m_prop.thumbtblid + '" align="center" cellspacing="3" cellpadding="0" style="vertical-align:middle; background-color:' + m_prop.deskbkgclr + '; padding:5px;">';
        s += '<tbody>';
/*		
        if ( m_header )		
             s += '<td colspan="' + col + '" style="text-align: center; font-size:18px; font-weight: bold; color: white;">' + m_header + '</td>';
*/

             s += '<td colspan="' + col + '" style="text-align: center; font-size:18px; font-weight: bold; color: white;">';
			 s += '    <table align="center" cellspacing="0" cellpadding="0" border="0" style="vertical-align:middle; text-align: center;">';
			 s += '    <tbody><tr>';
			 s += '    <td align="center" valign="middle" style="text-align: center; font-size:18px; font-weight: bold; color: white;"> ';
			 s += m_header;
			 s += '    </td><td width="75">';
			 s += '    <a href="javascript: history.go(-1)"> <img src="' + m_prop.backbtnimg + '" border="0" align="middle" alt="Back" /> </a>';
			 s += '    </td></tr></tbody></table>';
			 s += '</td>';

		for ( var  i = 0; i < row; i++ )
		{   s += '<tr>' + "\n";
			for ( var j = 0; j < col; j++)
			{   
			    var ind   = i*col + j;
				if ( ind >= nimgs ) break;
				var state = imgs[ind].img.state;
				var alt   = '';
				
				switch( m_prop.local )
				{   case 'he': alt = imgs[ind].he; break;
					case 'ru': alt = imgs[ind].ru; break;
					case 'en': alt = imgs[ind].en; break;
				}
				if ( alt == 'Photo' ) alt = ' ';
				if ( !alt.length ) alt=imgs[ind].img.src.substr(imgs[ind].img.src.lastIndexOf("/")+1);
//				var w     = (state == 1 )?imgs[ind].img.width:0;
//				var h     = (state == 1 )?imgs[ind].img.height:0;
				var w     = imgs[ind].img.width;
				var h     = imgs[ind].img.height;
				s += '<td style="vertical-align:top; text-align:center;">';
				s += '<table width="140" align="center" border="0" cellspacing="0" cellpadding="0">';
				s += '<tr>';
				s += '<td id="' + m_prop.thumbprefix + ind+'" ';
				s += ' style="width:140px; height:140px; background:url(' + m_prop.thumbimg + '); background-repeat:no-repeat; ';
				s += ' margin-left:auto; margin-right:auto; text-align:center; cursor:pointer;">';
/*				
				if ( state == 1 )
				{   
*/				
				    if ( w > h )
					     s += '<img align="middle" src="' + imgs[ind].img.src + '" width="124"  border="0" style="border: 1px solid #888888;"';
					else s += '<img align="middle" src="' + imgs[ind].img.src + '" height="124" border="0" style="border: 1px solid #888888;"'; 
					if ( alt != ' ')
					     s += ' title="' + alt + '"';
					s += '><br>';
					s += '<small style="color:' + m_prop.titlecolor + ';">' + alt + '<' + '/small>';
/*					
				}
*/				
				s += '</td></tr></table> ';
				s += '<' + '/td>';
			}
			s += '<' + '/tr>';
		}
		s += '</tbody></table>';

		var o = $( m_placeholder );
		if ( o ) 
			 o.innerHTML = s;
	}
	function onThumbClick( e )
	{   var obj = visi.getEventTarget(e);
		if ( obj.tagName == "IMG" || obj.tagName == "SMALL")
		     obj = obj.parentNode;
			 
		var ind = obj.id.substring(obj.id.indexOf(m_prop.thumbprefix)+m_prop.thumbprefix.length);
		if ( m_images[ind].lnk)
		     visi.goToUrl(m_images[ind].lnk);
	}
	function setOnClick( )
	{   var tbl = $(m_prop.thumbtblid);

		var tds = tbl.getElementsByTagName( "TD");
		for ( var i = 0; i < tds.length; i++ )
		{   if ( tds[i].id && tds[i].id.indexOf(m_prop.thumbprefix) == 0 )
				tds[i].onclick = onThumbClick;
		}
	}
	
}
