var stop_flags = {};
function whenLoaded(element_ids, action, stop_on, log_function, hidden) {
    var recheck = "whenLoaded('"+element_ids+"',"+action+", '"+stop_on+"')";
    var ids = element_ids.split(',');
    if (log_function) {
        //log(recheck);
    }
    try {
        if (stop_flags && stop_flags[stop_on]) {
            return;
        }
    }
    catch (e) {}
    
    var element_loaded = true;
    for (var i = 0; i < ids.length; i++) {
        if (!$(ids[i])) {
            element_loaded = false;
            break;
        }
    }
    if (!hidden) {
        for (var i = 0; i < ids.length; i++) {
            if ($(ids[i])) {
                if ($(ids[i]).offsetHeight <= 0) {
                    element_loaded = false;
                    break;
                }
            }
        }
    }
    if (element_loaded) {
        try {
            action();
            if (!stop_on) {
                stop_flags[stop_on] = true;
            }
        } catch(e) {
            console.log(e);
        }
    }
    else {
        setTimeout(recheck, 500);
    }
}
/*
function whenUnloaded(element_ids, action, stop_on, log_function, hidden) {
    var recheck = "whenLoaded('"+element_ids+"',"+action.name+", '"+stop_on+"')";
    var ids = element_ids.split(',');
    if (log_function) {
        //log(recheck);
    }
    try {
        if (detectBrowser() != 'msie' && stop_flags && stop_flags[stop_on]) {
            return;
        }
    }
    catch (e) {}
    
    var class_name;
    var elements = new Array();
    var element_loaded = true;
    for (var i = 0; i < ids.length; i++) {
        var element;
        if (ids[i].search(new RegExp('.')) > -1) {
            class_name = ids[i].replace('.', '');
            element = !ocument.getClassName(class_name)[0];
        }
        else if (ids[i].search(new RegExp('#')) > -1) {
            id = ids[i].replace('#', '');
            $(id);
        }
        else {
            element = $(ids[i]);
        }
            if (!element) {
                element_loaded = false;
                break;
            }
        
        if (class_name) {
            
        }
        else if (!$(ids[i])) {
            element_loaded = false;
            break;
        }
    }
    if (!hidden) {
        for (var i = 0; i < ids.length; i++) {
            if ($(ids[i])) {
                if ($(ids[i]).offsetHeight <= 0) {
                    element_loaded = false;
                    break;
                }
            }
        }
    }
    if (element_loaded) {
        try {
            action();
            if (!stop_on) {
                stop_flags[stop_on] = true;
            }
        } catch(e) {
            console.log(e);
        }
    }
    else {
        setTimeout(recheck, 500);
    }
}
*/
function currency(nStr) {
   nStr = parseFloat(nStr);
   return addCommas(nStr.toFixed(2));
}

function addCommas(nStr){
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}

