// JavaScript Document
/**
 * check if the field is empty
 */
function isEmpty(s) {
	if (s.length == 0) return true;
	if (trim(s).length == 0) return true;
	return false;
}

function trim(s) {
	
	var i = 0;
	while(isspace(s.charAt(i))) i++;
	if (i == s.length) return new String('');
		
	var j = s.length - 1;
	while(isspace(s.charAt(j))) j--;
		
	return s.substring(i, j + 1);
}

function isspace(c) {
	if (c == ' ') return true;
	if (c == '\n') return true;
	return false;
}

//	TODO: check the function
function isEmail(s) {
	return isValidEmail(s);
}

/**
 * Validates the email address.
 */
function isValidEmail(s) {
	var v = trim(s);
	var we_had_monkey = false, relief = true;
	var we_had_dot = false;
	var count = 0;
	
	// sta je dobra email adresa?
	// mora da ima jedno majmunce
	// ne sme da ima razmake, moze da ima slova, cifre, crtice
	for(i = 0; i < v.length; i++) {
		c = v.charAt(i);
		count++;
		
		// tacka ne sme da ide iza majmunceta i
		// dve tacke ne smeju da idu jedna za drugom
		if (we_had_monkey == true) {
			if (c == '.') {
				we_had_dot = true;
				if (relief == true) {
					relief = false;
					continue;
				} else {
					return false;
				}
			}
			if (relief == false) relief = true;
		} else {
			if (c == '.') continue;
			if (c == '@') {
				// ima li znakova ispred majmunceta?
				if (count == 1) {
					return false;
				}
				count = 0;
				we_had_monkey = true;
				relief = false;
				continue;
			}
		}
		
		// standardno, slova, cifre i crtice su dozvoljeni
		if ((c >= 'a')&&(c <= 'z')) continue;
		if ((c >= 'A')&&(c <= 'Z')) continue;
		if ((c >= '0')&&(c <= '9')) continue;
		if ((c == '-')||(c == '_')) continue;
		if ((c == "'")) continue;
		
		return false;
	}
	
	
	// vracamo netacno ako nismo imali majmunce
	if (we_had_monkey == false) return false;
	else {
		// vracamo netacno ako je majmunce poslednji znak
		if (c == '@') return false;
		if (c == '-') return false;
		if (c == '_') return false;
		if (c == "'") return false;
		// vracamo netacno i ako je tacka poslednji znak i pretposlednji znak
		if ((c == '.')||(v.charAt(i-2) == '.')) return false;
		// vracamo netacno i ako nismo imali tacku posle majmunceta
		if (we_had_dot == false) return false;
		// vracamo netacno i ako je pred
	}
	return true;
}



function isFloat(string) {
	return isNaN(parseFloat(string));
}

/**
 * Checks whether parameter is a number.
 */
function isNumber(s) {
	var v = trim(s);
	var i, c, we_had_dot = false;
	
	for(i = 0; i < v.length; i++) {
		c = v.charAt(i);
		if (i == 0) if ((c == '-')||(c == '+')) continue;
		if ((c == '.')&&(we_had_dot == false)) {
			we_had_dot = true;
			continue;
		}
		if ((c < '0') || (c > '9')) return false;
	}
	
	// todo: ubaciti da vrednosti 2*10^8 budu neke globalne promenljive cija se vrednost lako moze izmeniti
	if (v > 2000000000 || v < -2000000000) {
		return false;
	}
	
	return true;
}


/**
 *	Check if the supplied string is an image
 *	
 *	Note: check is the image mandatory using isEmpty() before
 */
function isImage(filename) {
	filename = trim(filename).toLowerCase();
	if (filename == '') return true;
	var l = filename.length;
	if (l < 5) return false;
	if (filename.substr(l - 4) == '.jpg') return true;
	if (filename.substr(l - 4) == '.gif') return true;
	if (filename.substr(l - 5) == '.jpeg') return true;
	
	return false;
}

/**
 *	Check if the supplied number is positive integer
 *	
 *	
 */

function isPosInteger(inputVal) {
	inputStr = inputVal.toString();
	for (var i = 0; i < inputStr.length; i++) {
		var oneChar = inputStr.charAt(i);
		if (oneChar < '0' || oneChar > '9') {
			return false;
		}
	}
	return true;
	
}

/*
 *
 *  Format Number
 *
 *
 */
/*
	This variables must be included in script:
	
	var separator = ',';  
	var decpoint = '.'; 
	var percent = '%';
	var currency = '$'; 
	
 */
 
