/*! Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net)
* Licensed under the MIT License (LICENSE.txt).
*
* Version 1.0
*
* Based on Making Compact Forms More Accessible by Mike Brittain (http://alistapart.com/articles/makingcompactformsmoreaccessible)
*/

(function($){

$.fn.overlabel = function() {
    this.each(function() {
        var $label = $(this),
            $input = $('#' + $label.attr('for'));

    $label
        .addClass('overlabel')
        .bind('click', function(event) {
            $input.focus();
        });

    $input
        .bind('focus blur', function(event) {
            $label.css('display', (event.type == 'blur' && !$input.val() ? '' : 'none'));
        }).trigger('blur');
});
};

})(jQuery);


/*
    * Date Format 1.2.3
    * (c) 2007-2009 Steven Levithan <stevenlevithan.com>
    * MIT license
    *
    * Includes enhancements by Scott Trenda <scott.trenda.net>
    * and Kris Kowal <cixar.com/~kris.kowal/>
    *
    * Accepts a date, a mask, or a date and a mask.
    * Returns a formatted version of the given date.
    * The date defaults to the current date/time.
    * The mask defaults to dateFormat.masks.default.
    */

var dateFormat = function () {
    var	token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,
        timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,
        timezoneClip = /[^-+\dA-Z]/g,
        pad = function (val, len) {
            val = String(val);
            len = len || 2;
            while (val.length < len) val = "0" + val;
            return val;
        };

    // Regexes and supporting functions are cached through closure
    return function (date, mask, utc) {
        var dF = dateFormat;

    // You can't provide utc if you skip other args (use the "UTC:" mask prefix)
    if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) {
        mask = date;
        date = undefined;
    }

    // Passing date through Date applies Date.parse, if necessary
    date = date ? new Date(date) : new Date;
    if (isNaN(date)) throw SyntaxError("invalid date");

    mask = String(dF.masks[mask] || mask || dF.masks["default"]);

    // Allow setting the utc argument via the mask
    if (mask.slice(0, 4) == "UTC:") {
        mask = mask.slice(4);
        utc = true;
    }

    var	_ = utc ? "getUTC" : "get",
        d = date[_ + "Date"](),
        D = date[_ + "Day"](),
        m = date[_ + "Month"](),
        y = date[_ + "FullYear"](),
        H = date[_ + "Hours"](),
        M = date[_ + "Minutes"](),
        s = date[_ + "Seconds"](),
        L = date[_ + "Milliseconds"](),
        o = utc ? 0 : date.getTimezoneOffset(),
        flags = {
            d:    d,
            dd:   pad(d),
            ddd:  dF.i18n.dayNames[D],
            dddd: dF.i18n.dayNames[D + 7],
            m:    m + 1,
            mm:   pad(m + 1),
            mmm:  dF.i18n.monthNames[m],
            mmmm: dF.i18n.monthNames[m + 12],
            yy:   String(y).slice(2),
            yyyy: y,
            h:    H % 12 || 12,
            hh:   pad(H % 12 || 12),
            H:    H,
            HH:   pad(H),
            M:    M,
            MM:   pad(M),
            s:    s,
            ss:   pad(s),
            l:    pad(L, 3),
            L:    pad(L > 99 ? Math.round(L / 10) : L),
            t:    H < 12 ? "a"  : "p",
            tt:   H < 12 ? "am" : "pm",
            T:    H < 12 ? "A"  : "P",
            TT:   H < 12 ? "AM" : "PM",
            Z:    utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""),
            o:    (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),
            S:    ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10]
        };

    return mask.replace(token, function ($0) {
        return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);
    });
};
}();

// Some common format strings
dateFormat.masks = {
    "default":      "dd.mm.yyyy HH:MM",
    shortDate:      "m/d/yy",
    mediumDate:     "mmm d, yyyy",
    longDate:       "mmmm d, yyyy",
    fullDate:       "dddd, mmmm d, yyyy",
    shortTime:      "h:MM TT",
    mediumTime:     "h:MM:ss TT",
    longTime:       "h:MM:ss TT Z",
    isoDate:        "yyyy-mm-dd",
    isoTime:        "HH:MM:ss",
    isoDateTime:    "yyyy-mm-dd'T'HH:MM:ss",
    isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"
};

