// configurer le HTML de la scrollbar
box.ui('scroll').configure({
    bar: '<a href="#" class="{$barCls}"><span class="start"></span><span class="end"></span></a>'
});

// configurer l'offset des scrollbar dans les faux select
box.ui('form').configure({
    fauxOptionsScrollbarOffset: 1
});

box.dom(document).ready(function() {
    if($('#contextualProjectForm').length) {
        box.ui('form').create({
            element: '#contextualProjectForm'
        }).addReplacement();
        changeContextualSelectOptions();
        $('#contextualProjectForm .actions input').click(function(){
            rollupTracker._setCustomVar(2, "push-projet", "Location",2); // Google analytics
        });        
    }
    
    if($('#projectForm').length) {
        changeSelectOptions('projectForm');
    }
    
    box.bind({     
        'change.field.select.contextProfile': function(e) {
            changeContextualSelectOptions();
        },
        'change.field.select.profile': function(e) {
            changeSelectOptions(e.source.form);
        }
    });

    if($('.toggle a.toggleMore').length) {
        toggle();
    }
    
    /*if($('.flashWrapper').length) {
        manageFlashLink();
    }*/
    
    buttonHover();
});

/**
 * @description         manage flash object through swfobject
 * @note                html must be writen : <div id="?" class="flashWrapper"></div><a class="flashUrl" href="?">?</a>
 */
function manageFlashLink() {
    var i = 0; 
    $('.flashWrapper + a.flashUrl').each(function() {
        i++;var flashType = '';
        $(this).hide();
        var flashUrl = $(this).attr('href');
        if (flashUrl.indexOf('.flv') > -1) {
            flashType = 'video'
        } else if (flashUrl.indexOf('.swf') > -1){
            flashType = 'swf'
        }
        var place = $(this).parent().find('.flashWrapper').attr('id');
        openSwf(flashUrl, place, i, flashType);
    });
}

/**
 * @section         contextual project form
 * @description     Change the installation select box according to the selected profile
 * @note            Use profile.xml.php
 */
function changeContextualSelectOptions() {
    $.get("/profiles.xml.php", {profile:$('#contextProfile').attr('value')},
    function(data){
        var newOptions = new Array();
        newOptions[0] = {value:0,text:"",selected:false};
        
        xmlDocRef = StringtoXML(data).getElementsByTagName("profile");
        var iDefaultSelectIndex = 1;
        for (i=0; i<xmlDocRef.length; i++) {
            var indexSelected = false;
            if (i == iDefaultSelectIndex) {
                indexSelected = true;
            }
            newOptions[i] = {
                value: xmlDocRef[i].getAttribute("id"),
                text: xmlDocRef[i].firstChild.nodeValue,
                selected:indexSelected
            };
        }
        box.ui('form.contextualProjectForm').field('contextInstallation').setOptions(newOptions, true);
        if (xmlDocRef.length > 2){
               box.ui('form.contextualProjectForm').field('contextInstallation').setIndex(0, true);
        }
        else{
                box.ui('form.contextualProjectForm').field('contextInstallation').setIndex(iDefaultSelectIndex, true);
        }
        //box.ui('form.contextualProjectForm').field('contextInstallation').setIndex(box.ui('form.contextualProjectForm').field('contextInstallation').getIndex(), true);
        //box.ui('form.contextualProjectForm').field('contextInstallation').setIndex(iDefaultSelectIndex, true);
});
}

function changeSelectOptions(_form) {
    $.get("/profiles.xml.php", {profile:$('#profile').attr('value')}, 
    function(data){
        var newOptions = new Array();
        newOptions[0] = {value:0,text:"",selected:false};
        
        xmlDocRef = StringtoXML(data).getElementsByTagName("profile");

        for (i=0; i<xmlDocRef.length; i++) {
            var indexSelected = false;
            if (i == 0) {
                indexSelected = true;
            }
            newOptions[i] = {
                value: xmlDocRef[i].getAttribute("id"),
                text: xmlDocRef[i].firstChild.nodeValue,
                selected:indexSelected
            };
        }
        if (_form == 'faqPhotovoltaicsForm') {
            box.ui('form.'+_form).field('thematics').setOptions(newOptions, true);
            box.ui('form.'+_form).field('thematics').setIndex(box.ui('form.'+_form).field('thematics').getIndex(), true);
        } else {
            box.ui('form.'+_form).field('installation').setOptions(newOptions, true);
            box.ui('form.'+_form).field('installation').setIndex(box.ui('form.'+_form).field('installation').getIndex(), true);
        }
    });
}

/**
 * @section         callback form
 * @note            Use dates.xml.php
 */

function changeDaysOfMonth () {
    $.get("/dates.xml.php", {month:$('#callbackMonth').attr('value'), year:$('#callbackYear').attr('value')},
    function(data){
     	var newOptions = new Array();
        newOptions[0] = {value:0,text:"",selected:false};
        xmlDocRef = StringtoXML(data).getElementsByTagName("day");
		for (i=0; i<xmlDocRef.length; i++) {
            var indexSelected = false;
            
            if (i == box.ui('form.callbackForm').field('callbackDay').getIndex()) {
                indexSelected = true;
                selectedOption = i;
            }
            newOptions[i] = {
                value: xmlDocRef[i].getAttribute("id"),
                text: xmlDocRef[i].firstChild.nodeValue,
                selected: indexSelected
            };
        }
        box.ui('form.callbackForm').field('callbackDay').setOptions(newOptions, true);
        box.ui('form.callbackForm').field('callbackDay').setIndex(selectedOption);
    });
}

