var $lbi = jQuery.noConflict();
var ie7 = ($lbi.browser.msie && parseInt($lbi.browser.version) < 8);

var addthis_config = { ui_click: true}; 
//override in google code


$lbi(document).ready(function () {

    setupFormValidation();

    $lbi('#searchTxt').keyup(function (e) {
        if (e.keyCode == 13) {
            setUrl();
            document.location = document.getElementById('pageTop_Search_searchBut').href;
        }
    });
});

    function setUrl() {
        document.getElementById('pageTop_Search_searchBut').href += '?searchTxt=' + escape(document.getElementById('searchTxt').value);
    }



$lbi(function () {

    $lbi('.totop').click(function () { window.scroll(0, 0); return false; });
    $lbi('.btn').button();
    $lbi('.btnDrop').button();
    //$lbi('.tabBar li a').equalHeight();
    $lbi('.txt, .txtleft, .txtright, .txtleftask, .txtrightask, .txtleftsmall, .txtrightsmall, .txt_search, .txt_searchBig').checkVal();
    $lbi('.slidrWrap').slidr();
    $lbi('.compare li label').checkbox();
    $lbi('.mainnav .mdrop').megadrop();
    $lbi('.fancybox').fancybox({
        padding: 0,
        titleShow: false,
        overlayOpacity: .8,
        overlayColor: '#000',
        centerOnScroll: true,
        autoDimensions: true,
        height: 550,
        width: 720
    });

    $lbi('.fancyboxNews').fancybox({
        type: 'iframe',
        padding: 0,
        titleShow: false,
        overlayOpacity: .8,
        centerOnScroll: true,
        overlayColor: '#000',
        autoDimensions: true,
        height: 550,
        width: 720
    });

    // Zebra stuff
    $lbi('.zebra .innerContent .row:odd').parents('.innerContent')
        .addClass('gradTop')
        .wrapInner('<div class="gradBottom" />');
    $lbi('.zebra .innerContent .row:last').parents('.innerContent')
        .find('.gradBottom').removeClass('gradBottom');

    $lbi('.innerContent .default:even img.imgCase').addClass('right');
    $lbi('.innerContent .default:even div.imgCaseWrapper').addClass('right');
    $lbi('.innerContent .default:odd img.imgCase').addClass('left');
    $lbi('.innerContent .default:odd div.imgCaseWrapper').addClass('left');
    $lbi('.dataTable tbody tr:even').addClass('even');
    $lbi('.result .resultrow:odd').addClass('odd');

    $lbi('.row .event:odd').addClass('odd');

    $lbi('.share').hover(function () {
        $lbi(this).addClass('hover');
    }, function () { $lbi(this).removeClass('hover'); });

    // Drop down for FOSS sites
    $lbi('.topnav .drop').click(function (e) {
        //	     	e.preventDefault();

        $lbi(this).find('.sites').slideDown(100);
        $lbi(this).find('a.closed').addClass('open');
    });

    $lbi('.topnav .drop').hover(function () { },
    	function () {
    	    $lbi(this).find('a.closed').removeClass('open').next('.sites').slideUp(100);
    	});

    // Expand
    $lbi('.expand a').click(function () {
        $lbi(this).toggleClass('open').parent('p').next('.expandContent').slideToggle(200);
        return false;
    });
    $lbi(".fancybox-youtube").click(function () {
        $lbi.fancybox({
            'padding': 0,
            'overlayOpacity': .2,
			'overlayColor': '#000',
            'autoScale': false,
            'transitionIn': 'none',
            'transitionOut': 'none',
            'title': this.title,
            'width': 680,
            'height': 495,
            'href': this.href.replace(new RegExp("watch\\?v=", "i"), 'v/'),
            'type': 'swf',
            'swf': {
                'wmode': 'transparent',
                'allowfullscreen': 'true'
            }
        });

        return false;
    });
});

var gridCounter = 0;