function formatNumber(number, format, print) {  
    if (print) document.write("formatNumber(" + number + ", \"" + format + "\")<br>");

    if (number - 0 != number) return null; 
    var useSeparator = format.indexOf(separator) != -1; 
    var usePercent = format.indexOf(percent) != -1; 
    var useCurrency = format.indexOf(currency) != -1; 
    var isNegative = (number < 0);
    number = Math.abs (number);
    if (usePercent) number *= 100;
    format = strip(format, separator + percent + currency); 
    number = "" + number;


    var dec = number.indexOf(decpoint) != -1;
    var nleftEnd = (dec) ? number.substring(0, number.indexOf(".")) : number;
    var nrightEnd = (dec) ? number.substring(number.indexOf(".") + 1) : "";


    dec = format.indexOf(decpoint) != -1;
    var sleftEnd = (dec) ? format.substring(0, format.indexOf(".")) : format;
    var srightEnd = (dec) ? format.substring(format.indexOf(".") + 1) : "";


    if (srightEnd.length < nrightEnd.length) {
      var nextChar = nrightEnd.charAt(srightEnd.length) - 0;
      nrightEnd = nrightEnd.substring(0, srightEnd.length);
      if (nextChar >= 5) nrightEnd = "" + ((nrightEnd - 0) + 1);

      while (srightEnd.length > nrightEnd.length) {
        nrightEnd = "0" + nrightEnd;
      }

      if (srightEnd.length < nrightEnd.length) {
        nrightEnd = nrightEnd.substring(1);
        nleftEnd = (nleftEnd - 0) + 1;
      }
    } else {
      for (var i=nrightEnd.length; srightEnd.length > nrightEnd.length; i++) {
        if (srightEnd.charAt(i) == "0") nrightEnd += "0";  
        else break;
      }
    }


    sleftEnd = strip(sleftEnd, '#');
    while (sleftEnd.length > nleftEnd.length) {
      nleftEnd = "0" + nleftEnd; 
    }

    if (useSeparator) nleftEnd = separate(nleftEnd, separator);
    var output = nleftEnd + ((nrightEnd != "") ? "." + nrightEnd : ""); 
    output = ((useCurrency) ? currency : "") + output + ((usePercent) ? percent : "");
    if (isNegative) {
      output = (useCurrency) ? "(" + output + ")" : "-" + output;
    }
    return output;
}

function strip(input, chars) {  
    var output = ""; 
    for (var i=0; i < input.length; i++)
      if (chars.indexOf(input.charAt(i)) == -1)
        output += input.charAt(i);
    return output;
}

function separate(input, separator) { 
    input = "" + input;
    var output = "";  
    for (var i=0; i < input.length; i++) {
      if (i != 0 && (input.length - i) % 3 == 0) output += separator;
      output += input.charAt(i);
    }
    return output;
}

function isPositiveNumber(s) {
	var v = trim(s);
	var i, c, we_had_dot = false;
	
	for(i = 0; i < v.length; i++) {
		c = v.charAt(i);
		if (i == 0) if (c == '+') continue;
		if ((c == '.')&&(we_had_dot == false)) {
			we_had_dot = true;
			continue;
		}
		if ((c < '0') || (c > '9')) return false;
	}
	if (v > 2000000000 || v < -2000000000) {
		return false;
	}
	return true;
}

//To check for valid image filename
	function isImageFile(s)
	{
		s = s.toLowerCase();
		var i = s.indexOf('.');
		if((i == -1) || (i == 0)) return false;
		var str = s.substring(i);
		//alert(str);
		if(str == '.jpg') return true;
		if(str == '.gif') return true;
		if(str == '.png') return true;
		return false;
	}
	
	
function createRequestObject()
{
var ObjXMLHttp=null;
if (window.XMLHttpRequest)
ObjXMLHttp=new XMLHttpRequest();
else if (window.ActiveXObject)
ObjXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
return ObjXMLHttp;
}

	function isInteger(s)	{
		var i;
		for (i = 0; i < s.length; i++)	{
		var c = s.charAt(i);
		if (((c < "0") || (c > "9")))
		return false;
		}
		// All characters are numbers.
		return true;
	}
	
	//to chech price format
	function isPrice(s) {
	var v = trim(s);
	var i, c, we_had_dot = false;
	
	for(i = 0; i < v.length; i++) {
		c = v.charAt(i);
		if ((c == '.')&&(we_had_dot == false)) {
			we_had_dot = true;
			continue;
		}
		if ((c < '0') || (c > '9')) return false;
	}
	
	return true;
	}
	
	//to check photo format
	function isimage(s)
	{
		s = s.toLowerCase();
		var i = s.indexOf('.');
		if((i == -1) || (i == 0)) return false;
		var str = s.substring(i);
		//alert(str);
		if(str == '.jpg') return true;
		if(str == '.gif') return true;
		if(str == '.png') return true;
		return false;
	}
	
//===============================TO CHECK PHONE NUMBER=============================================

	var digits = "0123456789";
	var phoneNumberDelimiters = "()- ";
	var validWorldPhoneChars = phoneNumberDelimiters + "+";
	var minDigitsInIPhoneNumber = 10;

	function isInteger(s)	{
	   var i;
		for (i = 0; i < s.length; i++)	{
			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++)	{
			// Check that current character isn't whitespace.
			var c = s.charAt(i);
			if (bag.indexOf(c) == -1) returnString += c;
		}
		return returnString;
	}

	function checkInternationalPhone(strPhone)	{
		s=stripCharsInBag(strPhone,validWorldPhoneChars);
		return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
	}
	
			function validate_phonenumber(s)
		{
				if ((s==null)||(s=="")){
				//alert("Please Enter your Phone Number");
				//Phone.focus();
				return false;
			}
			if (checkInternationalPhone(s)==false){
				//alert("Please Enter a Valid Phone Number");
				//Phone.value="";
				//Phone.focus();
				return false;
			}
			return true;
		}
//=======================================================================================================

/* Section : function to validate alpha_numeric values */
function isAlphanumeric(elem){
	var alphaExp = /^[0-9a-zA-Z]+$/;
	if(elem.match(alphaExp)){
		return true;
	}
		return false;
}/* End Section : function to validate alpha_numeric values */


