var AllowRegistration = false;

window.addEvent('domready', function() {
    AddGlowtoTopNav();
    //Add filtering string
    if ($("SearchInputHome")) {
        $("SearchInputHome").addEvent("keyup", function() {
            var TextBoxElement = $('SearchInputHome');
            var filteredString = FilterString(TextBoxElement.getProperty("value"), "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890");
            filteredString = filteredString.toUpperCase();
            if (filteredString.length > 10) {
                filteredString = filteredString.substring(0, 10);
            }
            TextBoxElement.setProperty("value", filteredString);
        });
    }

    if ($("searchsubmit")) {
        $("searchsubmit").addEvent("click", function() {

            var txtboxval = "";
            if ($('TopMenuQuery')) {
                var txtboxval = $('TopMenuQuery').getProperty("value").toUpperCase();
            }

            //alert(txtboxval);

            SetWidgetpositionForSearch(txtboxval);
            //alert("done");
            // 
        });
    }

    if ($('TopMenuQuery')) {
        $('TopMenuQuery').addEvent("focus", function() {
            $('TopMenuQuery').setProperty("value", "")
        });
    }

    if ($("searchbutton")) {
        $("searchbutton").addEvent("click", function() {
            Cookie.dispose('WidgetPosition');
        });
    }

    if ($('SearchInputHome')) {
        $('SearchInputHome').addEvent("focus", function() {
            $('SearchInputHome').setProperty("value", "")
        });
    }

    //Add Autocomplete = off on relevent fields

    /* preloading */
    var images = ['/Resources/Images/dropmenu.png'];
    var loader = new Asset.images(images);
    /* 
    var loader = new Asset.images(images, {
    onProgress: function(counter, index) {
    },
    onComplete: function() {
    images.each(function(im) {
    new Element('img', { src: im, width: 961, style: 'width:961px; height:500px; position:absolute; top:0px; left:0px; z-index:-1 ' }).inject($('DropdownLoginMenu'));
    });
    }
    }); */

    $$(".DropDownTextbox").each(function(e, i, a) {
        e.setProperty("autocomplete", "off");
    });

    //Main content rows
    var array = $$('.platelistingleft', '.outerrow', '.wishlistRow', '.contentrow').each(function(e, i, a) {
        e.addEvent("mouseenter", function() {
            e.addClass('overbgback');
        });

        e.addEvent("mouseleave", function() {
            e.removeClass('overbgback');
        });
    });

    // Widget content rows
    var array = $$('.pagerowRight', '#rightmenu ul li').each(function(e, i, a) {
        e.addEvent("mouseenter", function() {
            e.addClass('overbgbackwidget');
        });

        e.addEvent("mouseleave", function() {
            e.removeClass('overbgbackwidget');
        });
    });

    var array = $$('.blogmenu').each(function(e, i, a) {

        e.addEvent("mouseenter", function() {
            e.toggleClass('blogover');
            e.getFirst('.picoverflow').getFirst(".h2titlelink").getFirst().setStyle("color", "#ffffff");
            e.getFirst('.picoverflow').getFirst(".desc").getFirst().setStyle("color", "#ffffff");
        });

        e.addEvent("mouseleave", function() {
            e.toggleClass('blogover');
            e.getFirst('.picoverflow').getFirst(".h2titlelink").getFirst().setStyle("color", "#BABCBE");
            e.getFirst('.picoverflow').getFirst(".desc").getFirst().setStyle("color", "#BABCBE");
        });
    })

    $('PasswordResetForm').addEvent("submit", function() {
        //Validate email address
        if (validateEmailAddress($("ReminderEmail").getProperty("value"))) {
            //Request P{assword Send
            RequestPasswordReminder();

        }
        else {
            alert('Please enter a valid email address');

        }
        return false;
    });

    $("SendPasswordEmail").addEvent("click", function() {
        $('PasswordResetForm').fireEvent("submit");
    });

    var DropoutMenuClose = $('#dropmenutitle');
    var DropoutMenu = $('JoinNow');
    var DropdownLoginMenu = $('DropdownLoginMenu');
    var DropoutMenuDisplay = false;

    if (DropoutMenu) {
        DropoutMenu.addEvent("click", function() {
            if (DropoutMenuDisplay == false) {
                DropoutMenuDisplay = true;
                DropdownLoginMenu.setStyle("display", "");
                DropdownLoginMenu.setStyle("opacity", "0");
                DropdownLoginMenu.morph({ "opacity": "1" });
            }
        });
    }

    $('dropmenutitle').addEvent("click", function() {
        if (DropoutMenuDisplay == true) {
            DropoutMenuDisplay = false;
        }
        DropdownLoginMenu.morph({ "opacity": "0" });
    });

    $('SubmitRegister').addEvent("click", function() {
        if (validateRegistration()) {
            TryCreateUser();
        }
    });

    $("RegisterForm").addEvent("submit", function() {
        if (!AllowRegistration) {
            if (validateRegistration()) {
                TryCreateUser();
            }
            return false;
        }
        else {
            return true;
        }
    });

    $("TryRegistrationAgain").addEvent("click", function() {
        //Reset values
        $('DropMenuLeftContent').setStyle("display", "");
        $('DropMenuLeftContentError').setStyle("display", "none");
    });

    var uri = new URI(document.location);

    //alert(uri.get("fragment"));
    if (uri.get("fragment") == "showlogin" && !$("wishlistlink")) {
        $('DropdownLoginMenu').setStyle("display", "");
        $('DropdownLoginMenu').setStyle("opacity", "0");
        $('DropdownLoginMenu').morph({ "opacity": "1" });
    }

    

});