function showVideo(url, w, h) {

    if (!w) { w = 680; }
    if (!h) { h = 680; }

    $lbi.fancybox({
        'padding': 0,
        'overlayOpacity': .8,
        'autoScale': false,
        'transitionIn': 'none',
        'transitionOut': 'none',
        'title': this.title,
        'width': w,
        'height': h,
        'href': url,
        'type': 'swf',
        'swf': {
            'wmode': 'transparent',
            'allowfullscreen': 'true'
        }
    });
}
/* page init */
$lbi(document).ready(function () {
    $lbi('#grid-wrapper').click(function () {

        gridCounter++;
        if (gridCounter % 2 == 1) {
            $lbi('#grid-wrapper').toggleClass('grid-secondary');
        }
        $lbi('#grid-wrapper').toggleClass('clicker');
    });
    fixContentHeight();
	
});

function fixContentHeight() {
    if ($lbi(".mainContent").length > 0 && $lbi(".relatedContent").length > 0) {
        var mainB = $lbi(".mainContent").position().top + $lbi(".mainContent").outerHeight();
        var rColB = $lbi(".relatedContent").position().top + $lbi(".relatedContent .inner .blocks").outerHeight();
        var diff = rColB - mainB;
        if (diff > 0) {
            $lbi(".mainContent").css("height", $lbi(".mainContent").outerHeight() + diff);
        }
    }
}

$lbi(document).ready(function () {
    // init product filter list
    if ($lbi("#sampletypeList").length == 1 && $lbi("#parametersList").length == 1) {
        $lbi("#sampletypeList").change(onSelectSampletype);
        $lbi("#parametersList").change(onSelectParameters);

        // clone data
        var str = $lbi("#alphabetical .col").clone(true);
        $lbi("a", str).attr("id", "");
        $lbi("#alphabetical", str).attr("id", "alphabetical2");
        $lbi("#samplesFilter .content").html(str);
    }


});

// layout infobox
// obj is a string element-path in jQuery syntax, eg "#contact0 .infobox"
function infoBoxShow(obj) {
    if ($lbi(".wrap", $lbi(obj)).length < 1) {
        $lbi(obj).wrapInner('<div class="wrap">');
        $lbi(obj).append('<div class="topm"></div><div class="leftm"></div><div class="bottomm"></div><div class="rightm"></div><div class="topr"></div><div class="topl"></div><div class="bottomr"></div><div class="bottoml"></div>');
    }
    $lbi(".topm", $lbi(obj)).css("width", $lbi(obj).width() + "px");
    $lbi(".leftm", $lbi(obj)).css("height", $lbi(obj).height() + "px");
    $lbi(".bottomm", $lbi(obj)).css("width", $lbi(obj).width() + "px");
    $lbi(".rightm", $lbi(obj)).css("height", $lbi(obj).height() + "px");
}


/***************************
* megadrop product filter *
***************************/

var productList;
var filtredList;
// 	$lbi.getJSON("productlist.aspx", onProductsLoaded);
/*
$lbi.ajax({
url:'productlist.aspx',
method: 'POST',
datatype:'json',
contentType:'application/json',
success: onProductsLoaded
});
*/


function onProductsLoaded(data, strSelect) {
    productList = data;
    populateSelect($lbi('#sampletypeList').get(0), filterUnique(productList, "SType").sort(), true, strSelect);
}

function onSelectSampletype() {
    populateSelect($lbi('#parametersList').get(0), filterUnique(filterByProperties(productList, "SType", $lbi('#sampletypeList').val()), "Param").sort(), 'empty');
    displayVals();
    $lbi("#samples a.btn").removeClass("disabled");
}

function onSelectParameters() {
    displayVals();
}


