(function() {
    var b = window.browser = window.browser || {};
    var ua = navigator.userAgent.toLowerCase();
    var up = navigator.platform.toLowerCase();
    var is = (ua.match(/\b(chrome|opera|safari|msie|firefox|webkit)\b/) || ['', 'mozilla'])[1];
    var r = '(?:' + is + '|version)[\\/: ]([\\d.]+)';
    var v = (ua.match(new RegExp(r)) || [])[1];
    b.name = is;
    b.ver = v;
    b.os = /(win|mac|linux|sunos|solaris|iphone)/.exec(up)[0].replace('sunos', 'solaris');
    var className = [b.os, b.name, [b.name, b.ver.substring(0,1)].join('_'), [b.name, b.ver.replace(/\./g, '_')].join('_')].join(' ');
    if(document.documentElement.className && document.documentElement.className.length > 0){
        className.unshift(document.documentElement.className);
    }
    document.documentElement.className = className;
})();
namespace = {
    register : function(_ns){
        var __namespace = window;
        var nsp = _ns.split(".");
        for(var i=0; i<nsp.length; i++){
            var temp = nsp[i];
            if(!__namespace[temp]){
                __namespace[temp]={};
            }
            __namespace = __namespace[temp];
        }
    }
};
namespace.register("androidzzz");
namespace.register("androidzzz.utils");
androidzzz.utils = {
    resetForm:function(id){
        document.getElementById(id).reset();
    },
    tabs :function (s) {
        var styleWrap = "." + s;
        var tabsClass = jQuery(styleWrap);
        if (tabsClass.length) {
            styleWrap = "." + s;
            jQuery(styleWrap + " .tabs li a").click(function(){
                var tabsIdName = jQuery(this).parents(styleWrap).get(0).id;
                var tab = jQuery(this).parents("ul").children("li");
                var tabNum = tab.length;
                tab.removeClass("over");
                this.parentNode.className = "over";
                for (var i = 1; i <= tabNum; i++) {
                    jQuery("#" + tabsIdName + "_" + i).css("display", "none");
                }
                jQuery("#" + tabsIdName + "_" + this.rel).css("display", "").show();
                return false;
            });
        }
    },
    showSysError:function(){
        window.alert("System Error!");
    }
};
namespace.register("androidzzz.configs");
androidzzz.configs = {
    searchUrl:"/search",
    domain:"androidzzz.com"
};
namespace.register("androidzzz.utils.ajaxLoading");
androidzzz.utils.ajaxLoading ={
    config: {
        elementId: "loadding",
        content: "Processing...",
        loaddingButtonIdPre:'loadding_button_'
    },
    show: function() {
        var el = jQuery(arguments[0]);
        var text = arguments[1] || this.config.content
        if (el) {
            var left = el.offset().left;
            var top = el.offset().top;
            var width = el.width();
            var height = el.height();
            left += width + 20;
            top += height / 2 - 24;
            var html = jQuery('<p id="' + this.config.elementId + '" class="process" style="position: absolute;width:150px;height:14px"><span>' + text + "</span></p>");
            html.css("zIndex", 999);
            html.css("left", left.toString() + "px");
            html.css("top", top.toString() + "px");
            el.parent().append(html);
        }
    },
    remove: function() {
        var el = jQuery(arguments[0]);
        if (el) {
            var divLoading = el.find("#" + this.config.elementId);
            if (divLoading && divLoading.length > 0) {
                divLoading.remove();
            }
            else {
                divLoading = el.parent().find("#" + this.config.elementId);
                if (divLoading && divLoading.length > 0) {
                    divLoading.remove();
                }
            }
        }
        else {
            jQuery("#" + this.config.elementId).remove();
        }
    },
    showReplace: function() {
        var el = jQuery(arguments[0]);
        var text = arguments[1] || this.config.content
        if (el) {
            el.after('<p id="' + this.config.elementId + '" class="process" style="width:150px" ><span>' + text + "</span></p>");
            el.hide()
        }
    },
    removeReplace: function() {
        var el = jQuery(arguments[0]);
        if (el) {
            var divLoading = el.parent().find("#" + this.config.elementId);
            if (divLoading) {
                divLoading.remove()
            }
            el.show()
        }
    },
    disableButton:function(){
        var el = jQuery(arguments[0]);
        var text = arguments[1] || this.config.content;
        var loaddingImage = androidzzz.configs.mediaPath + "/loading_icon.gif";
        var loaddingId = this.config.loaddingButtonIdPre + el.id ;
        if (el) {
            el.after('<button id="'+ loaddingId +'" title="' + text + '"  class="loadding" type="button"><img alt="' + text + '" src="' + loaddingImage + '" title="' + text + '">' + text + '</button>');
            el.hide()
        }
    },
    enableButton:function(){
        var el = jQuery(arguments[0]);
        if(el){
            var loaddingId = this.config.loaddingButtonIdPre + el.id ;
            jQuery("#"+ loaddingId).remove();
            el.show();
        }
    }
};

