
// scripts to run upon load
jQuery(document).ready(function() {
		var newDate = new Date();
		jQuery(document.LoginForm).append( jQuery('<input>').attr('type', 'hidden').attr('name', 'data[Wholesale][getTimezoneOffset]').attr('value', newDate.getTimezoneOffset()) );
		
		jQuery('input.disallowNegative').keypress(function(event) {
			var charCode = ((event.which) ? event.which : event.keyCode);
			if (charCode == 45) {
				event.preventDefault();
			}
		});
		
		if(jQuery.browser.msie && jQuery.browser.version < 7){
			t = document.title;
			t = t.substr(t.length-4);
			if(t == 'Home')
				jQuery('<div></div>').prependTo('#bodyMain').load('/Wholesale/upgrade_browser');
		}
	}
);



function print_r(arr, showFunctions) {
	var str = '';
	for(var i in arr) {
		if(showFunctions || typeof arr[i] != 'function') {
			var p = arr[i];
		} else {
			var p = '[function]';
		}
		str = str + i + " => " + p + "\n";
	}
	
	//document.write(str+"<br /><br /><br />");
	alert(str);
}

window._preventDefault = function(event) {
	var	toReturn = false;
	
	if (!_empty(event.preventDefault)) {
		event.preventDefault();
	} else if (!_empty(event.stopPropagation)) {
		event.stopPropagation();
	}
	
	event.returnValue = toReturn;
	return toReturn;
}

window.removeChildren = function(element) {
	var	toReturn = true;
	
	while (element.hasChildNodes()) {
		element.removeChild(element.firstChild);
	}
	
	return toReturn;
}

window.getWindowSpecificSession = function(parameter) {
	var	toReturn = true;
	
	toReturn = window.name;
	
	return toReturn;
}

window.setWindowSpecificSession = function(parameter) {
	var	toReturn = true;
	
	window.name = parameter;
	
	return toReturn;
}

window.clearWindowSpecificSession = function(parameter) {
	var	toReturn = true;
	
	window.name = '';
	
	return toReturn;
}

window.tb_remove_from_anchor = function(anchor) {
	var	toReturn = false;
	
	tb_remove();
	
	return toReturn;
}

function moneyFormat(number, type){
	if(typeof type == 'undefined')
		type = 'USD';
	switch(type){
		default:
			number = '$'+thousandsDel((isNaN(number) ? '0.00' : Number(number).toFixed(2)), ',', '.');
		break;
	}
	return number;
}

function thousandsDel(number, del, cent_char){
	number = number.split('.');
	cent = number[1];
	number = number[0].split('');
	first = wlen = number.length;
	first--;
	buff = ((wlen+2)%3);
	ret = '';
	while(wlen--){
		if((wlen%3)==buff && wlen != first){
			ret = del+ret;
		}
		ret=number[wlen]+ret;
	}
	return ret+cent_char+cent;
}

function getKeyCode(key){
	return window.event ? key.keyCode : key.which;
}

function checkEnter(key, tocall){
	if(getKeyCode(key) == '13'){//if key pressed = enter (13)
		if(typeof key.preventDefault != 'undefined')
			key.preventDefault();
		key.returnValue = false;
		tocall();
	}
}

function retF(fn){
	fn();
	return false;
}

function showDebug(){
	jQuery('.cake-sql-log').css('display','none');
	jQuery('.cake-sql-log').show('slow');
	jQuery('.cake-debug').css('display','none');
	jQuery('.cake-debug').show('slow');
	return 'showing debug';
}

function hideDebug(){
	jQuery('.cake-sql-log').hide('slow');
	jQuery('.cake-debug').hide('slow');
}

function notHidden(elm){
	elm = jQuery(elm);
	tp = jQuery('#topPersistent');
	tpPos = tp.position();
	eh = elm.height()+5;
	if((elm.position().top+eh) > jQuery('#footer').position().top)
		window.scroll(tpPos.left, tpPos.top+( (elm.position().top+eh) - jQuery('#footer').position().top));
	if(elm.position().top < (tpPos.top+tp.height()))
		window.scroll(tpPos.left,elm.position().top-tp.height()-5);
}

function orderQtyJunk(field){
	if(typeof field == 'undefined')
		field = '.orderQty';
	jQuery(field).bind('change', updateProductTotal).bind('keydown', orderQtyKeyHandler).bind('focus',function(){jQuery(this).select();notHidden(this)});
}

