function showLoader(id) {
	$(id).innerHTML = '<img src="' + baseurl + 'img/spinner.gif" />';
}

function disableAutoComplete() {
	if (document.getElementsByTagName) {
		var inputElements = document.getElementsByTagName("input");

		for (i=0; inputElements[i]; i++) {
			if (inputElements[i].className && (inputElements[i].className.indexOf("disableAutoComplete") != -1)) {
				inputElements[i].setAttribute("autocomplete","off");
			}	//if current input element has the disableAutoComplete class set.
		}	//loop thru input elements
	}	//basic DOM-happiness-check
}

function insertText(input, text) {
    var myField = $(input);
    var myValue = text;
    //IE support
    if (document.selection) {
        myField.focus();
        sel = document.selection.createRange();
        sel.text = myValue;
    }
    //Mozilla/Firefox/Netscape 7+ support
    else if (myField.selectionStart || myField.selectionStart == '0') {
        var startPos = myField.selectionStart;
        var endPos = myField.selectionEnd;
        myField.value = myField.value.substring(0, startPos)+ myValue+ myField.value.substring(endPos, myField.value.length);
    } else {
        myField.value += myValue;
    }
}

function toggleChildren(node_id, event) {
    element = $('node_' + node_id);
    if(element.className.match(/.*open.*/)) {
        new Element.remove('children_' + node_id);
        element.removeClassName('open');
        element.addClassName('closed'); 
    } 
    else { 
        showChildren(node_id);
    }
    if(event) new Event.stop(event);
}

function showChildren(node_id) {
    element = $('node_' + node_id);
    if(node_id > 1 && !element.getElementsByTagName('ul')[0]) {
        new Ajax.Request(
            baseurl + 'admin/categories/get_children/' + node_id,
            {
                'onSuccess' : function(t) {
                    // make sure there aren't already children within this node
                    // if there was, that would indicate that there were duplicate ajax requests
                    // potentially caused by a double-click -kn
                    if(! $('children_' + node_id)){
                        new Insertion.Bottom('node_' + node_id, t.responseText); 
                        element.removeClassName('closed');
                        element.addClassName('open');
                    }
                }
            }
        );
    }
}

function moveChild(node_id, event) {
    if($('category_to_move').value.length == 0) { 
         alert('You must choose a category to move first');
    }
    else if($('category_to_move').value == node_id) {
        alert('You can not move a category within itself');
    }
    else { 
        element = $('node_' + node_id);
        if(node_id > 1 && !element.getElementsByTagName('ul')[0]) {
            new Ajax.Request(
                baseurl + 'admin/categories/get_children/' + node_id,
                {
                    'onSuccess' : function(t) {    
                        new Insertion.Bottom('node_' + node_id, t.responseText); 
                        element.removeClassName('closed');
                        element.addClassName('open');
                        new Ajax.Request(
                            baseurl + 'admin/categories/move_category/',
                            { 
                                'parameters' : 'from_node_id=' + $('category_to_move').value + '&parent_node_id=' + node_id,
                                'onSuccess' : function(t) { 
                                    $('children_' + node_id).appendChild($('node_' + $('category_to_move').value));
                                }
                            }
                        );
                    }
                }
            );
        }
        else {
            new Ajax.Request(
                baseurl + 'admin/categories/move_category/',
                { 
                    'parameters' : 'from_node_id=' + $('category_to_move').value + '&parent_node_id=' + node_id,
                    'onSuccess' : function(t) { 
                        $('children_' + node_id).appendChild($('node_' + $('category_to_move').value));
                    }
                }
            );
        }
    }
    new Event.stop(event);
}

function setMove(node_id, event) {
    if($('category_to_move').value.length > 0 && $('node_' + $('category_to_move').value)) { 
        $('node_' + $('category_to_move').value).removeClassName('move'); 
    }
    $('node_' + node_id).addClassName('move');
    $('category_to_move').value = node_id;
    new Event.stop(event);
}

function updateShipto(shipto_id) {
    new Ajax.Updater(
        'checkout_shipto',
        baseurl + 'carts/update_shipto/' + shipto_id
    );
}

function useOneTimeShipto(element) {
    new Ajax.Updater(
        'checkout_shipto',
        baseurl + 'carts/one_time_shipto/',
        {
        'onComplete':function() {
            element.innerHTML = 'Use current ship-to';
            element.onclick = function() {
                useCurrentShipto(this);return false;
            }
        }
        }
    );
}

function useCurrentShipto(element) {
    new Ajax.Updater(
        'checkout_shipto',
        baseurl + 'carts/current_shipto/',
        {
        'onComplete':function() {
            element.innerHTML = 'Use one-time ship-to';
            element.onclick = function() {
                useOneTimeShipto(this);return false;
            }
        }
        }
    );
}

var markedPayments = [];

