/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */
/*  Checks if the given value exists in the array                                                                                 */
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */

function in_array( needle, haystack, argStrict ) {
    var key = '', strict = !! argStrict;
 
    if( strict ) {
        for( key in haystack ) {
            if( haystack[key] === needle ) {
               return true;
            }
        }
    } else {
        for( key in haystack ) {            
            if( haystack[key] == needle ) {
                return true;
            }
        }
    } 
    
    return false;
}

/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */
/*  Returns true if value is a number or a numeric string                                                                         */
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */

function is_numeric( mixed_var ) {
    return (typeof(mixed_var) === 'number' || typeof(mixed_var) === 'string') && mixed_var !== '' && !isNaN(mixed_var);
}

/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */
/*  Returns the number rounded to specified precision                                                                             */
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */

function round( value, precision, mode ) {
    var m, f, isHalf, sgn; // helper variables    precision |= 0; // making sure precision is integer
    m = Math.pow(10, precision);
    value *= m;
    sgn = (value > 0) | -(value < 0); // sign of the number
    isHalf = value % 1 === 0.5 * sgn;   
    f = Math.floor(value);
 
    if( isHalf ) {
        switch (mode) {
           case 'PHP_ROUND_HALF_DOWN':            
               value = f + (sgn < 0); // rounds .5 toward zero
               break;
           case 'PHP_ROUND_HALF_EVEN':
               value = f + (f % 2 * sgn); // rouds .5 towards the next even integer
               break;        
           case 'PHP_ROUND_HALF_ODD':
               value = f + !(f % 2); // rounds .5 towards the next odd integer
               break;
           default:
               value = f + (sgn > 0); // rounds .5 away from zero        
        }
    }
 
    return (isHalf ? value : Math.round(value)) / m;
}

/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */
/*  Perform a regular expression search and replace (UNFINISHED)                                                                  */
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */

function preg_replace( pattern, replacement, subject, limit ){
    if(typeof limit == "undefined") limit = -1;
    
    if (subject.match(eval(pattern))) {
        if (limit == -1) { //no limit
            return subject.replace(eval(pattern + "g"), replacement);
        } else {

            for(x=0;x<limit;x++)
            {
                subject=subject.replace(eval(pattern),replacement);
            }

            return subject;
        }
    } else {
        return subject;
    }
}

/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */
/*  Funkcija, lau uzzinātu lietotāja pārlūkprogrammas nosaukumu un versiju                                                        */
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */
function getUserBrowser() {
   var res = new Array();   
   var nVer = navigator.appVersion;
   var nAgt = navigator.userAgent;
   var browserName  = navigator.appName;
   var fullVersion  = ''+parseFloat(navigator.appVersion); 
   var majorVersion = parseInt(navigator.appVersion,10);
   var nameOffset,verOffset,ix;
   
   // In MSIE, the true version is after "MSIE" in userAgent
   if ((verOffset=nAgt.indexOf("MSIE"))!=-1) {
      browserName = "Internet Explorer";
      fullVersion = nAgt.substring(verOffset+5);
   } else if ((verOffset=nAgt.indexOf("Opera"))!=-1) {
      // In Opera, the true version is after "Opera"       
      browserName = "Opera";
      fullVersion = nAgt.substring(verOffset+6);
   } else if ((verOffset=nAgt.indexOf("Chrome"))!=-1) {
      // In Chrome, the true version is after "Chrome"       
      browserName = "Chrome";
      fullVersion = nAgt.substring(verOffset+7);
   } else if ((verOffset=nAgt.indexOf("Safari"))!=-1) {
      // In Safari, the true version is after "Safari"      
      browserName = "Safari";
      fullVersion = nAgt.substring(verOffset+7);
   } else if ((verOffset=nAgt.indexOf("Firefox"))!=-1) {
      // In Firefox, the true version is after "Firefox"       
      browserName = "Firefox";
      fullVersion = nAgt.substring(verOffset+8);
   } else if ( (nameOffset=nAgt.lastIndexOf(' ')+1) < (verOffset=nAgt.lastIndexOf('/')) ) {
      // In most other browsers, "name/version" is at the end of userAgent       
      browserName = nAgt.substring(nameOffset,verOffset);
      fullVersion = nAgt.substring(verOffset+1);
            
      if (browserName.toLowerCase()==browserName.toUpperCase()) {
         browserName = navigator.appName;
      }
   }
      
   // trim the fullVersion string at semicolon/space if present
   if ((ix=fullVersion.indexOf(";"))!=-1) fullVersion=fullVersion.substring(0,ix);
   if ((ix=fullVersion.indexOf(" "))!=-1) fullVersion=fullVersion.substring(0,ix);
   
   majorVersion = parseInt(''+fullVersion,10);
      
   if (isNaN(majorVersion)) {
      fullVersion  = ''+parseFloat(navigator.appVersion); 
      majorVersion = parseInt(navigator.appVersion,10);
   }

   res.push( browserName ); //Browser name
   res.push( fullVersion ); //Full version
   res.push( majorVersion ); //Major version

   return res;
}

/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */
/*  Funkcijas čekboksu atzīmēšanai                                                                                                */
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */
function setChecked( thisElem, frmName, chkName ) {
	form = document.forms[frmName];
	len = form.elements.length;
   
   if( thisElem.checked == true ) {
   	for( i = 0; i < len; i++ ) {
   		if( form.elements[i].name == chkName ) {
   			form.elements[i].checked = true;
   		}
   	}
   } else {
   	for( i = 0; i < len; i++ ) {
   		if( form.elements[i].name == chkName ) {
   			form.elements[i].checked = false;
   		}
   	}
   }
}    

/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */
/*  Funkcijas javascript cepumiem                                                                                                 */
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */
function createCookie( name, value, days, chkElem ) {
   var cookieValue = readCookie( name );
   cookieValue = cookieValue != null ? cookieValue.split(',') : cookieValue;
   
   if( cookieValue instanceof Array && chkElem.checked == true ) {
      cookieValue[cookieValue.length] = value;
   } else if( cookieValue instanceof Array && chkElem.checked == false ) {
      // Izdzēš vērtību no cepuma
      var index = cookieValue.indexOf( value );
      if( index != -1 ) cookieValue.splice( index, 1 );
      if( cookieValue.length == 0 ) days = -1;
   } else {
      cookieValue = new Array( value );
      document.getElementById('infoText').style.display = '';
   }
   
   // Saglabā cepumu
   if( days ) {
      var date = new Date();
      date.setTime( date.getTime() + ( days*24*60*60*1000 ) );
      var expires = "; expires=" + date.toGMTString();
   } else {
      cookieValue = '';
      var expires = "";
   } 
   
   document.cookie = name + "=" + cookieValue + expires + "; path=/";
}

function saveAll( chkElem, frmName, chkName ) {
   setChecked( chkElem, frmName, chkName );
   
	form = document.forms[frmName];
	len = form.elements.length;
   
	for( i = 0; i < len; i++ ) {
		if( form.elements[i].name == chkName ) {
			createCookie( 'PriceList', form.elements[i].value, 1, form.elements[i] )
		}
	}
}

function readCookie( 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;
}

function showAltBank( selectElem ) {
   if( selectElem.value == 'new' ) {
      document.getElementById( 'altBank' ).style.display = '';
   } else {
      document.getElementById( 'altBank' ).style.display = 'none';
   }
}
