/*
 * Function  : updateTips
 * Purpose   : Display error message or tips
 * Arguments : t - text to display, elmError - id of DOM element to dispaly message 
 */
function updateTips(t,elmError) {
	var container = elmError + '_container';
	$("#" + elmError).text(t);
	$("#" + container).show();
	$("#errorFlag").val(1); 
}

function checkLength(element,text,min,max,elmError) 
{
	if (checkBlank(element,text,elmError)) 
	{ //check for blank
		var tips = '';
		var length = element.val().length;
		if ((min != 0 && max != 0) &&  ( length > max || length < min ) )
			tips = "Length of " + text + " must be between "+min+" to "+max+".";
		else if((min !=0 && max == 0) && (length < min))
		{
				tips =  "Length of " + text + " must be minimum "+min+" letters.";
		}
		else if((min == 0 && max != 0) && (length > max))
		{
				tips = "Length of " + text + " must be maximum "+max+" letters."
		}
		if (tips != 0) {
			element.addClass('ui-state-error');
			updateTips(tips,elmError);
			return false;
		}
		return true;
	}
}

function checkBlank(element,text,elmError) {
alert("testing");
	if($.trim($(element).val()) == "") {
		element.addClass('ui-state-error');
		updateTips(" * " + text + " is required.", elmError);
		return false;
	} else {
		return true;
	}
}

function checkOption(element,text,elmError){
	var flag  = $(element).is(':checked');
	if(flag  == false) {
		//element.addClass('ui-state-error');
		updateTips(" * " + text + " is required.", elmError);
		return false;
	}
	return true;
}
function checkBlank1(element,text,elmError) {
	if($.trim($(element).val()) == "") {
		element.addClass('ui-state-error');
		updateTips(" * " + text + " are required.", elmError);
		return false;
	} else {
		return true;
	}
}
/*
function checkNull(element,text,elmError) {
	if($.trim($(element).val()) == "") {
		element.addClass('ui-state-error');
		updateTips(" * " + text + " should have been choosed.", elmError);
		return false;
	} else {
		return true;
	}
}*/

function isNumberKey(evt) {
	var keyCode = (evt.which?evt.which:(evt.keyCode?evt.keyCode:0))	 
	// backspace, delete, left arrow, right arrow, tab keys
	if ((keyCode == 8) || (keyCode == 46) || (keyCode == 37) || (keyCode == 39) || (keyCode == 9) ) return true;
	if ((keyCode < 48) || (keyCode > 57)) return false;
	return true;
}
function checkRegexp(element,regexp,text,elmError) {
	//alert('S'+ regexp.exec(element.val()) + 'E');
	if ( !( regexp.test( element.val() ) ) ) {
		element.addClass('ui-state-error');
		updateTips(text, elmError);
		return false;
	} else {
		return true;
	}
}

function compareElements(element1, element2, text,elmError){
	if($.trim($(element1).val()) != $.trim($(element2).val()) ) {
		element2.addClass('ui-state-error');
		updateTips(text, elmError);
		return false;
	} else {
		return true;
	}
}

//Begin: Paging 
//set the newly selected per page value
setPerPage = function(obj) {
	$("#per_page").val(obj);
	$("#cur_page").val(1);
	$("#paging").submit();
}

//set paging control values - field name to sort, sorting type, current page
setPagingControlValues = function(cur_page, field_name, order_type) {
	$("#order_by").val(cur_page)
	$("#order_type").val(field_name)
	$("#cur_page").val(order_type)
	$("#paging").submit();
}
//End: Paging

