function correctDate(textbox) {
	var dateValid = true;
	var dateNow = new Date();
	var myRegExpBlank = new RegExp("^\\s*$");
	var myRegExpDM = new RegExp("^\\s*\\d{4}\\s*$");
	var myRegExpDMY = new RegExp("^\\s*\\d{1,2}[\\s\\.\\\\/,\\-]+\\d{1,2}([\\s\\.\\\\/,\\-]+\\d{2,4})?\\s*$");
	var myRegExpDDMMYYYY = new RegExp("^\\s*\\d{8}\\s*$");

	if (myRegExpDM.test(textbox.value)) {
		day = parseInt(textbox.value.substr(0,2),10);
		month = parseInt(textbox.value.substr(2,2),10);
		year = dateNow.getFullYear();
		if(validateDate(day,month,year)) {
			textbox.value = String(day)+"/"+String(month)+"/"+String(year);
		}
		else {
			dateValid = false;
		}
	}
	else if (myRegExpDMY.test(textbox.value)) {
		newDate = textbox.value.replace(/^\s+|\s+$/g, ""); // trim leading spaces
		newDate = newDate.replace(/[\s\.,\\/\-]+/g, "/"); // put "/" between the numbers
		dateArray = newDate.split("/");
		day = parseInt(dateArray[0],10);
		month = parseInt(dateArray[1],10);
		if(dateArray.length == 2) {
			year = dateNow.getFullYear();
		}
		else {
			if(dateArray[2].length == 2) { year = parseInt("20"+dateArray[2],10); }
			else if(dateArray[2].length == 3) { year = parseInt("2"+dateArray[2],10); }
			else {year = parseInt(dateArray[2],10);}
		}
		if(validateDate(day,month,year)) {
			textbox.value = String(day)+"/"+String(month)+"/"+String(year);
		}
		else {
			dateValid = false;
		}
	}
	else if (myRegExpBlank.test(textbox.value)) {
		textbox.value = "";
	}
	else if (myRegExpDDMMYYYY.test(textbox.value)) {
		day = parseInt(textbox.value.substr(0,2),10);
		month = parseInt(textbox.value.substr(2,2),10);
		year = parseInt(textbox.value.substr(4,4),10);
		if(validateDate(day,month,year)) {
			textbox.value = String(day)+"/"+String(month)+"/"+String(year);
		}
		else {
			dateValid = false;
		}
	}
	else { 
		dateValid = false;
	}
	
	if (!dateValid) { alert ("Girdiğiniz tarih yanlış."); }
	
}

function correctPhone(textbox) {
	
	var phoneValid = true;

	var myRegExpBlank = new RegExp("^\\s*$");
	var myRegExpTrPhoneNo = new RegExp("^\\s*0?[\\s\\(\\)\\-\\.]{0,3}\\d{3}[\\s\\(\\)\\-\\.]{0,3}(\\d[\\s\\(\\)\\-\\.]{0,3}){7}\\s*$");
	var myRegExpIntPhoneNo = new RegExp("^\\s*\\+[\\s\\(\\)\\-\\.]{0,3}(\\d[\\s\\(\\)\\-\\.]{0,3}){8,20}\\s*$");
	if (myRegExpTrPhoneNo.test(textbox.value)) {
		newPhone = textbox.value.replace(/[^\d]/g,""); // delete anything except numbers
		newPhone = newPhone.replace(/^0/,""); // delete the leading zero, if exists
		newPhone = "("+newPhone.substr(0,3)+") "+newPhone.substr(3,3)+" "+newPhone.substr(6,4);
		textbox.value = newPhone;
	}
	else if(myRegExpIntPhoneNo.test(textbox.value)) {
		newPhone = textbox.value.replace(/[^\d\+]/g,""); // delete anything except numbers
		textbox.value = newPhone;
	}
	else if(myRegExpBlank.test(textbox.value)) {
		textbox.value = "";
	}
	else {
		phoneValid = false;
	}
	
	if(!phoneValid) {
		alert ("Girdiğiniz numara yanlış.\n\nLütfen;\n- Dahili numaraları buraya yazmayın.\n-Uluslararası bir numara giriyorsanız başına \"+\" ekleyin.\n-Yurtiçi numaraların başına alan kodunu yazın.");
	}
}