namespace.register("androidzzz.login");
androidzzz.login = {
    quickLogin: function()
    {
        jQuery("#quickLogin").hide();
        jQuery("#loginUsername").focus();
        jQuery("#quickLoginHtml").show();
        return false;
    }
};
namespace.register("androidzzz.search");
androidzzz.search.topSearch = {
    textBoxId:"topSearchBox",
    onFocus:function(){
        var textbox = jQuery("#" + this.textBoxId);
        if(textbox.val() == 'Keywords') {
            textbox.val('');
        }
        textbox.removeClass('warning');
    },
    onBlur:function(){
        var textbox = jQuery("#" + this.textBoxId);
        if(textbox.val() == '') {
            textbox.val('Keywords');
        }
    },
    onSearch:function(){
        var textbox = jQuery("#" + this.textBoxId);
        var q = textbox.val();
        if(q && jQuery.trim(q).length >0 && q!="Keywords"){
            window.location.href = androidzzz.configs.searchUrl + "/" + q;
        }
        else{
            textbox.addClass("inputWarning");
        }
        return false;
    }
};

namespace.register("androidzzz.biz");
namespace.register("androidzzz.biz.itemList");
androidzzz.biz.itemList = {
    onPageIndexChange:function(ajaxUrl,containerId){
        ajaxUrl = ajaxUrl;
        jQuery.ajax({
            type: "POST",
            dataType: "html",
            url: ajaxUrl,
            timeout: 45000,
            data: "ajaxType=1",
            cache: false,
            global: true,
            beforeSend: function() {
            },
            success: function(data) {
                jQuery("#"+containerId).empty();
                jQuery("#"+containerId).html(data);
            },
            complete: function() {
            },
            error: function() {
                androidzzz.utils.showSysError();
            }
        });
    }
};
namespace.register("androidzzz.biz.itemDetail");
androidzzz.biz.itemDetail = {
    changeNameSubmit:function(){
        var btn = arguments[0];
        var form = jQuery("#changeItemNameForm");
        jQuery.ajax({
            type: "POST",
            dataType: "script",
            url: form.attr("action"),
            timeout: 45000,
            data: form.serialize(),
            cache: false,
            global: true,
            beforeSend: function(xhr) {
                xhr.setRequestHeader("Accept", "text/javascript");
                if (btn) {
                    androidzzz.utils.ajaxLoading.disableButton(btn);
                }
            },
            success: function() {
                if (btn) {
                    androidzzz.utils.ajaxLoading.enableButton(btn);
                }
            },
            complete: function() {
            },
            error: function() {
                androidzzz.utils.showSysError();
            }
        });
    },
    changeDescriptionSubmit:function(){
        var btn = arguments[0];
        var form = jQuery("#changeItemDescriptionForm");
        jQuery.ajax({
            type: "POST",
            dataType: "script",
            url: form.attr("action"),
            timeout: 45000,
            data: form.serialize(),
            cache: false,
            global: true,
            beforeSend: function(xhr) {
                xhr.setRequestHeader("Accept", "text/javascript");
                if (btn) {
                    androidzzz.utils.ajaxLoading.disableButton(btn);
                }
            },
            success: function() {
                if (btn) {
                    androidzzz.utils.ajaxLoading.enableButton(btn);
                }
            },
            complete: function() {
            },
            error: function() {
                androidzzz.utils.showSysError();
            }
        });
    }
};