// Internationalization strings
dateFormat.i18n = {
    dayNames: [
        "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",
        "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
    ],
    monthNames: [
        "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
        "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
    ]
};

// For convenience...
Date.prototype.format = function (mask, utc) {
    return dateFormat(this, mask, utc);
};


function calcDayResult() {
    //  get the two fields
    var days = $("input[name='dayrange']:checked").val();
    var start_or_middle = $("input[name='date_is_start_or_middle']:checked").val();
    var sdate = $('#startdateday').dateEntry('getDate');

    var result_from = '';   
    var result_to = '';   

    if (days === undefined || start_or_middle === undefined || sdate === null) {
        result_from = 'Für die Vorschau bitte alles ausfüllen!';
        result_to = result_from;
    } else {
        if (start_or_middle === 'start'){
            // now calculation   
            var scalc = sdate.getTime();
            // add days to calc	   
            result_from = sdate.format("dd.mm.yyyy")+' von '+ sdate.format("HH:MM")+' Uhr';
            var tmpDate = new Date();
            var sdcalc = scalc + ((parseInt(days)-1) * 24 * 60 * 60 * 1000);   
            tmpDate.setTime(sdcalc);
            tmpDate.setHours(23);	
            tmpDate.setMinutes(59);	
            result_to = tmpDate.format("dd.mm.yyyy")+' bis '+tmpDate.format("HH:MM")+' Uhr';	
        } else {
            var scalc = sdate.getTime();
            var delta = parseInt(parseInt(days)/2);
            
            var start = new Date();
            var tmp = scalc - (delta * 24 * 60 * 60 * 1000);
            start.setTime(tmp);
            result_from = start.format("dd.mm.yyyy")+' von '+ sdate.format("HH:MM")+' Uhr';
            
            var end = new Date();
            var tmp = scalc + (delta * 24 * 60 * 60 * 1000);
            end.setTime(tmp);
            end.setHours(23);	
            end.setMinutes(59);	
            result_to = end.format("dd.mm.yyyy")+' bis '+end.format("HH:MM")+' Uhr';	
        }
    };    

    // set results
    $('#dcalcstart').val(result_from);
    $('#dcalcend').val(result_to);


};

function calcHourResult() {
    //  get the three fields
    var hours = $('#hours').val();
    var sdate = $('#startdatehour').dateEntry('getDate');
    var stime = $('#starttimehour').dateEntry('getTime');
    var result_from = '';   
    var result_to = '';   


    // Validation 
    // all fields empty
    if ((hours === 'empty') && (sdate  === null) && (stime  === null)) {
        result_from = 'Bitte Datum, Uhrzeit und Stunden eingeben!';
        result_to = result_from;
    // select empty and date empty
    } else if ((hours === 'empty') && (sdate  === null) && (stime  !== null)) {
        result_from = 'Bitte Datum und Zeitspanne eingeben!';
        result_to = result_from;
    // select empty and time empty
    } else if ((hours === 'empty') && (sdate  !== null) && (stime  === null)) {
        result_from = 'Bitte Uhrzeit und Zeitspanne eingeben!';
        result_to = result_from;
    // date empty and time empty
    } else if ((hours !== 'empty') && (sdate  === null) && (stime  === null)) {
        result_from = 'Bitte Datum und Uhrzeit eingeben!';
        result_to = result_from;
    // time empty
    } else if ((hours !== 'empty') && (sdate  !== null) && (stime  === null)) {
        result_from = 'Bitte Uhrzeit eingeben!';
        result_to = result_from;
    // date empty   
    } else if ((hours !== 'empty') && (sdate  === null) && (stime  !== null)) {
        result_from = 'Bitte Startdatum eingeben!';
        result_to = result_from;
    // select empty   
    } else if ((hours === 'empty') && (sdate  !== null) && (stime  !== null)) {
        result_from = 'Bitte Stunden eingeben!';
        result_to = result_from;
    } else {

    var oneHour = 60000 * 60;  // 60 sec * 1000 msec
    var range = parseInt(hours) * oneHour;
    var fromDate = new Date();
    var toDate = new Date();

    // now calculation   
    sdate.setHours(stime.getHours(), stime.getMinutes());
    var scalc = sdate.getTime();	

    fromDate.setTime(scalc);
    toDate.setTime(scalc + range);

    result_from = fromDate.format("dd.mm.yyyy")+' von '+ fromDate.format("HH:MM")+' Uhr';
    result_to = toDate.format("dd.mm.yyyy")+' bis '+ toDate.format("HH:MM")+' Uhr';
};
// set results
$('#hcalcstart').val(result_from);
$('#hcalcend').val(result_to);

};