function displayVals() {
    var sampleTypeList = filterByProperties(productList, "SType", $lbi('#sampletypeList').val());

    if ($lbi('#parametersList').val() != null) {
        sampleTypeList = filterByParameter(sampleTypeList, $lbi('#parametersList').val())
    }

    filtredList = filterUnique(sampleTypeList, "PrName");

    // TODO - Change style of elements instead of setting select
    /*
    var el = $lbi('#productList').get(0)
    var cnt = 0;
    el.options.length = 0;
    $lbi.each(filterUnique(sampleTypeList, "PrName"), function () {
    el.options[el.options.length] = new Option(this, cnt++);
    });
    */
}

function filterUnique(data, parameter) {
    var a = [];

    $lbi.each(data, function (i, item) {
        //if (item[parameter] && a.toString().indexOf(item[parameter]) == -1) {
        if (item[parameter] && (a.toString() + ',').indexOf((item[parameter] + ',')) == -1) {
            a.push(item[parameter]);
        }
    });
    return a;

}

// returns array of elements whose 'prop' property is 'value'
function filterByParameter(arr, value) {
    var returnArray = [];

    if (!value || value.length == 0) returnArray = arr; //No value

    if (typeof value != "object") {
        returnArray = filterByProperties(arr, "Param", value);
    } else {
        $lbi.each(value, function (i, child) {
            var tmp = filterByProperties(arr, "Param", child);
            var found = [];
            var count = 0;
            $lbi.each(tmp, function (j, item) {
                if (i == 0) {
                    returnArray.push({ "PrName": item["PrName"] });
                    count = 1;
                } else {
                    found = filterByProperties(returnArray, "PrName", item["PrName"]);
                    count += found.length;
                    returnArray.concat(found);
                }
            });
            //				console.log("count: "+count);
            if (count == 0) returnArray = [];
        });
    }

    return returnArray;
}

function filterByProperties(arr, prop, value) {
    return $lbi.grep(arr, function (item) {
        return item[prop] == value;
    });
}

// populates select list from array of items given as objects: { name: 'text', value: 'value' }
function populateSelect(el, items, addNote, selectText) {
    if(!el)return;
	el.options.length = 0;
    if (items.length > 0 && addNote)
        el.options[0] = new Option(selectText, '', true, true);

    $lbi.each(items, function () {
        if (this.value && this.name) {
            el.options[el.options.length] = new Option(this.name, this.value, false, false);
        } else {
            el.options[el.options.length] = new Option(this, this, false, false);
        }
    });
}

function showFiltredProducts(list) {
    $lbi(".prodFinder").removeClass("cols3").addClass("cols4");

    $lbi("#samplesFilter .content a").each(function () {
        if ($lbi.inArray($lbi(this).html(), list) == -1) {
            $lbi(this).addClass("off");
            $lbi(this).click(function (e) { if ($lbi(this).hasClass("off")) { e.preventDefault(); } });
        } else {
            $lbi(this).removeClass("off");
        }
    });

    $lbi("#samples").hide();
    $lbi("#samplesFilter").show();
}

function backToProductList() {
    $lbi(".prodFinder").removeClass("cols4").addClass("cols3");
    $lbi("#samples").show();
    $lbi("#samplesFilter").hide();

}

function getValidValue(idName) {


    var val = document.getElementById(idName).value;
    if (val == "" || (val.length > 0 && val.substr(val.length - 1) === "*")) {
        $lbi("#" + idName).closest(".mandatory").addClass("missing");
        isValid = false;
    }
    else {

        $lbi("#"+idName).closest(".mandatory").removeClass("missing");
    }
    return val;
}

function isValidEmail(idName) {
    validRegExp = /^[^@]+@[^@]+.[a-z]{2,}$/i;
    var val = document.getElementById(idName).value;

    // search email text for regular exp matches
    if (val.search(validRegExp) == -1) {
          $lbi("#" + idName).closest(".mandatory").addClass("missing");
        isValid = false;
    } else {
        $lbi("#"+idName).closest(".mandatory").removeClass("missing");
    }
    return val;
}