function epOrderQtyJunk(field){
	if(typeof field == 'undefined')
		field = '.orderQty';
	jQuery(field).bind('change', epUpdateProductTotal).bind('keydown', orderQtyKeyHandler).bind('focus',function(){jQuery(this).select();notHidden(this)});
}

orderQtyBlur = false;
function orderQtyKeyHandler(e){
	if(orderQtyBlur) clearTimeout(orderQtyBlur);
	key = getKeyCode(e);
	if(key == 13 || key == 9){//if tab or enter
		if (typeof e.stopPropagation != 'undefined');
			e.stopPropagation();
		if(typeof e.preventDefault != 'undefined')
			e.preventDefault();
		e.returnValue = false;
		name = jQuery(this).attr('name');
		elms = jQuery('.orderQty');
		ret = false;
		nextElm = false;
		$j.each(elms, function(){
			if(ret){
				nextElm = this;
				return false;
			}
			if(jQuery(this).attr('name') == name){
				ret = true;
			}
		});
		jQuery('a').get(0).focus();
		if(nextElm){
			setTimeout(function(){jQuery(nextElm).focus();},50);
		}else{
			setTimeout(function(){jQuery('.orderQty').get(0).focus();},50);
		}

	}else{
		orderQtyBlur = setTimeout(function(){jQuery('a').get(0).focus();}, 300000);
	}
}

//product update is needed in enough places this function needs to be global in wholesale
function updateProductTotal(){
	ProdInput = jQuery(this);
	val = ProdInput.val();
	nam = ProdInput.attr('name');
	if(!val)
		val = 0;
	
	eval('val = {"'+nam+'":'+val+'}');
	ProdInput.resp = function(inpt){return function(resp){
		if(resp)
			updateTotals(resp);
		var img = jQuery('#TempLoader'+ProdInput.attr('id')).replaceWith(inpt);
		orderQtyJunk(inpt);
	}}(ProdInput.clone());
	ProdInput.post = $j.post;

	ProdInput.post('/Wholesale/add_product', val, ProdInput.resp, 'json');
	ProdInput.replaceWith('<img src="/shared_img/circle-loader.gif" id="TempLoader'+ProdInput.attr('id')+'">');
}

//product update is needed in enough places this function needs to be global in wholesale
function epUpdateProductTotal(){
	ProdInput = jQuery(this);
	val = ProdInput.val();
	nam = ProdInput.attr('name');
	if(!val)
		val = 0;
	eval('val = {"'+nam+'":'+val+'}');
	ProdInput.resp = function(inpt){return function(resp){
		if(resp)
			updateTotals(resp);
		var img = jQuery('#TempLoader'+ProdInput.attr('id')).replaceWith(inpt);
		orderQtyJunk(inpt);
	}}(ProdInput.clone());
	ProdInput.post = $j.post;
	ProdInput.post('/EpProducts/add_product', val, ProdInput.resp, 'json');
	ProdInput.replaceWith('<img src="/shared_img/circle-loader.gif" id="TempLoader'+ProdInput.attr('id')+'">');
}

function ajaxProductTotal(id, val, cont){
	if(typeof cont == 'undefined')
		updateTo = '/Wholesale/add_product';
	else
		updateTo = '/EpProducts/add_product';
	name = 'data[Parts]['+id+'][quantity]';
	if(!val)
		val = 0;
	eval('val = {"'+name+'":'+val+'}');
	$j.post(updateTo, val, updateTotals, 'json');
}

// Date validation for format mm-dd-yy
function isValidDate(dt){
	try {
		var arrvals=dt.split("-");
		var m=arrvals[0];
		var d=arrvals[1];
		var y=arrvals[2];
		var dtt=new Date(y,m-1,d);
		if((dtt.getFullYear()!=parseInt(y,10))||(dtt.getMonth()!=parseInt(m-1,10))||(dtt.getDate()!=parseInt(d,10)))
			return false;
		else
			return true;
	}catch(e){
		return false;
	}
}

/*For Filling /'s while entering date */
function FillDateFormat(e,t) {
	if(e.keyCode<48 ||e.keyCode>57)
		e.keyCode = 0;
	
	var string=t.value;
	
	if((string.length==2) || (string.length==5)) {
		string=string+"/";
		t.value=string;
	}
}

