// Assign events
var EVENT = YAHOO.util.Event;
var DOM = YAHOO.util.Dom;
var price_update_timer;

EVENT.addListener(window, 'load', init);

function init() {
    var elements = DOM.getElementsByClassName('file-manager-link', 'a');
    for(var i = 0; i < elements.length; i++) {
        EVENT.addListener(elements[i], 'click', open_file_manager);
    }
    
    var elements = DOM.getElementsByClassName('view-link', 'a');
    for(var i = 0; i < elements.length; i++) {
        EVENT.addListener(elements[i], 'click', view_image);
    }
    
    var elements = DOM.getElementsByClassName('remove-link', 'a');
    for(var i = 0; i < elements.length; i++) {
        EVENT.addListener(elements[i], 'click', remove_image);
    }
	
	var elements = document.getElementsByName('sub_length');
	for(var i = 0; i < elements.length; i++) {
		EVENT.addListener(elements[i], 'click', toggle_price_input);
	}
    
    if(DOM.inDocument('view-cartoon')) {
        resize_window();
    }
	
	var circ = DOM.get('circulation');
	if(circ) {
		// Don't allow non-numeric values in the circulation field
		EVENT.on(circ, 'keypress', function(e) {
			switch(e.keyCode) {
				case 8: // backspace
					price_update_timer = setTimeout(update_prices, 1000);
					return;
				break;
				case 37: // left arrow
				case 39: // right arrow
					return;
				default:
					var s = String.fromCharCode(e.which);
					if(s.match(/\d/)) {
						price_update_timer = setTimeout(update_prices, 1000);
						return;
					}
			}
			EVENT.preventDefault(e);
		});
		// Update subscription price after they are done entering circulation.
		//EVENT.on(circ, 'blur', update_prices);
		EVENT.on(['bill-state', 'ed-state'], 'change', update_prices);
	}
}

function allow_numbers_only(e) {
	if(String.fromCharCode(e.which).match(/\d/)) {
		return true;
	}
	return false;
}

function confirm_delete() {
    return confirm('Are you sure you want to delete this item?');
}

function select_image(filename) {
    var size = document.getElementById('size').value;

    if(size == 'thumbnail') {
        var display = window.opener.document.getElementById('img-thumbnail-display');
     	display.innerHTML = '<img src="../uploads/thumbnail/'+filename+'" alt="'+filename+'"/>';
    }
    else {
        window.opener.document.getElementById('view-caption-'+size).style.display = '';
    }
    window.opener.document.getElementById('img-'+size).value = filename;
    window.opener.document.getElementById('link-img-'+size).innerHTML = filename;
    window.opener.document.getElementById('remove-link-'+size).style.display = '';
    
    window.close();
}


function remove_image(e) {
    if(!e) { e = window.event }
    var a = EVENT.getTarget(e);
    var size = a.id.replace('remove-link-', '');
    document.getElementById('img-'+size).value = '';
    
    var view_caption = document.getElementById('view-caption-'+size);
    if(view_caption) {
        document.getElementById('view-caption-'+size).style.display = 'none';
    }
    
    if(size == 'thumbnail') {
        var display = document.getElementById('img-thumbnail-display');
        if(display) {
            display.innerHTML = '';
        }
    }
    
    document.getElementById('link-img-'+size).innerHTML = '';
    a.style.display = 'none';
}


function view_image(e) {
    if(!e) { e = window.event }
    var a = EVENT.getTarget(e);
    var aCopy = a.cloneNode(true);
    EVENT.addListener(aCopy, 'click', view_image);
    var parent = a.parentNode;
    var loading = document.createTextNode('Loading...');
    parent.replaceChild(loading, a);
    
    var size = aCopy.name.replace('link_img_', '');
    
    var filename = aCopy.innerHTML;
    var w = 150;
    var h = 150;
    var x = DOM.getX(parent);
    var y = DOM.getY(parent);
    window.open('view_cartoon.php?size='+size+'&filename='+filename, filename, 
        'width='+w+',height='+h+',scrollbars=1,toolbar=0,resizable=1,left='+x+',top='+y);
    parent.replaceChild(aCopy, loading);
}

function resize_window() {
    var img = document.getElementById('cartoon');
    if(!img) return;
    window.resizeTo(img.width+40, img.height+100);
}

function open_file_manager(event) {
    var element = EVENT.getTarget(event);
    var position = DOM.getXY(element);
    var size = element.name.replace('link-img-', '');
    window.open('file_manager.php?size='+size, size,
    'width=600,height=300,scrollbars=1,toolbar=0,resizable=1,left='+position[0]+',top='+position[1]);
    return false;
}


function show_pricing_type() {
    document.getElementById('pricing-type').style.display = '';
    update_prices();
}

function get_frequency() {
    var frequencies = document.getElementsByName('frequency');
    for(var i = 0; i < frequencies.length; i++) {
        if(frequencies[i].checked) {
            return parseInt(frequencies[i].value);
        }
    }
}

function get_subscription_price(frequency, weeks) {
    switch(frequency) {
        case 1: // weekly
            return (weeks == 25 ? 15 : 25);
        break;
        case 2: // semi-weekly
            return (weeks == 25 ? 30 : 50);
        break;
        case 3: // daily under 100K
            return (weeks == 25 ? 45 : 75);
        break;
        case 4: // daily over 100K
            return (weeks == 25 ? 60 : 100);
        break;
		default:
			return '';
		break;
    }
}

function get_per_cartoon_price(frequency) {
    switch(frequency) {
        case 1: // weekly
        case 2: // semi-weekly
        case 3: // daily under 100K
        case 4: // daily over 100K
            return frequency
        break;
		default:
			return '';
		break;
    }
}