function isCountrySelected(idName, valid) {
    var val = null;
    if (document.getElementById(idName) != null) {
        val = document.getElementById(idName).value;
        // search email text for regular exp matches
        if (val == '-' || val == '' || val == '  -- ') {
            $lbi("#" + idName).closest(".mandatory").addClass("missing");
            $lbi("#" + valid).addClass("missing"); // extra to make state work...?
            isValid = false;
        } 
        else {
            $lbi("#" + idName).closest(".mandatory").removeClass("missing");
            $lbi("#" + valid).removeClass("missing"); // extra to make state work...?
        }
    }
    return val;

}

function showStates(countryID) {
    if ($lbi('#' + countryID) != null) {
        if (validateStates(countryID)) {
            $lbi('#StateDivSpecial').removeClass('SuperSecretHider');
            //$lbi('#StateDiv').removeClass('SuperSecretHider');
            $lbi('#aboutStateDivSpecial').removeClass('SuperSecretHider');
        }
        else {
            $lbi('#StateDivSpecial').addClass('SuperSecretHider');
            //$lbi('#StateDiv').addClass('SuperSecretHider');
            $lbi('#aboutStateDivSpecial').addClass('SuperSecretHider');
        }
    }
}

function validateStates(countryID) {
    if ($lbi('#' + countryID) != null) {
        if ($lbi('#' + countryID).val() == '542' || $lbi('#' + countryID).val() == '1' || $lbi('#' + countryID).val() == 'United States of America' || $lbi('#' + countryID).val() == 'Canada') {
            return true;
        }
    }
    return false;
}

function validateLegalCheckRadio(idName) {
    var listItemArray = document.getElementsByName(idName);
    var isItemChecked = false;
    var val = "";
    var tempIdName = "";
    var listItem;

    for (var i = 0; i < listItemArray.length + 1; i++) {
        tempIdName = idName + '_' + i;
        listItem = document.getElementById(tempIdName);
        if (listItem.checked) {
            isItemChecked = true;
            val = listItem.value;
        }
    }
    if (isItemChecked == false) {
        $lbi("#" + idName).closest(".mandatory").addClass("missing");
        isValid = false;
    }
    else {
        $lbi("#" + idName).closest(".mandatory").removeClass("missing");
    }
    return val;
}

function validateLegalCheckBox(idName) {
    var listItem = document.getElementById(idName);
    var isItemChecked = false;
    var val = "";

    if (listItem.checked) {
        isItemChecked = true;
        val = listItem.value;
    }
    if (isItemChecked == false) {
        $lbi("#" + idName).closest(".mandatory").addClass("missing");
        isValid = false;
    }
    else {
        $lbi("#" + idName).closest(".mandatory").removeClass("missing");
    }
    return val;
}

function setupFormValidation() {

    jQuery('input').bind('blur', function () {
        getValidValue(jQuery(this).attr('id'));
        if (jQuery(this).attr('id').indexOf('Email') != -1) {
            isValidEmail(jQuery(this).attr('id'));
        }

    });

    jQuery('textarea').bind('blur', function () {
        getValidValue(jQuery(this).attr('id'));
    });

    jQuery('select').bind('blur change', function () {
        if (jQuery(this).parent().attr('id').indexOf('CountryValid') != -1 || jQuery(this).parent().attr('id').indexOf('StateValid') != -1) {
            isCountrySelected(jQuery(this).attr('id'));
            if (jQuery(this).parent().attr('id').indexOf('CountryValid') != -1 && $lbi(this).find('.StateValidSpecial')) {
                // only when State Special = default form
                showStates(jQuery(this).attr('id'));
            };
        }
    });

    jQuery('#StateDivSpecial').addClass("SuperSecretHider");
    //jQuery('#StateDiv').addClass("SuperSecretHider");
    jQuery('#aboutStateDivSpecial').addClass("SuperSecretHider");
}