function calcTimeResult() {
    //  get the three fields
    var minutes = $('#timerange').val();
    var sdate = $('#startdatetime').dateEntry('getDate');
    var stime = $('#starttimetime').dateEntry('getTime');
    var result_from = '';   
    var result_to = '';   

    // Validation 
    // all fields empty
    if ((minutes === 'empty') && (sdate  === null) && (stime  === null)) {
        result_from = 'Bitte Datum, Uhrzeit und Zeitspanne eingeben!';
        result_to = result_from;
    // select empty and date empty
    } else if ((minutes === 'empty') && (sdate  === null) && (stime  !== null)) {
        result_from = 'Bitte Datum und Zeitspanne eingeben!';
        result_to = result_from;
    // select empty and time empty
    } else if ((minutes === 'empty') && (sdate  !== null) && (stime  === null)) {
        result_from = 'Bitte Uhrzeit und Zeitspanne eingeben!';
        result_to = result_from;
    // date empty and time empty
    } else if ((minutes !== 'empty') && (sdate  === null) && (stime  === null)) {
        result_from = 'Bitte Datum und Uhrzeit eingeben!';
        result_to = result_from;
    // time empty
    } else if ((minutes !== 'empty') && (sdate  !== null) && (stime  === null)) {
        result_from = 'Bitte Uhrzeit eingeben!';
        result_to = result_from;
    // date empty   
    } else if ((minutes !== 'empty') && (sdate  === null) && (stime  !== null)) {
        result_from = 'Bitte Startdatum eingeben!';
        result_to = result_from;
    // select empty   
    } else if ((minutes === 'empty') && (sdate  !== null) && (stime  !== null)) {
        result_from = 'Bitte Zeitspanne eingeben!';
        result_to = result_from;
    }
    else
    {

    var oneMin = 60000;  // 60 sec * 1000 msec
    var range = parseInt(minutes) * oneMin;
    var fromDate = new Date();
    var toDate = new Date();

    // now calculation   
    sdate.setHours(stime.getHours(), stime.getMinutes());
    var scalc = sdate.getTime();	

    fromDate.setTime(scalc - range);
    toDate.setTime(scalc + range);

    result_from = fromDate.format("dd.mm.yyyy")+' von '+ fromDate.format("HH:MM")+' Uhr';
    result_to = toDate.format("dd.mm.yyyy")+' bis '+ toDate.format("HH:MM")+' Uhr';
};    

    // set results
    $('#tcalcstart').val(result_from);
    $('#tcalcend').val(result_to);

};



