if (!Number.toFixed) {
	Number.prototype.toFixed=function(x) {
	   var temp=this;
	   temp=Math.round(temp*Math.pow(10,x))/Math.pow(10,x);
	   return temp;
	};
}

function in_array(needle, haystack, strict) {
    var found = false, key, strict = !!strict;
 
    for (key in haystack) {
        if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
            found = true;
            break;
        }
    }
 
    return found;
}

window.array_intersect = function() {
    // Returns the entries of arr1 that have values which are present in all the other arguments  
    // 
    // version: 905.3122
    // discuss at: http://phpjs.org/functions/array_intersect
    // +   original by: Brett Zamir (http://brett-zamir.me)
    // %        note 1: These only output associative arrays (would need to be
    // %        note 1: all numeric and counting from zero to be numeric)
    // *     example 1: $array1 = {'a' : 'green', 0:'red', 1: 'blue'};
    // *     example 1: $array2 = {'b' : 'green', 0:'yellow', 1:'red'};
    // *     example 1: $array3 = ['green', 'red'];
    // *     example 1: $result = array_intersect($array1, $array2, $array3);
    // *     returns 1: {0: 'red', a: 'green'}
    var arr1 = arguments[0], retArr = {};
    var k1 = '', arr = {}, i = 0, k = '';
    
    arr1keys:
    for (k1 in arr1) {
        arrs:
        for (i=1; i < arguments.length; i++) {
            arr = arguments[i];
            for (k in arr) {
                if (arr[k] === arr1[k1]) {
                    if (i === arguments.length-1) {
                        retArr[k1] = arr1[k1];
                    }
                    // If the innermost loop always leads at least once to an equal value, continue the loop until done
                    continue arrs;
                }
            }
            // If it reaches here, it wasn't found in at least one array, so try next value
            continue arr1keys;
        }
    }

    return retArr;
}


function array_merge() {
    // http://kevin.vanzonneveld.net
    // +   original by: Brett Zamir (http://brettz9.blogspot.com)
    // +   bugfixed by: Nate
    // -    depends on: is_int
    // %          note: Relies on is_int because !isNaN accepts floats     
    // *     example 1: arr1 = {"color": "red", 0: 2, 1: 4}
    // *     example 1: arr2 = {0: "a", 1: "b", "color": "green", "shape": "trapezoid", 2: 4}
    // *     example 1: array_merge(arr1, arr2)
    // *     returns 1: {"color": "green", 0: 2, 1: 4, 2: "a", 3: "b", "shape": "trapezoid", 4: 4}
    // *     example 2: arr1 = []
    // *     example 2: arr2 = {1: "data"}
    // *     example 2: array_merge(arr1, arr2)
    // *     returns 2: {1: "data"}
    
    var args = Array.prototype.slice.call(arguments);
    var retObj = {}, k, j = 0, i = 0;
    var retArr;
    
    for (i=0, retArr=true; i < args.length; i++) {
        if (!(args[i] instanceof Array)) {
            retArr=false;
            break;
        }
    }
    
    if (retArr) {
        return args;
    }
    var ct = 0;
    
    for (i=0, ct=0; i < args.length; i++) {
        if (args[i] instanceof Array) {
            for (j=0; j < args[i].length; j++) {
                retObj[ct++] = args[i][j];
            }
        } else {
            for (k in args[i]) {
                if (is_int(k)) {
                    retObj[ct++] = args[i][k];
                } else {
                    retObj[k] = args[i][k];
                }
            }
        }
    }
    
    return retObj;
}

function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}

/******************** END LIBRARY ************************/

function setFocusValue(obj,def){
	if(parseFloat(obj.value)==0){
		return def;
	}
	return obj.value;
}

function setBlurValue(obj,def){
	if(parseFloat(obj.value)==0 || obj.value==''){
		return def;
	}
	return obj.value;
}

function setBlurValueWithMax(obj,def,max){
	if(parseFloat(obj.value)==0 || obj.value==''){
		return def;
	}else if(parseFloat(obj.value)>max){
		return max;
	}
	return obj.value;
}

function isValidRange(obj,key,minv,maxv){
	var n = obj.value;
	if(parseFloat(n)>=maxv) return false;
	var key = key=='.'?('.0'):key;
	var ret=n+''+key;
	if (ret.charAt(0)=='.') return false;
	return (parseFloat(ret)>=minv && parseFloat(ret)<=maxv)?true:false;
}

function numbersOnly(myfield, e, dec, min, minval,maxval){
	// trimcara manggil numbersonly(this,event, true/false, true/false) --> true/false untuk decimal dan nilai minus
	// onKeyPress="return numbersOnly(this,event,true,true)"

	var minv = parseFloat(minval);
	if(isNaN(minv)) minv = 0;

	var maxv = parseFloat(maxval);
	if(isNaN(maxv)) maxv = 100000000000000000000000;

	var key;
	var keychar;

	if (window.event)
	   key = window.event.keyCode;
	else if (e)
	   key = e.which;
	else
	   return true; //isValidRange(this,minv,maxv);
	
	keychar = String.fromCharCode(key);

	// control keys
	if ((key==null) || (key==0) || (key==8) || 
		(key==9) || (key==13) || (key==27) )
	   return true; //isValidRange(myfield,keychar,minv,maxv);
	else if ((("0123456789").indexOf(keychar) > -1))
	   return isValidRange(myfield,keychar,minv,maxv);
	else if (dec && (keychar == ".")) { 
	    return myfield.value.indexOf('.')==-1 ? isValidRange(myfield,keychar,minv,maxv) : false;
	}else if(min && (keychar == "-")){			
  	   return isValidRange(myfield,keychar,minv,maxv);
	}else
	   return false;
}