function toggle_box(id) // This Function Hides/Shows an element
{
    // Animation Choices(Appearing):
    //		Appear
    //		BlindDown
    //		Fold
    //		Highlight
    //		Shake
    //		SlideDown
    // Animation Choices(For Disappearing):
    //		BlindUp
    //		DropOut
    //		Fade
    //		Pulsate
    //		Shrink
    //		SlideUp
    //		Squish
    //		Puff
    //		SwitchOff
    var element = document.getElementById(id)
    if(element.style.display == "none") // The Element is currently Hidden
        new Effect.Appear(element, {
            duration:0.5
        }); // Show Element(Must be a Appearing effect listed above)
    else // The Element is currently Visible
        new Effect.Fade(element, {
            duration:0.5
        }); // Hide Element(Must be an Disappearing effect listed above)

}
function replace_box(id_to_hide, id_to_show) 
{
    // Animation Choices(Appearing):
    //		Appear
    //		BlindDown
    //		Fold
    //		Highlight
    //		Shake
    //		SlideDown
    // Animation Choices(For Disappearing):
    //		BlindUp
    //		DropOut
    //		Fade
    //		Pulsate
    //		Shrink
    //		SlideUp
    //		Squish
    //		Puff
    //		SwitchOff
    var element_to_hide = document.getElementById(id_to_hide)
    var element_to_show = document.getElementById(id_to_show)
    new Effect.Shrink(element_to_hide, {
        duration:0.5
    }); // Hide Element(Must be a Disappearing effect listed above)
    new Effect.Appear(element_to_show, {
        duration:0.5
    }); // Show Element(Must be an Appearing effect listed above)

}
function toggle_box_s(id) // This Function Hides/Shows an element, using scriptaculous
{
    // Animation Choices(Appearing):
    //		Appear
    //		BlindDown
    //		Fold
    //		Highlight
    //		Shake
    //		SlideDown
    // Animation Choices(For Disappearing):
    //		BlindUp
    //		DropOut
    //		Fade
    //		Pulsate
    //		Shrink
    //		SlideUp
    //		Squish
    //		Puff
    //		SwitchOff
    element = document.getElementById(id)
    if(element.style.display == "none") // The Element is currently Hidden
        new Effect.Appear(element, {
            duration:0.5
        }); // Show Element(Must be a Appearing effect listed above)
    else // The Element is currently Visible
        new Effect.Fade(element, {
            duration:0.5
        }); // Hide Element(Must be an Disappearing effect listed above)
}
function replace_box_s(id_to_hide, id_to_show) // This function hides the first element and shows the second(which should already be hidden)
{
    // Animation Choices(Appearing):
    //		Appear
    //		BlindDown
    //		Fold
    //		Highlight
    //		Shake
    //		SlideDown
    // Animation Choices(For Disappearing):
    //		BlindUp
    //		DropOut
    //		Fade
    //		Pulsate
    //		Shrink
    //		SlideUp
    //		Squish
    //		Puff
    //		SwitchOff
    element_to_hide = document.getElementById(id_to_hide)
    element_to_show = document.getElementById(id_to_show)
    new Effect.Shrink(element_to_hide, {
        duration:0.5
    }); // Hide Element(Must be a Disappearing effect listed above)
    new Effect.Appear(element_to_show, {
        duration:0.5
    }); // Show Element(Must be an Appearing effect listed above)

}
function focus_main_menu_item(id)
{
    document.getElementById(id).className = "main_menu_item_hover"
}
function blur_main_menu_item(id)
{
    document.getElementById(id).className = "main_menu_item"
}
function focus_item_box(id)
{
    document.getElementById(id).className = "item_box_hover"
}
function blur_item_box(id)
{
    document.getElementById(id).className = "item_box"
}
function focus_input(id) // focus input boxes
{
    document.getElementById(id).className = "selected"
}
function blur_input(id)
{
    document.getElementById(id).className = ""
}
function change_class(id, classname)
{
    document.getElementById(id).className = classname
}

// Tab JS For User Section
/********************************************************************************************/