function calcRangeResult() {
    var date_from = $('#date_from').dateEntry('getDate');
    var date_to = $('#date_to').dateEntry('getDate');
    var time_from = $('#time_from').timeEntry('getTime');
    var time_to = $('#time_to').timeEntry('getTime');

    var result_from = '';   
    var result_to = '';   

    // Validation 
    // date_from empty
    if (date_from === null) {
        result_from = 'Bitte "Datum von" ausfüllen!';
        result_to = result_from;
    } else {
        // now we can calc the date-time from
        var obj_from = new Date(); 
        var obj_to = new Date();
        // set defaults      
        obj_from.setTime(date_from.getTime());
        obj_to.setTime(date_from.getTime());

    if (time_from === null) {
        // set 00:00 as time
        obj_from.setHours(0,0);
    } else {
        obj_from.setHours(time_from.getHours(), time_from.getMinutes());
    };

    // now the date-time to
    if ((date_to === null) && (time_to === null)) {
        // set date_from as default and 23:59
        obj_to.setHours(23,59);
    } else if ((date_to !== null) && (time_to === null)) {
        // set date and hour default
        obj_to.setTime(date_to.getTime());      
        obj_to.setHours(23,59);
    } else if ((date_to === null) && (time_to !== null)) {
        // set date and hour default
        obj_to.setHours(time_to.getHours(), time_to.getMinutes());
    } else if ((date_to !== null) && (time_to !== null)) {
        // set date and hour default
        obj_to.setTime(date_to.getTime());      
        obj_to.setHours(time_to.getHours(), time_to.getMinutes());
    };


    result_from = obj_from.format("dd.mm.yyyy")+' von '+ obj_from.format("HH:MM")+' Uhr';
    result_to = obj_to.format("dd.mm.yyyy")+' bis '+ obj_to.format("HH:MM")+' Uhr';

    };

    $('#rcalcstart').val(result_from);
    $('#rcalcend').val(result_to);
};


// Business rules
function brDateto() {
    // set min date for date to
    var date_from = $('#date_from');
    var date_to = $('#date_to');
    if ((date_from.dateEntry('getDate') !== null) && (date_to.dateEntry('getDate') == null)) {
        // set date
        date_to.dateEntry('change', { minDate: date_from.dateEntry('getDate')});
        date_to.dateEntry('setDate', date_from.dateEntry('getDate'));
    } else if (date_from.dateEntry('getDate') !== null) {
        // always set min date 
        date_to.dateEntry('change', { minDate: date_from.dateEntry('getDate')});
    };
};


function validateInquiry() {

    // first check if an *real* submit is done
    var formaction = $('#frmaction').val();
    if (formaction !== '') { return true; };

    // check if reset-button has been pressed
    if( $('#wgaform').context.activeElement.name === 'reset') {
        return true;
    };

    // first mandatory checks
    var agb = $('#agb').attr('checked');
    if (agb == false) {
        alert('Bitte bestätigen Sie, dass Sie die AGB gelesen haben.');
        $('#submit').lockSubmitReset();
        return false;
    };

    var retVal = true;
    // check if topic 31 is available and checked
    var pl_type = $('#pl_type').val();
    if ((pl_type === '3') || (pl_type === '1') || (pl_type === '2')) {
        // only for pl
        var pl_31 = $('#pl_31:checked');
        var device_type = $('#devtype').val();
        if (((device_type === '0') || (device_type === '')) && (pl_31.length > 0))  {
            retVal = confirm('Sie haben keine Gerätekategorie ausgewählt. \nWenn Sie eine Gerätekategorie auswählen, \n'+
                'können Sie das Ergebnis Ihrer Anfrage verbessern. \n\nWollen Sie die Anfrage dennoch starten ?');
        };       
    };   

    // reset submit-button
    if (retVal == false) {
        $('#submit').lockSubmitReset();
    };
    return retVal;
};