function init_prices() {
	var frequency, price;
	
	frequency = get_frequency();
	
	price = document.getElementById('price-25-weeks');
	if(price.value !== '') {
		//price.value = get_subscription_price(frequency, 25);
		document.getElementById('price-25-weeks-container').style.display = '';
	}
	
	price = document.getElementById('price-50-weeks');
	if(price.value !== '') {
		//price.value = get_subscription_price(frequency, 50);
		document.getElementById('price-50-weeks-container').style.display = '';
	}
}

function update_prices() {
    // Clear any old price updates that were scheduled.
	clearTimeout(price_update_timer);
	
	var c = DOM.get('circulation').value;
	if(DOM.get('billing-same-as-editor').checked) {
		var state = DOM.get('ed-state').value;
	}
	else {
		var state = DOM.get('bill-state').value;
	}
	
	var single, wk25, wk50, or_single, or_wk25, or_wk50;
	

	if(c >= 0 && c <= 10000) {
		single  	= 1;
		wk_25		= 0.6;
		wk_50		= 0.5;
		or_single	= 10;
		or_wk25		= 6;
		or_wk50		= 5;
	}
	else if(c > 10000 && c <= 20000) {
		single  	= 1;
		wk_25		= 0.6;
		wk_50		= 0.5;
		or_single	= 15;
		or_wk25		= 9;
		or_wk50		= 7.5;
	}
	else if(c > 20000 && c <= 35000) {
		single  	= 2;
		wk_25		= 1.2;
		wk_50		= 1;
		or_single	= 20;
		or_wk25		= 12;
		or_wk50		= 10;
	}
	else if(c > 35000 && c <= 50000) {
		single  	= 2;
		wk_25		= 1.2;
		wk_50		= 1;
		or_single	= 25;
		or_wk25		= 15;
		or_wk50		= 12.5;
	}
	else if(c > 50000 && c <= 100000) {
		single  	= 3;
		wk_25		= 1.8;
		wk_50		= 1.5;
		or_single	= 35;
		or_wk25		= 21;
		or_wk50		= 17.5;
	}
	else if(c > 100000 && c <= 150000) {
		single  	= 4;
		wk_25		= 2.4;
		wk_50		= 2;
		or_single	= 35;
		or_wk25		= 21;
		or_wk50		= 17.5;
	}
	else if(c > 150000) {
		single  	= 5;
		wk_25		= 3;
		wk_50		= 2.5;
		or_single	= 35;
		or_wk25		= 21;
		or_wk50		= 17.5;
	}
	
	var price_input = DOM.get('price');

	var is_subscription = false;
	var inputs = document.getElementsByName('type');
	for(var i = 0; i < inputs.length; i++) {
		if(inputs[i].value == 'subscription' && inputs[i].checked) {
			is_subscription = true;
			break;
		}
	}
	
	var weeks;
	if(is_subscription) {
		if(DOM.get('sub-length-25').checked) {
			weeks = 25;
		}
		else {
			weeks = 50;
		}
	}
	
	
	if(state == 'OR') {
		
		if(is_subscription) {
			if(weeks == 25) {
				price_input.value = or_wk25.toFixed(2);
			}
			else if(weeks == 50) {
				price_input.value = or_wk50.toFixed(2);
			}
		}
		else {
			price_input.value = or_single.toFixed(2);
		}
	}
	else {
		if(is_subscription) {
			if(weeks == 25) {
				price_input.value = wk_25.toFixed(2);
			}
			else if(weeks == 50) {
				price_input.value = wk_50.toFixed(2);
			}
		}
		else {
			price_input.value = single.toFixed(2);
		}
	}
}

function show_subscription() {
    //document.getElementById('per-cartoon-options').style.display = 'none';
    update_prices();
    DOM.get('subscription-options').style.display = '';
	DOM.get('pricing-container').style.display = '';
}

function show_per_cartoon() {
    DOM.get('subscription-options').style.display = 'none';
	DOM.get('pricing-container').style.display = '';
    update_prices();
    //document.getElementById('per-cartoon-options').style.display = '';
}

/**
* Clears the inputs in a pricing section when they are hidden.
* @param HTMLObject parent
*/
function clear_pricing_section(parent) {
    var inputs = parent.getElementsByTagName('input');
    for(var i = 0; i < inputs.length; i++) {
        if(inputs[i].type == 'radio') {
            inputs[i].checked = false;
        }
    }
}

function toggle_billing_fields() {
	var checkbox = document.getElementById('billing-same-as-editor');
	var fields = [
		'email',
		'phone',
		'fax',
		'first-name',
		'last-name',
		'address1',
		'address2',
		'city',
		'state',
		'zip'
	];
	
	if(checkbox.checked) {
		// Hide billing fields and populate with values from editor fields.
		document.getElementById('billing-fields').style.display = 'none';
		
		for(var i = 0; i < fields.length; i++) {
			document.getElementById('bill-'+fields[i]).value = document.getElementById('ed-'+fields[i]).value;
		}
	}
	else {
		// Show and empty billing fields.
		for(var i = 0; i < fields.length; i++) {
			document.getElementById('bill-'+fields[i]).value = '';
		}
		
		document.getElementById('billing-fields').style.display = '';
	}
}

function toggle_price_input(e) {
	var container25, container50, target;
	
	//container25 = DOM.get('price-25-weeks-container');
	//container50 = DOM.get('price-50-weeks-container');
	//target = EVENT.getTarget(e);
	
	update_prices();
	/*
	if(target.id == 'sub-length-25') {
		container25.style.display = '';
		container50.style.display = 'none';
	}
	else if(target.id == 'sub-length-50') {
		container25.style.display = 'none';
		container50.style.display = '';
	}
	*/
}