function empty (mixed_var) {
    // http://kevin.vanzonneveld.net
    // +   original by: Philippe Baumann
    // +      input by: Onno Marsman
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: LH
    // +   improved by: Onno Marsman
    // +   improved by: Francesco
    // +   improved by: Marc Jansen
    // +   input by: Stoyan Kyosev (http://www.svest.org/)
    // *     example 1: empty(null);
    // *     returns 1: true
    // *     example 2: empty(undefined);
    // *     returns 2: true
    // *     example 3: empty([]);
    // *     returns 3: true
    // *     example 4: empty({});
    // *     returns 4: true
    // *     example 5: empty({'aFunc' : function () { alert('humpty'); } });
    // *     returns 5: false
    
    var key;
    
    if (mixed_var === "" ||
        mixed_var === 0 ||
        mixed_var === "0" ||
        mixed_var === null ||
        mixed_var === false ||
        typeof mixed_var === 'undefined'
    ){
        return true;
    }

    if (typeof mixed_var == 'object') {
        for (key in mixed_var) {
            return false;
        }
        return true;
    }

    return false;
}

function is_numeric (mixed_var) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: David
    // +   improved by: taith
    // +   bugfixed by: Tim de Koning
    // +   bugfixed by: WebDevHobo (http://webdevhobo.blogspot.com/)
    // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: is_numeric(186.31);
    // *     returns 1: true
    // *     example 2: is_numeric('Kevin van Zonneveld');
    // *     returns 2: false
    // *     example 3: is_numeric('+186.31e2');
    // *     returns 3: true
    // *     example 4: is_numeric('');
    // *     returns 4: false
    // *     example 4: is_numeric([]);
    // *     returns 4: false

    return (typeof(mixed_var) === 'number' || typeof(mixed_var) === 'string') && mixed_var !== '' && !isNaN(mixed_var);
}

function number_format(number, decimals, dec_point, thousands_sep) {
    // http://kevin.vanzonneveld.net
    // +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +     bugfix by: Michael White (http://getsprink.com)
    // +     bugfix by: Benjamin Lupton
    // +     bugfix by: Allan Jensen (http://www.winternet.no)
    // +    revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +     bugfix by: Howard Yeend
    // +    revised by: Luke Smith (http://lucassmith.name)
    // +     bugfix by: Diogo Resende
    // +     bugfix by: Rival
    // +      input by: Kheang Hok Chin (http://www.distantia.ca/)
    // +   improved by: davook
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +      input by: Jay Klehr
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +      input by: Amir Habibi (http://www.residence-mixte.com/)
    // +     bugfix by: Brett Zamir (http://brett-zamir.me)
    // +   improved by: Theriault
    // *     example 1: number_format(1234.56);
    // *     returns 1: '1,235'
    // *     example 2: number_format(1234.56, 2, ',', ' ');
    // *     returns 2: '1 234,56'
    // *     example 3: number_format(1234.5678, 2, '.', '');
    // *     returns 3: '1234.57'
    // *     example 4: number_format(67, 2, ',', '.');
    // *     returns 4: '67,00'
    // *     example 5: number_format(1000);
    // *     returns 5: '1,000'
    // *     example 6: number_format(67.311, 2);
    // *     returns 6: '67.31'
    // *     example 7: number_format(1000.55, 1);
    // *     returns 7: '1,000.6'
    // *     example 8: number_format(67000, 5, ',', '.');
    // *     returns 8: '67.000,00000'
    // *     example 9: number_format(0.9, 0);
    // *     returns 9: '1'
    // *    example 10: number_format('1.20', 2);
    // *    returns 10: '1.20'
    // *    example 11: number_format('1.20', 4);
    // *    returns 11: '1.2000'
    // *    example 12: number_format('1.2000', 3);
    // *    returns 12: '1.200'
    var n = !isFinite(+number) ? 0 : +number, 
        prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
        sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
        dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
        s = '',
        toFixedFix = function (n, prec) {
            var k = Math.pow(10, prec);
            return '' + Math.round(n * k) / k;
        };
    // Fix for IE parseFloat(0.55).toFixed(0) = 0;
    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
    if (s[0].length > 3) {
        s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
    }
    if ((s[1] || '').length < prec) {
        s[1] = s[1] || '';
        s[1] += new Array(prec - s[1].length + 1).join('0');
    }
    return s.join(dec);
}

function _empty(test_var) {
	return (empty(test_var) && !(is_numeric(test_var) && (test_var == 0)));
}

currency = function(parameter) {
	var	_return = false;
	
	if (typeof(parameter) != 'undefined') {
		_return = '$'+number_format(parameter, 2);
	}
	
	return _return;
}

maxlength = function(_this, _maxlength) {
	var	_return = true,
		value = _this.value,
		length = value.length
	;
	
	if (length > _maxlength) {
		value = value.substr(0, _maxlength);
		_this.value = value;
	}
	
	return _return;
}