/*
Custom JS - validation functions.
Author :: Dharmendra Patri
*/

// var error_container_id = 'validation_errors';//not required if you want to Alert.
var error_container_id = 'error';

var show_alert = false;

var show_all_error = true;

var msg = '';

var phone_regex = /^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,5})|(\(?\d{2,6}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ext)\d{1,5}){0,1}$/;

/*
should be checked upon dom ready so do it later.
if(show_alert==false)
{
	if(!checkElement(error_container_id))
	{
		alert("Please define the error container id :: "+error_container_id);
	}
	else
	{
		document.getElementById(validation_errors).style.display = 'none';
	}
}
*/

//as by default we check for alphanumeric characters - this is autoincluded in this.
function checkEmpty(id_d,message)
{
	var data_d = getValue(id_d);
	
	if(checkEmptyAll(id_d,message))
	{
		if(!alphaNumericCheck(id_d))
		{
			message += ' Enter alpha-numeric characters only';
			takeCareOfMsg(message);		
			return false;
		}
	}
	else
	{
		//not required here
	}
}

//dont check for alphanumeric validation here.
function checkEmptyAll(id_d,message)
{
	var data_d = getValue(id_d);
	
	if(data_d=='' || data_d==0)
	{
		takeCareOfMsg(message);
		return false;
	}
	else
	{
		return true;
	}
}

//allow akoha numberic and few more characters like _ -
function alphaNumericCheck(id_d)
{
	var data_d = id_d;
	var regex=/^[a-zA-z0-9 .,]+$/; //^[a-zA-z]+$/
	if(regex.test(data_d))
	{
		return true;
	} 
	else 
	{
		return false;
	}
}

//allow akoha numberic and few more characters like _ -
function alphaNumCheck(id_d)
{
	var data_d = id_d;
	var regex= new RegExp(/[a-zA-Z_0-9]$/); //^[a-zA-z]+$/
	if(data_d.match(regex))
	{
		return true;
	} 
	else 
	{
		return false;
	}
}


//allow akoha numberic and few more characters like _ -
function username_check(id_d)
{
	var data_d = id_d;
	var regex=/^[a-zA-Z][a-z_A-Z\d]+$/; //^[a-zA-z]+$/
	if(regex.test(data_d))
	{
		return true;
	} 
	else 
	{
		return false;
	}
}

//allow akoha numberic and few more characters like _ -
function checkZip(id_d)
{
	var data_d = id_d;
	var regex=/^[a-zA-Z\d]+$/; //^[a-zA-z]+$/
	if(regex.test(data_d))
	{
		return true;
	} 
	else 
	{
		return false;
	}
}

//allow only alphabets
function alphaCheck(id_d)
{
	var regex=/^[a-zA-Z ]+$/; //^[a-zA-z]+$/
	if(regex.test(id_d))
	{
		return true;
	} 
	else 
	{
		return false;
	}
}

function checkPhone(id_d)
{
	var number = id_d;

	if(number.match(phone_regex))
	{
		return true;
	}
	else
	{
		//takeCareOfMsg(message);
		return false;
	}
}

function checkNumber(id_d)
{
	var regex= new RegExp(/[0-9]$/); //^[a-zA-z]+$/
	if(id_d.match(regex))
	{
		return true;
	}
	else
	{
		return false;
	}
}

function checkFloat(id_d)
{
//	var number = getValue(id_d);
	
	if(parseFloat(id_d)==id_d)
	{
		return true;
	}
	else
	{
		//takeCareOfMsg(message);
		return false;
	}
}

function checkEmail(id_d)
{
	var m_regex = '^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$';

	ids = id_d.split(",");
	for(i=0;i<ids.length;i++)
	{
		id_d=ids[i];
		if(!id_d.match(m_regex))
		{		
			//takeCareOfMsg(message);
			return false;
		}
	}
	return true;
}

function checkURL(id_d,message)
{
	if(isURL(id_d))
	{
		return true;
	}
	else
	{
		takeCareOfMsg(message);
		return false;
	}
}

function checkElement(id_d)
{
	if(document.getElementById(id_d))
	return true;
	else
	return false;
}

/*function getValue(id_d)
{
	var value_d = trim(document.getElementById(id_d).value);
	
	return value_d;
	
}*/

// Removes leading whitespaces
function LTrim( value )
{
	
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");
	
}

// Removes ending whitespaces
function RTrim( value ) 
{
	
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");
	
}

// Removes leading and ending whitespaces
function trim( value )
{
	
	return LTrim(RTrim(value));
	
}

function takeCareOfMsg(message)
{
	if(show_alert==false || (show_alert==true && show_all_error==true))
	{
		if(show_alert==true)
		{			
			msg += message+'\n';
		}
		else
		{
			msg += '<p class="validation_error">'+message+'</p>';
		}
	}
	else if(show_alert==true && show_all_error==false)
	{
		alert(msg);
		document.getElementById(id_d).focus();
	}
}

function showMessage()
{
	if(msg!='')
	{
		if(show_alert==true)
		{
			alert(msg);
			return false;
		}
		else
		{
			//msg = '<div class="hide"><a href="#" onclick="hideErrorBlock();">Hide</a></div>'+msg;
			//document.getElementById(error_container_id).innerHTML = msg;
			//document.getElementById(error_container_id).style.display = 'block';			
			
			$('#'+error_container_id).html(msg);
			$('#'+error_container_id).css({'display':'block'});
			return false;
		}
	}
	
	return true;
}

function hideErrorBlock()
{
	$('#'+error_container_id).css({'display':'none'});
}

function isURL(id_d) 
{
	var argvalue = getValue(id_d);
 	
	if (argvalue.indexOf(" ") != -1)
	return false;
	else if (argvalue.indexOf("http://") == -1)
	return false;
	else if (argvalue == "http://")
	return false;
	else if (argvalue.indexOf("http://") > 0)
	return false;
	
	argvalue = argvalue.substring(7, argvalue.length);
	if (argvalue.indexOf(".") == -1)
	return false;
	else if (argvalue.indexOf(".") == 0)
	return false;
	else if (argvalue.charAt(argvalue.length - 1) == ".")
	return false;
	
	if (argvalue.indexOf("/") != -1) {
	argvalue = argvalue.substring(0, argvalue.indexOf("/"));
	if (argvalue.charAt(argvalue.length - 1) == ".")
	return false;
	}
	
	if (argvalue.indexOf(":") != -1) {
	if (argvalue.indexOf(":") == (argvalue.length - 1))
	return false;
	else if (argvalue.charAt(argvalue.indexOf(":") + 1) == ".")
	return false;
	argvalue = argvalue.substring(0, argvalue.indexOf(":"));
	if (argvalue.charAt(argvalue.length - 1) == ".")
	return false;
	}
	
	return true;
}