function validateEmailAddress(email) {
    var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
    return reg.test(email);
}

//PasswordResetForm

//LoginForm
//RegisterForm

function TryCreateUser() {
    //This code will send a data object via a GET request and alert the retrieved data.
    // $('DropMenuLeftContent').setStyle("display", "none");
    $('DropMenuLeftContent').setStyle("display", "none");

    var jsonRequest = new Request.JSON(
    {
        url: "/RegisteredUser/UserAvailable",
        onSuccess: function(ResponseObject) {
            if (ResponseObject) {
                AllowRegistration = true;
                // alert('dfg');
                $("RegisterForm").submit();
            } else {
                $('DropMenuLeftContentError').setStyle("display", "");
            }
        }
    }).post(
    {
        'RUEmail': $("RUEmail").getProperty("value")
    });
}


function RequestPasswordReminder() {
    //This code will send a data object via a GET request and alert the retrieved data.
    var jsonRequest = new Request.JSON(
    {
        url: "/RegisteredUser/Reminder",
        onSuccess: function(responseBool) {
            if (responseBool) {
                $("ReminderEmail").setProperty("value", "")
                alert('You have been emailed a new password');
            }
            else {
                alert('Sorry your email was not found');
            }
        }
    }).post(
    {
        'email': $("ReminderEmail").getProperty("value")
    });
    return false;
}

function validateRegistration() {

    var formOK = true;
    var msgArr = new Array();

    var e = $("RUPassword");
    if (e.getProperty("value") == "") {
        formOK = false;
        e.morph({ "background-color": ["#ffff00", "#6D6E70"] })
        e.focus();
        msgArr = msgArr.concat(new Array("You must enter a password"));
    }

    if (e.getProperty("value") != $("RUPaswordConfirm").getProperty("value")) {
        formOK = false;
        e.morph({ "background-color": ["#ffff00", "#6D6E70"] })
        $("RUPaswordConfirm").morph({ "background-color": ["#ffff00", "#6D6E70"] })
        e.focus();
        msgArr = msgArr.concat(new Array("Passwords dont match"));
    }

    var e = $("RUEmail");
    if (e.getProperty("value") == "") {
        formOK = false;
        e.morph({ "background-color": ["#ffff00", "#6D6E70"] })
        e.focus();
        msgArr = msgArr.concat(new Array("You must enter a Email"));
    }

    if (!validateEmailAddress(e.getProperty("value"))) {
        formOK = false;
        e.morph({ "background-color": ["#ffff00", "#6D6E70"] })
        e.focus();
        msgArr = msgArr.concat(new Array("You must enter a valid Email"));
    }

    var e = $("RUName");
    if (e.getProperty("value") == "") {
        formOK = false;
        e.morph({ "background-color": ["#ffff00", "#6D6E70"] })
        e.focus();
        msgArr = msgArr.concat(new Array("You must enter your name"));
    }

    return formOK;
}

