﻿///<reference path="jquery-1.2.6.vs.js">
    $.log.debug = false;
    var last_clicked;
    var recaptcha_error = false;
    var emaildup_error = false;
    var checkterms_error = false;
    var queryString = new Array();
    var parameters = window.location.search.substring(1).split('&');

    for (var i=0; i<parameters.length; i++) {
        var pos = parameters[i].indexOf('=');
        // If there is an equal sign, separate the parameter into the name and value,
        // and store it into the queryString array.
        if (pos > 0) {
            var paramname = parameters[i].substring(0,pos);
            var paramval = parameters[i].substring(pos+1);
            //  queryString[paramname] = unescape(paramval.replace(/\+/g,' '));
            queryString[paramname] = unescape(paramval);
        } else {
            //special value when there is a querystring parameter with no value
            queryString[parameters[i]]="" 
        }
    }
    
    function build_querystring_array(){
        var queryString = new Array();
        var parameters = window.location.search.substring(1).split('&');

        for (var i=0; i<parameters.length; i++) {
            var pos = parameters[i].indexOf('=');
            // If there is an equal sign, separate the parameter into the name and value,
            // and store it into the queryString array.
            if (pos > 0) {
                var paramname = parameters[i].substring(0,pos);
                var paramval = parameters[i].substring(pos+1);
                queryString[paramname] = unescape(paramval.replace(/\+/g,' '));
            } else {
                //special value when there is a querystring parameter with no value
                queryString[parameters[i]]="" 
            }
        }
        // pass out the array
        return queryString;
    }


    ///<summary>
    ///     write oops message because our request failed
    ///</summary>
    /// <param name='container' type='element>
    ///     html element that should contain the message
    /// </param>
    function write_oops_message(container) {
        if ($(container).html().trim() == "") {
            $("<div class='overlay_popup_bg_green'></div>").appendTo($(container));
            $("<div class='tidbits_overlay_content'></div>").appendTo($('.overlay_popup_bg_green'));
            $("<h2>Oops...</h2><p>We encountered an error during your request.</p>").appendTo($(".tidbits_overlay_content"));
            $("<p>If you feel you have reached this by mistake please try again.</p>").appendTo($(".tidbits_overlay_content"));
        }
    }

// DEPRECATED => DELETE
//    function find_in_qs() {
////        var s = location.search;
////        var p = s.split("=");
////        $(p).each(function(i) {
////            if (this.indexOf("tidbit") != -1) {
////                var param = p[i + 1].split("&");
////                return = param[0];you 
////            }
////            
////        });

//    }
    
    function search_by_text(){
        var txt = queryString["tidbit"];      //$.query.get('tidbit');
        $.log("param is " + txt);
        var anchor = null;

        $('a[teaser_text=learn more]').each(function(i) {
            if ($(this).attr('tb_term') != "undefined") {
                if ($(this).attr('tb_term') == txt) {
                    anchor = this;
                }
            }
        });
        return anchor;
    }
    
    function tidbit_parameter_check() {
      //  var txt = $.query.get('tidbit');

       // if (txt == "") { ; return; } //$.log('no param')
                
        var a = search_by_text();

        if (a == undefined || a == null) {
            $.log('nothing found');
        } else {

            $('#overlay_panel').jqmAddTrigger($(a));

            $('#overlay_panel').jqm({
                ajax: $(a).attr("href"),
                overlay: 75,
                target: $('#overlay_content'),
                onLoad: recurse_overlay_init
            })

            $('#overlay_panel').jqmShow();
        }
    }

    function clean_up_overlay() {
        $('#overlay_content').html('');
    }
    
    function overlay_content_check(hash) {
        if ($('#overlay_content').html().trim() == "") {
            $("<div class='overlay_popup_bg_green'></div>").appendTo($('#overlay_content'));
            $("<div class='tidbits_overlay_content'></div>").appendTo($('.overlay_popup_bg_green'));
            $("<h2>Oops...</h2><p>We encountered an error during your request.</p>").appendTo($(".tidbits_overlay_content"));
            $("<p>If you feel you have reached this by mistake please try again.</p>").appendTo($(".tidbits_overlay_content"));            
        }
    }

// left over from legacy??
    function other_options(select) {

        if (select.value == '3184') {           // other advocate
            $('#HeardAboutOther').css('display', 'block');
            $('#OtherText').html('* which one?');
        }
        else if (select.value == '3218') {
            $('#HeardAboutOther').css('display', 'block');
            $('#OtherText').html('* please specify:');
        }
        else {
            $('#HeardAboutOther').css('display', 'none');
        }
    }
    
