/*
	Copyright Sami Puro / 2010.
*/


function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}


function openNewWindow(addr,wname,attr) {
	var nwin=window.open(addr, wname, attr);
	nwin.focus();
}


function checkAll(ALL_checkbox, formname) {
	var formdata=document.getElementById(formname);
	if (formdata==null)
		return;

	for (i=0; i<formdata.elements.length; i++) {
		var form_element = formdata.elements[i];
		if (form_element.name!='allBox' && form_element.type=='checkbox' && ALL_checkbox!=1)
			form_element.checked=ALL_checkbox.checked;
	}
}



function showDelayDetails(num) {

	sel2=document.getElementById("selLink" + num);

	var sel='delaydata' + num;
	sel=document.getElementById(sel);
	if (sel.className=='show') {
		$(sel).fadeOut('slow')
		sel.className='hide';
		sel2.innerHTML="<a href='javascript:showDelayDetails(" + num + ");'>" + text1;
	} else {
		$(sel).fadeIn('slow')
		sel.className='show';
		sel2.innerHTML="<a href='javascript:showDelayDetails(" + num + ");'>" + text2;
	}

}


function number_format(number, decimals, dec_point, thousands_sep) {
	var n = number, c = isNaN(decimals = Math.abs(decimals)) ? 2 : decimals;
	var d = dec_point == undefined ? "." : dec_point;
	var t = thousands_sep == undefined ? "," : thousands_sep, s = n < 0 ? "-" : "";
	var i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
    
	return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
}


function incomeLineHover(type, start, end) {
	var cls='';
	for (a=start; a<=end; a++) {
		var field=document.getElementById("inc" + a);
		if (field!=null) {
			var bg=1;
			if (a>(start+2) && a%2==0) {
				bg=2;
			}
			if (a==end && type==1)
				cls='mouseover1';
			else if (type==1)
				cls='mouseover';
			else if (a==end)
				cls='Bg' + bg;
			else
				cls='Bg' + bg + 'Nr';

			field.className=cls;
		}
	}
}


function setTimeConvDays(type) {
	if (type==2) {
		month=document.getElementById("month2");
		day=document.getElementById("day2");
		year=document.getElementById("year2");
	} else {
		month=document.getElementById("month");
		day=document.getElementById("day");
		year=document.getElementById("year");
	}
	if (month!=null && day!=null && year!=null) {
		var monthval=Math.round(month.options[month.selectedIndex].value);
		var yearval=Math.round(year.options[year.selectedIndex].value);
		var max=daysInMonth(monthval, yearval);
		var currmax=day.options[day.options.length-1].value;
		if (max>0 && currmax<max) {
			for (var a=currmax; a<=max; a++) {
				var elOptNew=document.createElement('option');
				elOptNew.text=a;
				elOptNew.value=a;
				try {
					day.add(elOptNew, null); // standards compliant; doesn't work in IE
				}
				catch(ex) {
					day.add(elOptNew); // IE only
				}
			}
		} else if (max>0 && currmax>max) {
			for (var a=currmax; a>max; a--) {
				day.remove(day.length-1);
			}
			if (day.selectedIndex>(max-1))
				day.selectedIndex=0;
		}
	}

}


function daysInMonth(month, year) {
	var dd = new Date(year, month, 0);
	return dd.getDate();
}


function expandFleetSettings() {
	var field=document.getElementById("fleetSettings");
	var field2=document.getElementById("fleetSettings2");
	var title=document.getElementById("expandBtn");
	if (field!=null && field2!=null && title!=null) {
		if (field.className=='hide') {
			$(field).fadeIn('slow');
			field.className="show";
			field2.className="hide";
			title.innerHTML=btnTitle2;
		} else {
			$(field).fadeOut('slow');
			setTimeout("document.getElementById('fleetSettings2').className='show';", 505);
			setTimeout("document.getElementById('fleetSettings').className='hide';", 500);
			title.innerHTML=btnTitle1;
		}
	}
}



function in_array(needle, haystack, argStrict) {
	var key = '', strict = !!argStrict;

	if (strict) {
		for (key in haystack) {
			if (haystack[key] === needle)
				return true;
		}
	} else {
		for (key in haystack) {
			if (haystack[key] == needle)
				return true;
		}
	}

	return false;
}



/*
	Notepad.
	Character counter
*/
function txtAreaChars(field, countfield, maxlimit) {
	var countfield=document.getElementById(countfield);
	if (countfield==null)
		return;

	if (field.value.length > maxlimit)
		field.value=field.value.substring(0, maxlimit);
	else
		countfield.innerHTML=maxlimit - field.value.length;
}


/*
	Notepad.
	Close and save on logout / world change.
*/
function closeNotepad(gameID, logout) {
	if (gameID>0) {
		var wName='Notepad' + gameID;
		var w=window.open('', wName);
		if (w && !w.closed) {
			var data=w.document.getElementById('Notepad');
			if (data) {
				data=data.value.replace(/\r\n/g, "<br>");
				data=escape(data).replace(/\+/g,'%2B').replace(/%20/g, '+').replace(/\*/g, '%2A').replace(/\//g, '%2F').replace(/@/g, '%40');

				var url = '/game/Info/Settings/Save/';
				var params = 'Notepad=' + data;
				if (logout>0) {
					w.close();
					makeHttpRequest(url, params, 'logout', false);
				} else {
					makeHttpRequest(url, params, 'wclose', false);
				}
				return;
			} else
				w.close();
		}
	}
	if (logout>0)
		window.location="/game/Info/Logout/";
}

function logout() {
	setTimeout('window.location="/game/Info/Logout/";', 100);
}

function wclose() {
	window.close();
}
