/*
START: Written by Simon Willison
*/
function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	}
	else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}
/* END */

flashObject = function(id) {
        if(document.embeds && document.embeds[id] && typeof(document.embeds[id].LoadMovie) == 'function') {
            return document.embeds[id];
        } else if(document.getElementById) {
            return document.getElementById(id);
        }
    }
    

/*****************************************************************
* Flash Fix script
* Fixes embedded object activation issues in Internet Explorer
*****************************************************************/

flashfix = function() {
        // for IE automatic flash activation with conditional compiling
        if(!flashfix_called) {
            /*@cc_on
                @if (@_jscript_version >= 5)
                    theObjects = document.getElementsByTagName("object");
                    for (var i = 0; i < theObjects.length; i++) {
                        theObjects[i].outerHTML = theObjects[i].outerHTML; 
                    }
                @end
            @*/
            flashfix_called = true;
        }
}

    
/*
    Written by Jonathan Snook, http://www.snook.ca/jonathan
    Add-ons by Robert Nyman, http://www.robertnyman.com
*/

function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements)
}


function parseDate(str) {
    //alert('GDATE FORMAT: ' + g_date_format);
    if(g_date_format == '%Y.%m.%d') {
        if(str.match(/(\d{4})\.?(\d{2})\.?(\d{2})/)) {
            var y = parseInt(RegExp.$1, 10);
            var m = parseInt(RegExp.$2, 10);
            var d = parseInt(RegExp.$3, 10);
            return {year: y, month: m, date: d};
        }
    } else {
        if(str.match(/(\d{2})\.?(\d{2})\.?(\d{4})/)) {
            var y = parseInt(RegExp.$3, 10);
            var m = parseInt(RegExp.$2, 10);
            var d = parseInt(RegExp.$1, 10);
            return {year: y, month: m, date: d};
        }
    }
    
    return false;
}

function y2k(nr) {
    return nr < 1000 ? nr + 1900 : nr; 
}

function checkDate(y, m ,d) {
    
    var year = y2k(y);
    var month = m - 1;
    var day = d;
    
    var date_check = new Date(year, month, day);
    
    if(y2k(date_check.getYear()) == year && date_check.getMonth() == month && date_check.getDate() == day) {
        return date_check;
    } else {
        return false;
    }
}

function selectOption(select_box, value) {
    for(var i = 0; i < select_box.options.length; i++) {
        if(select_box.options[i].value == value) {
            select_box.options[i].selected = true;
        }
    }
}

function checkedRadio(radios) {
    for(var i=0; i < radios.length; i++) {
        if(radios[i].checked) {
            return radios[i];
        }
    }
}

function popUpGeneric(url, name, width, height, params) {
    var name = name || '_blank';
    var width = width || '910';
    var height = height || '900';
    var params = params || ',scrollbars=yes, resizable=yes';
    
    var window_obj = window.open(url, name, 'width=' + width + ', height=' + height + params);
    if(window.focus) { window_obj.focus(); }
}

function popHelp(url, name) {
    popUp(url, name, 411, 337);
}

String.prototype.pad= function(len, pad_chr) {
    var str = this;
    var pad_chr = pad_chr || '0';
    while(str.length < len) {
        str = pad_chr + str;
    }
    return str;
}

function setPeriod(filter_form, date_start_field, date_end_field) {
    var period_select = filter_form.period_select;
    var period_symbol = period_select.options[period_select.selectedIndex].value;
    
    if(!period_symbol) return false;
    
    var period_obj = getPeriod(period_symbol);
    var start_date = period_obj.start_date;
    var end_date = period_obj.end_date;
    var start_month = period_obj.start_date.getMonth() + 1;
    var end_month = period_obj.end_date.getMonth() + 1;
    
    
    var start_date_str = start_date.getDate().toString().pad(2) + '.' + start_month.toString().pad(2) + '.' + start_date.getFullYear().toString().pad(4);
    var end_date_str = end_date.getDate().toString().pad(2) + '.' + end_month.toString().pad(2) + '.' + end_date.getFullYear().toString().pad(4);
    
    
    if(g_date_format == '%Y.%m.%d') {
         start_date_str = start_date.getFullYear().toString().pad(4)  + '.' + start_month.toString().pad(2) + '.' + start_date.getDate().toString().pad(2);
         end_date_str = end_date.getFullYear().toString().pad(4)  + '.' + end_month.toString().pad(2) + '.' + end_date.getDate().toString().pad(2);
    }
    
    filter_form.elements[date_start_field].value = start_date_str;
    filter_form.elements[date_end_field].value = end_date_str;
}

function getDateStrParts(date_obj) {
    var year = date_obj.getFullYear().toString();
    var month = date_obj.getMonth() + 1;
    month = month.toString();
    day = date_obj.getDate().toString();;
    return {'day': day, 'month': month, 'year': year};
}


function getPeriodSymbol(date_start, date_end) {
    
    var days = Math.ceil((date_end.getTime() - date_start.getTime()) / (1000 * 60 * 60 * 24));
    var unit = 'd';
    var period = days;
    
    //window.console && console.log("days: " + period);
    
    if(days < 7) {
        unit = 'd';
        period = days;
    } else if(days < 30 && days % 7 == 0) {
        unit = 'w';
        period = days / 7;
    } else if(days < 365 && days % 30 == 0) {
        unit = 'm';
        period = days / 30;
    } else if(days < 365 && days % 31 == 0) {
        unit = 'm';
        period = days / 31;
    } else if(days % 365 == 0) {
        unit = 'y';
        period = days / 365;
    } else {
        return false;
    }
    return unit + '-' + period;
}

function getPeriod(period_symbol) {
    var end_date = new Date();
    var start_date = new Date();
    
    var multipliers = {'d' : 1, 'w' : 7, 'm' : 30, 'y': 365};
    
    if(period_symbol == 'd-0') {
        start_date = end_date;
    } else if(period_symbol == 'y=start') {
        start_date.setDate(1);
        start_date.setMonth(0);
    } else {
        unit = period_symbol.charAt(0);
        sign = period_symbol.charAt(1);
        value = parseInt(period_symbol.substring(2), 10);
        
        start_date.setTime(end_date.getTime() - value * multipliers[unit] * 86400000);
        
        // Warning safari does not like code on following row!!!!        
        //window.console && console.log("period_symbol: %s unit: %s sign: %s value: %s", period_symbol, unit, sign, value);
        //console.log("start:%o end:%o", start_date, end_date);
    }
    
    return {start_date: start_date, end_date: end_date};
 }

