/*
* Global stuff
*/


/* - - - - - - - - - - - - - - - - - - - - - - -
 JavaScript
Util functions
 - - - - - - - - - - - - - - - - - - - - - - - */

 function GetCursorPosition(txtBox) {
if (typeof txtBox.selectionStart != "undefined")
{
    return txtBox.selectionStart;
}

var obj = document.activeElement;
var cur = document.selection.createRange();
var pos = 0;
if (obj && cur) {
var tr = obj.createTextRange();
if (tr) {
while (cur.compareEndPoints("StartToStart", tr) > 0) {
tr.moveStart("character", 1);
pos++;
}
return pos;
}
}
return -1;
}

function lowerTextBoxes(e, txtBox)
{
  var boolkeyC = false;
  if (e.keyCode) {
  keypress = e.keyCode;
  boolkeyC = true;
  }
  else {
  keypress = e.which;
  }
  var keychar = String.fromCharCode(keypress);
  var curPos = GetCursorPosition(txtBox);

  if ( curPos!= 0)
  {
     if (txtBox.value.charAt(curPos-1) != ' ')
     {
      if (keychar.toLowerCase() != keychar)
      {
         if (boolkeyC)
         {
            e.keyCode =  keychar.toLowerCase().charCodeAt(0);
         }
         else
         {
            txtBox.value = txtBox.value.substring(0,curPos) + keychar.toLowerCase() + txtBox.value.substring(curPos);
            return false;
         }
      }
     }
  }
  else
  {


      if (keychar.toUpperCase() != keychar)
      {
         if (boolkeyC)
         {
            e.keyCode =  keychar.toUpperCase().charCodeAt(0);
         }
         else
         {
            txtBox.value = txtBox.value.substring(0,curPos) + keychar.toUpperCase() + txtBox.value.substring(curPos);
            return false;
         }
      }
  }
   return true;
}


function upperTextBoxes(e, txtBox)
{
  var boolkeyC = false;
  if (e.keyCode) {
  keypress = e.keyCode;
  boolkeyC = true;
  }
  else {
  keypress = e.which;
  }
 
  var keychar = String.fromCharCode(keypress);
  var curPos = GetCursorPosition(txtBox);

    if (keychar.toUpperCase() != keychar)
    {
       if (boolkeyC)
       {
          e.keyCode =  keychar.toUpperCase().charCodeAt(0);
       }
       else
       {
          txtBox.value = txtBox.value.substring(0,curPos) + keychar.toUpperCase() + txtBox.value.substring(curPos);
          return false;
       }
    }
   return true;
}

function pad(val, len, char) 
{
	val = String(val);	
	while (val.length < len) val = char + val;
	return val;
}

function getRadioValue(rad)
{
	for (var i=0 ; i<rad.length ; i++)
	{
		if (rad[i].checked) return rad[i].value;
	}
	return '';
}

function isRadioDisabled(radButton)
{
 for (var i=0 ; i<radButton.length ; i++) {
    if (!radButton[i].disabled) return false;
 }
 return true;
}

// Key press method, that allow only digits (dots if param = true)
 function digitsPressed(e, txtBox, authorizeDot, unsigned)
 {
   if (e.keyCode) {
   keypress = e.keyCode;
   }
   else {
   keypress = e.which;
   };

    if ((keypress < 48 || keypress > 57) && (keypress!=46 || !authorizeDot) && (keypress!=45 || !unsigned) && keypress!=8 && keypress!=9 && keypress!=0 && !(keypress>=35 && keypress<=39))
     return false;
     
    if (keypress == 45 && GetCursorPosition(txtBox) > 0)
     return false;

    return true;
 }
  function phoneZipPressed(e)
 {
   if (e.keyCode) {
   keypress = e.keyCode;
   }
   else {
   keypress = e.which;
   };


    if ((keypress < 48 || keypress > 57) && keypress != 45 && keypress!=8 && keypress!=9 && keypress!=0 && !(keypress>=35 && keypress<=39))
     return false;

    return true;
 }
 function alphaOnlyPressed(e, authorizeUpperCase)
 {
 	      if (e.keyCode) {
	      keypress = e.keyCode;
	      }
	      else {
	      keypress = e.which;
	      }   
         if ( !((keypress>=97 && keypress<=122) || (keypress>=48 && keypress<=57) || (authorizeUpperCase && keypress>=65 && keypress<=90)) && keypress!=95 && keypress!=45 && keypress!=8 && keypress!=9 && keypress!=0 && keypress!=35 && !(keypress>=37 && keypress<=39)) return false;
         return true;
 }
 
 // Check date
 /*
 function checkDate(f, fieldName, label)
{
		var day = f.elements[fieldName + '_day'].value;
		var month = f.elements[fieldName + '_month'].value;
		var year = f.elements[fieldName + '_year'].value;
		
		 if (month=='' && day=='' && year=='') return true;
         if (month=='' || day=='' || year=='')
         {
         	alert("Date '"+label+"' is not completely filled");
         	f.elements[fieldName + '_month'].focus();
         	 return false;
         }

         var d2=new Date(year,month-1,day);
         j2=d2.getDate();
         m2=d2.getMonth()+1;
         a2=d2.getYear();
         if (a2<=300) {a2=1900+a2;}
         if ( (day!=j2)||(month!=m2)||(year!=a2) ) {
         	alert("Date '"+label+"' is incorrect");
         	f.elements[fieldName + '_month'].focus();
         	 return false;
         }
         return true;
}*/

// Check zip code
function checkZipCode(zip)
{
	if (zip.length == 0) return true;
        if (zip.length!=5 && zip.length!=10)
        {
           return false;
        }

         for(var k = 0; k < zip.length;k++)
         {
             var c = zip.substring(k,k+1);
             if((c == "-" && k!=5) || (c != "-" && k==5))
             {
             return false;
             }
         }

	return true;
}