function correctDecimalNumber(textbox) {

	var newNumber = convertDecimalNumber(textbox.value);
	if(newNumber == "hata") {
		alert ("Girdiğiniz sayı yanlış.");
	}
	else {
		textbox.value = newNumber;
	}
}

function correctIntegerNumber(textbox) {

	var newNumber = convertIntegerNumber(textbox.value);
	if(newNumber == "hata") {
		alert ("Girdiğiniz sayı yanlış.");
	}
	else {
		textbox.value = newNumber;
	}
}

function correctFloatNumber(textbox) {
	var newNumber = convertFloatNumber(textbox.value);
	if(newNumber == "hata") {
		alert ("Girdiğiniz sayı yanlış.");
	}
	else {
		textbox.value = newNumber;
	}
	
}



function convertDecimalNumber(text) {
	
	// text'i alir, 123.456.789,01 seklinde decimal no a donusturur.
	// text hataliysa 'hata' doner

	var newText = "";
	var decimalPart; var integerPart; var integerPartGrouped; var wholeNo; var myRegExpTemp;

	var myRegExp = new RegExp("^\\s*[\\d\\.,]+\\s*$");
	var myRegExpFloat = new RegExp("^\\s*[\\d\\.,]+[\\.,]\\d+\\s*$");
	var myRegExpBlank = new RegExp("^\\s*$");

	if (myRegExp.test(text)) {
		if ( myRegExpFloat.test(text) ) {
			
			var tempArr = text.match(/[\.,]\d+\s*$/);
			decimalPart = tempArr[0];
			integerPart = text.substr(0,text.length-decimalPart.length);
			
			decimalPart = decimalPart.replace(/\s+/g,"");
			decimalPart = decimalPart.replace(/,/g,".");
			integerPart = integerPart.replace(/[\s\.,]+/g,"");
			wholeNo = String(Math.round(parseFloat(integerPart+decimalPart)*100)/100);
			
			myRegExpTemp = new RegExp("^\\d*\\.\\d$");
			if(myRegExpTemp.test(wholeNo)) wholeNo = wholeNo+"0";

			myRegExpTemp = new RegExp("^\\d*$");
			if(myRegExpTemp.test(wholeNo)) wholeNo = wholeNo+".00";
			
			tempArr = wholeNo.match(/\.\d\d$/);
			decimalPart = tempArr[0].replace(/\./,",");;
			integerPart = wholeNo.substr(0,wholeNo.length-decimalPart.length);
			
			
		}
		else {
			decimalPart = ",00";
			integerPart = text.replace(/[\s\.,]+/g,"");
		}
		integerPart = integerPart.replace(/^0+/,""); if (integerPart == "") integerPart = "0";
		// split the number into 3 digit groups
		var counter = 0; integerPartGrouped = "";
		for (i = integerPart.length-1; i >= 0; i--) {
			if(counter != 0 && mod(counter,3)) {
				integerPartGrouped = "."+integerPartGrouped;
			}
			integerPartGrouped = integerPart.substr(i,1)+integerPartGrouped;
			counter++;
		}
		newText = integerPartGrouped+decimalPart;
	}
	else if (myRegExpBlank.test(text)) {
		newText = "";
	}
	else {
		newText = "hata";
	}
	
	return newText;

}

function convertIntegerNumber(text) {

	// text'i alir, 123.456.789 seklinde integer no a donusturur.
	// text hataliysa 'hata' doner

	var newText = "";

	var myRegExp = new RegExp("^\\s*[\\d\\.,]+\\s*$");
	var myRegExpBlank = new RegExp("^\\s*$");

	if (myRegExp.test(text)) {
		text = text.replace(/[\s\.,]+/g,"");
		text = text.replace(/^0+/g,""); // strip leading zeroes
		integerNumber = text;
		// split the number into 3 digit groups
		var counter = 0; integerNumberGrouped = "";
		for (i = integerNumber.length-1; i >= 0; i--) {
			if(counter != 0 && mod(counter,3)) {
				integerNumberGrouped = "."+integerNumberGrouped;
			}
			integerNumberGrouped = integerNumber.substr(i,1)+integerNumberGrouped;
			counter++;
		}
		newText = integerNumberGrouped;
	}
	else if (myRegExpBlank.test(text)) {
		newText = "";
	}
	else {
		newText = "hata";
	}
	
	return newText;

}