function FilterString(str, allowedChars) {
    var returnString = "";
    //alert(str.length);
    for (var i = 0; i < str.length; i++) {
        //alert(allowedChars.indexOf(str.charAt(i)) + " : " + str.charAt(i));
        if (allowedChars.indexOf(str.charAt(i)) > -1) {
            returnString = returnString + str.charAt(i);
        }
    }

    return returnString;
}

function AddGlowtoTopNav() {

    //setup
    $('buyingHover').morph({ opacity: 0.1 });
    $('sellingHover').morph({ opacity: 0.1 });
    //$('JoinNowHover').morph({ opacity: 0.1 });
    // $('wishlistlinkHover').morph({ opacity: 0.1 });


    var el = $('buyingHover');
    var el1 = $('sellingHover');
    //var el2 = $('JoinNowHover');
    //var el3 = $('wishlistlinkHover');

    el.addEvents({
        'mouseenter': function() {
            $('buyingHover').set('morph', { duration: '1000', transition: 'expo:out' });
            $('buyingHover').morph({ opacity: 1 });
        },
        'mouseleave': function() {
            $('buyingHover').morph({ opacity: 0.1 });
        }
    });

    el1.addEvents({
        'mouseenter': function() {
            $('sellingHover').set('morph', { duration: '1000', transition: 'expo:out' });
            $('sellingHover').morph({ opacity: 1 });
        },
        'mouseleave': function() {
            $('sellingHover').morph({ opacity: 0.1 });
        }
    });
    if ($('JoinNowHover')) {
        $('JoinNowHover').morph({ opacity: 0.1 });
        $('JoinNowHover').addEvents({
            'mouseenter': function() {

                $('JoinNowHover').set('morph', { duration: '1000', transition: 'expo:out' });
                $('JoinNowHover').morph({ opacity: 1 });
            },
            'mouseleave': function() {
                $('JoinNowHover').morph({ opacity: 0.1 });
            }
        });
    }
    if ($('wishlistlinkHover')) {
        $('wishlistlinkHover').morph({ opacity: 0.1 });
        $('wishlistlinkHover').addEvents({
            'mouseenter': function() {

                $('wishlistlinkHover').set('morph', { duration: '1000', transition: 'expo:out' });
                $('wishlistlinkHover').morph({ opacity: 1 });
            },
            'mouseleave': function() {
                $('wishlistlinkHover').morph({ opacity: 0.1 });
            }
        });

    }
}

function SetWidgetpositionForSearch(query) {
    //alert('sd');
    ChangeWidgetPositionCookie(1);

    //    // alert("testing " + query);
    //    var ex = /^[A-Z]{2}\d{1,4}$/;
    //    if (query.test(ex)) {
    //        //alert("matched : [ll][n-nnnn]");
    //        ChangeWidgetPositionCookie(0);
    //    }

    //    ex = /^\d{4}[A-Z]{2}$/;
    //    if (query.test(ex)) {
    //        //alert("matched : [nnnn][ll]");
    //        ChangeWidgetPositionCookie(0);
    //    }

    //    ex = /^\w{1}\d{1,4}$/;
    //    if (query.test(ex)) {
    //        //alert("matched : [l][n-nnnn]");
    //        ChangeWidgetPositionCookie(0);
    //    }

    //    ex = /^\d{1,4}\w{1}$/;
    //    if (query.test(ex)) {
    //        //alert("matched : [n-nnnn][l]");
    //        ChangeWidgetPositionCookie(0);
    //    }

    //    // alert("testing " + query);
    //    ex = /^\d{1,4}$/;
    //    if (query.test(ex)) {
    //        //alert("matched : [n-nn]");
    //        ChangeWidgetPositionCookie(1);
    //    }
}

function IsRegexMatch(regex, query) {
    var re = new RegExp(regex);
    var m = re.exec(query);
    if (m != null) {
        alert("true");
        return true;
    }

    return false
}

function ChangeWidgetPositionCookie(Pos) {
    var WidgetPositionCookie = Cookie.read('WidgetPosition');
    if (WidgetPositionCookie != null) {
        Cookie.dispose(WidgetPositionCookie);
    }
    var myCookie = Cookie.write("WidgetPosition", Pos, { path: "/" });
}