//Begin : Display  Default text
displayDefaultText = function(obj,string) {
	if (obj.value == '')
		obj.value = string;
}
//End: Display  Default text
//Begin : Clear Default text
clearDefaultText = function(obj,string) {
	if (obj.value == string)
		obj.value = '';
}
//End: Clear Default text
//BEGIN : check and uncheck all the check box in the from
check = function(id)
{
	var frm = 	document.getElementById(id); 
	if (frm.titlecheckbox.checked)
		checkAll(id);
	else
		uncheckAll(id);
}
//check all the check box in the form
//check all check box using link check
linkcheck = function(id,getFlag)
{
	$("#checklist").hide();
	$("#unchecklist").hide();
	var frm = 	document.getElementById(id); 
	if(getFlag== '1') { 
		checkAll(id);
		$("#checklist").hide();
		$("#unchecklist").show();
	}
	if(getFlag== '0') { 
		uncheckAll(id);
		$("#checklist").show();
		$("#unchecklist").hide(); 
		
	}
}
//Delete all function form load
formSumbit = function(id)
{
	var frm = 	document.getElementById(id); 
	$("form")[1].submit();
}
//Un check all the check box in the form
confirmDelete = function(form_obj)
{			
alert(form_obj);
	flag=0;
	for (var i = 0; i < form_obj.elements.length; i++){
	  if(form_obj.elements[i].checked){
			flag = 1;
			break;
	  }
	}
	if(flag==0)
	{
		alert('Please select at least a record to proceed with deletion');
		return false;
	}
	return (confirm('Are you  sure to delete?'));
}
confirmDel = function(form_obj)
{	
	flag=0;
	if(document.forms.discountlist.row_id.length>1) { 
		for (var i = 0; i < document.forms.discountlist.row_id.length; i++){
		  if(document.forms.discountlist.row_id[i].checked){
				flag = 1;
				break;
		  }
		}
	}
	else if (document.forms.discountlist.row_id.checked) { 
		flag = 1;
	}
	if(flag==0) { 
		alert('Please select at least a record to proceed with deletion');
		return false;
	}
	if(flag==1)
		if(confirm('Are you  sure to delete?'))
			document.forms.discountlist.submit();
}
//Un check all the check box in the form submitSociale
checkAll = function(id)
{
	var frm = document.getElementById(id);
	for (var i = 0; i < frm.elements.length; i++) {
	  if (frm.elements[i].name.indexOf('[]') > 0)
 	 	  frm.elements[i].checked = true;
	 }
	if (frm.titlecheckbox)
		frm.titlecheckbox.checked = true;
}
//Un check all the check box in the form
uncheckAll = function(id)
{
	var frm = document.getElementById(id);
	for (var i = 0; i < frm.elements.length; i++) { 
	   if (frm.elements[i].name.indexOf('[]') > 0)
 	 	  frm.elements[i].checked = false;
	 }
	if (frm.titlecheckbox)
		frm.titlecheckbox.checked = false;
}

/*
$('#check-all').click(function(){
	 $('#example input[type=checkbox]').checkBox('changeCheckStatus', true);
	 return false;
 });
	 
$('#uncheck-all').click(function(){ 
	$('#example input[type=checkbox]').checkBox('changeCheckStatus', false);
	return false; 
}); */

//BEGIN: phone number validation
/*function validatePhoneNo(phone,element)
{
alert(phone);

var redigit	=	('/^\d{3}d{-}d{3}d{-}d{4}$',phone)
	
	if((redigit)==-1)
	{
		alert("false");
		return false;
	}	
	else
	alert("false");
	element.addClass('ui-state-error');
		updateTips(" * " + text + " is valid.");
	 
		return false;
  /*if(ereg('^[2-9]{1}[0-9]{2}-[0-9]{3}-[0-9]{4}$', phone))
     return true;
  else
     return false;
}*/
//END: phone number validation


/*
 * Function : countCharacter
 * Purpose  : Count number of character entered
 * elmTarget: id of DOM element where you entered text
 * elmCount : id of DOM element where you display remaing character count
 * maxlimit : Maximum number of character disply
 */
function countCharacter(elmTarget, elmCount, maxLimit){

	var charCount = $("#" + elmTarget).val().length;
	if (charCount > maxLimit) {
	    var notes = $("#" + elmTarget).val(); 
		 $("#" + elmTarget).val(notes.substring(0, maxLimit)); //Truncate the overflow text
		 //Display error message if needed
	}
	else {
		 $("#" + elmCount).val(maxLimit - charCount);  //Display remaining keystroke count
	}
}
//End: Count number of character entered

/*
 * Function :
 * Purpose  : Hide error container element
 * elmarray : dom element array
 *
 */
function hideDomElement(elmArray) {
	$.each(elmArray, function() {
		container = this + '_container';
		$('#' + container).hide();
	 }); 
}
//End: Hide DOM element
//BEGIN Is number
isNumber = function(evt) {
	var keyCode = (evt.which?evt.which:(evt.keyCode?evt.keyCode:0))	 
	// backspace, delete, left arrow, right arrow, tab keys
	if ((keyCode == 8) || (keyCode == 46) || (keyCode == 37) || (keyCode == 39) || (keyCode == 9)) return true;
	if ((keyCode < 48) || (keyCode > 57)) return false;
	return true;
}
//End Is number

//Begin: Date Validation
var dtCh= "-";
var minYear=1900;
var maxYear=2100;

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

/*
 * Function : compareDate
 * Purpose  : Compare two date 
 * datefrom : from date
 * dateto   : to date
 */
 