function convertFloatNumber(text) {

	// text'i alir, 123,456 seklinde float no a donusturur.
	// text hataliysa 'hata' doner

	var newText = "";

	var myRegExpInt = new RegExp("^\\s*[\\d\]+\\s*$");
	var myRegExpFloat = new RegExp("^\\s*([\\d,]+|[\\d\\.]+)\\s*$");
	var myRegExpBlank = new RegExp("^\\s*$");

	if (myRegExpInt.test(text)) {
		integerPart = text.replace(/\s+/g,"");
		integerPart = integerPart.replace(/^0+/,"");
		newText = integerPart;
	}
	else if (myRegExpFloat.test(text)) {
		var tempArr = text.match(/[\.,]\d+\s*$/);
		decimalPart = tempArr[0]; 
		integerPart = text.substr(0,text.length-decimalPart.length);
		decimalPart = decimalPart.replace(/\s+/g,"");
		decimalPart = decimalPart.replace(/\./g,",");
		integerPart = integerPart.replace(/[\s\.,]+/g,"");
		integerPart = integerPart.replace(/^0+/,"");
		if (integerPart == "") integerPart = "0";
		newText = integerPart+decimalPart;
	}
	else if (myRegExpBlank.test(text)) {
		newText = "";
	}
	else {
		newText = "hata";
	}
	
	return newText;
			
}

// converts the numbers entered in inbox area into js numbers.
function convert2JSNumber (text) {
	
	text = text.replace(/\./,"");
	text = text.replace(/,/,".");
	return parseFloat(text);
	
}

function validateDate(day, month, year) {
	// checks whether a date is valid
	if (year == "") { year = 2004; } // yil gelmediyse subati 29 olan bir yil ver
	tempDate = new Date(year,month-1,day);
	if ( tempDate.getMonth()+1 == month ) {
		return true;
	}
	else {
		return false;
	}
}

function validateShortDate(dateString) {
	// checks if a date is in a valid d/m/y format
	dateValid = true;
	var myRegExp = new RegExp("^\\d{1,2}/\\d{1,2}/\\d{4}$", "i");
	if(!myRegExp.test(dateString)){
		dateValid = false;
	}
	else {
		dateArray = dateString.split("/");
		if(!validateDate(parseInt(dateArray[0],10),parseInt(dateArray[1],10),parseInt(dateArray[2],10))) {
			dateValid = false;
		}
	}
	return dateValid;
}

function validateURL(urlText) {
	// bir url nin gecerli olup olmadigini kontrol eder
	var myRegExp = new RegExp("^([A-Za-z]+://)?[A-Za-z0-9-_]+\\.[A-Za-z0-9-_%&\?\/.=]+$", "i");
	return myRegExp.test(urlText);
}

function validateEmail(email) {
	// bir email'in gecerli olup olmadigini kontrol eder
	var myRegExp = new RegExp("^([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,4})+$", "i");
	return myRegExp.test(email);
}

function validatePhone(phoneNo) {
	// bir telefon numarasinin gecerli olup olmadigini kontrol eder
	var myRegExp = new RegExp("^\\(\\d{3}\\)\\s\\d{3}\\s\\d{4}$|^\\+\\d{8,20}$", "i");
	return myRegExp.test(phoneNo);
}

function mod(number, mod) {
	if((number/mod) == Math.ceil(number/mod)) {
		return true;
	}
	else{
		return false;
	}
}

function setCookie(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 getCookie(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;
}

// checks if a string is a blank string. to be used in form validation
function isBlank(string) {
	var myRegExpBlank = new RegExp("^\\s*$");
	if(myRegExpBlank.test(string)) {
		return true;
	}
	else {
		return false;
	}
}

// for ajax functions
function GetXmlHttpObject() {
	var xmlHttp=null;
	try {
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	}
	catch (e) {
		// Internet Explorer
		try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); }
	}
	return xmlHttp;
}
