/**
 *  js isere_en_live webcams component's controller
 */
var webcamsXml;
var sWebcamNodeXPTemplateIndex = '//stations/station[#index#]';
var sWebcamNodeXPTemplateId = '//stations/station[@id="#id#"]';
var sWebcamAttributeId = '/@id';
var sWebcamNameAttribute = '/@name';
var sWebcamUrlAttribute = '/webcam/@url';
var sWebcamRegExpTestAttribute = '/webcam[#index#]';
var sWebcamAlternativeUrlAttribute = '/@url';
var cookie_webcam = 'isere_en_live_webcam';
var clientReg = /__1$/;
var tPeriodWebcam;

window.addEvent('domready',initWebcams);
function initWebcams()
{
    var webcamsRequest = new Request({method: 'get', url: '../content/ajax/stations.xml'});
    webcamsRequest.addEvent('success',webcamsLoaded);
    webcamsRequest.addEvent('success',setWebcamsSelect);
    webcamsRequest.send();
}

function setWebcamsSelectScroll()
{
    if( $('webcams_selector_main') 
        && $('webcams_selector_opt'))
    {
        $$('.optMain').setStyle('display','block');
        if($('webcams_selector_opt').offsetHeight != 0
            && $('webcams_selector_opt').offsetWidth != 0)
        {
            $clear(tPeriodWebcam);
            $oWebcamScrollBar = new ScrollBar(
                'webcams_selector_main',
                'webcams_selector_opt', 
                {
                    'hScroll': false
                }
            );
        }
        $$('.optMain').setStyle('display','none');
    }
}

function webcamsLoaded(reponseText, responseXML)
{
    webcamsXml = responseXML;
}

function getWebcamNodeByIndex(iIndex)
{
    if (! window.ActiveXObject)
    {
        iIndex += 1;
    }
    return sWebcamNodeXPTemplateIndex.replace('#index#', iIndex);
}

function getWebcamOnStationByIndex(iIndex)
{
	if (! window.ActiveXObject)
    {
        iIndex += 1;
    }
	return sWebcamRegExpTestAttribute.replace('#index#', iIndex);
}
function getWebcamNodeById(iId)
{
     return sWebcamNodeXPTemplateId.replace('#id#', iId);
}

function setWebcamsSelect()
{
    var aWebcams = webcamsXml.getElementsByTagName('station');
    var cookieValue = Cookie.read(cookie_webcam);

    for(var i = 0 ; i < aWebcams.length ; i++)
    {
        var sWebcamId = SelectSingleNode(webcamsXml, getWebcamNodeByIndex(i) + sWebcamAttributeId);
        var sWebcamName = SelectSingleNode(webcamsXml, getWebcamNodeById(sWebcamId) + sWebcamNameAttribute);
        var opt = new Option();
        opt.value = sWebcamId;
        if (opt.value == cookieValue)
        {
            opt.selected = true;
        }
        opt.innerHTML = sWebcamName;
        document.getElementById('webcam_html_select').appendChild(opt);
        var myCookie = Cookie.read(name);
        if (! cookieValue && i == 0)
        {
            changeWebcamImg(sWebcamId);
        }
        else if (cookieValue)
        {
            changeWebcamImg(cookieValue);

        }
    }
    var webcamSelect = new CustomSelect('webcams_selector');
    $$('.optContainer .opt').each(function(item, i){
        item.addEvent('click',function(event){
            if(item.getParent().id == 'webcams_selector_text')
			{
                if(event)
                {
                    event.stop();
                }
                changeWebcamImg(this.value);
                setWebcamCookie(this.value);
            }
        });
    });
    
    tPeriodWebcam = setWebcamsSelectScroll.periodical(200);
}

function changeWebcamImg(sId)
{	
	var iNbWebcams = 4; 
	var sImgLocation = SelectSingleNode(webcamsXml, getWebcamNodeById(sId) + sWebcamUrlAttribute);
	var bWebcamFound = false;
	for(var i = 0; i < iNbWebcams  && ! bWebcamFound; i++)
	{
		var testString = SelectSingleNode(webcamsXml, getWebcamNodeById(sId) + getWebcamOnStationByIndex(i) + sWebcamNameAttribute);
		if (clientReg.test(testString))
		{
			var node = getWebcamNodeById(sId) + getWebcamOnStationByIndex(i) + sWebcamAlternativeUrlAttribute;
			sImgLocation = SelectSingleNode(webcamsXml, node);			
			bWebcamFound = true;
		}
	}
    
    var sImgTitle = SelectSingleNode(webcamsXml, getWebcamNodeById(sId) + sWebcamNameAttribute);
    $('webcam_img').src = sImgLocation;
    $('webcam_smoothbox').setAttribute('href',sImgLocation);
    $('webcam_smoothbox').setAttribute('title',sImgTitle);
}

function setWebcamCookie(sId)
{
    var myCookie  = Cookie.write(cookie_webcam, sId, {duration: 15});

}