function compareDate(datefrom,dateto)
{
	var st = datefrom.split("-")
	var ed = dateto.split("-")
	var strDay 		= st[0];
	var strMonth 	= st[1];
	var strYear 	= st[2];
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1);
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1);
	var endDay 		= ed[0];
	var endMonth 	= ed[1];
	var endYear 	= ed[2];
	if (endDay.charAt(0)=="0" && endDay.length>1) endDay=endDay.substring(1);
	if (endMonth.charAt(0)=="0" && endMonth.length>1) endMonth=endMonth.substring(1);
	var smonth=parseInt(strMonth);
	var sday=parseInt(strDay);
	var syear=parseInt(strYear);
	
	var emonth=parseInt(endMonth);
	var eday=parseInt(endDay);
	var eyear=parseInt(endYear);
	
	if(syear > eyear)
	{
		return false;
	}
	if(syear == eyear && smonth > emonth)
	{
		return false;
	}
	if( (syear == eyear) && (smonth == emonth) && (sday>eday) )
	{
		return false;
	}
	return true;
}
//End: Date Validation

/* 
 * Function  		:  checkDateRange
 * Purpose   		:  Compare two date and display error message if any
 * startDate 		:  start date element object
 * endDate   		:  end date element object
 * txt1      		:  error message
 * txt2      		:  error message
 * elmError1 		:  start date error message container element object
 * elmError2        :  end date error message container element object
 * currentDateFlage :  1- start date should be today's date or greater
 */
function checkDateRange(startDate, endDate, text1, text2, elmError1, elmError2, currentDateFlag){
	var dt = new Date();
	var y  = dt.getFullYear();
	var m  = dt.getMonth()+1;
	var d  = dt.getDate();
	var today = d+'-'+m+'-'+y;
	var startDateFlag = checkDate(startDate, text1, elmError1);
	var endDateFlag   = checkDate(endDate, text2, elmError2);
	if ( startDateFlag == true && endDateFlag == true) {
		if ( currentDateFlag == 1) {
			if (compareDate(today, $.trim($(startDate).val())) == false ) {
				endDate.addClass('ui-state-error');
				updateTips("start date should be today's date or greater",elmError1);
				return false;
			}
		}
		if (compareDate($.trim($(startDate).val()) , $.trim($(endDate).val()) ) == false ) {
			endDate.addClass('ui-state-error');
			updateTips("Please enter valid date range",elmError2);
			return false;
		}
	}
	return false;
}

/*
 * Function : checkDate
 * Purpose  : Check for valid date
 * element  : date element id
 * text     : error message
 * elmError : error message container element object
 */
function checkDate(element,text,elmError) {

	if (checkBlank(element,text,elmError) == false )  //check for blank
		return false;
		
	var dtStr = $.trim($(element).val());
	var daysInMonth = DaysArray(12);
	var pos1=dtStr.indexOf(dtCh);
	var pos2=dtStr.indexOf(dtCh,pos1+1);
	var strDay=dtStr.substring(0,pos1);
	var strMonth=dtStr.substring(pos1+1,pos2);
	var strYear=dtStr.substring(pos2+1);
	strYr = strYear;
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1);
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1);
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1);
	}
	month = parseInt(strMonth);
	day   = parseInt(strDay);
	year  = parseInt(strYr);
	if (pos1==-1 || pos2==-1){
		element.addClass('ui-state-error');
		updateTips("The date format should be : dd-mm-yyyy",elmError);
		return false;
	}
	
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		element.addClass('ui-state-error');
		updateTips("Please enter a valid day",elmError);
		return false;
	}
	
	if (strMonth.length<1 || month<1 || month>12){
		element.addClass('ui-state-error');
		updateTips("Please enter a valid month",elmError);
		return false;
	}
	
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		element.addClass('ui-state-error');
		updateTips("Please enter a valid 4 digit year between "+minYear+" and "+maxYear,elmError);
		return false;
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		element.addClass('ui-state-error');
		updateTips("Please enter a valid date",elmError);
		return false;
	}
	return true;
}
function clearText(field){
    if (field.value == 'Search..') {
		field.value = '';			
	}
    else if (field.value == '') {			
		field.value = 'Search..';
	};
}

function validateDelete(formName, recordName) {
	
	var flag = 0;
	var form_obj = document.forms.formName;
	alert(form_obj.elements.length);
	return false;
	for (var i = 0; i < form_obj.elements.length; i++){
	  if(form_obj.elements[i].checked){
			flag = 1;
			break;
	  }
	}
	if(flag==0)
	{
		alert('Please select at least a record to proceed');
		return false;
	}
	return (confirm('Are you  sure to delete this '+ recordName +'?'));	
}

function expandAndCollapse(idName) {				
	if(document.getElementById(idName).style.display == 'none'){
		document.getElementById(idName).style.display = 'block';
	} else {
		document.getElementById(idName).style.display = 'none';
	}
}

function toggleText(obj, value){
	 if (obj.value == value) {
		obj.value = '';			
	}
    else if (obj.value == '') {			
		obj.value = value;
	};
}