function storeCode() {
    var location = window.location + '';
    var domain = "gearhead.com/";
    var store_code;
    var uri_start = location.indexOf(domain) +domain.length;
    var uri = location.substr(location.indexOf(domain) + domain.length);
    var slash = uri.indexOf('/');
    var dot = uri.indexOf('.');
    var qmark = uri.indexOf('?');
    var anchor = uri.indexOf('#');
    var colon = uri.indexOf(':');
    if (slash > 0 && 
        (dot == -1 || dot > slash) &&
        (colon == -1 || colon > slash) &&
        (qmark == -1 || qmark > slash) &&
        (anchor == -1 || anchor > slash)) {
        store_code = uri.substr(0, slash);
    }
    if (!store_code) {
        store_code = 'all';
    }
    return store_code;
}
function log(message) {
    try {
//        htmlLog(message);
        console.log(message);
    } catch(e) {}
}
function htmlLog(message) {
    if (get('test')) {
        if (!$('console')) {
            var console = document.createElement('div');
            console.id = "console";
            document.getElementsByTagName("body")[0].appendChild(console);
        }
        $('console').innerHTML = '<span class="log">' + message + '</span>' + $('console').innerHTML;
    }
}
function setClass(element, class_name) {
    element.setAttribute('class', class_name);
}
function uriToJson(uri, delim) {
    var delim;
    if (!delim || delim == '&amp;' || delim == '&') {
        while (uri.search(new RegExp('&amp;')) > -1) {
            uri = uri.replace('&amp;', '&');
        }
        delim = '&';
    }
    var split1 = uri.split('?');
    var url = split1[0];
    var params = {};
    if (split1.length > 1) {
        split2 = split1[1].split(delim);
        for (var i = 0; i < split2.length; i++) {
            if (split2[i].search(new RegExp('=')) > -1) {
                params[split2[i].split('=')[0]] = split2[i].split('=')[1];
            }
        }
    }
    var json = {url : url
               ,get : params
               };
    return json;
}
function jsonToUri(json, delim) {
    var delim;
    if (!delim || delim == '&amp;' || delim == '&') {
        delim = '&';
    }
    var uri = json.url;
    if (json.get) {
        uri += '?';
        for (var i in json.get) {
            uri += i + '=' + json.get[i] + delim;
        }
    }
    return uri;
}
function displayError(message){
    displayMessage(message, "error-msg");
}
function displaySuccess(message){
    displayMessage(message, "success-msg");
}
function displayMessage(message, type) {
    var std, messages, error_msg, inner_ul, inner_li;
    std = $$('.std')[0];
    messages = std.getElementsByClassName('messages')[0];
    if (!messages) {
        messages = document.createElement("ul");
        messages.className = "messages";
    }
    messages.innerHTML = "";
    
    error_msg = document.createElement("li");
    messages.appendChild(error_msg);
    
    error_msg.className = type;
    inner_ul = document.createElement("ul");
    error_msg.appendChild(inner_ul);
    
    inner_li = document.createElement("li");
    inner_li.innerHTML = message;
    inner_ul.appendChild(inner_li);
    
    std.insertBefore(messages,std.firstChild);
}
function clearMessages() {
    var std, messages;
    std = $$('.std')[0];
    try {
        messages = std.getElementsByClassName('messages')[0];
        if (!messages) {
            messages = document.createElement("ul");
            messages.className = "messages";
        }
        messages.innerHTML = "";
    } catch(e) {}
}
function skinUrl(url) {
    var store_code = storeCode();
    store_code = (store_code == "all")
               ? "default"
               : store_code;
    var skinUrl = "/skin/frontend/gearhead/" + store_code + "/" + url;
    var defaultUrl = "/skin/frontend/gearhead/default/" + url;
    var baseUrl = "/skin/frontend/base/default/" + url;
    
    if (file_exists(skinUrl)) {
        url = skinUrl;
    }
    else if (file_exists(defaultUrl)) {
        url = defaultUrl;
    }
    else {
        url = baseUrl;
    }
    return url;
}
function defaultSkinUrl(url) {
    var url = "/skin/frontend/gearhead/default/" + url;
    return url;
}
function file_exists(file_path) {
   var http = new XMLHttpRequest();
    http.open('HEAD', file_path, false);
    http.send();
    return http.status!=404;
/*
    new Ajax.Request('/scripts/file_exists.php',
    {
        method:'get',
        parameters: {file_path : file_path},
        onSuccess: function(transport){ 
            log("file_exists('"+file_path+"')");
            log(!!transport.responseText);
            return !!transport.responseText;
        }
    });
*/
}
function ip_address() {
    var ip;
    new Ajax.Request('/scripts/ip.php',
    {
        method:'get',
        parameters: {},
        onSuccess: function(transport){ 
            ip = transport.responseText;
            log(ip);
            return ip;
        }
    });
}

function activatePlaceholders() {
    var detect = navigator.userAgent.toLowerCase();
    log(detect);
    if (detect.indexOf("safari") > 0) return false;
    if (detect.indexOf("firefox") > 0) return false;
    var inputs = document.getElementsByTagName("input");
    for (var i=0;i<inputs.length;i++) {
        if (inputs[i].getAttribute("type") == "text") {
            if (inputs[i].getAttribute("placeholder") && inputs[i].getAttribute("placeholder").length > 0) {
                inputs[i].value = inputs[i].getAttribute("placeholder");
                inputs[i].onclick = function() {
                    if (this.value == this.getAttribute("placeholder")) {
                        this.value = "";
                    }
                    return false;
                }
                inputs[i].onblur = function() {
                    if (this.value.length < 1) {
                        this.value = this.getAttribute("placeholder");
                    }
                }
            }
        }
    }
}

function showNewMiniCart() {
    var items_in_cart = document.getElementById("cartHeader").getElementsByTagName("span")[0].innerHTML * 1;
    var previous_items_in_cart = getCookie("cartItems")
                               ? getCookie("cartItems") * 1
                               : 0;
    if (items_in_cart > previous_items_in_cart) {
        setTimeout('Enterprise.TopCart.showCart()', 500);
        setTimeout('Enterprise.TopCart.hideCart()', 6500);
    }
    setCookie("cartItems", items_in_cart, 30);
}
function hideMessageBlock() {
    var messages, added_to_cart;
    if ($('messages_product_view')) {
        messages = $('messages_product_view');
    }
    else if ($$('.success-msg')[0]) {
        messages = $$('.success-msg')[0].parentNode;
    }
    if (messages && messages.innerHTML) {
        if (messages.innerHTML.search(new RegExp("added to your shopping cart")) > -1) {
            messages.style.display = 'none';
            added_to_cart = true;
        }
    }
}

function combine (key_array, value_array) {
    var object = {};
    for (var i = 0; i < key_array.length; i++) {
        object[key_array[i]] = value_array[i];
    }
    return object;
}