function validatePLZInquiry() {

    // first check if an *real* submit is done
    var formaction = $('#frmaction').val();
    if (formaction !== '') { return true; };

    // check if reset-button has been pressed
    if( $('#wgaform').context.activeElement.name === 'reset') {
        return true;
    };

    // first mandatory checks
    var agb = $('#agb').attr('checked');
    if (agb == false) {
        alert('Bitte bestätigen Sie, dass Sie die AGB gelesen haben.');
        $('#submit').lockSubmitReset();
        return false;
    };


    // collect data for ajax-call
    var cust_key = $('#cust_key').val();
    var cust_key_ex = $('#cust_key_ex').val();

    if (cust_key_ex !== undefined) {
        var division_key = $('#division_key').val();
        var dep_key = $('#dep_key').val();

    if (cust_key_ex == 'empty' || division_key == 'empty' || dep_key == 'empty') {
        alert('Bitte füllen Sie alle Angaben zur Gesellschaft aus !');
        $('#submit').lockSubmitReset(); 
        return false;
    } else {
        // get cust_key
        if (cust_key_ex !== undefined) { cust_key = cust_key_ex };
        if (division_key !== undefined) { cust_key = division_key };
        if (dep_key !== undefined) { cust_key = dep_key };


}
};


    var date_from = $('#date_from').val();
    var date_to = $('#date_to').val();

    // get selected topics
    var retVal = false;

    $.ajax({
        url: '/cbapp/eplzinfo/getprice',
        data: ({cust_key : cust_key,
            date_from : date_from,
            date_to : date_to,
            topics : [6]
            }),
        dataType: "json",
        async: false,
        type: "POST",
        success: function(data) {

    if(data.showPrice) {
        retVal = confirm('Die Kosten dieser Anfrage belaufen sich auf '+data.totalPrice+'\n zzgl. gesetzlicher Mehrwertsteuer.');
    } else {
        retVal = true;
    };
}
});  

    // reset submit-button
    if (retVal == false) {
        $('#submit').lockSubmitReset();
    };
    return retVal;
};



function processwmo(wmo_key, mode) {

    var drange = $('#wmo_'+wmo_key).val();
    var retVal = false;
    /*$.ajax({
        url: '/cbapp/eweather/getprice',
        data: ({wmo_key : wmo_key,
            mode : mode,
            drange : drange
            }),
        dataType: "json",
        async: false,
        type: "POST",
        success: function(data) {
            if(data.showPrice) {
                retVal = confirm('Die Kosten dieser Anfrage belaufen sich auf '+data.totalPrice+'\n zzgl. gesetzlicher Mehrwertsteuer.');
            } else {
                retVal = true;
            };
        }
    });*/
    retVal = true;
    if (retVal) {
        location.href = '/wetterwerteanfrage?frmaction=wstation&drange='+drange+'&wmo='+wmo_key+'&mode='+mode;
    };


return retVal;
};


/**
    * Takes a Date object as parameter and returns the date formated as string (WW=Weekday):
    * WW, DD.MM.YYYY
    * Do, 28.02.2010
    */
function formatDate(dt){
    var year = '' + dt.getFullYear();
    var month = '' + (dt.getMonth()+1);
    var day = ''+ dt.getDate();

    // parse day
        if (day.length == 1){ 
            day = '0' + day;
        }

    // parse month
    if (month.length == 1){
        month = '0' + month;
    }

    // get week day
    var dowArray = new Array("So", "Mo", "Di", "Mi", "Do", "Fr", "Sa");		
    var dow = dt.getDay();
    return day + '.' + month + '.' + year
    // return dowArray[dow] + ', ' + day + '.' + month + '.' + year;
};



/**
    * Tries to parse a string and returns a Date object.
    * If the string doesnt match, undefined is returned.
    * Format: DD.MM.YYYY
    *  - the day and month may have one digit
    *  - the year may have two digits
    *  - seperators may be: .,-
    *  - the format returned by formatDate() is also allowed
    */
function parseDate(value){
    value = value.replace(/[-,]/g , '.');
    var res = value.match(/^([\w]{2}[,.-] *)?([\d]{1,2})[.,-]([\d]{1,2})[.,-]([\d]{2}([\d]{2})?)$/);

    if (res){
        var day = res[2];
        var month = res[3];

    // parse year
var year = res[4]
    if (year.length == 2){
        y = parseInt(year);
            if (y > 30){
                year = '19' + year;
            } else {
                year = '20' + year;
            }			
    }

    return new Date(year, parseInt(month)-1, day);
}

    //else{console.log('No match for ', value) }
};

function parseTime(value){
    value = value.replace(/[,.-]/g, ':');
    var res = value.match(/^([\d]{1,2}):([\d]{2})$/);
    if (res){
        var hour = parseInt(res[1]);
        var minute = parseInt(res[2]);

    // Date() requires a year/month/day to store a time. Since these wont get
    // displayed, we use arbitary values
    dt = new Date(2020, 10, 10, hour, minute);
    return dt;
}
};