/**
 * @section         callback form
 * @note            Use datesmonth.xml.php
 */

function changeMonthOfYear () {
	$.get("/datesmonth.xml.php", {year:$('#callbackYear').attr('value')},
    function(data){
     	var newOptions = new Array();
        newOptions[0] = {value:0,text:"",selected:false};
		box.ui('form.callbackForm').field('callbackDay').setIndex(0);
        xmlDocRef = StringtoXML(data).getElementsByTagName("month");
	    for (i=0; i<xmlDocRef.length; i++) {
            var indexSelected = false;
            if (i == box.ui('form.callbackForm').field('callbackMonth').getIndex()) {
                indexSelected = true;
                selectedOption = i;
            }
            newOptions[i] = {
                value: xmlDocRef[i].getAttribute("id"),
                text: xmlDocRef[i].firstChild.nodeValue,
                selected: indexSelected
            };
        }
        box.ui('form.callbackForm').field('callbackMonth').setOptions(newOptions, true);
     	box.ui('form.callbackForm').field('callbackMonth').setIndex(0);
	});
}


/**
 * @section     hover effect for *-off.png buttons
 */
function buttonHover() {
    $('a img').each(function() {
        var source = $(this).attr('src');
        if ((source.indexOf('btn-') > 1) && (source.indexOf('-off.png') > -1)) {
            var imageUrl = $(this).attr('src');
            var imageUrlHovered = imageUrl.replace('-off.png','-on.png');
            $(this).hover(
                function() {
                    $(this).attr('src',imageUrlHovered);
                    if (window.ie6) {
                        $(this).parent().correctPNG();
                    };
                },
                function() {
                    $(this).attr('src',imageUrl);
                    if (window.ie6) {
                        $(this).parent().correctPNG();
                    };
                }
            );
        }
    });
    $('input[type="image"]').each(function() {
        var source = $(this).attr('src');
        if ((source.indexOf('btn-') > 1) && (source.indexOf('-off.png') > -1)) {
            var imageUrl = $(this).attr('src');
            var imageUrlHovered = imageUrl.replace('-off.png','-on.png');
            $(this).hover(
                function() {
                    $(this).attr('src',imageUrlHovered);
                    if (window.ie6) {
                        $(this).parent().correctPNG();
                    };
                },
                function() {
                    $(this).attr('src',imageUrl);
                    if (window.ie6) {
                        $(this).parent().correctPNG();
                    };
            });
        };
    });
}


/**
 * @section     toggle
 * @note        <div class="toggle"><a class="toggleMore" href="#">?</a><div>content<a class="toggleLess" href="#">?</a></div></div>
 */

function toggle() {
    $('.toggle a.toggleMore + div').hide();
    box.dom(document).find('a.toggleMore').click(function(e) {
        e.preventDefault();
        
        var open = $(this);
        var close = $(this).parent().find('a.toggleLess');
        var toggled = $(this).parent().find('div:first');
        
        if (toggled.find('.flashWrapper')) {
            manageFlashLink();
        }
        
        if ($("#flashProduct").length) {
            flashProductLaunch.init("flashProduct", $("#flashProductLink").attr('href'), '660', '495', '', '');
        }
        
        open.slideUp('fast');
        toggled.slideDown('fast');
                        
        close.click(function(e) {
            e.preventDefault();
            
            if (toggled.find('object').length) {
                var id = toggled.find('object').attr('id');
                toggled.find('object').remove();
                toggled.prepend('<div id="' + id + '" class="flashWrapper"></div>');
            }
            
            toggled.slideUp('fast');
            toggled.hide();
            open.slideDown('fast');
        });
    });
}

/**
* @description convert a text into xml
*/
function StringtoXML(text){
    if (window.ActiveXObject){
        var doc = new ActiveXObject('Microsoft.XMLDOM');
        doc.async = 'false';
        doc.loadXML(text);
    } else {
        var parser = new DOMParser();
        var doc = parser.parseFromString(text,'text/xml');
    }
    return doc;
}

/**
 * @section flash
 */
var openSwf = function(swfFile, place, i, flashType) {
    if (flashType == 'video') {
        var fo = new SWFObject(l10n.url.flvPlayer, 'videoFlash', '640', '360', '9.0.0', '#ffffff', true );
        fo.addVariable('flvPath', swfFile)
        fo.addParam('allowScriptAccess','always');
        fo.addParam('allowFullScreen','true');
        fo.write(place)
    } else if (flashType == 'swf') {
        var fo = new SWFObject(swfFile, 'flash', '640', '360', '9.0.0', '#000000', true );
        fo.addParam('allowScriptAccess','always');
        fo.write(place);
    }
};

var flashProductLaunch = {
    init:function(target, swfUrl, width, height, xmlRangePath, xmlDeptPath){

        var fo = new SWFObject(swfUrl, 'player', width, height, "9.0.0.0", '#000000', true);
    
            fo.addParam('quality','best');
            fo.addParam('scale','noScale');
            fo.addParam('allowScriptAccess','always');
            fo.addParam('wmode','transparent');
            if (xmlRangePath != '') {
                fo.addVariable('xmlRangePath', xmlRangePath);
            }
            if (xmlDeptPath != '') {
                fo.addVariable('xmlDeptPath', xmlDeptPath);
            }
    
            fo.write(target);
            return false; 
    }
};