// Check number
function checkNumber(number, authorizeDot, unsigned)
{
	if (isNaN(number)) return false;
	if (!authorizeDot && number.indexOf('.') > -1) return false;
	if (!unsigned && number.charAt(0) == '-') return false;
	return true;
}

// Check checkbox array required
function checkChkBoxesArray(fieldName)
{
	if (fieldName.length != null)
	{
		for (var i=0 ; i<fieldName.length ; i++)
		{
			if (fieldName[i].checked) return true;
		}
		return false;
	}
	else return fieldName.checked;
}

// Check email
function checkEmail(email)
{
		if (email.length == 0) return true;
        for(var k = 0; k < email.length;k++)
        {
                var c = email.substring(k,k+1);
                if(c == "@")
                {
                        return true;
                }
        }
	return false;
}

// Check phone
function checkPhone(phone)
{
	if (phone.length == 0) return true;
        if (phone.length!=12)
        {
           return false;
        }
        else
        {
            for(var k = 0; k < phone.length;k++)
            {
                var c = phone.substring(k,k+1);
                if((c == "-" && k!=3 && k!=7) || (c != "-" && k==3) || (c != "-" && k==7))
                {
                 return false;
                }
            }
        }

	return true;
}

// Check date
function checkDate(f, date, label)
{
	var field = f.elements[date];
	var fieldMonth = f.elements[date + '_month'];
	var fieldDay = f.elements[date + '_day'];
	var fieldYear = f.elements[date + '_year'];
	
	field.value = '';
	if (!fieldMonth.disabled)
	{	
		 if (fieldMonth.value=='' && fieldDay.value=='' && fieldYear.value=='') return true;
		 
         if (fieldMonth.value=='' || fieldDay.value=='' || fieldYear.value=='')
         {
         	alert(label+" is not completely filled");
         	fieldMonth.focus();
         	return false;
         }

		 field.value = fieldYear.value + '-' + pad(fieldMonth.value,2,'0') + '-' + pad(fieldDay.value,2,'0');
         var d2=new Date(fieldYear.value,fieldMonth.value-1,fieldDay.value);
         j2=d2.getDate();
         m2=d2.getMonth()+1;
         a2=d2.getYear();
         if (a2<=300) {a2=1900+a2;}
         if ( (fieldDay.value!=j2)||(fieldMonth.value!=m2)||(fieldYear.value!=a2) ) {
         	alert(label+" is incorrect");
         	fieldMonth.focus();
         	 return false;
         }
	}
	return true;
}

function listDoubleField(firstDropdown, secondDropdown, values, labels)
{
	if (firstDropdown.selectedIndex == 0)
	{
		fillDropdown(secondDropdown, '', '');
	}
	else
	{
		fillDropdown(secondDropdown, values[firstDropdown.selectedIndex-1], labels[firstDropdown.selectedIndex-1]);
	}
}

function fillDropdown(dropdown, values, labels)
{
	if (values == '')
	{
	  dropdown.style.display = 'none';
	}
	else
	{
	  dropdown.selectedIndex = 0;
	  dropdown.options.length = '1';
	  for(var i=0 ; i<values.length ; i++)
	  {
	    dropdown.options[i+1] = new Option(values[i], labels[i]);
	  }
	  dropdown.style.display = '';
	}
}

function removeExistingImage(f, fieldName, imgName)
{
	if (!confirm("Are you sure you want to remove the existing image : "+imgName+" ?"))
	{
		return;
	}
	else
	{
		document.getElementById('div_existing_image_' + fieldName).innerHTML = "<font class='form_font'>Image removed</font>";
		f.elements[fieldName+'_remove'].value = '1';
	}
}

function requiredError(msg)
{
   alert("Please fill in the "+msg);
}

function hideLine(val, line, displayValues)
{
	var found = false;
	for(var i=0 ; i<displayValues.length ; i++)
	{
	  if (val == displayValues[i]) found = true;
	}
	if (found) line.style.display = '';
	else line.style.display = 'none';
}

function checkWordLength(val, maxWordLength)
{
	var splitString = val.split(" ");
	for(var i=0 ; i<splitString.length ; i++)
	{
		var splitString2 = splitString[i].split("\n");
		for(var j=0 ; j<splitString2.length ; j++)
		{	
			if (splitString2[j].length > maxWordLength) return splitString2[j];
		}
	}
	return null;
}

function contains(haystack, needle)
{
	return haystack.toLowerCase().indexOf(needle.toLowerCase()) != -1;
}

function checkLine(form, prefix, lineId, colKeys, checked)
{
	for (var i=0 ; i<colKeys.length ; i++)
	{
		var chk = form.elements[prefix + '_' + lineId + '_' + colKeys[i]];
		if (chk != null) chk.checked = checked;
	}
}

function checkColumn(form, prefix, colId, lineKeys, checked)
{
	for (var i=0 ; i<lineKeys.length ; i++)
	{
		var chk = form.elements[prefix + '_' + lineKeys[i] + '_' + colId];
		if (chk != null) chk.checked = checked;
	}
}

function checkAll(form, prefix, lineKeys, colKeys, checked)
{
	for (var i=0 ; i<lineKeys.length ; i++)
	{
		for (var j=0 ; j<colKeys.length ; j++)
		{
			var chk = form.elements[prefix + '_' + lineKeys[i] + '_' + colKeys[j]];
			if (chk != null) chk.checked = checked;
		}
	}
}

function refreshForm(form)
{
	form.token.value = '';
	form.submit();
}