var req;
function callPage(pageUrl, divElementId, loadinglMessage, pageErrorMessage) {
    document.getElementById(divElementId).innerHTML = loadinglMessage;
    try {
        req = new XMLHttpRequest(); /* e.g. Firefox */
    } catch(e) {
        try {
            req = new ActiveXObject("Msxml2.XMLHTTP");  /* some versions IE */
        } catch (e) {
            try {
                req = new ActiveXObject("Microsoft.XMLHTTP");  /* some versions IE */
            } catch (E) {
                req = false;
            }
        }
    }
    req.onreadystatechange = function() {
        responsefromServer(divElementId, pageErrorMessage);
    };
    req.open("GET",pageUrl,true);
    req.send(null);
}

function responsefromServer(divElementId, pageErrorMessage) {
    var output = '';
    if(req.readyState == 4) {
        if(req.status == 200) {
            output = req.responseText;
            document.getElementById(divElementId).innerHTML = output;
        } else {
            document.getElementById(divElementId).innerHTML = pageErrorMessage+"\n" + output;
        }
    }
}

/* This Function is for Tab Panels */
function activeTab(tab)
{
    // Delesect all other tabs(change their css class) and activate the selected tab
    document.getElementById("tab1").className = "";
    document.getElementById("tab2").className = "";
    document.getElementById("tab3").className = "";
    document.getElementById("tab4").className = "";
    document.getElementById("tab"+tab).className = "active"; // make the current tab "active"
    if(tab == 1) // If your tabs are more, then you can use 'switch' condition instead of 'if' condition for better practice
    {
        callPage('/user/main/summary', 'content', '<img src=\"/themes/2010v1/medias/loading.gif\" /><br> Content is loading, Please Wait...', 'Error in Loading page <img src=\"images/error_caution.gif\" />');
    }
    else if(tab == 2)
    {
        callPage('/user/main/add_item', 'content', '<img src=\"/themes/2010v1/medias/loading.gif\" /> <br>Content is loading, Please Wait...', 'Error in Loading page <img src=\"images/error_caution.gif\" />');
    }
    else if(tab == 3)
    {
        callPage('/user/main/view_items', 'content', '<img src=\"/themes/2010v1/medias/loading.gif\" /><br>Content is loading, Please Wait...', 'Error in Loading page <img src=\"images/error_caution.gif\" />');
    }
    else if(tab == 4)
        callPage('/user/main/view_settings', 'content', '<img src=\"/themes/2010v1/medias/loading.gif\" /><br>Content is loading, Please Wait...', 'Error in Loading page <img src=\"images/error_caution.gif\" />');
}
function activeAdminTab(tab) // function for admin tabs
{
    // Delesect all other tabs(change their css class) and activate the selected tab
    document.getElementById("tab1").className = "";
    document.getElementById("tab2").className = "";
    document.getElementById("tab3").className = "";
    document.getElementById("tab4").className = "";
    document.getElementById("tab"+tab).className = "active"; // make the current tab "active"
    if(tab == 1) // Admin Tab
        callPage('/admin/main/summary', 'content', '<img src=\"/themes/2010v1/medias/loading.gif\" /><br>Content is loading, Please Wait...', 'Error in Loading page <img src=\"images/error_caution.gif\" />');
    else if(tab == 2) // Admin Tab
        callPage('/admin/main/summary', 'content', '<img src=\"/themes/2010v1/medias/loading.gif\" /><br>Content is loading, Please Wait...', 'Error in Loading page <img src=\"images/error_caution.gif\" />');
    else if(tab == 3) // Admin Tab
        callPage('/admin/main/users', 'content', '<img src=\"/themes/2010v1/medias/loading.gif\" /><br>Content is loading, Please Wait...', 'Error in Loading page <img src=\"images/error_caution.gif\" />');
    else if(tab == 4) // Admin Tab
        callPage('/admin/main/settings', 'content', '<img src=\"/themes/2010v1/medias/loading.gif\" /><br>Content is loading, Please Wait...', 'Error in Loading page <img src=\"images/error_caution.gif\" />');
}

function loading(id)
{
    var element = document.getElementById('item_box_' + id);
    if(element){
        element.innerHTML = "<div align='center'><br/><img src=\"/themes/2010v1/images/loading.gif\" /></div>";
    }
}
function show_loading(id)
{
    var element = document.getElementById(id);
    if(element){
        element.innerHTML = "<div align='center'><img src='/themes/2010v1/images/loading.gif' /></div>";
    }
}



 