jQuery.easing['jswing'] = jQuery.easing['swing'];

jQuery.extend(jQuery.easing,
{
    def: 'easeOutQuad',
    swing: function (x, t, b, c, d) {
        //alert(jQuery.easing.default);
        return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
    },
    easeInQuad: function (x, t, b, c, d) {
        return c * (t /= d) * t + b;
    },
    easeOutQuad: function (x, t, b, c, d) {
        return -c * (t /= d) * (t - 2) + b;
    },
    easeInOutQuad: function (x, t, b, c, d) {
        if ((t /= d / 2) < 1) return c / 2 * t * t + b;
        return -c / 2 * ((--t) * (t - 2) - 1) + b;
    },
    easeInCubic: function (x, t, b, c, d) {
        return c * (t /= d) * t * t + b;
    },
    easeOutCubic: function (x, t, b, c, d) {
        return c * ((t = t / d - 1) * t * t + 1) + b;
    },
    easeInOutCubic: function (x, t, b, c, d) {
        if ((t /= d / 2) < 1) return c / 2 * t * t * t + b;
        return c / 2 * ((t -= 2) * t * t + 2) + b;
    },
    easeInQuart: function (x, t, b, c, d) {
        return c * (t /= d) * t * t * t + b;
    },
    easeOutQuart: function (x, t, b, c, d) {
        return -c * ((t = t / d - 1) * t * t * t - 1) + b;
    },
    easeInOutQuart: function (x, t, b, c, d) {
        if ((t /= d / 2) < 1) return c / 2 * t * t * t * t + b;
        return -c / 2 * ((t -= 2) * t * t * t - 2) + b;
    },
    easeInQuint: function (x, t, b, c, d) {
        return c * (t /= d) * t * t * t * t + b;
    },
    easeOutQuint: function (x, t, b, c, d) {
        return c * ((t = t / d - 1) * t * t * t * t + 1) + b;
    },
    easeInOutQuint: function (x, t, b, c, d) {
        if ((t /= d / 2) < 1) return c / 2 * t * t * t * t * t + b;
        return c / 2 * ((t -= 2) * t * t * t * t + 2) + b;
    },
    easeInSine: function (x, t, b, c, d) {
        return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;
    },
    easeOutSine: function (x, t, b, c, d) {
        return c * Math.sin(t / d * (Math.PI / 2)) + b;
    },
    easeInOutSine: function (x, t, b, c, d) {
        return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;
    },
    easeInExpo: function (x, t, b, c, d) {
        return (t == 0) ? b : c * Math.pow(2, 10 * (t / d - 1)) + b;
    },
    easeOutExpo: function (x, t, b, c, d) {
        return (t == d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;
    },
    easeInOutExpo: function (x, t, b, c, d) {
        if (t == 0) return b;
        if (t == d) return b + c;
        if ((t /= d / 2) < 1) return c / 2 * Math.pow(2, 10 * (t - 1)) + b;
        return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b;
    },
    easeInCirc: function (x, t, b, c, d) {
        return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b;
    },
    easeOutCirc: function (x, t, b, c, d) {
        return c * Math.sqrt(1 - (t = t / d - 1) * t) + b;
    },
    easeInOutCirc: function (x, t, b, c, d) {
        if ((t /= d / 2) < 1) return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b;
        return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b;
    },
    easeInElastic: function (x, t, b, c, d) {
        var s = 1.70158; var p = 0; var a = c;
        if (t == 0) return b; if ((t /= d) == 1) return b + c; if (!p) p = d * .3;
        if (a < Math.abs(c)) { a = c; var s = p / 4; }
        else var s = p / (2 * Math.PI) * Math.asin(c / a);
        return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
    },
    easeOutElastic: function (x, t, b, c, d) {
        var s = 1.70158; var p = 0; var a = c;
        if (t == 0) return b; if ((t /= d) == 1) return b + c; if (!p) p = d * .3;
        if (a < Math.abs(c)) { a = c; var s = p / 4; }
        else var s = p / (2 * Math.PI) * Math.asin(c / a);
        return a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b;
    },
    easeInOutElastic: function (x, t, b, c, d) {
        var s = 1.70158; var p = 0; var a = c;
        if (t == 0) return b; if ((t /= d / 2) == 2) return b + c; if (!p) p = d * (.3 * 1.5);
        if (a < Math.abs(c)) { a = c; var s = p / 4; }
        else var s = p / (2 * Math.PI) * Math.asin(c / a);
        if (t < 1) return -.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
        return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * .5 + c + b;
    },
    easeInBack: function (x, t, b, c, d, s) {
        if (s == undefined) s = 1.70158;
        return c * (t /= d) * t * ((s + 1) * t - s) + b;
    },
    easeOutBack: function (x, t, b, c, d, s) {
        if (s == undefined) s = 1.70158;
        return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;
    },
    easeInOutBack: function (x, t, b, c, d, s) {
        if (s == undefined) s = 1.70158;
        if ((t /= d / 2) < 1) return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b;
        return c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b;
    },
    easeInBounce: function (x, t, b, c, d) {
        return c - jQuery.easing.easeOutBounce(x, d - t, 0, c, d) + b;
    },
    easeOutBounce: function (x, t, b, c, d) {
        if ((t /= d) < (1 / 2.75)) {
            return c * (7.5625 * t * t) + b;
        } else if (t < (2 / 2.75)) {
            return c * (7.5625 * (t -= (1.5 / 2.75)) * t + .75) + b;
        } else if (t < (2.5 / 2.75)) {
            return c * (7.5625 * (t -= (2.25 / 2.75)) * t + .9375) + b;
        } else {
            return c * (7.5625 * (t -= (2.625 / 2.75)) * t + .984375) + b;
        }
    },
    easeInOutBounce: function (x, t, b, c, d) {
        if (t < d / 2) return jQuery.easing.easeInBounce(x, t * 2, 0, c, d) * .5 + b;
        return jQuery.easing.easeOutBounce(x, t * 2 - d, 0, c, d) * .5 + c * .5 + b;
    }
});

$(document).ready (init);
function init() {
    checkURI()
    if ($("#tweets").length > 0) {
        $('<ul id="tweetList"></ul>').appendTo('#tweets');

        var tweeturl = "http://twitter.com/status/user_timeline/stepHear.json?count=5&callback=?";
        $.getJSON(tweeturl, function (data) {
            $.each(data, function (i, item) {
                var txt = item.text
	      .replace(/(https?:\/\/[-a-z0-9._~:\/?#@!$&\'()*+,;=%]+)/ig, '<a href="$1">$1</a>')
	      .replace(/@+([_A-Za-z0-9-]+)/ig, '<a href="http://twitter.com/$1">@$1</a>')
	      .replace(/#+([_A-Za-z0-9-]+)/ig, '<a href="http://search.twitter.com/search?q=$1">#$1</a>');

                var dt = "<div class='tweetDate'>" + item.created_at + "</div>";

                $('<li></li>').html(txt + dt).appendTo('#tweetList');
            });
        });
    }
    if ($("ul#secMenu li ul").length > 0) {
        $("ul#secMenu li ul").not("ul#secMenu li.selected ul").hide();
        $("ul#secMenu li h3").click(function () {
            var dad = $(this).parent("li").children("ul");
            $("ul#secMenu li h3").not(this).removeClass("selected");
            $("ul#secMenu li ul").not(dad).hide();
            $(this).toggleClass("selected");
            $(this).parent("li").children("ul").slideToggle("fast");
        });
    }
    $("input#sub").bind("click", subFrm, false);
    $("input#subNL").bind("click", subNL, false);

    if ($("#mainMenu").length > 0) {
        $("#mainMenu li a").not(".selected").hover(function () {
            $(this).animate({ color : "#ffffff" }, 250);
            $(this).animate({ backgroundColor : "#1e1e1e" }, 200);
        }, function () {
            $(this).animate({ color : "#1e1e1e" }, 250);
            $(this).animate({ backgroundColor : "#fdc82f" }, 200);
        });
    }
    if ($("#header-bottom").length > 0) {
        $("#header-bottom").html("");
        $("#header-bottom").flash({
            swf: "/images/step-hear.swf",
            height: 150,
            width: 960
        });
    }
    if ($("a.video").length > 0) {
        flowplayer("player", "/common/flowplayer-3.2.2.swf", {
            clip: {
                autoPlay: false,
                autoBuffering: true // <- do not place a comma here  
            },
            plugins: {
                controls: {
                    backgroundColor: '#000',
                    backgroundGradient: 'none',
                    all: false,
                    scrubber: true,
                    height: 40,
                    sliderColor: '#333333',
                    progressColor: '#fdc82f',
                    bufferColor: '#666666',
                    autoHide: true
                }
            },
            canvas: {
                backgroundColor: '#fdc82f',
                backgroundGradient: [0.3, 0],
                borderRadius: 10
            }
        });
    }
}

$(window).bind("resize", function () {
    fixMinMaxwidth();
});
//anonymous function to check all elements with class .fixMinMaxwidth
var fixMinMaxwidth = function () {
    //only apply this fix to browsers without native support
    if (typeof document.body.style.maxHeight !== "undefined" &&
               typeof document.body.style.minHeight !== "undefined") return false;

    //loop through all elements
    $('.fixMinMaxwidth').each(function () {
        //get max and minwidth via jquery
        var maxWidth = parseInt($(this).css("max-width"));
        var minWidth = parseInt($(this).css("min-width"));

        //if min-/maxwidth is set, apply the script
        if (maxWidth > 0 && $(this).width() > maxWidth) {
            $(this).width(maxWidth);
        } else if (minWidth > 0 && $(this).width() < minWidth) {
            $(this).width(minWidth);
        }
    });
}

function checkURI() {
    if (document.location.search != "") {
        var tmp = document.location.search.toString();
        if (tmp.indexOf("suc=1") > 0) {
            $("<div id='clientMsg'><p>Thanks for contacting us at STEP-HEAR.<br />We will address your call shortly.<br /><button id='closeBtn' onclick='javascript:closeClientMsg(1)'>CLOSE</button></p></div>").prependTo("#wraper");
            $("div#clientMsg").delay(1000).slideDown(2000);
        }
        if (tmp.indexOf("suc=0") > 0) {
            $("<div id='clientMsg_error'><p>Your request failled to execute.<br />Please try again.<br /><button id='closeBtn' onclick='javascript:closeClientMsg(0)'>CLOSE</button></p></div>").prependTo("#wraper");
            $("div#clientMsg_error").delay(1000).slideDown(2000);
        }
    }
}

function closeClientMsg(i) {
    switch (i) {
        case 0:
            $("div#clientMsg_error").delay(400).slideUp(900);
            break;
        case 1:
            $("div#clientMsg").delay(400).slideUp(900);
            break;
    }

  
    /*
    $('#clientMsg').click(function (event) {
        $(this)
            .animate(
                { height: 0 }, {
                    duration: '2000',
                    easing: 'easeOutCirc'
                })
    });
*/
}
function subNL() {
    var el;
    el = document.getElementById("nameStr");
    if (isBlank(el.value)) {
        setError(el);
        return false;
    }
    else {
        clearError(el);
    }
    el = document.getElementById("mailStr");
    if (!checkEmail(el.value)) {
        setError(el);
        return false;
    }
    else {
        clearError(el);
    }
    return true
}

function subFrm() {
    var el;
    /*
    var bul = false;
    el = document.getElementsByName("titleStr");
    for (i=0;i<el.length;i++)
    {
    if(el[i].checked){
    bul = true;
    break;
    }
    }
    if(!bul){
    alert("Please specify your title");
    //setError(el);
    $("html,body").animate({scrollTop: 0}, 1000);
    return false;
    }
    el = document.getElementById("titleStr");
    if(isBlank(el.value)) {
    setError(el);
    return false;
    }
    else {
    clearError(el);
    }
    */
    el = document.getElementById("fName");
    if (isBlank(el.value)) {
        setError(el);
        return false;
    }
    else {
        clearError(el);
    }
    el = document.getElementById("lName");
    if (isBlank(el.value)) {
        setError(el);
        return false;
    }
    else {
        clearError(el);
    }

    /*
    el = document.getElementById("address1");
    if(isBlank(el.value)) {
    setError(el);
    return false;
    }
    else {
    clearError(el);
    }
	
    el = document.getElementById("cityStr");
    if(isBlank(el.value)) {
    setError(el);
    return false;
    }
    else {
    clearError(el);
    }
    el = document.getElementById("stateStr");
    if(isBlank(el.value)) {
    setError(el);
    return false;
    }
    else {
    clearError(el);
    }
    el = document.getElementById("zipCode");
    if(isBlank(el.value)) {
    setError(el);
    return false;
    }
    else {
    clearError(el);
    }
    */
    el = document.getElementById("countryStr");
    if (isBlank(el.value)) {
        setError(el);
        return false;
    }
    else {
        clearError(el);
    }
    /*
    el = document.getElementById("telStr");
    if(isBlank(el.value)) {
    setError(el);
    return false;
    }
    else {
    clearError(el);
    }
    */
    el = document.getElementById("emailStr");
    if (!checkEmail(el.value)) {
        setError(el);
        return false;
    }
    else {
        clearError(el);
    }

    return true
}


function setErrorNoFocus(el) {
    cssjs("add", el, "validateError", "")
}
function setError(el) {
    $("html,body").animate({ scrollTop: 240 }, 1000);
    cssjs("add", el, "validateError", "")
    el.focus();
}
function clearError(el) {
    cssjs("remove", el, "validateError", "")
}


function cssjs(a, o, c1, c2) {
    switch (a) {
        case 'swap':
            o.className = !cssjs('check', o, c1) ? o.className.replace(c2, c1) : o.className.replace(c1, c2);
            break;
        case 'add':
            if (!cssjs('check', o, c1)) { o.className += o.className ? ' ' + c1 : c1; }
            break;
        case 'remove':
            var rep = o.className.match(' ' + c1) ? ' ' + c1 : c1;
            o.className = o.className.replace(rep, '');
            break;
        case 'check':
            return new RegExp('\\b' + c1 + '\\b').test(o.className)
            break;
    }
}

function isUKMobile(val) {
    if (!isNumeric(val)) {
        return false
    }
    else {
        if (val.charAt(0) != 0) {
            return false;
        }
        else {
            if (val.charAt(1) != 7) {
                return false;
            }
            else {
                return true;
            }
        }
    }
}
function isDial(val) {
    var str = val;
    var allowedChars = "-";
    var stripedStr = stripCharsInBag(str, allowedChars)
    if (stripedStr.length < 11 || stripedStr.length > 11) {
        return false
    }
    else {
        if (!isInteger(stripedStr)) {
            return false
        }
        else {
            return true
        }
    }
}
function stripCharsInBag(s, bag) {
    var i;
    var returnString = "";
    for (i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function checkEmail(val) {
    if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(val)) {
        return true;
    }
    else {
        return false;
    }
}

function isValidEmail(el) {
    var reEmail = /^([\w]+)(.[\w]+)*@([\w]+)(.[\w]{2,3}){1,2}$/;
    if (el) {
        var re = new RegExp(reEmail);
        el.value = el.value.trim();
        if (el.value == "" || !el.value.match(re)) {
            return false
        }
        else {
            return true
        }
    }
}

function isZipCode(val) {
    if (val.length > 9) {
        return false;
    }
    else {
        return isInteger(val);
    }
}
function isExsactLength(el, length) {
    if (el.length != length) {
        return false
    }
    else {
        return true
    }
}


function LTrim(str) {
    if (str == null) { return null; }
    for (var i = 0; str.charAt(i) == " "; i++);
    return str.substring(i, str.length);
}
function RTrim(str) {
    if (str == null) { return null; }
    for (var i = str.length - 1; str.charAt(i) == " "; i--);
    return str.substring(0, i + 1);
}
function Trim(str) { return LTrim(RTrim(str)); }
function LTrimAll(str) {
    if (str == null) { return str; }
    for (var i = 0; str.charAt(i) == " " || str.charAt(i) == "\n" || str.charAt(i) == "\t"; i++);
    return str.substring(i, str.length);
}
function RTrimAll(str) {
    if (str == null) { return str; }
    for (var i = str.length - 1; str.charAt(i) == " " || str.charAt(i) == "\n" || str.charAt(i) == "\t"; i--);
    return str.substring(0, i + 1);
}
function TrimAll(str) {
    return LTrimAll(RTrimAll(str));
}
function isNull(val) { return (val == null); }
function isBlank(val) {
    if (val == null) { return true; }
    for (var i = 0; i < val.length; i++) {
        if ((val.charAt(i) != ' ') && (val.charAt(i) != "\t") && (val.charAt(i) != "\n") && (val.charAt(i) != "\r")) { return false; }
    }
    return true;
}
function isInteger(val) {
    if (isBlank(val)) { return false; }
    for (var i = 0; i < val.length; i++) {
        if (!isDigit(val.charAt(i))) { return false; }
    }
    return true;
}
function isNumeric(val) { return (parseFloat(val, 10) == (val * 1)); }
function isArray(obj) { return (typeof (obj.length) == "undefined") ? false : true; }
function isDigit(num) {
    if (num.length > 1) { return false; }
    var string = "1234567890";
    if (string.indexOf(num) != -1) { return true; }
    return false;
}
function setNullIfBlank(obj) { if (isBlank(obj.value)) { obj.value = ""; } }
function setFieldsToUpperCase() {
    for (var i = 0; i < arguments.length; i++) {
        arguments[i].value = arguments[i].value.toUpperCase();
    }
}