function formatTime(dt){
    var hour = ''+(dt.getHours());
    var minute = ''+(dt.getMinutes());
    if (hour.length === 1){ hour = '0' + hour; }
    if (minute.length === 1) { minute = '0' + minute;}
    return hour + ':' + minute;
};


function parseHour(value){
    value = parseInt(value);
    if (!isNaN(value)){
        var dt = new Date(2020, 10, 10, value, 0);
        return dt;
    }
};

function formatHour(dt){
    var hour = ''+dt.getHours();
    if (hour.length === 1){ hour = '0'+hour; }
    return hour;
};


overlayConfig = { 
    effect: 'apple', 
    expose: { 
        color: '#fff', 
        loadSpeed: 10, 
        opacity: 0.5 
    },
    onBeforeLoad: function() { 
        // hide all select-elements in IE6
        if (jQuery.browser.msie && jQuery.browser.version === '6.0') {
            $(":input[type|=select]").hide();
        };

        //var that = this;					
        //$(this.getOverlay()).remove().appendTo("body");
        //$(".close", this.getOverlay()).click(function(e){ that.close(); });			    

        // grab wrapper element inside content 
        var wrap = this.getContent().find(".contentWrap"); 
        // load the page specified in the trigger 
        wrap.load(this.getTrigger().attr("href")); 
    },
    // when the overlay is closed
    onClose: function() {
        // show all select-elements in IE6
        if (jQuery.browser.msie && jQuery.browser.version === '6.0') {
            $(":input[type|=select]").show();
        };
    }
};


function initArchiveGrid() {
    $("#archivetable").jqGrid({
        url:'/cbapp/archive/resultGridAjax',
        datatype: "json",
			colNames:['', T_ArchiveGrid.dmg_no, T_ArchiveGrid.incoming,
						T_ArchiveGrid.dmg_zip_code, T_ArchiveGrid.dmg_location, T_ArchiveGrid.dmg_date_from,
						T_ArchiveGrid.plt_description, T_ArchiveGrid.results],
            colModel:[
                {name:'pdf_link',index:'pdf_link', width:20, sortable:false},
                {name:'damage_no',index:'damage_no', width:130, formatter: 'link'},
                {name:'incoming',index:'incoming', width:70, align:"center"},
                {name:'damage_zip_code',index:'damage_zip_code', width:80, align:"right"},		
                {name:'damage_location',index:'damage_location', width:100,align:"left"},		
                {name:'damage_date_from',index:'damage_date_from', width:95, align:"center"},		
                {name:'plt_description',index:'plt_description', width:100},
                {name:'results',index:'results', width:125, sortable:false}
            ],
            rowNum:20,
            rowList:[20,50,100],
            pager: '#archivepager',

    viewrecords: true,
    viewsortcols: [true, 'vertical', true],
	sortorder: "desc",
    height: 460,
    width: 712,
    loadComplete: function() {
        var anz = $("#archivetable").jqGrid('getGridParam',"records");
        if (anz === 0) {
            jQuery("#rsperror").html(T_ArchiveGrid.rsperror);
        };
    },
    gridComplete: function() { 
        $.each($("a[rel|=#overlay]"), function(i, e) { 
            $(e).overlay(overlayConfig);
        });
    }
  });
};