// EURO signup country - state change
    function state_change(value) {
        if( value=='0' ) {
            $('#advocacyStateOther').css('display', 'block');
        } else {
            $('#advocacyStateOther').css('display', 'none');
        }
    }

    function country_change(value) {
        if( value=='0' ) {
            $('#advocacyCountryOther').css('display', 'block');
            state_change('-1');
            
            var options = "";
            options = options + "<option value='-1'></option>";
            options = options + "<option value='0'>Other</option>";
            $('#advocacySignUpState').html(options);
        } else if( value=='1' ) {
            $('#advocacyCountryOther').css('display', 'none');  
            state_change('-1');    
        
            var options = "";
            options = options + "<option value='-1'></option>";
            options = options + "<option value='2'>Alabama</option>";
            options = options + "<option value='1'>Alaska</option>";
            options = options + "<option value='4'>American Samoa</option>";
            options = options + "<option value='5'>Arizona</option>";
            options = options + "<option value='3'>Arkansas</option>";
            options = options + "<option value='6'>California</option>";
            options = options + "<option value='7'>Colorado</option>";
            options = options + "<option value='8'>Connecticut</option>";
            options = options + "<option value='9'>DC</option>";
            options = options + "<option value='10'>Delaware</option>";
            options = options + "<option value='12'>Federated States of Micronesia</option>";
            options = options + "<option value='11'>Florida</option>";
            options = options + "<option value='13'>Georgia</option>";
            options = options + "<option value='14'>Guam</option>";
            options = options + "<option value='15'>Hawaii</option>";
            options = options + "<option value='17'>Idaho</option>";
            options = options + "<option value='18'>Illinois</option>";
            options = options + "<option value='19'>Indiana</option>";
            options = options + "<option value='16'>Iowa</option>";
            options = options + "<option value='20'>Kansas</option>";
            options = options + "<option value='21'>Kentucky</option>";
            options = options + "<option value='22'>Louisiana</option>";
            options = options + "<option value='25'>Maine</option>";
            options = options + "<option value='26'>Marshall Islands</option>";
            options = options + "<option value='24'>Maryland</option>";
            options = options + "<option value='23'>Massachusetts</option>";
            options = options + "<option value='27'>Michigan</option>";
            options = options + "<option value='28'>Minnesota</option>";
            options = options + "<option value='31'>Mississippi</option>";
            options = options + "<option value='29'>Missouri</option>";
            options = options + "<option value='32'>Montana</option>";
            options = options + "<option value='35'>Nebraska</option>";
            options = options + "<option value='39'>Nevada</option>";
            options = options + "<option value='36'>New Hampshire</option>";
            options = options + "<option value='37'>New Jersey</option>";
            options = options + "<option value='38'>New Mexico</option>";
            options = options + "<option value='40'>New York</option>";
            options = options + "<option value='33'>North Carolina</option>";
            options = options + "<option value='34'>North Dakota</option>";
            options = options + "<option value='30'>Northern Mariana Islands</option>";
            options = options + "<option value='41'>Ohio</option>";
            options = options + "<option value='42'>Oklahoma</option>";
            options = options + "<option value='43'>Oregon</option>";
            options = options + "<option value='46'>Palau</option>";
            options = options + "<option value='44'>Pennsylvania</option>";
            options = options + "<option value='45'>Puerto Rico</option>";
            options = options + "<option value='47'>Rhode Island</option>";
            options = options + "<option value='48'>South Carolina</option>";
            options = options + "<option value='49'>South Dakota</option>";
            options = options + "<option value='50'>Tennessee</option>";
            options = options + "<option value='51'>Texas</option>";
            options = options + "<option value='52'>Utah</option>";
            options = options + "<option value='55'>Vermont</option>";
            options = options + "<option value='54'>Virgin Islands</option>";
            options = options + "<option value='53'>Virginia</option>";
            options = options + "<option value='56'>Washington</option>";
            options = options + "<option value='58'>West Virginia</option>";
            options = options + "<option value='57'>Wisconsin</option>";
            options = options + "<option value='59'>Wyoming</option>";
            options = options + "<option value='0'>Other</option>";
            $('#advocacySignUpState').html(options);
        } else if( value=='2' ) {
            $('#advocacyCountryOther').css('display', 'none');  
            state_change('-1');    
        
            var options = "";
            options = options + "<option value='-1'></option>";
            options = options + "<option value='133'>Aberdeenshire</option>";
            options = options + "<option value='167'>Anglesey</option>";
            options = options + "<option value='134'>Angus</option>";
            options = options + "<option value='179'>Antrim</option>";
            options = options + "<option value='180'>Amagh</option>";
            options = options + "<option value='135'>Arygyllshire</option>";
            options = options + "<option value='136'>Ayrshire</option>";
            options = options + "<option value='86'>Avon</option>";
            options = options + "<option value='137'>Banffshire</option>";
            options = options + "<option value='87'>Bedfordshire</option>";
            options = options + "<option value='88'>Berkshire</option>";
            options = options + "<option value='138'>Berwickshire</option>";
            options = options + "<option value='168'>Brecknockshire</option>";
            options = options + "<option value='89'>Buckinghamshire</option>";
            options = options + "<option value='139'>Buteshire</option>";
            options = options + "<option value='169'>Caerfonaershire</option>";
            options = options + "<option value='141'>Caithness</option>";
            options = options + "<option value='90'>Cambridgeshire</option>";
            options = options + "<option value='170'>Carmarthenshire</option>";
            options = options + "<option value='91'>Cheshire</option>";
            options = options + "<option value='142'>Clackmannanshire</option>";
            options = options + "<option value='92'>Cornwall</option>";
            options = options + "<option value='140'>Cromartyshire</option>";
            options = options + "<option value='93'>Cumbria</option>";
            options = options + "<option value='171'>Denbighshire</option>";
            options = options + "<option value='94'>Derbyshire</option>";
            options = options + "<option value='95'>Devon</option>";
            options = options + "<option value='96'>Dorset</option>";
            options = options + "<option value='181'>Down</option>";
            options = options + "<option value='144'>DunBartonshire</option>";
            options = options + "<option value='143'>Dunfrieshire</option>";
            options = options + "<option value='97'>Durham</option>";
            options = options + "<option value='145'>East Lothian</option>";
            options = options + "<option value='98'>East Riding</option>";
            options = options + "<option value='99'>East Sussex</option>";
            options = options + "<option value='100'>Essex</option>";
            options = options + "<option value='182'>Fermanagh</option>";
            options = options + "<option value='146'>Fife</option>";
            options = options + "<option value='172'>Flintshire</option>";
            options = options + "<option value='173'>Glamorgan</option>";
            options = options + "<option value='101'>Gloucestershire</option>";
            options = options + "<option value='102'>Greater Manchester</option>";
            options = options + "<option value='103'>Hampshire</option>";
            options = options + "<option value='104'>Herefordshire</option>";
            options = options + "<option value='105'>Hertfordshire</option>";
            options = options + "<option value='147'>Inverness-shire</option>";
            options = options + "<option value='106'>Isle of Wight</option>";
            options = options + "<option value='107'>Kent</option>";
            options = options + "<option value='148'>Kincardineshire</option>";
            options = options + "<option value='149'>Kinross</option>";
            options = options + "<option value='150'>Kirkcudbrightshire</option>";
            options = options + "<option value='151'>Lanarkshire</option>";
            options = options + "<option value='108'>Lancashire</option>";
            options = options + "<option value='109'>Leicestershire</option>";
            options = options + "<option value='110'>Lincolnshire</option>";
            options = options + "<option value='183'>Londonderry</option>";
            options = options + "<option value='174'>Merioneth</option>";
            options = options + "<option value='111'>Merseyside</option>";
            options = options + "<option value='112'>Middlesex</option>";
            options = options + "<option value='152'>Midlothian</option>";
            options = options + "<option value='175'>Monmouthshire</option>";
            options = options + "<option value='176'>Montgomeryshire</option>";
            options = options + "<option value='153'>Morayshire</option>";
            options = options + "<option value='154'>Nairnshire</option>";
            options = options + "<option value='113'>Norfolk</option>";
            options = options + "<option value='114'>North Yorkshire</option>";
            options = options + "<option value='115'>Northamptonshire</option>";
            options = options + "<option value='116'>Northumberland</option>";
            options = options + "<option value='117'>Nottinghamshire</option>";
            options = options + "<option value='155'>Orkney</option>";
            options = options + "<option value='118'>Oxfordshire</option>";
            options = options + "<option value='156'>Peeblesshire</option>";
            options = options + "<option value='177'>Pembrokeshire</option>";
            options = options + "<option value='157'>Perthshire</option>";
            options = options + "<option value='178'>Radnorshire</option>";
            options = options + "<option value='158'>Renfrewshire</option>";
            options = options + "<option value='159'>Ross-shire</option>";
            options = options + "<option value='160'>Roxburghshire</option>";
            options = options + "<option value='119'>Rutland</option>";
            options = options + "<option value='161'>Selkirkshire</option>";
            options = options + "<option value='162'>Shetland</option>";
            options = options + "<option value='120'>Shropshire</option>";
            options = options + "<option value='121'>Somerset</option>";
            options = options + "<option value='122'>South Yorkshire</option>";
            options = options + "<option value='123'>Staffordshire</option>";
            options = options + "<option value='163'>Stirlingshire</option>";
            options = options + "<option value='124'>Suffolk</option>";
            options = options + "<option value='125'>Surrey</option>";
            options = options + "<option value='164'>Sutherland</option>";
            options = options + "<option value='126'>Tyne and Wear</option>";
            options = options + "<option value='184'>Tyrone</option>";
            options = options + "<option value='127'>Warwickshire</option>";
            options = options + "<option value='165'>West Lothian</option>";
            options = options + "<option value='128'>West Midlands</option>";
            options = options + "<option value='129'>West Sussex</option>";
            options = options + "<option value='130'>West Yorkshire</option>";
            options = options + "<option value='131'>Wiltshire</option>";
            options = options + "<option value='166'>Wigtownshire</option>";
            options = options + "<option value='132'>Worcestershire</option>";
            options = options + "<option value='0'>Other</option>";
            $('#advocacySignUpState').html(options);
        } else if( value=='3' ) {
            $('#advocacyCountryOther').css('display', 'none');  
            state_change('-1');    
        
            var options = "";
            options = options + "<option value='-1'></option>";
            options = options + "<option value='66'>Australian Capital Territory</option>";
            options = options + "<option value='62'>New South Wales</option>";
            options = options + "<option value='67'>Northern Territory</option>";
            options = options + "<option value='69'>Queensland</option>";
            options = options + "<option value='65'>South Australia</option>";
            options = options + "<option value='68'>Tasmania</option>";
            options = options + "<option value='63'>Victoria</option>";
            options = options + "<option value='64'>Western Australia</option>";
            options = options + "<option value='0'>Other</option>";
            $('#advocacySignUpState').html(options);
        } else if( value=='4' ) {
            $('#advocacyCountryOther').css('display', 'none');  
            state_change('-1');    
        
            var options = "";
            options = options + "<option value='-1'></option>";
            options = options + "<option value='73'>Alberta</option>";
            options = options + "<option value='74'>British Columbia</option>";
            options = options + "<option value='75'>Manitoba</option>";
            options = options + "<option value='76'>New Brunswick</option>";
            options = options + "<option value='77'>Newfoundland & Labrador</option>";
            options = options + "<option value='78'>Northwest Territories</option>";
            options = options + "<option value='79'>Nova Scotia</option>";
            options = options + "<option value='80'>Nunavut</option>";
            options = options + "<option value='81'>Ontario</option>";
            options = options + "<option value='82'>Prince Edward Island</option>";
            options = options + "<option value='83'>Quebec</option>";
            options = options + "<option value='84'>Saskatchewan</option>";
            options = options + "<option value='85'>Yukon</option>";
            options = options + "<option value='0'>Other</option>";
            $('#advocacySignUpState').html(options);
        } else if( value=='105' ) {
            $('#advocacyCountryOther').css('display', 'none');  
            state_change('-1');    
        
            var options = "";
            options = options + "<option value='-1'></option>";
            options = options + "<option value='185'>County Carlow</option>";
            options = options + "<option value='186'>County Cavan</option>";
            options = options + "<option value='187'>County Clare</option>";
            options = options + "<option value='188'>County Cork</option>";
            options = options + "<option value='189'>County Donegal</option>";
            options = options + "<option value='190'>County Dublin</option>";
            options = options + "<option value='192'>County Galway</option>";
            options = options + "<option value='193'>County Kerry</option>";
            options = options + "<option value='194'>County Kildare</option>";
            options = options + "<option value='195'>County Kilkenny</option>";
            options = options + "<option value='196'>County Laios</option>";
            options = options + "<option value='197'>County Leitrim</option>";
            options = options + "<option value='198'>County Limerick</option>";
            options = options + "<option value='199'>County Longford</option>";
            options = options + "<option value='200'>County Louth</option>";
            options = options + "<option value='201'>County Mayo</option>";
            options = options + "<option value='202'>County Meath</option>";
            options = options + "<option value='203'>County Monaghan</option>";
            options = options + "<option value='204'>County Offaly</option>";
            options = options + "<option value='205'>County Roscommon</option>";
            options = options + "<option value='206'>County Sligo</option>";
            options = options + "<option value='207'>County Tipperary</option>";
            options = options + "<option value='208'>County Waterford</option>";
            options = options + "<option value='209'>County Westmeath</option>";
            options = options + "<option value='210'>County Wexford</option>";
            options = options + "<option value='211'>County Wicklow</option>";
            options = options + "<option value='191'>Fingal</option>";
            options = options + "<option value='0'>Other</option>";
            $('#advocacySignUpState').html(options);
        } else {
            $('#advocacyCountryOther').css('display', 'none');   
            state_change('-1');  
            
            var options = "";
            options = options + "<option value='-1'></option>";
            options = options + "<option value='0'>Other</option>";
            $('#advocacySignUpState').html(options);  
        }
    }    