function getViewTab(id, names, selected){
	for ( var i in names ){
		if(id==names[i]){
			$(id).style.display="block";
			$("li_"+id).className=selected;
		}else{
			if($(names[i]) && $(names[i]).style){
				$(names[i]).style.display="none";
				$("li_"+names[i]).className="";
			}
		}
	} 
}

function getViewTab2(id, names, selected){
	for ( var i in names ){
		if(id==names[i]){
			document.getElementById(id).style.display="block";
			document.getElementById("li_"+id).className=selected;
		}else{
			if(document.getElementById(names[i])){
				document.getElementById(names[i]).style.display="none";
				document.getElementById("li_"+names[i]).className="";
			}
		}
	} 
}

/************************************************************************/

function getFirstChecked(formName, kompName, strTombol){
	var fmobj = document.getElementById(formName);
	var valueFirst = "";
	var j=0;
	kompName=kompName+"[]";
	for (var i=0;i<fmobj.elements.length;i++) {
		var e = fmobj.elements[i];
		if ((e.name == kompName) && (e.type=="checkbox")) {
			if (e.checked) {
				if(valueFirst == ""){
					valueFirst=e.value;	
				}						
				j++;
			}
		}
	}

	var valert='';
	switch(strTombol){
		case 'edit' :
			valert='dikoreksi'; break;
		case 'tambah' :
			valert='ditambah'; break;
		case 'hapus' :
			valert='dihapus'; break;
		case 'lihat' :
			valert='dilihat'; break;
		case 'refresh' :
			valert='refresh'; break;
		default:
			valert='dikoreksi'; break;
	}

	if(strTombol!='refresh'){
		if(j==0){
			alert('* Anda belum memilih item untuk '+valert+'!');
			return '';
		}else if(j>1){
			alert('* Anda memilih lebih dari 1 item untuk '+valert+'!');
			return '';
		}else{
			return valueFirst;
		}
	}else{
		return valueFirst;
	}
}

function getAllChecked(formName, kompName, separator){
	var fmobj = document.getElementById(formName);
	var val = [];
	var j=0;
	kompName=kompName+"[]";
	for (var i=0;i<fmobj.elements.length;i++) {
		var e = fmobj.elements[i];
		if ((e.name == kompName) && (e.type=="checkbox")) {
			if (e.checked) {
				val[j]=e.value;
				j++;
			}
		}
	}
	if(val.length > 0){
		return val.join(separator);
	}else{
		if(separator!='#ref#'){
			alert('* Anda belum memilih item!');
		}
		return "";
	}
}

function getCountCheckedByStr(formName, kompName, posisi, n, pattern){
	/*
	posisi 1:awal 2:belakang 
	n berapa char yg akan d bandingkan
	pattern string pembanding
	*/
	var fmobj = document.getElementById(formName);
	var val = [];
	var j=0;
	kompName=kompName+"[]";
	for (var i=0;i<fmobj.elements.length;i++) {
		var e = fmobj.elements[i];
		if ((e.name == kompName) && (e.type=="checkbox")) {
			if (e.checked) {
				if(posisi=1){
					if(e.value.substr(0,n)==pattern){
						j++;		
					}
				}
			}
		}
	}
	return j;
}

function setAllChecked(val, formName, kompName, separator){
	var fmobj = document.getElementById(formName);
	var val_arr=val.split(separator);
	kompName=kompName+"[]";
	for (var i=0;i<fmobj.elements.length;i++) {
		var e = fmobj.elements[i]; 
		if ((e.name == kompName) && (e.type=="checkbox")) {
			if (in_array(e.value,val_arr)) {
				e.checked=true;
			}
		}
	}
}



function spinCtrlPrintOut(sender, newVal){
	document.getElementById('print_' + sender.Tag).value = newVal ;
}

function createSpin(id,cur,min,max){
	min = parseFloat(min);
	if(isNaN(min)) min = '';

	max = parseFloat(max);
	if(isNaN(max)) max = '';

	cur = parseFloat(cur);
	if(isNaN(max)) cur = '';

	var spinCtrl = new SpinControl();
	spinCtrl.Tag = id;
	spinCtrl.GetAccelerationCollection().Add(new SpinControlAcceleration(0, 500));
	document.getElementById(id).appendChild(spinCtrl.GetContainer(cur,min,max));
	spinCtrl.AttachValueChangedListener(spinCtrlPrintOut);
	spinCtrl.StartListening();
}

function lihatLog(formName,scriptName){
	var valueFirst=getFirstChecked(formName,'cek','lihat');
	if(valueFirst != ''){			
		var modul = 'http://'+scriptName+'/logSiswa/log/kode/'+valueFirst;
		window.location.href=modul;
	}
}
