//**********************************************************************************************************
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
//**********************************************************************************************************
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
//**********************************************************************************************************
function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
//**********************************************************************************************************
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
//**********************************************************************************************************
function openDialog(src, width, height, leftPos, topPos, scrolling, closeBtn, bkgrnd, img){
	if(closeBtn==undefined) closeBtn='';
	if(bkgrnd==undefined) bkgrnd='';
	img = (img==undefined)?'':encodeURI(img);
	$.post('../include/openInLineDialog.php', { mtd: 'openDialog', src: src, width: width, height: height, scrolling: scrolling, closeBtn: closeBtn, bkgrnd: bkgrnd, img:img},
	function(data){
		if(leftPos==''){
			leftPos = ($(window).width()-parseInt(width))/2;
		}
		if(topPos==''){
			topPos = ($(window).height()-parseInt(height))/2+$(window).scrollTop();
		}
		$('#inLineDialog').append(data);
		$('#inLineDialog').css('width', width+'px');
		$('#inLineDialog').css('height', height+'px');
		$('#inLineDialog').css('left', leftPos+'px');
		$('#inLineDialog').css('top', topPos+'px');
		var h = ($('body').height() >= $(window).height())?$('body').height():$(window).height();
		$('#GreyoutDiv').css('height', h);
		$('body').css('overflow', 'hidden');
		$('#GreyoutDiv').css('visibility', 'visible');
		$('#GreyoutDiv').show();
		$('#inLineDialog').css('visibility', 'visible');
		$('#inLineDialog').show();
		return false;
	});
	return false;
}
//**********************************************************************************************************
function getDocWidth() {
    var D = document;
    return Math.max(
        Math.max(D.body.scrollWidth, D.documentElement.scrollWidth),
        Math.max(D.body.offsetWidth, D.documentElement.offsetWidth),
        Math.max(D.body.clientWidth, D.documentElement.clientWidth)
    );
}
//**********************************************************************************************************
function getDocHeight() {
    var D = document;
    return Math.max(
        Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
        Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
        Math.max(D.body.clientHeight, D.documentElement.clientHeight)
    );
}
//**********************************************************************************************************
function closeDialog(){
	$('#inLineDialog').hide();
	$('#inLineDialog').css('visibility', 'hidden');
	$('#GreyoutDiv').css('visibility', 'hidden');
	$('#GreyoutDiv').hide();
	$('#inLineDialog').empty();
	$('body').css('overflow', 'auto');
	return false;
}
//**********************************************************************************************************
function showResponse(msg){
	$('.response').remove();	
	$('#msg').append('<div class="response">'+msg+'</div>');
	$('.response').fadeIn('fast');
	var t=setTimeout(function(){ $('.response').fadeOut('slow'); }, 7000);
	return false;
}
//**********************************************************************************************************
function addLoader(objID){
	remLoader(objID);
	$(objID).append('<img src="../graphics/ajax-loader.gif" class="loader" width="24" height="24" />');
	return false;
}
//**********************************************************************************************************
function fadeOutLoader(objID){
	$(objID+' img.loader').fadeOut(700,function(){$(this).remove()});
	return false;
}
//**********************************************************************************************************
function remLoader(objID){
	$(objID+' img.loader').remove();
	return false;
}
//**********************************************************************************************************
function checkNum(){
	var carCode = event.keyCode;
	if ((carCode < 46) || (carCode > 57) || (carCode == 47)){
		event.cancelBubble = true
		event.returnValue = false;
	}
	return false;
}
//**********************************************************************************************************
function checkString(evnt, forbiddenChars){
	var browser = (navigator.appName != 'Microsoft Internet Explorer')?'Other':'IE';
	var carCode = (browser!='IE')?evnt.charCode:event.keyCode;
	//alert(carCode);
	//********Uppercase Letters*****************Lower Case Letters*****************Numbers***************************Backspace
	if(carCode >= 65 && carCode <= 90 || carCode >= 97 && carCode <= 122 || carCode >= 48 && carCode <= 57 || carCode == 8 || carCode == 0){
		return false;
	}else{
		var specialChars = '! "#$%&\'()*+,-./:;=?@\\^_`~';
		var c = '';
		var i = 0;
		if(forbiddenChars != ''){
			for(i = 0; i < forbiddenChars.length; i++){
				c = forbiddenChars.substr(i, 1);
				specialChars = specialChars.replace(c, '');
			}
		}
		var char = String.fromCharCode(carCode); //alert(char);
		c = '';
		for(i = 0; i < specialChars.length; i++){
			c = specialChars.substr(i, 1);
			if(c == char){
				return false;
			}
		}
		if(browser!='IE'){
			evnt.stopPropagation();
			evnt.preventDefault();
		}else{
			event.cancelBubble = true;
			event.returnValue = false;
		}
	}
	return false;
	
	
	var specialChars = '!@#$%& *+';
	if(forbiddenChars != ''){
		var char = '';
		for(var i = 0; i < forbiddenChars.length(); i++){
			char = forbiddenChars.substr(i, 1);
			specialChars = specialChars.replace(char, '');
		}
	}
	var alphaExp = /^[0-9a-zA-Z]+$/;
	alert(str);
	if(str.match(alphaExp)){
		return true;
	}else{
		alert('failed!!');
		return false;
	}
}
//**********************************************************************************************************
function ucFirst(str){
    str += '';
    var f = str.charAt(0).toUpperCase();
    return f + str.substr(1);
}
//**********************************************************************************************************
function thisMovie(appName) {
   if (navigator.appName.indexOf("Microsoft") != -1) {
	   return window[appName];
   } else {
	   return document[appName];
   }
}
//**********************************************************************************************************
function addRowToList(listID, rowID){
	if($('#'+listID).length < 1){ showResponse('addRowToList(listID['+listID+'] rowID['+rowID+')-> Could not find List to Update.'); return false; }
	
	if($('#'+listID).val() == ''){
		$('#'+listID).val(rowID);
		return false;
	}
	var list = String($('#'+listID).val()).split(':');
	list.push(rowID);
	$('#'+listID).val(list.join(':'));
	return false;
}
//**********************************************************************************************************
function remRowFromList(listID, rowID){
	if($('#'+listID).length < 1){ showResponse('remRowFromList(listID['+listID+'] rowID['+rowID+')-> Could not find List to Update.'); return false; }
	var list = String($('#'+listID).val()).split(':');
	var newList = Array();
	for(var i = 0; i < list.length; i++){
		if(list[i] != rowID){
			newList.push(list[i]);
		}
	}
	$('#'+listID).val(newList.join(':'));
	return false;
}
//**********************************************************************************************************
function checkForRowInList(listID, rowID){
	if($('#'+listID).length < 1){ showResponse('checkForRowInList(listID['+listID+'] rowID['+rowID+')-> Could not find List to Check.'); return false; }
	if($('#'+listID).val() == ''){ return false; }
	var list = String($('#'+listID).val()).split(':');
	for(var i = 0; i < list.length; i++){
		if(rowID == list[i]){
			return true;
		}
	}
	return false;
}
//**********************************************************************************************************
function initDocUpload(mtd, containerID, btnID, progBarID, cencelBtnID, path, finishTask, oid, xtraParams, fileFilter, fileQueueLimit){
	$('#'+progBarID).empty();
	$('#'+containerID).empty();
	$('#'+containerID).append('<span id="'+btnID+'"></span>');
	addLoader('#'+btnID);
	var urlVars = '';
	if(finishTask != ''){
		urlVars += '&finishTask='+finishTask+'&oid='+oid;
	} //alert($('#srcDomain').val()+'/include/upload/upload.php?mtd='+mtd+urlVars+'&uid='+$('#uid').val()+'&auid='+$('#auid').val()+'&ulvl='+$('#ulvl').val()+xtraParams);
	new SWFUpload({
		// Backend Settings
		upload_url: $('#srcDomain').val()+'/include/upload/upload.php?mtd='+mtd+urlVars+'&uid='+$('#uid').val()+'&auid='+$('#auid').val()+'&ulvl='+$('#ulvl').val()+xtraParams,
		//post_params: {"PHPSESSID" : "die7i7vco9td7mkblg858h0u51"},
		post_params: {'path' : path},
	
		// File Upload Settings
		file_size_limit : "102400",	// 100MB
		file_types : fileFilter, //e.g. '*.csv;*.jpeg;*.png;*.gif'
		file_types_description : 'Documents',
		file_upload_limit : "0",
		file_queue_limit : fileQueueLimit,
	
		// Event Handler Settings (all my handlers are in the Handler.js file)
		file_dialog_start_handler : fileDialogStart,
		file_queued_handler : fileQueued,
		file_queue_error_handler : fileQueueError,
		file_dialog_complete_handler : fileDialogComplete,
		upload_start_handler : uploadStart,
		upload_progress_handler : uploadProgress,
		upload_error_handler : uploadError,
		upload_success_handler : uploadSuccess,
		upload_complete_handler : uploadComplete,
	
		// Button Settings
		button_image_url : 'graphics/uploadBtn.png',
		button_placeholder_id : btnID,
		button_width: 61,
		button_height: 22,
		
		// Flash Settings
		flash_url : $('#srcDomain').val()+'/flex/swfUpload/swfupload.swf',
	
		custom_settings : {
			progressTarget : progBarID,
			cancelButtonId : cencelBtnID
		},
		
		// Debug Settings
		debug: false
	});
	return false;
}
//**********************************************************************************************************
function initSwfUpload(btnID, progBarID, cencelBtnID, path, max_w, max_h, create_thumb, thumb_w, thumb_h, finishTask, oid){
	var urlVars = '';
	if(parseInt(max_w) > 0 && parseInt(max_w).toString() != 'NaN'){
		urlVars += '&maxw='+max_w+'&maxh='+max_h;
	}
	if(create_thumb == 'yes'){
		urlVars += '&thumb='+create_thumb+'&thumb_w='+thumb_w+'&thumb_h='+thumb_h;
	}
	if(finishTask != ''){
		urlVars += '&finishTask='+finishTask+'&oid='+oid;
	}
	new SWFUpload({
		// Backend Settings
		upload_url: $('#srcDomain').val()+'/include/upload/upload.php?mtd=swfImageUpload'+urlVars,
		//post_params: {"PHPSESSID" : "die7i7vco9td7mkblg858h0u51"},
		post_params: {'path' : path},
	
		// File Upload Settings
		file_size_limit : "102400",	// 100MB
		file_types : "*.jpg;*.jpeg;*.png;*.gif",
		file_types_description : "Image Files",
		file_upload_limit : "10",
		file_queue_limit : "0",
	
		// Event Handler Settings (all my handlers are in the Handler.js file)
		file_dialog_start_handler : fileDialogStart,
		file_queued_handler : fileQueued,
		file_queue_error_handler : fileQueueError,
		file_dialog_complete_handler : fileDialogComplete,
		upload_start_handler : uploadStart,
		upload_progress_handler : uploadProgress,
		upload_error_handler : uploadError,
		upload_success_handler : uploadSuccess,
		upload_complete_handler : uploadComplete,
	
		// Button Settings
		button_image_url : 'graphics/uploadBtn.png',
		button_placeholder_id : btnID,
		button_width: 61,
		button_height: 22,
		
		// Flash Settings
		flash_url : $('#srcDomain').val()+'/flex/swfUpload/swfupload.swf',
	
		custom_settings : {
			progressTarget : progBarID,
			cancelButtonId : cencelBtnID
		},
		
		// Debug Settings
		debug: false
	});
	return false;
}
//**********************************************************************************************************
//**********************************************************************************************************
function editSettings(prefix, name, label){
	var names = name.split(':');
	var ename = prefix+name;
	if(names.length>1){
		ename = prefix+names[0];
	}
	if($('#'+ename+'Btn').attr('innerHTML')=="Edit"){
		$('#'+ename+'Div').slideDown(200);
		$('#'+ename+'Btn').attr('innerHTML', 'Save');
		$('#'+ename+'CopyFrom').show();
	}else{
		$('#'+ename+'CopyFrom').hide();
		var update = false;
		var val = '';
		if(names.length>1){
			val = 'set:|:';
			for(var i=1; i < names.length; i++){
				val += $('#'+prefix+names[i]).val()+':|:';
				if($('#'+prefix+names[i]+'Changed').val()=="yes"){
					update = true;
				}
			}
		}else{
			val = $('#'+ename).val();
			if($('#'+ename+'Changed').val()=="yes"){
				update = true;
			}
		}
		$('#'+ename+'Div').slideUp(200);
		$('#'+ename+'Btn').attr('innerHTML', 'Edit');
		//$('#content').prepend(name+'|||'+val);
		if(update == true){
			$.post('include/eBaySettingsModule.php', { mtd: 'saveSetting', prefix: prefix, name: name, valu: val  },
			function(data){ $('#content').prepend(data);
				showResponse('Saved '+label);
				$('#'+name+'Changed').val()="no";
			});
		}
	}
	return false;
}
//**********************************************************************************************************
function copyFrom(from, to){
	if($('#'+from).val() == undefined || $('#'+to).val() == undefined){ alert('Could not Copy!'); return false; }
	$('#'+to).val($('#'+from).val());
	$('#'+to+'Changed').val('yes');
	return false;
}
//**********************************************************************************************************
function cmToInch(cm){
	return Math.round((cm*0.3937008)*10)/10;
}
//**********************************************************************************************************
function inchToCm(inch){
	return Math.round((inch*2.54)*10)/10;
}
//**********************************************************************************************************
function kgToLbs(kg){
	return Math.round((kg/2.2)*100)/100;
}
//**********************************************************************************************************
function lbsToKg(lbs){
	return Math.round((lbs*2.2)*100)/100;
}
//**********************************************************************************************************
function scaleImgDims(w, h, maxw, maxh){
	var ow = 0;
	var oh = 0;
	var ratio = 0;
	while(w > maxw || h > maxh){
		ow = w;
		oh = h;
		if (h > maxh){
			h = maxh;
			ratio = oh / h;
			w = ow / ratio;
		}else if (w > maxw){
			w = maxw;
			ratio = ow / w;
			h = oh / ratio;
		}
	}
	return w+':'+h;
}
//**********************************************************************************************************
function CharCounter(boxID, maxLength, lblID){
	$('#'+lblID).attr('innerHTML', ' '+(maxLength-$('#'+boxID).val().length)+' characters remaining');
	return false;
}
//**********************************************************************************************************
function clickCheckBox(boxID){
	if($('#'+boxID).attr('checked') == false){
		$('#'+boxID).attr('checked', 'checked');
	}else{
		$('#'+boxID).attr('checked', '');
	}
	return false;
}
//**********************************************************************************************************
function checkAll(rowListID, checkboxPrefix){
	var row = String($('#'+rowListID).val()).split(':');
	if($('.selectAllLink:first').attr('innerHTML') == 'Select All'){
		$('.selectAllLink').attr('innerHTML', 'De-Select All');
		for(var i = 0; i < row.length; i++){
			$('#'+checkboxPrefix+row[i]).attr('checked', 'checked');
		}
	}else{
		$('.selectAllLink').attr('innerHTML', 'Select All');
		for(var i = 0; i < row.length; i++){
			$('#'+checkboxPrefix+row[i]).attr('checked', '');
		}
	}
	return false;
}
//**********************************************************************************************************
// resizes window to occupy all available screen real estate
function maximize(){
	isNav4 = ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) >= 4));
	// fill missing IE properties
    if (!window.outerWidth) {
        window.outerWidth = document.body.clientWidth;
        window.outerHeight = document.body.clientHeight + 30;
    }
    // fill missing IE4 properties
    if (!screen.availWidth) {
        screen.availWidth = 640;
        screen.availHeight = 480;
    }
    window.moveTo(0,0);
    window.resizeTo(screen.availWidth, screen.availHeight);
	return false;
}
//**********************************************************************************************************
//**********************************************************************************************************
var dateFormat = function () {
	var	token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,
		timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,
		timezoneClip = /[^-+\dA-Z]/g,
		pad = function (val, len) {
			val = String(val);
			len = len || 2;
			while (val.length < len) val = "0" + val;
			return val;
		};

	// Regexes and supporting functions are cached through closure
	return function (date, mask, utc) {
		var dF = dateFormat;

		// You can't provide utc if you skip other args (use the "UTC:" mask prefix)
		if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) {
			mask = date;
			date = undefined;
		}

		// Passing date through Date applies Date.parse, if necessary
		date = date ? new Date(date) : new Date;
		if (isNaN(date)) throw SyntaxError("invalid date");

		mask = String(dF.masks[mask] || mask || dF.masks["default"]);

		// Allow setting the utc argument via the mask
		if (mask.slice(0, 4) == "UTC:") {
			mask = mask.slice(4);
			utc = true;
		}

		var	_ = utc ? "getUTC" : "get",
			d = date[_ + "Date"](),
			D = date[_ + "Day"](),
			m = date[_ + "Month"](),
			y = date[_ + "FullYear"](),
			H = date[_ + "Hours"](),
			M = date[_ + "Minutes"](),
			s = date[_ + "Seconds"](),
			L = date[_ + "Milliseconds"](),
			o = utc ? 0 : date.getTimezoneOffset(),
			flags = {
				d:    d,
				dd:   pad(d),
				ddd:  dF.i18n.dayNames[D],
				dddd: dF.i18n.dayNames[D + 7],
				m:    m + 1,
				mm:   pad(m + 1),
				mmm:  dF.i18n.monthNames[m],
				mmmm: dF.i18n.monthNames[m + 12],
				yy:   String(y).slice(2),
				yyyy: y,
				h:    H % 12 || 12,
				hh:   pad(H % 12 || 12),
				H:    H,
				HH:   pad(H),
				M:    M,
				MM:   pad(M),
				s:    s,
				ss:   pad(s),
				l:    pad(L, 3),
				L:    pad(L > 99 ? Math.round(L / 10) : L),
				t:    H < 12 ? "a"  : "p",
				tt:   H < 12 ? "am" : "pm",
				T:    H < 12 ? "A"  : "P",
				TT:   H < 12 ? "AM" : "PM",
				Z:    utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""),
				o:    (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),
				S:    ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10]
			};

		return mask.replace(token, function ($0) {
			return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);
		});
	};
}();

// Some common format strings
dateFormat.masks = {
	"default":      "ddd mmm dd yyyy HH:MM:ss",
	shortDate:      "m/d/yy",
	mediumDate:     "mmm d, yyyy",
	longDate:       "mmmm d, yyyy",
	fullDate:       "dddd, mmmm d, yyyy",
	shortTime:      "h:MM TT",
	mediumTime:     "h:MM:ss TT",
	longTime:       "h:MM:ss TT Z",
	isoDate:        "yyyy-mm-dd",
	isoTime:        "HH:MM:ss",
	isoDateTime:    "yyyy-mm-dd'T'HH:MM:ss",
	isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"
};

// Internationalization strings
dateFormat.i18n = {
	dayNames: [
		"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",
		"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
	],
	monthNames: [
		"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
		"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
	]
};

// For convenience...
Date.prototype.format = function (mask, utc) {
	return dateFormat(this, mask, utc);
};