// DEPRECATED => DELETE
//    function Advocate_callback(xhr) {
//        if (xhr == "true") {
//            advocate_insert();
//        } else {
//            $(".recaptcha_enter_prompt").css("display", "none");
//            $(".recaptcha_only_if_incorrect_sol2").css("display", "block");
//            Recaptcha.reload();
//        }
//    }

    function verify_captcha(callback) {
        $.post("../content/service/UtilityHandler.ashx", {
            challenge: Recaptcha.get_challenge(),
            response: Recaptcha.get_response()
        },
            function(xhr) { callback(xhr) }
        );
    }


// DEPRECATED => DELETE
//     function advocate_insert() {
//        var res = $("#form1")
//            .find("input,textarea,select,hidden")//input[type=file]
//            .not("#__VIEWSTATE,#__EVENTVALIDATION")
//            .serialize();

//        $.post("../content/service/UtilityHandler.ashx",
//            res,
//           function(xhr) {
//               //$.log('inserted');
//           }
//        );                 
//    }

/* Advocate Enlist form valiation
**************************************************************/
    // validation callback
    function verify_required(el) {
        if (el.val() == '') {
            //$.log($(el)[0].id);
            $(el).siblings("p").children().addClass('missed_alert')
            $(el).focus(function() {
                $(this).siblings("p").children().removeClass('missed_alert')
            });
        } else if ($(el).attr('type') == 'radio') {
            if ($("input[@name='Gender']:checked").length == 0) {
                $(el).parent().addClass('missed_alert');
                $(el).focus(function() {
                    $(this).parent().removeClass('missed_alert')
                });
            }
        }        
    }

    function verification_loop(div) {
        var div_name = 'div#'+ div || '';

        $(div_name +" "+ '.required_field input').each(function() {
            verify_required($(this));            
        });
    }

    function invite_overlay_init() {
            Recaptcha.create(
                GetRecaptchaKey(),
                'InviteRecaptcha',
                { theme: "clean", callback: function() { } }   // todo : => move successfull callback to this trigger?
            );
    }

    function Invite_callback(xhr) {    
            // alert(xhr); // euro test
        if (xhr == "true") {
                $.post(
                    "../Content/Service/EmailHandler.ashx",
                    { action: "invite",
                        to: $('#RecepientsEmailAddress').val(),
                        from: $('#YourEmailAddress').val(),
                        message: $('#InvitationMessage').val()
                    }
                );
                $('#panel').jqmHide();
                $('#panel').jqm({
                    ajax: "../../Views/advocates/email-a-friend-thanks.aspx",
                    overlay: 75,
                    target: '#panelContent'
                }).jqmShow();

                
            } else {
                $(".recaptcha_enter_prompt").css("display", "none");
                $(".recaptcha_only_if_incorrect_sol2").css("display", "block");
                Recaptcha.reload();
            }
    }
    
    // extra functions for the invite panel
    function OnInviteCancel(){
        $('#panel').jqmHide();
    }

    function OnInviteSubmit(){
        
        var recepientsEmail = document.getElementById("RecepientsEmailAddress").value;
        var yourEmail = document.getElementById("YourEmailAddress").value;
        var captchaText = document.getElementById("recaptcha_response_field").value;
        var isValid = false;
        if (IsEmailValid($('#RecepientsEmailAddress').val()) == true) {
          $("#recepientEmail").css("color", "white");
          isValid = true;       
          }
        else {
          $("#recepientEmail").css("color", "red");
          isValid = false;
          }
          
        if (IsEmailValid($('#YourEmailAddress').val()) == true) {
          $("#yourEmail").css("color", "white");
          isValid = true;       
          }
        else {
          $("#yourEmail").css("color", "red");
          isValid = false;
          }
        if (isValid == true){
          verify_captcha(Invite_callback)
          }    
   }

    function reloadInvite(){
        $('#panel').jqmHide();
        $('#panel').jqm({
                ajax: "../../Views/advocates/email-a-friend.aspx",
                overlay: 75,
                target: $('#panelContent')
                //,
                //onLoad: recurse_overlay_init
            }).jqmShow();
    }


    function get_relative(path_name) {
        url = location.host.substring(location.host.indexOf(path_name) + path_name.length);
        return url + path_name;

    }


