/**
 * Utility files
 * Közös admin és user oldali util függvények
 */


if ( typeof(console) == "undefined" ) console = {log:function(){}};

util = {};

util.isArray = function(obj) {
   if (obj.constructor.toString().indexOf("Array") == -1)
      return false;
   else
      return true;
};
	
util.readCookie = function(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;
};

util.form2obj = function( FormId ) {
	data = {};
    var formElem;
    Form = document.getElementById( FormId );
	 if ( Form == null ) throw ('Not exists: '+FormId); 
    for (i = 0; i < Form.elements.length; i++) {
    	formElem = Form.elements[i];
    	if ((formElem.type == "checkbox")||(formElem.type == "radio")) {
           if (formElem.checked) {
           		var value;
					if ( formElem.value == '' ) {
						value = 'on';
           		}else{
					  	value = formElem.value;
           		}
					if ( typeof(data[formElem.name]) == 'undefined' ) {
						data[formElem.name] = value;
					}else if ( typeof(data[formElem.name]) != 'undefined' && typeof(data[formElem.name]) != 'object' ) {
						// még nem array
						data[formElem.name] = [data[formElem.name]];
						data[formElem.name].push(value);
					}else{
						// object, már array!
						data[formElem.name].push(value);
					}
					
           } 
        }else{
		  	data[formElem.name] = formElem.value;
//			data.push( sa.createNVArray(formElem.name, formElem.value) );
        }
    }
    return data;
};
	
util.ajaxMedianWebaudit = function() {
	if ( typeof(WEBAUDIT_UC_AJAX) == "undefined" ) return;
	var uc = WEBAUDIT_UC_AJAX;
	
	/* medianwebaudit.js a kapott etalon kód, ebből kivágva a frissítéshez szükséges kód */
	var same =  Math.floor(Math.random()*1000000);
	var wa=new WEBAUDIT();
	var felbontas = "";
	var wa_url = "@u=";
	var wa_referrer = "@r=";
	
	if(wa.WACID==null)
	{
	  wa.WACID=wa.generateID('A');
	  wa.setCookie(wa.WACIDName,wa.WACID,wa.getTopDomain(wa.getDomain(document.URL)));
	}
	
	same = same + "@c=" + wa.WACID;
	if(screen) felbontas='@s='+screen.width+'x'+screen.height;
	if(document.referrer) wa_referrer=wa_referrer+document.referrer;
	if(document.URL) wa_url=wa_url+document.URL;
	same = same + felbontas + wa_url + wa_referrer;
	if (!document.getElementById("MedianContainer")) {
		mc = document.createElement("div");
		mc.id = "MedianContainer";
		mc.style.display = "none";
		document.body.appendChild(mc);
	}
	mc = document.getElementById("MedianContainer");
	mc.innerHTML = '<img style="position:absolute;top:-100px;left:-100px" src="http://audit.median.hu/cgi-bin/track.cgi?uc='+uc+'&dc=1&ui='+same+'" width="1" height="1">';
};
	
util.openads = function( adid, adstring ) {
	var temp = document.getElementById(adid);
	if ( typeof(temp) == "object" && temp!=null && typeof(adstring) == "string" ) {
		temp.innerHTML = adstring.replace(/INSERT_RANDOM_NUMBER_HERE/, Math.random());
	}
};

util.mysql2date = function(datetime) {
	//function parses mysql datetime string and returns javascript Date object
	//input has to be in this format: 2007-06-05 15:26:02
	var regex=/^([0-9]{2,4})-([0-1][0-9])-([0-3][0-9]) (?:([0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/;
	var parts=datetime.replace(regex,"$1 $2 $3 $4 $5 $6").split(' ');
	return new Date(parts[0],parts[1]-1,parts[2],parts[3],parts[4],parts[5]);
};

util.sprintf = function () {
	// function from http://forums.devshed.com/t39065/s84ded709f924610aa44fff827511aba3.html
	// author appears to be Robert Pollard
   if (!arguments || arguments.length < 1 || !RegExp)
   {
      return;
   }
   var str = arguments[0];
   var re = /([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X)(.*)/;
   var a = b = [], numSubstitutions = 0, numMatches = 0;
   while (a = re.exec(str))
   {
      var leftpart = a[1], pPad = a[2], pJustify = a[3], pMinLength = a[4];
      var pPrecision = a[5], pType = a[6], rightPart = a[7];

      numMatches++;
      if (pType == '%')
      {
         subst = '%';
      }
      else
      {
         numSubstitutions++;
         if (numSubstitutions >= arguments.length)
         {
            alert('Error! Not enough function arguments (' + (arguments.length - 1)
               + ', excluding the string)\n'
               + 'for the number of substitution parameters in string ('
               + numSubstitutions + ' so far).');
         }
         var param = arguments[numSubstitutions];
         var pad = '';
                if (pPad && pPad.substr(0,1) == "'") pad = leftpart.substr(1,1);
           else if (pPad) pad = pPad;
         var justifyRight = true;
                if (pJustify && pJustify === "-") justifyRight = false;
         var minLength = -1;
                if (pMinLength) minLength = parseInt(pMinLength);
         var precision = -1;
                if (pPrecision && pType == 'f')
                   precision = parseInt(pPrecision.substring(1));
         var subst = param;
         switch (pType)
         {
         case 'b':
            subst = parseInt(param).toString(2);
            break;
         case 'c':
            subst = String.fromCharCode(parseInt(param));
            break;
         case 'd':
            subst = parseInt(param) ? parseInt(param) : 0;
            break;
         case 'u':
            subst = Math.abs(param);
            break;
         case 'f':
            subst = (precision > -1)
             ? Math.round(parseFloat(param) * Math.pow(10, precision))
              / Math.pow(10, precision)
             : parseFloat(param);
            break;
         case 'o':
            subst = parseInt(param).toString(8);
            break;
         case 's':
            subst = param;
            break;
         case 'x':
            subst = ('' + parseInt(param).toString(16)).toLowerCase();
            break;
         case 'X':
            subst = ('' + parseInt(param).toString(16)).toUpperCase();
            break;
         }
         var padLeft = minLength - subst.toString().length;
         if (padLeft > 0)
         {
            var arrTmp = new Array(padLeft+1);
            var padding = arrTmp.join(pad?pad:" ");
         }
         else
         {
            var padding = "";
         }
      }
      str = leftpart + padding + subst + rightPart;
   }
   return str;
}