function initWipotArchiveGrid() {
    $("#archivetable").jqGrid({
        url:'/cbapp/wipotential_archive/resultGridAjax',
        datatype: "json",
            colNames: T_Wipot.colNames,
            colModel:[
                {name:'pdflink', index:'pdflink', width:15, sortable:false},
				{name:'csvlink', index:'csvlink', width:15, sortable:false},
                {name:'created_at',index:'created_at', width:50, sortable:true},
                {name:'label',index:'label', width:120, sortable:true},
                {name:'hub_heights',index:'hub_heights', width:70, sortable:false},
                {name:'wind_speed',index:'wind_speed', width:50, align:"center", sortable:false},
                {name:'date_from_to',index:'date_from_to', width:70, align:"center", sortable: false},
            ],
            rowNum:20,
            rowList:[20,50,100],
            pager: '#archivepager',

        viewrecords: true,
		viewsortcols: [true, 'vertical', true],
        sortorder: "desc",
		height: "100%",
        width: 712,
        onSelectRow: function(rowid) {
			jQuery.getJSON('/cbapp/wipotential_archive/getInquiryView', {id: rowid}, function(res) {
				$('#inquiryviewform').replaceWith(res);
				initTooltips();
				$.each($("a[rel|=#overlay]"), function(i, e) { 
					$(e).overlay(overlayConfig);
				});
			});
		},
		
		gridComplete: function(){
			var firstid = $("tr:first", this).attr("id");
			$(this).setSelection(firstid);
		}
  });
};



/**
 * For topic 31 (overvoltage) and device type. Used to enable/disable the select
 * element if the checkbox is clicked
 */
function enableDevtype(enable, elId){
    var sel = $('#devtype');
    if (enable){
        sel.removeAttr('disabled');
    } else {
        sel.attr('disabled', 'disabled');
    }
};

jQuery(function(){
    var checked = $('#pl_31').attr('checked');
    enableDevtype(checked, 'pl_31');
});


/**
 * Handler for the button-links for "new inquiry" on inquiry archive
 */
function takeoverButton(event){ 
    var frm = $('.takeover-form');
    frm.attr('action', $(this).attr('href'));
    frm.submit();
    return false; // "return false" is important to stop event propagation
};



/**
* JQueryTools Tooltips
* Note: the direction of the tooltip is the class of the parent div element 
* of the tooltip trigger
* <div class='top left'>
*    <img class='tooltip-trigger'>
* ...
*/
function initTooltips(){
	$(".tooltip-trigger").each(function(index, value){
		var el = $(this);
		el.tooltip({
			relative: true,
			position: el.parent().attr('class'),
			effect: 'fade'
		})
	});
};

/**
* Wipotential: Wait for result
*/
function initWaitForResult(){
	$('#wait-for-result').each(function(i, el){
		var errorMsg = T_Wipot.errorMsg;
		var success = function(res){
			if (res.success){
				$(el).replaceWith(res.successMsg);
				initTooltips();
			} else {
			    $(el).replaceWith(errorMsg);
			}
		};
		
		var error = function(XMLHttpRequest, textStatus, errorThrown){
			$(el).replaceWith(errorMsg);
		};
		
		// Generate URL with varying parameter to prevent IE* from caching
		var url = '/cbapp/wipotential_form/waitForResult?var=' + new Date().getTime();
		$.ajax({
			url: url,
			dataType: 'json',
			success: success,
			//error: error,
			timeout: 5 * 60 * 1000 //5 minute timeout
		});
	});
};



/*
* Dropdown menu
*/
function initDropDownMenu(){
	$('#nav ul.nav_level1 li').hover(
		function() { 
			if($(this).find('ul').length > 0) {
				var fA = $(this).find('a:first');
				var fAp = fA.position();
				var fAo = fA.offset();
				$('ul', this).css('display', 'block');
				$(this).find('li:first').css({'margin-top':'7px','padding-top':'10px'});
				$(this).find('li:last').css({'padding-bottom':'10px'});
				var n = 0;
				$(this).find('li').each(function(){
					if(n < $(this).text().length)
						n = $(this).text().length;
				});
				
				if(n > ( fA.text().length + 2)) {
					var box_width = ( ( n * 8 )>180) ? (n * 7):(n * 8);
					$('ul', this).css('width', box_width+'px');
				}
			}
		},
		function() { 
			$('ul', this).css('display', 'none');
		}
	);
};



jQuery(function(){
	initTooltips();
	initWaitForResult();
	initDropDownMenu();
	$("a[rel|=#overlay]").overlay(overlayConfig);

	/*
	 * Product selector
	 */
	$('#product_select').change(function() {
	   var val = $('#product_select').val();
	   if (val !== '0' && val !== '1') {
	     location.href=val;
	   };
	});
});