// DEPRECATED => DELETE
//     // AIM (image upload) callbacks
//    function startCallback() {
//        if ($('input#advocacyTerms').attr('checked')) {
//       //     verify_captcha(null)
//        } else {
//            $('.advocacyTermsText p').addClass('missed_alert');
//            $('.advocacyTermsText p').css("color", "red");
//            $('input#advocacyTerms').focus(function() {
//                $('.advocacyTermsText p').addClass('missed_alert');
//                $('.advocacyTermsText p').css("color", "white");
//            });
//           return false;
//        }           
//    }
//    function completeCallback(response) {
//       // $('#community_overlay').jqmHide();
//    }



    /* jqmModal init overrides called from page load events.  triggered CSS Selectors
    ******************************************************************************************/
    function tidbit_init(tb_anchor, depth) {
        $(tb_anchor).hover(
                function() {
                    $("<span id='teaser_LearnMore' class='teaser_LearnMore teaserRolloverWrapper'></span>").appendTo($(this));
                    var tb_resource = $('#teaser_LearnMore');
                    $(tb_resource).makeAbsolute();
                    $(tb_resource).hide();

                    $(tb_resource).animate({ top: $(tb_anchor).position().top - 10, left: $(tb_anchor).position().left + $(tb_anchor).width() }
                    );
                    $(tb_resource).show();
                    $(tb_resource).html(create_teaser($(tb_anchor)));

                    if (depth == 1) {
                        $(tb_anchor).click(function() {
                            $('#overlay_panel').jqmHide();
                        });
                    }

                    $('#overlay_panel').jqmAddTrigger($(tb_anchor));

                    $('#overlay_panel').jqm({
                        ajax: '@href',
                        overlay: 75,
                        target: $('#overlay_content'),
                        onLoad: recurse_overlay_init         
                    });
                },
                function() { $('#teaser_LearnMore').remove() }
            );
    }    
    
    function modal_init(el) {
        $('<div class="jqmWindow" id="generic_overlay"><a class="jqmClose" href=""></a><div id="generic_target"></div></div>').appendTo($('body'));
        $('#generic_overlay').jqm({
            trigger: $('.modal_trigger'),
            ajax: "@href",
            overlay: 75,
            onShow: function(h) {
                h.w.css('opacity', 0.92).fadeIn("fast");
            },
            onHide: function(h) {
                h.w.fadeOut("fast", function() { if (h.o) h.o.remove(); });
            }
        });
        $('.modal_trigger').each(function() {
            var cb = eval($(this).attr('callback'));
            if (typeof cb == "function") {
                $('#generic_overlay').jqm({ onLoad: cb });
            }
        });
    }

    function jqmodal_Enlist_init(css_selector, callback) {
        $('<div class="jqmWindow" id="community_overlay"><a class="jqmClose" href=""></a><div id="community_target"></div></div>').appendTo($('body'));
        $('#community_overlay').jqm({
            trigger: $(css_selector),
            ajax: "@href",
            overlay: 75,
            target: $('#community_target'),
            onLoad: callback,
            onShow: function(h) {
                h.w.css('opacity', 0.92).fadeIn("fast");
            },
            onHide: function(h) {
                h.w.fadeOut("fast", function() { if (h.o) h.o.remove(); });
            }
        });
    }

    function generic_modal(el, cb) {
        $('<div class="jqmWindow" id="' + el + '_overlay"><a class="jqmClose" href="javascript:void(0);"></a><div id="' + el + '_target"></div></div>').appendTo($('body'));
        $('#' + el + '_overlay').jqm({
            trigger: $('#' + el),
            ajax: "@href",
            overlay: 75,
            onLoad: cb,
            onShow: function(h) {
                if (navigator.appVersion.indexOf("Mac")!=-1){
                    document.getElementById('flashMovie').style.display = "none";
                }
                h.w.css('opacity', 0.92).fadeIn("fast");
            },
            onHide: function(h) {
                h.w.fadeOut("fast", function() { if (h.o) h.o.remove(); });
                if (navigator.appVersion.indexOf("Mac")!=-1){
                    document.getElementById('flashMovie').style.display = "block";
                }
            }
        });
    }

    /* overlay callback functions 
    ********************************************************************************************************/
    function storeLocation_jqmodal_init(trigger, cb) {
        $('<div class="jqmWindow" id="storelocator_overlay_panel"><a class="jqmClose" href=""></a><div id="storelocator_overlay_content"></div></div>').appendTo($('body'));
        $('#storelocator_overlay_panel').jqm({
            ajax: "@href",  //  $(trigger).attr("href")
            overlay: 75,
            target: $('#storelocator_overlay_content'),
            onLoad: cb
        })
            $('#storelocator_overlay_panel').jqmAddTrigger($(trigger));

    }
    function overlay_init(trigger, callback, show) {
        if (typeof callback != "function") { } //$.log('no function to call');

        if (show == true) {
            $('#overlay_panel').jqmShow();
        } else {
            $('#overlay_panel').jqmAddTrigger($(trigger));
        }

        $('#overlay_panel').jqm({
            ajax: "@href",
            overlay: 75,
            target: $('#overlay_content'),
            onLoad: callback,
            onShow: function(h) {
                if (navigator.appVersion.indexOf("Mac")!=-1){
                    document.getElementById('flashMovie').style.display = "none";
                }
                h.w.css('opacity', 0.92).fadeIn("fast");
            },
            onHide: function(h) {
                h.w.fadeOut("fast", function() { if (h.o) h.o.remove(); });
                if (navigator.appVersion.indexOf("Mac")!=-1){
                    document.getElementById('flashMovie').style.display = "block";
                }
            }
        });
    }    
    
    function image_swap_init() {
        $('img[swap_img]').click(function() {
            $('#LgTidbitsImage').attr('src', $(this).attr('swap_img'));

        });
    }

    function create_teaser(el) {
        if ($(el).attr("asset_img") == undefined) {
            return "<img src='"+Constants.AB_URL+"Content/GetAsset.ashx?AssetPath=/images/tidbits/teasers/teaser_LearnMore.png' alt='teaser image' border='0' />";
        } else {
            var image_path = $(el).attr("asset_img");
            return "<img src='"+Constants.AB_URL+"Content/GetAsset.ashx?AssetPath=" + image_path + "' alt='teaser image' border='0'/>";
        }
    }

    function extract_base(url) {
        var s = encodeURIComponent(window.location);
        $.log(s);
        var i = s.indexOf('%26');

        if (i == -1) { return url; }

        return decodeURIComponent(s.substring(0, i));

    }

    function overlay_container_init(class_name, depth) {
        // find tidbit in tidbits
        var url = extract_base(window.location);
        $('.' + class_name + ' a[class*=tidbits_]').each(function() {
            tidbit_init(this, depth);
        });
        // write share link
        if ($('a.link_overlay_share').length == 1) {

            var frag = "mailto:?subject=a little tidbit from Method&body=I wanted to share this little tidbit from Method with you.%0A%0A " +
             encodeURIComponent(
             url +
             "&tidbit=" + $('a.link_overlay_share').attr('tb_term') +
             "&c=" + $('a.link_overlay_share').attr('tb_clr')) +
             "%0A%0ANever heard of Method? They make non-toxic, biodegradable products that clean like heck and smell like heaven.%0A%0AFor more information, visit them at http://www.methodhome.com.";
     
            $.log($('a.link_overlay_share').html());
            $.log(frag);
            $('a.link_overlay_share').attr('href', frag);
        }   
    }

    function learnMore_jqmodal_init(trigger) {
        $('<div class="jqmWindow" id="learnmore_overlay_panel"><a class="jqmClose" href=""></a><div id="learnmore_overlay_content"></div></div>').appendTo($('body'));
        $('#learnmore_overlay_panel').jqm({
            ajax: "@href",  //  $(trigger).attr("href")
            overlay: 75,
            target: $('#learnmore_overlay_content')
        })
            $('#overlay_panel').jqmAddTrigger($(trigger));
    }

    function Ingredients_jqmodal_init(trigger, show) {
        $('<div class="jqmWindow" id="overlay_panel"><a class="jqmClose" href=""></a><div id="overlay_content"></div></div>').appendTo($('body'));
        $('#overlay_panel').jqm({
            ajax: "@href",  //  $(trigger).attr("href")
            overlay: 75,
            target: $('#overlay_content'),
            onLoad: recurse_overlay_init
        })
        if (show == true) {
            $('#overlay_panel').jqmShow();
        } else {
        $('#overlay_panel').jqmAddTrigger($(trigger));
        }
    }
    
    function recurse_overlay_init(hash) {
        overlay_close_button_check(hash);
        overlay_content_check(hash);
        overlay_container_init("contains_tidbit", 1)
        image_swap_init();
    }