function togglePayment(payment_id) {
    for(i = 0; i < markedPayments.length; i++) {
        if(markedPayments[i] == payment_id) {
            markedPayments.splice(i, 1);
            if(markedPayments.length == 0) {
                disablePaymentOptions();
            }
            return;
        }
    }
    markedPayments.push(payment_id);
    if(markedPayments.length == 1) {
        enablePaymentOptions();
    }
}

function markPaymentsAsProcessed() {
    if(markedPayments.length > 0) {
        new Ajax.Request(
            baseurl + 'admin/payments/mark_as_processed/',
            { 
                'parameters' : 'payments=' + markedPayments.join(','),
                'onSuccess' : function(t) {
                    tempPayments = markedPayments.slice();
                    markedPayments.length = 0;
                    disablePaymentOptions();
                    for(i = 0; i < tempPayments.length; i++) {
                        $('checkbox_' + tempPayments[i]).checked = false;
						$('checkbox_' + tempPayments[i]).style.display = 'none';
                        $('status_' + tempPayments[i]).innerHTML = 'Processed';
                        new Effect.Highlight('status_' + tempPayments[i]);
						new Ajax.Updater('paymentInfo' + tempPayments[i], baseurl + 'admin/payments/get_payment_info/' + tempPayments[i]);
                    }
					
                }
            }
        );
    }
    else {
        alert('You do not have any payments selected');
    }
}

function markPaymentsAsNotProcessed() {
    if(markedPayments.length > 0) {
        new Ajax.Request(
            baseurl + 'admin/payments/mark_as_not_processed/',
            { 
                'parameters' : 'payments=' + markedPayments.join(','),
                'onSuccess' : function(t) { 
                    tempPayments = markedPayments.slice();
                    markedPayments.length = 0;
                    disablePaymentOptions();
                    for(i = 0; i < tempPayments.length; i++) {
                        $('checkbox_' + tempPayments[i]).checked = false;
                        $('status_' + tempPayments[i]).innerHTML = 'Authorized';
                        new Effect.Highlight('status_' + tempPayments[i]);
                    }
                }
            }
        );
    }
    else {
        alert('You do not have any payments selected');
    }
}

function disablePaymentOptions() {
    $('paymentOptions').className = 'disabled';
}

function enablePaymentOptions() {
    $('paymentOptions').className = 'enabled';
}

function toggleAdvancedPermissions() {
    var advancedPermissions = $('advancedPermissions');
    if(advancedPermissions.visible()) {
    	new Effect.Fade('advancedPermissions');
    } else {
    	new Effect.Appear('advancedPermissions');
    }
}

var GlobalRules = {/*
   'ul.tieredMenu li:mouseover' : function(element) {
   		element.addClassName('hover');
   },
   'ul.tieredMenu li:mouseout' : function(element, event) {
   		if(element.tagName == 'LI') {
			element.removeClassName('hover');
			Event.stop(event);
		}
   },
   'ul.tieredMenu li a:mouseover' : function(element, event) {
   		Event.stop(event);
   },*/
   'ul.tieredMenu' : function(element) {
   		var items = $A(element.getElementsByTagName('li'));
   		items.each(function(item,index) {
   			Event.observe(item, 'mouseover', function() {
   												item.addClassName('hover');
   											});
   			Event.observe(item, 'mouseout', function() {
   												item.removeClassName('hover');
   											});
   		}
   	);
   },
   'input.date': function(element) {
		if(element.id=="") {
			element.id = element.name;
		}
		
		Calendar.setup({
			inputField : element.id, 
			ifFormat : "%m/%d/%y",
			showsTime : true,
			button : element.id,
			step : 1,
			weekNumbers: false,
			showsTime: false
		});   		
   },
   'div.imageGallery .imageThumbnails img:click': function(element,event) {
   		var thumbnail = element;
   		var link = element.parentNode;
   		$('imageFrame').style.height = $('activeImage').offsetHeight+"px";
   		if($('activeImage').src != link.href) {
	   		var oldheight = $('activeImage').getDimensions().height;
	   		new Effect.Fade('activeImage',{afterFinish:function(){
		   		$('activeImage').onload = function() {
		   			var percent = $('activeImage').getDimensions().height/oldheight*100;
		   			new Effect.Scale('imageFrame', percent, {scaleMode: 'box', scaleContent : false,  scaleX : false, afterFinish:function(){new Effect.Appear('activeImage');}});
		   		}
		   		$('activeImage').src = link.href;
		   		$('activeCaption').innerHTML = thumbnail.alt;   	
	   		}});
   		}
	   	Event.stop(event);
   }
}

function startRules() {
//	var time = new Date();
//	var start = time.getTime();
	EventSelectors.start(GlobalRules);
//	var time = new Date();
//	var end = time.getTime();
//	alert(end-start);
}

Event.observe(window,'load',startRules);