function checkPrivacyTerms() {
    if ($('input#advocacyTerms').attr('checked')) {
       //     verify_captcha(null)
       $('.advocacyTermsText p').addClass('missed_alert');
       $('#advocate_privacy_notchecked').html('');
       checkterms_error = false;
       return true;
        } else {
            $('.advocacyTermsText p').addClass('missed_alert');
            //$("<div id='advocate_privacy_notchecked'><p>You must agree to the terms</p></div>").appendTo($('.recaptchaNote'));
            if (!checkterms_error) $('<div id="advocate_privacy_notchecked">You must agree to the terms</div>').appendTo($('.advocacyTermsText'));
            checkterms_error = true;
            //$('.advocacyTermsText p').css("color", "red");
           // $('input#advocacyTerms').focus(function() {
           //     $('.advocacyTermsText p').addClass('missed_alert');
           //     $('#advocate_privacy_notchecked').html('');
               
           // });
           return false;
        }    
}

	function checkEmail() {
		var email = $('#advocacySignUpEmail').val();
            if (IsEmailValid(email)) {
                return true;
            }
            else return false;
     }
     
     function captcha_fail() {
     	if (!recaptcha_error) $("<div id='advocate_recapcha_incorrect'><p>The text you entered was not correct, please try again.</p></div>").appendTo($('#enlistRecaptcha'));
		recaptcha_error = true;
          Recaptcha.reload();
     }


    function enlist_overlay_init(hash) {
        // wire up submit handler for advocate
        $('#advocacySignUpStep2SubmitBtn').click(function(e) {

            // added by euro
            verification_loop('StepTwo'); 
            // added by euro
            if(!checkPrivacyTerms()) return false;
            if(!checkEmail()) return false;
            
            e.preventDefault();
            e.stopPropagation();
            var options = {
            	 cache: false,
                dataType:"script",
                error: function(xhr) {
                  // alert('dup eval ' + xhr.responseText); // euro test
             	   if (!emaildup_error) {
             	   	$("<div id='advocate_emaildup_error'><p>The email you entered is already in our system!</p></div>").appendTo($('.advocacyTermsText'));
             	   	$($('#advocacySignUpEmail')).siblings("p").children().addClass('missed_alert');
             	   	Recaptcha.reload();
                    $('#advocate_recapcha_incorrect').html(''); // must refill out the captcha
                    emaildup_error = true;
                  }
  
                },
                success: function(xhr) {
                    var advocate_name = $("#advocacySignUpFirstName").val();
                	// alert(xhr); // euro test
                	
                	if (xhr == 'captchaFail' || xhr == '') {
                    
                   	    captcha_fail()

                	}
                	
                	else {
                	                                	
				// alert('Eval ' + eval(xhr)); // euro test

				if (eval(xhr) == true) {
				    $('#RegistrationFormContainer').html('');
				    $('#advocate_recapcha_incorrect').html('');
				    $("<div class='advocate_thanks'><h2>welcome to the party, " + advocate_name + ".</h2><p>now that you are an official \"person against dirty,\" you will be the first to know about new products, deals and stories from the method journey. you will also have the opportunity to help us choose new fragrances and vote on product names.</p><p>you will receive a confirmation email shortly. thanks for joining method's crusade towards a cleaner clean.</p><p>adam + eric (method co-founders)</p></div>").appendTo($('#RegistrationFormContainer'));
				} else if (eval(xhr) == "0") {
					if (!emaildup_error) $("<div id='advocate_emaildup_error'><p>The email you entered was already in our system!</p></div>").appendTo($('.advocacyEmail'));
					emaildup_error = true;
					$('#advocate_recapcha_incorrect').html(''); // assume the recapcha was correct at this point
					//if (!recaptcha_error) $("<div id='advocate_recapcha_incorrect'><p>The text you entered was not correct, please try again.</p></div>").appendTo($('#enlistRecaptcha'));
				    //recaptcha_error = true;
				    //Recaptcha.reload();
				    // $('#advocate_emaildup_error').html(''); // if we made it here, the email must be valid
				} else if (eval(xhr) == "false") {
				   $('#RegistrationFormContainer').html('');
				   $("<div class='advocate_thanks'><h2>Sorry</h2><p>We could not process your enlistment.</p></div>").appendTo($('#RegistrationFormContainer'));
				} 
						
                    
                    }
                    
                }
			
            }
            $('#advocate_form').ajaxSubmit(options);

        });
    
        // on required field handlers
        $('.required_field input').each(function() {
            $(this).blur(function() {
                verify_required($(this));
            });
        });
        // wizard button handlers (next, cancel and submit)
        $('#BtnNextStep1').click(function() {
            // check to see if we validate before allowing click thru
            verification_loop('StepOne');

            if ($('div#StepOne .missed_alert').length > 0) { return false; }

            $('.wizard_stepone').hide();
            $('.wizard_steptwo').show();


            // captcha init
            Recaptcha.create(
                GetRecaptchaKey(),
                'enlistRecaptcha',
                { theme:'clean', callback: function() { } }   // todo : => move successfull callback to this trigger?
            );

        });
        // previous handler
        $('#advocacySignUpStep2PrevBtn').click(function() {
            $('.wizard_stepone').show();
            $('.wizard_steptwo').hide();
        });

        // cancel handler
        $('.cancel_trigger').click(function() {
            $('#community_overlay').jqmHide();
        });


        $('#advocacySignUpEmail').blur(function() {
            var email = $('#advocacySignUpEmail').val();
            if (IsEmailValid(email)) {
                return true;
            } else {
                $($('#advocacySignUpEmail')).siblings("p").children().addClass('missed_alert')
                $($('#advocacySignUpEmail')).focus(function() {
                    $(this).siblings("p").children().removeClass('missed_alert')
                });
            }
        });      
    }
    function ContactUs_callback(hash) {
        overlay_add_close_button(hash);
        
        //Add photo swap feature to contact us menu
        $('#ContactUs .cu-thumbnail-block img').click(function() {
            $('#lgContactImage').attr('src', Constants.BASE_URL + 'content/images/ContactUs/' + this.className + '.gif');
        });
    }
    function CompanyInfo_callback(hash) {
        overlay_add_close_button(hash);
        
        //Add swap feature to companyinfo about menu
        $('#AboutMenu a').click(function() {

            //remove active class from current item, add to this item
            $('#AboutMenu .active-item').removeClass('active-item').addClass('off-item');
            $(this).removeClass('off-item').addClass('active-item');

            //hide current content and show this one
            $('.companyInfoContent').hide();
            $('#' + this.id + 'Content').show();
        });

        // launch overlay instantly
        $('#contactUsCompanyInfo').click(function(e) {
            e.preventDefault();
            e.stopPropagation();
            $.get(
                $('#contactUsCompanyInfo').attr('href'),
                function(xhr) {
                    if (xhr == '') {
                        write_oops_message(hash.w);
                        return false;
                    } else {
                        hash.w.html(xhr);
                        ContactUs_callback(hash);
                    }
                }
                );
        });
    }

    function overlay_close_button_check() {
        if ($("div").hasClass("is_white") == true) {
            $(".jqmClose").css("background-image", "url(/content/images/overlay/close.png)")
        } else {
        $(".jqmClose").css("background-image", "url(/content/images/overlay/close_white.png)")
        }
    }

    function overlay_add_close_button(hash) {
        hash.w.show();
        if (hash.w.id == undefined)
            hash.w.id = hash.w[0].id;   // only becaure we refresh the content with out reload
            
        // add close button (must do since we over jqModal)
        $("<a href='javascript:void(0);' class='jqmClose' onclick=$('#" + hash.w.id + "').jqmHide();></a>").appendTo($(hash.w));
        // contrast close button color
        overlay_close_button_check()
    }

      
    /* email signup (from footer)
    *****************************/
    function email_submit_init() {
        $('#btn_getEmails').click(SubmitEmail);
        $('#getEmails')
            .val("your email address")
            //.blur(emailVerify);
    }
    function email_reset(){
        if($('#btn_getEmails').attr('disabled')==true)
            $('#btn_getEmails').attr('disabled')=="false";
    }
    
    function IsEmailValid(text) {
        if (text.match(/^([\w_\-\.]+)@((\[([0-9]{1,3}\.){3}[0-9]{1,3}\])|((([\w_\-]+\.)+)([a-zA-Z]{2,4})))$/) != null) {
            return true;
        }
        else {
            return false;
        }
    }

    function successful_email_handler() {
        $('<div class="jqmWindow" id="email_overlay"><div id="email_target"></div></div>').appendTo($('body'));
        $('#email_overlay').jqm({
            ajax: '../Content/overlay/emailSignUpThanks.aspx',
            overlay: 75,
            target: '#email_target',
            onLoad: function(h) {
                $("<a href='javascript:void(0);' class='jqmCloseEmailThankYou'  onclick=$('#email_overlay').jqmHide(); ></a>").insertBefore($('.overlay_email_thankyou'));
                overlay_close_button_check();
            },
            onShow: function(h) {
                h.w.css('opacity', 0.92).fadeIn("fast");
            },
            onHide: function(h) {
                h.w.fadeOut("fast", function() { if (h.o) h.o.remove(); });
            }
        }).jqmShow()
    }
    function failed_email_handler(msg) {
        $('#getEmails')
            .css('color', 'red')
            .val(msg || "Invalid Email!");     
    }

    function emailVerify() {
        if (IsEmailValid($('#getEmails').val()) == false ) {            
            return; 
        }
        $.post(
            "../Content/Service/EmailHandler.ashx",
            { action: "verify", email: $('#getEmails').val() },
            function(xhr) {
                if (xhr.toLowerCase() == '' || xhr.toLowerCase() == "false") {
                    //  successful_email_handler();
                    return true;
                } else {
                    failed_email_handler("We've already received this email. Thanks!"); 
                    //return false;
                }
            }
        );
    
    }

    function SubmitEmail() {
    	   pageTracker._trackEvent('Newsletter', 'Signup');
    	   
        if (IsEmailValid($('#getEmails').val()) == false){ 
            failed_email_handler("This doesn't look like an email address.");
            return
        } else if (emailVerify() == false) {
                failed_email_handler("We've already received this email. Thanks!");        
        }


        $.post(
                "../Content/Service/EmailHandler.ashx",
                { action: "submit", email: $('#getEmails').val() },
                function(xhr) {
                    if (xhr == "true") {
                        successful_email_handler();
                        $('#getEmails').val('');
                    } else if (xhr =="existing"){
                        failed_email_handler("We've already received this email. Thanks!"); 
                    } else {
                        failed_email_handler();
                    }
                }
            );
    }

    /* store locator
    *************************************************************************/
    function store_locator_init() {
        $.log('called');
        populateRegions();
        clickedCountry();
        clickedRegion();
    };
    function populateRetailers() {
        var url = "/views/StoreLocator/getRetailers.ashx?c=" + $('.ddlCountries').val() + "&r="
        var appendURL = 'All'
        $('.divRetailers').html('<div>loading<img src="/content/images/loading_spinny.gif"><\div>');
        if ($('.ddlRegions').val() != 'All') { appendURL = $('.ddlRegions').val() }
        url = url + appendURL
        $.get(
                url,
                    function(xhr) {
                        $('.divRetailers').html(xhr);
                    }
                );
    }
    function populateRegions() {
        var url = "/views/StoreLocator/getRetailers.ashx?c="
        url = url + $('.ddlCountries').val() + "&r="
        $.get(
            url,
            function(xhr) {
                $('.ddlRegions').html(xhr);

                populateRetailers();
            }
        );

    }

    function clickedRegion() {
        $('.ddlRegions').change(function() {
            populateRetailers();
        });
    }

    function clickedCountry() {

        $('.ddlCountries').change(function() {
            populateRegions();
        });
    }
    

    /* page load function (called after dom ready())
    ***************************************************************************/
    $(function() {
        email_submit_init();
        tidbit_parameter_check();
        overlay_container_init("rightCol", 0)
        Ingredients_jqmodal_init("#link_explore_ingredients", recurse_overlay_init);
        learnMore_jqmodal_init("#link_view_more");
        storeLocation_jqmodal_init("#link_wheretobuy", store_locator_init);
        jqmodal_Enlist_init("#join", enlist_overlay_init);
        $('.modal_trigger').each(function() {
            var el = $(this)[0].id;
            var cb = eval($(this).attr('callback'));
            generic_modal(el, cb);
        });
    });
