diff --git a/.idea/deployment.xml b/.idea/deployment.xml new file mode 100644 index 0000000..ce20129 --- /dev/null +++ b/.idea/deployment.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/desayuno.iml b/.idea/desayuno.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/.idea/desayuno.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..28a804d --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..47d1fcb --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..4c8203c --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,434 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + sistema + enviar + faltantes + env + comple + completos + guardad + correc + datos + REPORT + desplie + correo + folio + edit + pa + email + ingresa + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ + +
+
+
+

+ + + + + + + + + + + + + + +

+ Aviso de privacidad


+ En cumplimiento a lo establecido por el Reglamento de Transparencia, Acceso a la Información Pública y Protección de Datos Personales para la Universidad Nacional Autónoma de México, con domicilio en Av. Universidad No. Exterior 3000, Colonia Universidad Nacional Autónoma de México C. U., Delegación Coyoacán, CP. 04510, México Distrito Federal, es la única responsable de la protección y tratamiento de tus datos personales.

+ Los datos personales que se solicitarán son nombre completo y correo electrónico, y serán utilizados única y exclusivamente para dar un seguimiento personalizado a las solicitudes de información de sitios "bajo dominio acatlan.unam.mx". Asimismo, informamos que tus datos personales no serán transferidos o tratados por personas distintas a la UNAM.

+ Tus datos personales han sido otorgados voluntariamente y la actualización y autenticidad de los mismos son tu responsabilidad. Si deseas ejercer cualquiera de los derechos de acceso, rectificación, cancelación u oposición, así como revocar el consentimiento para el tratamiento de los mismos, puedes solicitarlo a través del correo electrónico privacidad@apolo.acatlan.unam.mx.

+ Te informamos que en nuestra página web utilizamos cookies y otras tecnologías analíticas, a través de las cuales es posible brindarte un mejor servicio y experiencia al navegar en nuestra página, la información que se obtiene es totalmente anónima y no permite identificarte. Si no quieres que haya cookies actuando en tu interacción con las páginas del portal, puedes deshabilitarlas desde el navegador, considerando que podrán producirse limitaciones en cuanto a la funcionalidad del sitio web.

+ Cualquier modificación a este aviso de privacidad podrás consultarlo en la presente sección. +

+ +AddPage(); + //$pdf->Image("images/logo_dsc.png", 5, 5, 0, 0); + + //$pdf->SetFont('Arial','B',12); + //$pdf->Cell(0, 0, utf8_decode('Fecha de solicitud:')." ".$fecha, 0, 1, 'R'); + //$pdf->ln(8); + //$pdf->SetFont('Arial','B',12); + //$pdf->Cell(0, 0, utf8_decode('Número de solicitud:')." ".$datos['id_registro'], 0, 1, 'R'); + $pdf->ln(10); + $pdf->SetFont('Arial', 'B', 12); + $pdf->Cell(0, 0, utf8_decode('Nombre:'), 0, 1, 'L'); + $pdf->SetFont('Arial', '', 12); + $pdf->Cell(0, 0, utf8_decode($datos['nombre_completo']), 0, 1, 'C'); + + /* + $pdf->ln(10); + $pdf->SetFont('Arial', 'B', 12); + $pdf->Cell(0, 0, utf8_decode('e-mail:'), 0, 1, 'L'); + $pdf->SetFont('Arial', '', 12); + $pdf->Cell(0, 0, $datos['correo'], 0, 1, 'C'); + */ + + $pdf->ln(10); + $pdf->SetFont('Arial', 'B', 12); + $pdf->Cell(0, 0, utf8_decode('Generación:'), 0, 1, 'L'); + $pdf->SetFont('Arial', '', 12); + $pdf->Cell(0, 0, $datos['generacion'], 0, 1, 'C'); + + $pdf->ln(10); + $pdf->SetFont('Arial', 'B', 12); + $pdf->Cell(0, 0, utf8_decode('Carrera:'), 0, 1, 'L'); + $pdf->SetFont('Arial', '', 12); + $pdf->Cell(0, 0, $datos['carrera'], 0, 1, 'C'); + + $pdf->ln(10); + $pdf->SetFont('Arial', 'B', 12); + $pdf->Cell(0, 0, utf8_decode('Asignado a mesa:'), 0, 1, 'L'); + $pdf->SetFont('Arial', '', 12); + $pdf->Cell(0, 0, $datos['mesa'], 0, 1, 'C'); + + $pdf->ln(10); + $pdf->SetFont('Arial', '', 12); + $pdf->Cell(0, 0, $datos['sistema'], 0, 1, 'C'); + + $pdf->ln(12); + $pdf->Cell(0, 0, "", 1, 1, 'L'); + $pdf->ln(12); + + $pdf->SetFont('Arial','B',40); + $pdf->Cell(0, 0, utf8_decode('MAGNO DESAYUNO'), 0, 1, 'L'); + $pdf->ln(12); + $pdf->SetFont('Arial','B',16.5); + $pdf->Cell(0, 0, utf8_decode('MULTIDISCIPLINARIO PARA EGRESADOS DE LA'), 0, 1, 'L'); + + $pdf->ln(12); + $pdf->SetFont('Arial','B',38); + $pdf->Cell(0, 0, utf8_decode('FES ACATLÁN UNAM'), 0, 1, 'L'); + + $pdf->ln(12); + $pdf->SetFont('Arial','B',15); + $pdf->Cell(0, 0, utf8_decode('CENTRO DE ESTUDIOS MUNICIPALES'), 0, 1, 'L'); + + $pdf->ln(8); + $pdf->SetFont('Arial','B',15); + $pdf->Cell(0, 0, utf8_decode('Y METROPOLITANOS'), 0, 1, 'L'); + + $pdf->ln(8); + $pdf->SetFont('Arial','B',15); + $pdf->Cell(0, 0, utf8_decode('27 octubre 2018 - 8:15 horas'), 0, 1, 'L'); + + $pdf->ln(8); + $pdf->SetFont('Arial','B',15); + $pdf->Cell(0, 0, utf8_decode('DONATIVO $350.00'), 0, 1, 'L'); + + + $pdf->ln(8); + $pdf->SetFont('Arial','',10); + $pdf->Cell(0, 0, utf8_decode('CUPO LIMITADO'), 0, 1, 'L'); + + $pdf->ln(8); + $pdf->SetFont('Arial', '', 12); + $pdf->Code39(80, 160, $datos['id_registro'], 1, 13); + $pdf->ln(10); + } + + /* liberar el conjunto de resultados */ + mysqli_free_result($resultado); +} +mysqli_close($con); +$pdf->Output(); diff --git a/public_html/comprobante.php b/public_html/comprobante.php new file mode 100644 index 0000000..7b1e1ba --- /dev/null +++ b/public_html/comprobante.php @@ -0,0 +1,144 @@ +AddPage(); +$pdf->Image("images/logo_dsc.png", 5, 5, 0, 0); + +$pdf->SetFont('Arial','B',12); +$pdf->Cell(0, 0, utf8_decode('Fecha de solicitud:')." ".$fecha, 0, 1, 'R'); +$pdf->ln(8); +$pdf->SetFont('Arial','B',12); +$pdf->Cell(0, 0, utf8_decode('Número de solicitud:')." ".$datos['id_solicitud'], 0, 1, 'R'); + +$pdf->ln(50); +$pdf->SetFont('Arial','B',20); +$pdf->Cell(0, 0, utf8_decode('Solicitud préstamo de salas de cómputo'), 0, 1, 'C'); +$pdf->ln(12); +$pdf->Cell(0, 0, "", 1, 1, 'L'); +$pdf->ln(12); + +$pdf->SetFont('Arial','B',12); +$pdf->Cell(0, 0, utf8_decode('DATOS DEL SOLICITANTE'), 0, 1, 'C'); +$pdf->ln(10); +$pdf->SetFont('Arial', 'B', 12); +$pdf->Cell(0, 0, utf8_decode('Adscripción:'), 0, 1, 'L'); +$pdf->SetFont('Arial', '', 12); +$pdf->Cell(0, 0, $datos['adscripcion'], 0, 1, 'C'); +$pdf->ln(8); +$pdf->SetFont('Arial', 'B', 12); +$pdf->Cell(0, 0, utf8_decode('Nombre:'), 0, 1, 'L'); +$pdf->SetFont('Arial', '', 12); +$pdf->Cell(0, 0, $datos['responsable_nombre'], 0, 1, 'C'); +$pdf->ln(8); +$pdf->SetFont('Arial', 'B', 12); +$pdf->Cell(0, 0, utf8_decode('Teléfono:'), 0, 1, 'L'); +$pdf->SetFont('Arial', '', 12); +$pdf->Cell(0, 0, $datos['responsable_telefono'], 0, 1, 'C'); +$pdf->ln(8); +$pdf->SetFont('Arial', 'B', 12); +$pdf->Cell(0, 0, utf8_decode('Correo electrónico:'), 0, 1, 'L'); +$pdf->SetFont('Arial', '', 12); +$pdf->Cell(0, 0, $datos['responsable_correo'], 0, 1, 'C'); +$pdf->ln(12); +$pdf->Cell(0, 0, "", 1, 1, 'L'); +$pdf->ln(12); + +$pdf->SetFont('Arial','B',12); +$pdf->Cell(0, 0, utf8_decode('DATOS DEL EVENTO'), 0, 1, 'C'); +$pdf->ln(10); +$pdf->SetFont('Arial', 'B', 12); +$pdf->Cell(0, 0, utf8_decode('Nombre del profesor:'), 0, 1, 'L'); +$pdf->SetFont('Arial', '', 12); +$pdf->Cell(0, 0, $datos['profesor'], 0, 1, 'C'); +$pdf->ln(8); +$pdf->SetFont('Arial', 'B', 12); +$pdf->Cell(0, 0, utf8_decode('Tipo de evento:'), 0, 1, 'L'); +$pdf->SetFont('Arial', '', 12); +$pdf->Cell(0, 0, $datos['evento_tipo'], 0, 1, 'C'); +$pdf->ln(8); +$pdf->SetFont('Arial', 'B', 12); +$pdf->Cell(0, 0, utf8_decode('Nombre del evento:'), 0, 1, 'L'); +$pdf->SetFont('Arial', '', 12); +$pdf->Cell(0, 0, $datos['nombre_evento'], 0, 1, 'C'); +$pdf->ln(8); +$pdf->SetFont('Arial', 'B', 12); +$pdf->Cell(0, 0, utf8_decode('No. de asistentes:'), 0, 1, 'L'); +$pdf->SetFont('Arial', '', 12); +$pdf->Cell(0, 0, $datos['numero_asistentes'], 0, 1, 'C'); +$pdf->ln(8); +$pdf->SetFont('Arial', 'B', 12); +$pdf->Cell(0, 0, utf8_decode('Fecha:'), 0, 1, 'L'); +$pdf->SetFont('Arial', '', 12); +if($tipo_sesion == 0){ + $pdf->Cell(0, 0, $datos['fecha_inicial'], 0, 1, 'C'); +}else{ + $pdf->Cell(0, 0, $datos['fecha_inicial']." al ".$datos['fecha_final'], 0, 1, 'C'); + $pdf->ln(8); + $pdf->SetFont('Arial', 'B', 12); + $pdf->Cell(0, 0, utf8_decode('Días:'), 0, 1, 'L'); + $pdf->SetFont('Arial', '', 12); + $pdf->Cell(0, 0, utf8_decode($dias), 0, 1, 'C'); +} +$pdf->ln(8); +$pdf->SetFont('Arial', 'B', 12); +$pdf->Cell(0, 0, utf8_decode('Horario:'), 0, 1, 'L'); +$pdf->SetFont('Arial', '', 12); +$pdf->Cell(0, 0, $datos['hora_inicial']." - ".$datos['hora_final'], 0, 1, 'C'); +$pdf->ln(8); +$pdf->SetFont('Arial', 'B', 12); +$pdf->Cell(0, 0, utf8_decode('Software a utilizar:'), 0, 1, 'L'); +$pdf->SetFont('Arial', '', 12); +$pdf->Cell(0, 0, $datos['software'], 0, 1, 'C'); +$pdf->ln(8); +$pdf->SetFont('Arial', 'B', 12); +$pdf->Cell(0, 0, utf8_decode('Objetivo del evento:'), 0, 1, 'L'); + +$cadena = $datos['objetivo']; +$num_filas = ceil(strlen($datos['objetivo'])/42); +$incremento = 0; +for($j=0;$j<$num_filas;$j++){ + $fila[$j] = ""; + for($i=($incremento);$i<=($incremento+41);$i++){ + $fila[$j] .= $cadena[$i]; + } + $pdf->SetFont('Arial', '', 12); + $pdf->Cell(0, 0, $fila[$j], 0, 1, 'C'); + $pdf->ln(4); + $incremento += 42; +} +if($tipo_sesion == 0){ + $saltos_linea_objetivo = 32-4*$num_filas; +}else{ + $saltos_linea_objetivo = (24-4*$num_filas); +} +$pdf->ln($saltos_linea_objetivo); + +$pdf->SetFont('Arial', 'B', 10); +$pdf->Cell(0, 0, utf8_decode('**Nota: Con este comprobante acepta: haber leído y comprometido a cumplir los lineamientos de uso de'), 0, 1, 'L'); +$pdf->ln(5); +$pdf->SetFont('Arial', 'B', 10); +$pdf->Cell(0, 0, utf8_decode('los espacios físicos del Centro de Desarrollo Tecnológico.'), 0, 1, 'L'); +$pdf->ln(5); +$pdf->SetFont('Arial', 'B', 10); +$pdf->Cell(0, 0, utf8_decode('No imprimir este documento y esperar su respuesta de solicitud por oficio.'), 0, 1, 'L'); +$pdf->SetFont('Arial', '', 12); +$pdf->Code39(170, 255, $cuenta, 1, 13); //Código de barras +$pdf->ln(8); +$pdf->Cell(0, 0, utf8_decode('Cadena única verificadora:'), 0, 1, 'L'); +$pdf->ln(3); +$pdf->MultiCell(0, 5, substr(base64_encode($datos['id_solicitud'].$datos['fecha_solicitud'].$datos['responsable_nombre']."Solicitud préstamo de salas de cómputo"), 0, 70)); +$pdf->ln(10); +mysql_close($con); +$pdf->Output(); + +header("location:index.php"); \ No newline at end of file diff --git a/public_html/descargar_boleto.php b/public_html/descargar_boleto.php new file mode 100644 index 0000000..0407fd0 --- /dev/null +++ b/public_html/descargar_boleto.php @@ -0,0 +1,55 @@ + +
+
+
+ + + + + + + + + + + + + + + + + +
Descarga de tu boleto
+ + + +
+
Datos de contacto
+ +
    +
  • +
  • Facultad de Estudios Superiores Acatlán
  • +
  • Universidad Nacional Autónoma de México
  • +
  • Número de contacto: 5623-1665
  • +
  • Correo electrónico: vegresados@apolo.acatlan.unam.mx
  • +
+
+
+
+
+0;d--){if(typeof a[d]=="function")a[d]=a[d].prototype;for(var e in a[d])e=="_init"?c.push(a[d][e]):b[e]||(b[e]=a[d][e])}a[0]._init&&c.push(a[0]._init);b._init=function(){for(var a=0;a=0&&this.splice(a,b||1)},remove:function(a){this.removeAt(this.find(a))},insertAt:function(a,b){if(!b&&b!==0)this.push(a);else{var c=this.splice(b,this.length-b);this[b]=a;this.push.apply(this,c)}},find:function(a){for(i=0;i0;)str=this._toHex[a%16]+str,a=Math.floor(a/16);for(;str.length255)b=0;if(c<0||c>255)c=0;if(d<0||d>255)d=0;return[b,c,d]}; +dhtmlx.math.hsvToRgb=function(a,b,c){var d,e,f,h,g,i,j,k;d=Math.floor(a/60)%6;e=a/60-d;f=c*(1-b);h=c*(1-e*b);g=c*(1-(1-e)*b);k=j=i=0;switch(d){case 0:i=c;j=g;k=f;break;case 1:i=h;j=c;k=f;break;case 2:i=f;j=c;k=g;break;case 3:i=f;j=h;k=c;break;case 4:i=g;j=f;k=c;break;case 5:i=c,j=f,k=h}i=Math.floor(i*255);j=Math.floor(j*255);k=Math.floor(k*255);return[i,j,k]}; +dhtmlx.math.rgbToHsv=function(a,b,c){var d,e,f,h,g,i,j,k;d=a/255;e=b/255;f=c/255;h=Math.min(d,e,f);g=Math.max(d,e,f);j=0;i=g==0?0:1-h/g;k=g;g==h?j=0:g==d&&e>=f?j=60*(e-f)/(g-h)+0:g==d&&e")},addSector:function(a,b,c,d,e,f,h){var g=[];g.push(d);g.push(Math.floor(e*h));for(var i=b;i"+this._map.join("\n")+"";a._htmlmap=b;this._map=[]}};dhtmlx.chart={}; +dhtmlx.chart.scatter={pvt_render_scatter:function(a,b,c,d,e,f){if(!this._settings.xValue)return null;var h=this._getLimits(),g=this._getLimits("h","xValue");e||(this._drawYAxis(a,b,c,d,h.min,h.max),this._drawHXAxis(a,b,c,d,g.min,g.max));for(var h={min:this._settings.yAxis.start,max:this._settings.yAxis.end},g={min:this._settings.xAxis.start,max:this._settings.xAxis.end},i=this._getScatterParams(a,b,c,d,g,h),j=0;jd.max&&(k=b[f.toLowerCase()]);h=i;n-=k){l.fixNum&&(n=parseFloat((new Number(n)).toFixed(l.fixNum)));o.push(Math.floor(u*z)+0.5);y&&(n=Math.round(n*y)/y);var w=d-e+o[o.length-1];this.renderTextAt("middle","left",c,w,h.template(n.toString()),"dhx_axis_item_y dhx_radar");if(b.length<2){this._drawScaleSector(a, +"arc",c,d,e-o[o.length-1],-Math.PI/2,3*Math.PI/2,n);return}var v=-Math.PI/2,t=v,A;for(r=0;rMath.PI)m=-i;e>Math.PI/2&&(l=-g);if(Math.abs(e+Math.PI/2)=0;m--){var p= +k+Math.floor(h.cellWidth*m)-0.5,n=b[m].$startY;a.lineTo(p,n)}else a.lineTo(k+Math.floor(h.cellWidth*(length-1))-0.5,j);a.lineTo(k,j);a.fill();for(m=0;m=1;c--)f[c]=(e[c]-b[c]*f[c+1])/d[c];h=[];g=[];i=[];j=[];for(c=0;co&&(u=o/this._series.length- +4);var z=Math.floor((o-u*this._series.length)/2),x=typeof this._settings.radius!="undefined"?parseInt(this._settings.radius,10):Math.round(u/5),y=!1,s=this._settings.gradient;s&&typeof s!="function"?(y=s,s=!1):s&&(s=a.createLinearGradient(c.x,c.y,d.x,c.y),this._settings.gradient(s));var w=0;l||this._drawLine(a,c.x-0.5,c.y,c.x-0.5,d.y,"#000000",1);for(var v=0;vh&&(t=h);t-=g;t*=i;var A=c.x,B=c.y+z+v*o+(u+1)*e;if(t<0&&this._settings.origin== +"auto"||this._settings.xAxis&&t===0&&!(this._settings.origin!="auto"&&this._settings.origin>g))this.renderTextAt("middle","right",A+10,B+u/2+z,this._settings.label(b[v]));else{t<0&&this._settings.origin!="auto"&&this._settings.origin>g&&(t=0);l||(t+=q/r);var C=s||this._settings.color.call(this,b[v]);this._settings.border&&this._drawBarHBorder(a,A,B,u,g,x,r,t,C);a.globalAlpha=this._settings.alpha.call(this,b[v]);var D=this._drawBarH(a,c,A,B,u,g,x,r,t,C,s,y);y!=!1&&this._drawBarHGradient(a,A,B,u,g, +x,r,t,C,y);a.globalAlpha=1;D[3]==B?(this.renderTextAt("middle","left",D[0]-5,D[3]+Math.floor(u/2),this._settings.label(b[v])),f.addRect(b[v].id,[D[0],D[3],D[2],D[3]+u],e)):(this.renderTextAt("middle",!1,D[2]+5,D[1]+Math.floor(u/2),this._settings.label(b[v])),f.addRect(b[v].id,[D[0],B,D[2],D[3]],e))}}},_setBarHPoints:function(a,b,c,d,e,f,h,g,i){var j=0;if(e>f*h)var k=(e-f*h)/e,j=-Math.asin(k)+Math.PI/2;a.moveTo(b,c+g);var l=b+f*h-e-(e?0:g);e0&&a.arc(l,m,e-g,-Math.PI/ +2+j,0,!1);var p=c+d-e-(e?0:g),o=l+e-(e?g:0);a.lineTo(o,p);var n=l;e&&e>0&&a.arc(n,p,e-g,0,Math.PI/2-j,!1);var r=c+d-g;a.lineTo(b,r);i||a.lineTo(b,c+g);return[o,r]},_drawHScales:function(a,b,c,d,e,f,h){var g=this._drawHXAxis(a,b,c,d,e,f);this._drawHYAxis(a,b,c,d,h,g)},_drawHYAxis:function(a,b,c,d,e,f){if(this._settings.yAxis){var h,g=parseInt(f?f:c.x,10)-0.5,i=d.y+0.5,j=c.y;this._drawLine(a,g,i,g,j,this._settings.yAxis.color,1);for(var k=0;kh&&(b+=(this._settings.origin-h)*e,i=b,d-=this._settings.origin-h,d<0&&(d*=-1,a.translate(b,c+f),a.rotate(Math.PI),b=0.5,c=0),b+=0.5);return{value:d,x0:b,y0:c,start:i}},_drawBarH:function(a,b,c,d,e,f,h,g,i,j,k,l){a.save();var m=this._correctBarHParams(a,c,d,i,g,e,f);a.fillStyle=j;a.beginPath();var p=this._setBarHPoints(a,m.x0,m.y0,e,h,g,m.value,this._settings.border?1:0);k&&!l&&a.lineTo(b.x+total_width, +m.y0+(this._settings.border?1:0));a.fill();a.restore();var o=m.y0,n=m.y0!=d?d:p[1],r=m.y0!=d?m.start-p[0]:m.start,q=m.y0!=d?m.start:p[0];return[r,o,q,n]},_drawBarHBorder:function(a,b,c,d,e,f,h,g,i){a.save();var j=this._correctBarHParams(a,b,c,g,h,d,e);a.beginPath();this._setBorderStyles(a,i);a.globalAlpha=0.9;this._setBarHPoints(a,j.x0,j.y0,d,f,h,j.value,a.lineWidth/2,1);a.stroke();a.restore()},_drawBarHGradient:function(a,b,c,d,e,f,h,g,i,j){a.save();var k=this._correctBarHParams(a,b,c,g,h,d,e),l= +this._setBarGradient(a,k.x0,k.y0+d,k.x0+h*k.value,k.y0,j,i,"x");a.fillStyle=l.gradient;a.beginPath();var m=this._setBarHPoints(a,k.x0,k.y0+l.offset,d-l.offset*2,f,h,k.value,l.offset);a.fill();a.globalAlpha=1;a.restore()}}; +dhtmlx.chart.stackedBarH={pvt_render_stackedBarH:function(a,b,c,d,e,f){var h,g,i,j,k=d.x-c.x,l=!!this._settings.yAxis,m=this._getStackedLimits(b);h=m.max;g=m.min;var p=Math.floor((d.y-c.y)/b.length);e||this._drawHScales(a,b,c,d,g,h,p);l&&(h=parseFloat(this._settings.xAxis.end),g=parseFloat(this._settings.xAxis.start));var o=this._getRelativeValue(g,h);j=o[0];i=o[1];var n=j?k/j:10;if(!l)var r=10,n=j?(k-r)/j:10;var q=parseInt(this._settings.width,10);q+4>p&&(q=p-4);var u=Math.floor((p-q)/2),z=0,x=!1, +y=this._settings.gradient;y&&(x=!0);l||this._drawLine(a,c.x-0.5,c.y,c.x-0.5,d.y,"#000000",1);for(var s=0;sh&&(w=h);w-=g;w*=i;var v=c.x,t=c.y+u+s*p;e?v=b[s].$startX:b[s].$startX=v;if(w<0||this._settings.yAxis&&w===0)this.renderTextAt("middle",!0,v+10,t+q/2,this._settings.label(b[s]));else{l||(w+=r/n);var A=this._settings.color.call(this,b[s]);a.globalAlpha=this._settings.alpha.call(this,b[s]);a.fillStyle=this._settings.color.call(this, +b[s]);a.beginPath();var B=this._setBarHPoints(a,v,t,q,z,n,w,this._settings.border?1:0);y&&!x&&a.lineTo(c.x+k,t+(this._settings.border?1:0));a.fill();if(x!=!1){var C=this._setBarGradient(a,v,t+q,v,t,x,A,"x");a.fillStyle=C.gradient;a.beginPath();B=this._setBarHPoints(a,v,t,q,z,n,w,0);a.fill()}this._settings.border&&this._drawBarHBorder(a,v,t,q,g,z,n,w,A);a.globalAlpha=1;this.renderTextAt("middle",!0,b[s].$startX+(B[0]-b[s].$startX)/2-1,t+(B[1]-t)/2,this._settings.label(b[s]));f.addRect(b[s].id,[b[s].$startX, +t,B[0],B[1]],e);b[s].$startX=B[0]}}}}; +dhtmlx.chart.stackedBar={pvt_render_stackedBar:function(a,b,c,d,e,f){var h,g,i,j,k=d.y-c.y,l=!!this._settings.yAxis,m=!!this._settings.xAxis,p=this._getStackedLimits(b);h=p.max;g=p.min;var o=Math.floor((d.x-c.x)/b.length);e||this._drawScales(a,b,c,d,g,h,o);l&&(h=parseFloat(this._settings.yAxis.end),g=parseFloat(this._settings.yAxis.start));var n=this._getRelativeValue(g,h);j=n[0];i=n[1];var r=j?k/j:10,q=parseInt(this._settings.width,10);q+4>o&&(q=o-4);var u=Math.floor((o-q)/2),z=this._settings.gradient? +this._settings.gradient:!1;m||this._drawLine(a,c.x,d.y+0.5,d.x,d.y+0.5,"#000000",1);for(var x=0;x=0;i--)a.globalAlpha=g[i],a.strokeStyle="#d0d0d0",a.beginPath(),this._strokeChartItem(a,b,c+2*h/3,h+i+1,f.type),a.stroke();a.beginPath();a.globalAlpha=0.3;a.fillStyle="#bdbdbd";this._strokeChartItem(a,b,c+2*h/3,h+1,f.type);a.fill()}a.restore();a.lineWidth=f.borderWidth;a.fillStyle=f.color.call(this,d);a.strokeStyle=f.borderColor.call(this,d);a.globalAlpha=f.alpha.call(this,d);a.beginPath();this._strokeChartItem(a,b,c,h+1,f.type);a.fill();a.stroke();a.globalAlpha=1;e&& +this.renderTextAt(!1,!0,b,c-h-this._settings.labelOffset,this._settings.label.call(this,d))},_strokeChartItem:function(a,b,c,d,e){if(e&&(e=="square"||e=="s"))d*=Math.sqrt(2)/2,a.moveTo(b-d-a.lineWidth/2,c-d),a.lineTo(b+d,c-d),a.lineTo(b+d,c+d),a.lineTo(b-d,c+d),a.lineTo(b-d,c-d);else if(e&&(e=="diamond"||e=="d")){var f=a.lineWidth>1?a.lineWidth*Math.sqrt(2)/4:0;a.moveTo(b,c-d);a.lineTo(b+d,c);a.lineTo(b,c+d);a.lineTo(b-d,c);a.lineTo(b+f,c-d-f)}else e&&(e=="triangle"||e=="t")?(a.moveTo(b,c-d),a.lineTo(b+ +Math.sqrt(3)*d/2,c+d/2),a.lineTo(b-Math.sqrt(3)*d/2,c+d/2),a.lineTo(b,c-d)):a.arc(b,c,d,0,Math.PI*2,!0)},_getYPointOfLineChart:function(a,b,c,d){var e=d.minValue,f=d.maxValue,h=d.unit,g=d.valueFactor,i=this._settings.value(a),j=(parseFloat(i||0)-e)*g;this._settings.yAxis||(j+=d.startValue/h);var k=c.y-Math.floor(h*j);if(j<0)k=c.y;if(i>f)k=b.y;if(ig&&this._drawXAxis(a,b,c,d,o,d.y-r*(this._settings.origin-g));var u=parseInt(this._settings.width,10);this._series&&u*this._series.length+4>o&&(u=parseInt(o/this._series.length-4,10));var z=Math.floor((o-u*this._series.length)/2),x=typeof this._settings.radius!="undefined"?parseInt(this._settings.radius,10):Math.round(u/5),y=!1,s=this._settings.gradient;s&&typeof s!="function"?(y=s,s=!1):s&&(s=a.createLinearGradient(0,d.y,0,c.y),this._settings.gradient(s));m||this._drawLine(a, +c.x,d.y+0.5,d.x,d.y+0.5,"#000000",1);for(var w=0;wh&&(v=h);v-=g;v*=i;var t=c.x+z+w*o+(u+1)*e,A=d.y+0.5;if(v<0||this._settings.yAxis&&v===0&&!(this._settings.origin!="auto"&&this._settings.origin>g))this.renderTextAt(!0,!0,t+Math.floor(u/2),A,this._settings.label(b[w]));else{!l&&!(this._settings.origin!="auto"&&m)&&(v+=q/r);var B=s||this._settings.color.call(this,b[w]);a.globalAlpha=this._settings.alpha.call(this,b[w]);var C=this._drawBar(a, +c,t,A,u,g,x,r,v,B,s,y);y&&this._drawBarGradient(a,t,A,u,g,x,r,v,B,y);this._settings.border&&this._drawBarBorder(a,t,A,u,g,x,r,v,B);a.globalAlpha=1;C[0]!=t?this.renderTextAt(!1,!0,t+Math.floor(u/2),C[1],this._settings.label(b[w])):this.renderTextAt(!0,!0,t+Math.floor(u/2),C[3],this._settings.label(b[w]));f.addRect(b[w].id,[t,C[3],C[2],C[1]],e)}}},_correctBarParams:function(a,b,c,d,e,f,h){var g=this._settings.xAxis,i=c;g&&this._settings.origin!="auto"&&this._settings.origin>h&&(c-=(this._settings.origin- +h)*e,i=c,d-=this._settings.origin-h,d<0&&(d*=-1,a.translate(b+f,c),a.rotate(Math.PI),c=b=0),c-=0.5);return{value:d,x0:parseInt(b,10),y0:parseInt(c,10),start:i}},_drawBar:function(a,b,c,d,e,f,h,g,i,j,k,l){a.save();a.fillStyle=j;var m=this._correctBarParams(a,c,d,i,g,e,f),p=this._setBarPoints(a,m.x0,m.y0,e,h,g,m.value,this._settings.border?1:0);k&&!l&&a.lineTo(m.x0+(this._settings.border?1:0),b.y);a.fill();a.restore();var o=m.x0,n=m.x0!=c?c+p[0]:p[0],r=m.x0!=c?m.start-p[1]:d,q=m.x0!=c?m.start:p[1]; +return[o,r,n,q]},_setBorderStyles:function(a,b){var c,d;d=dhtmlx.math.toRgb(b);c=dhtmlx.math.rgbToHsv(d[0],d[1],d[2]);c[2]/=2;b="rgb("+dhtmlx.math.hsvToRgb(c[0],c[1],c[2])+")";a.strokeStyle=b;if(a.globalAlpha==1)a.globalAlpha=0.9},_drawBarBorder:function(a,b,c,d,e,f,h,g,i){var j;a.save();j=this._correctBarParams(a,b,c,g,h,d,e);this._setBorderStyles(a,i);this._setBarPoints(a,j.x0,j.y0,d,f,h,j.value,a.lineWidth/2,1);a.stroke();a.restore()},_drawBarGradient:function(a,b,c,d,e,f,h,g,i,j){a.save();var k= +this._correctBarParams(a,b,c,g,h,d,e),l=this._setBarGradient(a,k.x0,k.y0,k.x0+d,k.y0-h*k.value+2,j,i,"y"),m=this._settings.border?1:0;a.fillStyle=l.gradient;this._setBarPoints(a,k.x0+l.offset,k.y0,d-l.offset*2,f,h,k.value,l.offset+m);a.fill();a.restore()},_setBarPoints:function(a,b,c,d,e,f,h,g,i){a.beginPath();var j=0;if(e>f*h){var k=(e-f*h)/e;k<=1&&k>=-1&&(j=-Math.acos(k)+Math.PI/2)}a.moveTo(b+g,c);var l=c-Math.floor(f*h)+e+(e?0:g);e0&&a.arc(m,l,e-g,-Math.PI+ +j,-Math.PI/2,!1);var p=b+d-e-(e?0:g),o=l-e+(e?g:0);a.lineTo(p,o);e&&e>0&&a.arc(p,l,e-g,-Math.PI/2,0-j,!1);var n=b+d-g;a.lineTo(n,c);i||a.lineTo(b+g,c);return[n,o]}}; +dhtmlx.chart.pie={pvt_render_pie:function(a,b,c,d,e,f){this._renderPie(a,b,c,d,1,f)},_renderPie:function(a,b,c,d,e,f){if(b.length){var h=this._getPieParameters(c,d),g=this._settings.radius?this._settings.radius:h.radius;if(!(g<0)){var i=this._getValues(b),j=this._getTotalValue(i),k=this._getRatios(i,j),l=this._settings.x?this._settings.x:h.x,m=this._settings.y?this._settings.y:h.y;e==1&&this._settings.shadow&&this._addShadow(a,l,m,g);m/=e;var p=-Math.PI/2,o=[];a.scale(1,e);if(this._settings.gradient){var n= +e!=1?l+g/3:l,r=e!=1?m+g/3:m;this._showRadialGradient(a,l,m,g,n,r)}for(var q=0;q=0||d>=0&&e<=Math.PI||Math.abs(d-Math.PI)>0.0030&&d<=Math.PI&&e>=Math.PI){d<=0&&e>=0&&(d=0,h=!1,this._drawSectorLine(a,b,c,f,d,e));if(d<=Math.PI&&e>=Math.PI)e=Math.PI,h=!1,this._drawSectorLine(a,b,c,f,d,e);var g=(this._settings.height||Math.floor(f/4))/this._settings.cant;a.beginPath();a.arc(b,c,f,d,e,!1);a.lineTo(b+f*Math.cos(e),c+f*Math.sin(e)+g);a.arc(b,c+g,f,e,d,!0);a.lineTo(b+f*Math.cos(d),c+f*Math.sin(d));a.fill(); +h&&a.stroke()}},_drawSectorLine:function(a,b,c,d,e,f){a.beginPath();a.arc(b,c,d,e,f,!1);a.stroke()},_addShadow:function(a,b,c,d){a.globalAlpha=0.5;for(var e="#c4c4c4,#c6c6c6,#cacaca,#dcdcdc,#dddddd,#e0e0e0,#eeeeee,#f5f5f5,#f8f8f8".split(","),f=e.length-1;f>-1;f--)a.beginPath(),a.fillStyle=e[f],a.arc(b+1,c+1,d+f,0,Math.PI*2,!0),a.fill();a.globalAlpha=1},_getGrayGradient:function(a){a.addColorStop(0,"#ffffff");a.addColorStop(0.7,"#7a7a7a");a.addColorStop(1,"#000000");return a},_showRadialGradient:function(a, +b,c,d,e,f){a.beginPath();var h;typeof this._settings.gradient!="function"?(h=a.createRadialGradient(e,f,d/4,b,c,d),h=this._getGrayGradient(h)):h=this._settings.gradient(h);a.fillStyle=h;a.arc(b,c,d,0,Math.PI*2,!0);a.fill();a.globalAlpha=0.7},_drawSectorLabel:function(a,b,c,d,e,f,h,g){var i=this.renderText(0,0,h,0,1);if(i){var j=i.scrollWidth;i.style.width=j+"px";j>a&&(j=a);var k=e-d<0.2?4:8;g&&(k=j/1.8);var l=d+(e-d)/2;c-=(k-8)/2;var m=-k,p=-8,o="right";if(l>=Math.PI/2&&l=Math.PI)m=-j-m+1,o="left";var n=0;!g&&f<1&&l>0&&l=Math.PI/2&&l=Math.PI))q+=j/3;i.style.top=r+"px";i.style.left=q+"px";i.style.width=j+"px";i.style.textAlign=o;i.style.whiteSpace="nowrap"}}}; +dhtmlx.chart.pie3D={pvt_render_pie3D:function(a,b,c,d,e,f){this._renderPie(a,b,c,d,this._settings.cant,f)}};dhtmlx.chart.donut={pvt_render_donut:function(a,b,c,d,e,f){if(b.length){this._renderPie(a,b,c,d,1,f);var h=this._settings,g=this._getPieParameters(c,d),i=h.radius?h.radius:g.radius,j=h.innerRadius&&h.innerRadius")!= +-1)switch(c=c.split("->"),c[0]){case "html":c=dhtmlx.html.getValue(c[1]).replace(/\"/g,'\\"');break;case "http":c=(new dhtmlx.ajax).sync().get(c[1],{uid:(new Date).valueOf()}).responseText}a[b]=dhtmlx.Template.fromHTML(c)}}}; +dhtmlx.SingleRender={_init:function(){},_toHTML:function(a){return this.type._item_start(a,this.type)+this.type.template(a,this.type)+this.type._item_end},render:function(){if(!this.callEvent||this.callEvent("onBeforeRender",[this.data])){if(this.data)this._dataobj.innerHTML=this._toHTML(this.data);this.callEvent&&this.callEvent("onAfterRender",[])}}}; +dhtmlx.ui.Tooltip=function(a){this.name="Tooltip";this.version="3.0";typeof a=="string"&&(a={template:a});dhtmlx.extend(this,dhtmlx.Settings);dhtmlx.extend(this,dhtmlx.SingleRender);this._parseSettings(a,{type:"default",dy:0,dx:20});this._dataobj=this._obj=document.createElement("DIV");this._obj.className="dhx_tooltip";dhtmlx.html.insertBefore(this._obj,document.body.firstChild)}; +dhtmlx.ui.Tooltip.prototype={show:function(a,b){if(!this._disabled){if(this.data!=a)this.data=a,this.render(a);this._obj.style.top=b.y+this._settings.dy+"px";this._obj.style.left=b.x+this._settings.dx+"px";this._obj.style.display="block"}},hide:function(){this.data=null;this._obj.style.display="none"},disable:function(){this._disabled=!0},enable:function(){this._disabled=!1},types:{"default":dhtmlx.Template.fromHTML("{obj.id}")},template_item_start:dhtmlx.Template.empty,template_item_end:dhtmlx.Template.empty}; +dhtmlx.AutoTooltip={tooltip_setter:function(a){var b=new dhtmlx.ui.Tooltip(a);this.attachEvent("onMouseMove",function(a,d){b.show(this.get(a),dhtmlx.html.pos(d))});this.attachEvent("onMouseOut",function(){b.hide()});this.attachEvent("onMouseMoving",function(){b.hide()});return b}};dhtmlx.ajax=function(a,b,c){if(arguments.length!==0){var d=new dhtmlx.ajax;if(c)d.master=c;d.get(a,null,b)}return!this.getXHR?new dhtmlx.ajax:this}; +dhtmlx.ajax.prototype={getXHR:function(){return dhtmlx._isIE?new ActiveXObject("Microsoft.xmlHTTP"):new XMLHttpRequest},send:function(a,b,c){var d=this.getXHR();typeof c=="function"&&(c=[c]);if(typeof b=="object"){var e=[],f;for(f in b){var h=b[f];if(h===null||h===dhtmlx.undefined)h="";e.push(f+"="+encodeURIComponent(h))}b=e.join("&")}b&&!this.post&&(a=a+(a.indexOf("?")!=-1?"&":"?")+b,b=null);d.open(this.post?"POST":"GET",a,!this._sync);this.post&&d.setRequestHeader("Content-type","application/x-www-form-urlencoded"); +var g=this;d.onreadystatechange=function(){if(!d.readyState||d.readyState==4){if(c&&g)for(var a=0;ab)var c=b,b=a,a=c;return this.getIndexRange(a,b)},getIndexRange:function(a,b){for(var b=Math.min(b||Infinity,this.dataCount()-1),c=dhtmlx.toArray(),d=a||0;d<=b;d++)c.push(this.item(this.order[d]));return c},dataCount:function(){return this.order.length}, +exists:function(a){return!!this.pull[a]},move:function(a,b){if(!(a<0||b<0)){var c=this.idByIndex(a),d=this.item(c);this.order.removeAt(a);this.order.insertAt(c,Math.min(this.order.length,b));this.callEvent("onStoreUpdated",[c,d,"move"])}},scheme:function(a){this._scheme=a},sync:function(a,b,c){typeof b!="function"&&(c=b,b=null);if(dhtmlx.debug_bind)this.debug_sync_master=a;var d=a;if(a.name!="DataStore")a=a.data;var e=dhtmlx.bind(function(d,e,g){if(g!="update"||b)d=null;if(!d)this.order=dhtmlx.toArray([].concat(a.order)), +this._filter_order=null,this.pull=a.pull,b&&this.silent(b),this._on_sync&&this._on_sync();c?c=!1:this.refresh(d)},this);a.attachEvent("onStoreUpdated",e);this.feed=function(a,b){d.loadNext(b,a)};e()},add:function(a,b){if(this._scheme){var a=a||{},c;for(c in this._scheme)a[c]=a[c]||this._scheme[c];this._scheme&&(this._scheme.$init?this._scheme.$update(a):this._scheme.$update&&this._scheme.$update(a))}var d=this.id(a),e=this.dataCount();if(dhtmlx.isNotDefined(b)||b<0)b=e;b>e&&(b=Math.min(this.order.length, +b));if(this.callEvent("onBeforeAdd",[d,a,b])===!1)return!1;if(this.exists(d))return null;this.pull[d]=a;this.order.insertAt(d,b);if(this._filter_order){var f=this._filter_order.length;!b&&this.order.length&&(f=0);this._filter_order.insertAt(d,f)}this.callEvent("onafterAdd",[d,b]);this.callEvent("onStoreUpdated",[d,a,"add"]);return d},remove:function(a){if(a instanceof Array)for(var b=0;bb?1:ab?1:ab?1:ac&&(c=a(b)*1)});return c},_split_data_by:function(a){var b=function(a,b){a=dhtmlx.Template.setter(a);return a(b[0])},c=dhtmlx.Template.setter(a.by); +a.map[c]||(a.map[c]=[c,b]);var d={},e=[];this.data.each(function(a){var b=c(a);d[b]||(e.push({id:b}),d[b]=dhtmlx.toArray());d[b].push(a)});for(var f in a.map){var h=a.map[f][1]||b;typeof h!="function"&&(h=this[h]);for(var g=0;g5?10:5;c=parseInt(g,10)*h;if(c>Math.abs(a))d=a<0?-c:0;else{var i=Math.abs(a),j=Math.floor(this._log10(i)),k=i/Math.pow(10,j);d=Math.ceil(k*10)/10*Math.pow(10,j)-c;for(i>1&&c>0.1&&(d=Math.ceil(d));a<0?d<=a:d>=a;)d-=c;a<0&&(d=-d-2*c)}for(e=d;e1)for(var f=1;fc&&(c=h);gd)d=a[b].$sum;if(a[b].$min0&&(e=0)}return{max:d,min:e}},_setBarGradient:function(a,b,c,d,e,f,h,g){var i,j,k,l,m;f=="light"?(i=g=="x"?a.createLinearGradient(b,c,d,c):a.createLinearGradient(b,c,b,e),i.addColorStop(0,"#FFFFFF"),i.addColorStop(0.9,h),i.addColorStop(1,h),j=2):f=="falling"||f=="rising"?(i=g=="x"?a.createLinearGradient(b,c,d,c):a.createLinearGradient(b,c,b,e),k=dhtmlx.math.toRgb(h),l=dhtmlx.math.rgbToHsv(k[0],k[1],k[2]),l[1]*=0.5,m="rgb("+ +dhtmlx.math.hsvToRgb(l[0],l[1],l[2])+")",f=="falling"?(i.addColorStop(0,m),i.addColorStop(0.7,h),i.addColorStop(1,h)):f=="rising"&&(i.addColorStop(0,h),i.addColorStop(0.3,h),i.addColorStop(1,m)),j=0):(a.globalAlpha=0.37,j=0,i=g=="x"?a.createLinearGradient(b,e,b,c):a.createLinearGradient(b,c,d,c),i.addColorStop(0,"#9d9d9d"),i.addColorStop(0.3,"#e8e8e8"),i.addColorStop(0.45,"#ffffff"),i.addColorStop(0.55,"#ffffff"),i.addColorStop(0.7,"#e8e8e8"),i.addColorStop(1,"#9d9d9d"));return{gradient:i,offset:j}}, +_getPositionByAngle:function(a,b,c,d){a*=-1;b+=Math.cos(a)*d;c-=Math.sin(a)*d;return{x:b,y:c}}};dhtmlx.compat("layout"); diff --git a/public_html/dhtmlxchart/dhtmlxchart_debug.css b/public_html/dhtmlxchart/dhtmlxchart_debug.css new file mode 100644 index 0000000..d87a4ae --- /dev/null +++ b/public_html/dhtmlxchart/dhtmlxchart_debug.css @@ -0,0 +1,6 @@ +/* +Copyright DHTMLX LTD. http://www.dhtmlx.com +You allowed to use this component or parts of it under GPL terms +To use it on other terms or get Professional edition of the component please contact us at sales@dhtmlx.com +*/ +/*pure colors*/ /*fonts*/ /*2012 July 31*//* DHX DEPEND FROM FILE 'tooltip.css'*//*style used by tooltip's container*/ .dhx_tooltip{ display:none; position:absolute; font-family:Tahoma; font-size:8pt; z-index:10000; background-color:white; padding:2px 2px 2px 2px; border:1px solid #A4BED4; }/* DHX DEPEND FROM FILE 'chart.css'*//*chart container*/ .dhx_chart{ position:relative; font-family:Tahoma; font-size:13px; color:#000000; overflow:hidden; } /*labels*/ .dhx_canvas_text{ position:absolute; text-align:center; overflow:hidden; white-space:nowrap; } /*map*/ .dhx_map_img{ width : 100%; height : 100%; position : absolute; top : 0px; left : 0px; border:0px; filter:alpha(opacity=0); } /*scales*/ .dhx_axis_item_y{ position:absolute; height:18px; line-height:18px; /*line-height:10px;*/ margin-top:-4px; text-align:right; } .dhx_axis_title_x{ text-align:center; } .dhx_axis_title_y{ text-align:center; font-family:Tahoma; /*safari*/ -webkit-transform: rotate(-90deg); /*firefox*/ -moz-transform: rotate(-90deg); /*opera*/ -o-transform:rotate(-90deg); /*IE9*/ -ms-transform: rotate(-90deg); transform: rotate(-90deg); height:18px; line-height:18px; /*padding-left:3px;*/ } .dhx_ie_filter{ /*IE8*/ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); zoom:1; font-family: serif; } /*legend block*/ .dhx_chart_legend{ position:absolute; } .dhx_chart_legend_item{ height:18px; line-height:18px; padding: 2px; } .dhx_axis_item_y.dhx_radar{ color:#666666; font-size:11px; padding-right:3px; height:13px; line-height:13px; margin-top:0px; } .dhx_canvas_text.dhx_axis_radar_title{ margin-top:0px; padding-top: 0px; } .dhx_axis_item_y, .dhx_axis_item_x { color: #666666; } \ No newline at end of file diff --git a/public_html/dhtmlxchart/dhtmlxchart_debug.js b/public_html/dhtmlxchart/dhtmlxchart_debug.js new file mode 100644 index 0000000..f9f172e --- /dev/null +++ b/public_html/dhtmlxchart/dhtmlxchart_debug.js @@ -0,0 +1,5949 @@ +/* +Copyright DHTMLX LTD. http://www.dhtmlx.com +You allowed to use this component or parts of it under GPL terms +To use it on other terms or get Professional edition of the component please contact us at sales@dhtmlx.com +*/ +/* +2012 July 31 +*/ + + + +/* DHX DEPEND FROM FILE 'assert.js'*/ + + +if (!window.dhtmlx) + dhtmlx={}; + +//check some rule, show message as error if rule is not correct +dhtmlx.assert = function(test, message){ + if (!test) dhtmlx.error(message); +}; +dhtmlx.assert_enabled=function(){ return false; }; + +//register names of event, which can be triggered by the object +dhtmlx.assert_event = function(obj, evs){ + if (!obj._event_check){ + obj._event_check = {}; + obj._event_check_size = {}; + } + + for (var a in evs){ + obj._event_check[a.toLowerCase()]=evs[a]; + var count=-1; for (var t in evs[a]) count++; + obj._event_check_size[a.toLowerCase()]=count; + } +}; +dhtmlx.assert_method_info=function(obj, name, descr, rules){ + var args = []; + for (var i=0; i < rules.length; i++) { + args.push(rules[i][0]+" : "+rules[i][1]+"\n "+rules[i][2].describe()+(rules[i][3]?"; optional":"")); + } + return obj.name+"."+name+"\n"+descr+"\n Arguments:\n - "+args.join("\n - "); +}; +dhtmlx.assert_method = function(obj, config){ + for (var key in config) + dhtmlx.assert_method_process(obj, key, config[key].descr, config[key].args, (config[key].min||99), config[key].skip); +}; +dhtmlx.assert_method_process = function (obj, name, descr, rules, min, skip){ + var old = obj[name]; + if (!skip) + obj[name] = function(){ + if (arguments.length != rules.length && arguments.length < min) + dhtmlx.log("warn","Incorrect count of parameters\n"+obj[name].describe()+"\n\nExpecting "+rules.length+" but have only "+arguments.length); + else + for (var i=0; i= 0) return true; + return false; + }; + dhtmlx.assert_rule_dimension.describe=function(){ + return "{Integer} value must be a positive number"; + }; + + dhtmlx.assert_rule_number=function(check){ + if (typeof check == "number") return true; + return false; + }; + dhtmlx.assert_rule_number.describe=function(){ + return "{Integer} value must be a number"; + }; + + dhtmlx.assert_rule_function=function(check){ + if (typeof check == "function") return true; + return false; + }; + dhtmlx.assert_rule_function.describe=function(){ + return "{Function} value must be a custom function"; + }; + + dhtmlx.assert_rule_any=function(check){ + return true; + }; + dhtmlx.assert_rule_any.describe=function(){ + return "Any value"; + }; + + dhtmlx.assert_rule_mix=function(a,b){ + var t = function(check){ + if (a(check)||b(check)) return true; + return false; + }; + t.describe = function(){ + return a.describe(); + }; + return t; + }; + +} + + +/* DHX DEPEND FROM FILE 'dhtmlx.js'*/ + + +/*DHX:Depend assert.js*/ + +/* + Common helpers +*/ +dhtmlx.version="3.0"; +dhtmlx.codebase="./"; + +//coding helpers + +dhtmlx.copy = function(source){ + var f = dhtmlx.copy._function; + f.prototype = source; + return new f(); +}; +dhtmlx.copy._function = function(){}; + +//copies methods and properties from source to the target +dhtmlx.extend = function(target, source){ + for (var method in source) + target[method] = source[method]; + + //applying asserts + if (dhtmlx.assert_enabled() && source._assert){ + target._assert(); + target._assert=null; + } + + dhtmlx.assert(target,"Invalid nesting target"); + dhtmlx.assert(source,"Invalid nesting source"); + //if source object has init code - call init against target + if (source._init) + target._init(); + + return target; +}; +dhtmlx.proto_extend = function(){ + var origins = arguments; + var compilation = origins[0]; + var construct = []; + + for (var i=origins.length-1; i>0; i--) { + if (typeof origins[i]== "function") + origins[i]=origins[i].prototype; + for (var key in origins[i]){ + if (key == "_init") + construct.push(origins[i][key]); + else if (!compilation[key]) + compilation[key] = origins[i][key]; + } + }; + + if (origins[0]._init) + construct.push(origins[0]._init); + + compilation._init = function(){ + for (var i=0; i handler + this._handlers = {}; //hash of event handlers, ID => handler + this._map = {}; + }, + //temporary block event triggering + block : function(){ + this._events._block = true; + }, + //re-enable event triggering + unblock : function(){ + this._events._block = false; + }, + mapEvent:function(map){ + dhtmlx.extend(this._map, map); + }, + //trigger event + callEvent:function(type,params){ + if (this._events._block) return true; + + type = type.toLowerCase(); + dhtmlx.assert_event_call(this, type, params); + + var event_stack =this._events[type.toLowerCase()]; //all events for provided name + var return_value = true; + + if (dhtmlx.debug) //can slowdown a lot + dhtmlx.log("info","["+this.name+"] event:"+type,params); + + if (event_stack) + for(var i=0; i=0) this.splice(pos,(len||1)); + }, + //find element in collection and remove it + remove:function(value){ + this.removeAt(this.find(value)); + }, + //add element to collection at specific position + insertAt:function(data,pos){ + if (!pos && pos!==0) //add to the end by default + this.push(data); + else { + var b = this.splice(pos,(this.length-pos)); + this[pos] = data; + this.push.apply(this,b); //reconstruct array without loosing this pointer + } + }, + //return index of element, -1 if it doesn't exists + find:function(data){ + for (i=0; i0){ + str=this._toHex[number%16]+str; + number=Math.floor(number/16); + } + while (str.length 255) + r = 0; + if (g < 0 || g > 255) + g = 0; + if (b < 0 || b > 255) + b = 0; + return [r,g,b]; +} +dhtmlx.math.hsvToRgb = function(h, s, v){ + var hi,f,p,q,t,r,g,b; + hi = Math.floor((h/60))%6; + f = h/60-hi; + p = v*(1-s); + q = v*(1-f*s); + t = v*(1-(1-f)*s); + r = 0; + g = 0; + b = 0; + switch(hi) { + case 0: + r = v; g = t; b = p; + break; + case 1: + r = q; g = v; b = p; + break; + case 2: + r = p; g = v; b = t; + break; + case 3: + r = p; g = q; b = v; + break; + case 4: + r = t; g = p; b = v; + break; + case 5: + r = v; g = p; b = q; + break; + } + r = Math.floor(r*255); + g = Math.floor(g*255); + b = Math.floor(b*255); + return [r, g, b]; +}; +dhtmlx.math.rgbToHsv = function(r, g, b){ + var r0,g0,b0,min0,max0,s,h,v; + r0 = r/255; + g0 = g/255; + b0 = b/255; + var min0 = Math.min(r0, g0, b0); + var max0 = Math.max(r0, g0, b0); + h = 0; + s = max0==0?0:(1-min0/max0); + v = max0; + if (max0 == min0) { + h = 0; + } else if (max0 == r0 && g0>=b0) { + h = 60*(g0 - b0)/(max0 - min0)+0; + } else if (max0 == r0 && g0 < b0) { + h = 60*(g0 - b0)/(max0 - min0)+360; + } else if (max0 == g0) { + h = 60*(b0 - r0)/(max0-min0)+120; + } else if (max0 == b0) { + h = 60*(r0 - g0)/(max0 - min0)+240; + } + return [h, s, v]; +} + + + + +/* DHX DEPEND FROM FILE 'ext/chart/presets.js'*/ + + +/*chart presents*/ +if(!dhtmlx.presets) + dhtmlx.presets = {}; +dhtmlx.presets.chart = { + "simple":{ + item:{ + borderColor: "#ffffff", + color: "#2b7100", + shadow: false, + borderWidth:2 + }, + line:{ + color:"#8ecf03", + width:2 + } + }, + "plot":{ + color:"#1293f8", + item:{ + borderColor:"#636363", + borderWidth:1, + color: "#ffffff", + type:"r", + shadow: false + }, + line:{ + color:"#1293f8", + width:2 + } + }, + "diamond":{ + color:"#b64040", + item:{ + borderColor:"#b64040", + color: "#b64040", + type:"d", + radius:3, + shadow:true + }, + line:{ + color:"#ff9000", + width:2 + } + }, + "point":{ + color:"#fe5916", + disableLines:true, + fill:false, + disableItems:false, + item:{ + color:"#feb916", + borderColor:"#fe5916", + radius:2, + borderWidth:1, + type:"r" + }, + alpha:1 + }, + "line":{ + line:{ + color:"#3399ff", + width:2 + }, + item:{ + color:"#ffffff", + borderColor:"#3399ff", + radius:2, + borderWidth:2, + type:"d" + }, + fill:false, + disableItems:false, + disableLines:false, + alpha:1 + }, + "area":{ + fill:"#3399ff", + line:{ + color:"#3399ff", + width:1 + }, + disableItems:true, + alpha: 0.2, + disableLines:false + }, + "round":{ + item:{ + radius:3, + borderColor:"#3f83ff", + borderWidth:1, + color:"#3f83ff", + type:"r", + shadow:false, + alpha:0.6 + } + }, + "square":{ + item:{ + radius:3, + borderColor:"#447900", + borderWidth:2, + color:"#69ba00", + type:"s", + shadow:false, + alpha:1 + } + }, + /*bar*/ + "column":{ + color:"RAINBOW", + gradient:false, + width:45, + radius:0, + alpha:1, + border:true + }, + "stick":{ + width:5, + gradient:false, + color:"#67b5c9", + radius:2, + alpha:1, + border:false + }, + "alpha":{ + color:"#b9a8f9", + width:70, + gradient:"falling", + radius:0, + alpha:0.5, + border:true + } +}; + + + +/* DHX DEPEND FROM FILE 'map.js'*/ + + +/*DHX:Depend dhtmlx.js*/ + +dhtmlx.ui.Map = function(key){ + this.name = "Map"; + this._id = "map_"+dhtmlx.uid(); + this._key = key; + this._map = []; +}; +dhtmlx.ui.Map.prototype = { + addRect: function(id,points,userdata) { + this._createMapArea(id,"RECT",points,userdata); + }, + addPoly: function(id,points) { + this._createMapArea(id,"POLY",points); + }, + _createMapArea:function(id,shape,coords,userdata){ + var extra_data = ""; + if(arguments.length==4) + extra_data = "userdata='"+userdata+"'"; + this._map.push(""); + }, + addSector:function(id,alpha0,alpha1,x,y,R,ky){ + var points = []; + points.push(x); + points.push(Math.floor(y*ky)); + for(var i = alpha0; i < alpha1; i+=Math.PI/18){ + points.push(Math.floor(x+R*Math.cos(i))); + points.push(Math.floor((y+R*Math.sin(i))*ky)); + } + points.push(Math.floor(x+R*Math.cos(alpha1))); + points.push(Math.floor((y+R*Math.sin(alpha1))*ky)); + points.push(x); + points.push(Math.floor(y*ky)); + + return this.addPoly(id,points); + }, + render:function(obj){ + var d = dhtmlx.html.create("DIV"); + d.style.cssText="position:absolute; width:100%; height:100%; top:0px; left:0px;"; + obj.appendChild(d); + var src = dhtmlx._isIE?"":"src='data:image/gif;base64,R0lGODlhEgASAIAAAP///////yH5BAUUAAEALAAAAAASABIAAAIPjI+py+0Po5y02ouz3pwXADs='"; + d.innerHTML=""+this._map.join("\n")+""; + + obj._htmlmap = d; //for clearing routine + + this._map = []; + } +}; + + +/* DHX DEPEND FROM FILE 'ext/chart/chart_base.js'*/ + + +/*DHX:Depend map.js*/ +dhtmlx.chart = {}; + + +/* DHX DEPEND FROM FILE 'ext/chart/chart_scatter.js'*/ + + +/*DHX:Depend ext/chart/chart_base.js*/ +dhtmlx.chart.scatter = { + + /** + * renders a graphic + * @param: ctx - canvas object + * @param: data - object those need to be displayed + * @param: point0 - top left point of a chart + * @param: point1 - right bottom point of a chart + * @param: sIndex - index of drawing chart + * @param: map - map object + */ + pvt_render_scatter:function(ctx, data, point0, point1, sIndex, map){ + if(!this._settings.xValue) + return dhtmlx.log("warning","Undefined propery: xValue"); + /*max in min values*/ + var limitsY = this._getLimits(); + var limitsX = this._getLimits("h","xValue"); + /*render scale*/ + if(!sIndex){ + this._drawYAxis(ctx,data,point0,point1,limitsY.min,limitsY.max); + this._drawHXAxis(ctx,data,point0,point1,limitsX.min,limitsX.max); + } + limitsY = {min:this._settings.yAxis.start,max:this._settings.yAxis.end}; + limitsX = {min:this._settings.xAxis.start,max:this._settings.xAxis.end}; + var params = this._getScatterParams(ctx,data,point0,point1,limitsX,limitsY); + for(var i=0;i limits.max) + pos = point0[axis.toLowerCase()]; + /*the limit of the minimum value*/ + if(value < limits.min) + pos = point1[axis.toLowerCase()]; + return pos; + }, + _calcScatterUnit:function(p,min,max,size,axis){ + var relativeValues = this._getRelativeValue(min,max); + axis = (axis||""); + p["relValue"+axis] = relativeValues[0]; + p["valueFactor"+axis] = relativeValues[1]; + p["unit"+axis] = (p["relValue"+axis]?size/p["relValue"+axis]:10); + } +}; + + + +/* DHX DEPEND FROM FILE 'ext/chart/chart_radar.js'*/ + + +/*DHX:Depend ext/chart/chart_base.js*/ +dhtmlx.chart.radar = { + pvt_render_radar:function(ctx,data,x,y,sIndex,map){ + this._renderRadarChart(ctx,data,x,y,sIndex,map); + + }, + /** + * renders a pie chart + * @param: ctx - canvas object + * @param: data - object those need to be displayed + * @param: x - the width of the container + * @param: y - the height of the container + * @param: ky - value from 0 to 1 that defines an angle of inclination (0=start; i -=step){ + if(scaleParam.fixNum) i = parseFloat((new Number(i)).toFixed(scaleParam.fixNum)); + units.push(Math.floor(c*stepHeight)+ 0.5); + if(corr){ + i = Math.round(i*corr)/corr; + } + var unitY = y-radius+units[units.length-1]; + this.renderTextAt("middle","left",x,unitY, + configY.template(i.toString()), + "dhx_axis_item_y dhx_radar" + ); + if(ratios.length<2){ + this._drawScaleSector(ctx,"arc",x,y,radius-units[units.length-1],-Math.PI/2,3*Math.PI/2,i); + return; + } + var startAlpha = -Math.PI/2;/*possibly need to moved in config*/ + var alpha0 = startAlpha; + var alpha1; + for(j=0;j< ratios.length;j++){ + if(i==end) + angles.push(alpha0); + alpha1 = startAlpha+ratios[j]-0.0001; + this._drawScaleSector(ctx,(config.lineShape||"line"),x,y,radius-units[units.length-1],alpha0,alpha1,i,j,data[i]); + alpha0 = alpha1; + } + c++; + } + /*renders radius lines and labels*/ + for(i=0;i< angles.length;i++){ + p = this._getPositionByAngle(angles[i],x,y,radius); + this._drawLine(ctx,x,y,p.x,p.y,(configX?configX.lineColor.call(this,data[i]):"#cfcfcf"),((configX&&configX.lineWidth)?configX.lineWidth.call(this,data[i]):1)); + this._drawRadarScaleLabel(ctx,x,y,radius,angles[i],(configX?configX.template.call(this,data[i]):" ")); + } + + }, + _drawScaleSector:function(ctx,shape,x,y,radius,a1,a2,i,j){ + var pos1, pos2; + if(radius<0) + return false; + pos1 = this._getPositionByAngle(a1,x,y,radius); + pos2 = this._getPositionByAngle(a2,x,y,radius); + var configY = this._settings.yAxis; + if(configY.bg){ + ctx.beginPath(); + ctx.moveTo(x,y); + if(shape=="arc") + ctx.arc(x,y,radius,a1,a2,false); + else{ + ctx.lineTo(pos1.x,pos1.y); + ctx.lineTo(pos2.x,pos2.y); + } + ctx.fillStyle = configY.bg(i,j); + ctx.moveTo(x,y); + ctx.fill(); + ctx.closePath(); + } + if(configY.lines(i,j)){ + ctx.lineWidth = 1; + ctx.beginPath(); + if(shape=="arc") + ctx.arc(x,y,radius,a1,a2,false); + else{ + ctx.moveTo(pos1.x,pos1.y); + ctx.lineTo(pos2.x,pos2.y); + } + ctx.strokeStyle = configY.lineColor(i,j); + ctx.stroke(); + } + }, + _drawRadarScaleLabel:function(ctx,x,y,r,a,text){ + var t = this.renderText(0,0,text,"dhx_axis_radar_title",1); + var width = t.scrollWidth; + var height = t.offsetHeight; + var delta = 0.001; + var pos = this._getPositionByAngle(a,x,y,r+5); + var corr_x=0,corr_y=0; + if(a<0||a>Math.PI){ + corr_y = -height; + } + if(a>Math.PI/2){ + corr_x = -width; + } + if(Math.abs(a+Math.PI/2)=0 ;i--){ + var xi = x0+ Math.floor(params.cellWidth*i) - 0.5; + var yi1 = data[i].$startY; + ctx.lineTo(xi,yi1); + } + } + else ctx.lineTo(x0+ Math.floor(params.cellWidth*(length-1)) - 0.5,y01); + ctx.lineTo(x0,y01); + ctx.fill(); + for(var i=0; i < data.length;i ++){ + data[i].$startY = y1[i]; + } + } + } +}; + + + +/* DHX DEPEND FROM FILE 'ext/chart/chart_spline.js'*/ + + +/*DHX:Depend ext/chart/chart_base.js*/ +dhtmlx.chart.spline = { + /** + * renders a spline chart + * @param: ctx - canvas object + * @param: data - object those need to be displayed + * @param: width - the width of the container + * @param: height - the height of the container + * @param: sIndex - index of drawing chart + */ + pvt_render_spline:function(ctx, data, point0, point1, sIndex, map){ + var areaPos,config,i,items,j,params,radius,sparam,x,x0,x1,x2,y,y1,y2; + params = this._calculateParametersOfLineChart(ctx,data,point0,point1,sIndex); + config = this._settings; + + /*array of all points*/ + items = []; + /*drawing all items*/ + if (data.length) { + + /*getting all points*/ + x0 = (config.offset?point0.x+params.cellWidth*0.5:point0.x); + for(i=0; i < data.length;i ++){ + x = ((!i)?x0:Math.floor(params.cellWidth*i) - 0.5 + x0); + + y = this._getYPointOfLineChart(data[i],point0,point1,params); + items.push({x:x,y:y}); + } + sparam = this._getSplineParameters(items); + + for(i =0; i< items.length; i++){ + x1 = items[i].x; + y1 = items[i].y; + if(i=1; i--) + s[i] = (v[i] - h[i]*s[i+1])/u[i]; + + a = []; b = []; c = []; d = []; + + for(i =0; icellWidth) barWidth = cellWidth/this._series.length-4; + /*the half of distance between bars*/ + var barOffset = Math.floor((cellWidth - barWidth*this._series.length)/2); + /*the radius of rounding in the top part of each bar*/ + var radius = (typeof this._settings.radius!="undefined"?parseInt(this._settings.radius,10):Math.round(barWidth/5)); + + var inner_gradient = false; + var gradient = this._settings.gradient; + + if (gradient&&typeof(gradient) != "function"){ + inner_gradient = gradient; + gradient = false; + } else if (gradient){ + gradient = ctx.createLinearGradient(point0.x,point0.y,point1.x,point0.y); + this._settings.gradient(gradient); + } + var scaleY = 0; + /*draws a black line if the horizontal scale isn't defined*/ + if(!yax){ + this._drawLine(ctx,point0.x-0.5,point0.y,point0.x-0.5,point1.y,"#000000",1); //hardcoded color! + } + + + + for(var i=0; i < data.length;i ++){ + + + var value = parseFloat(this._settings.value(data[i]||0)); + if(value>maxValue) value = maxValue; + value -= minValue; + value *= valueFactor; + + /*start point (bottom left)*/ + var x0 = point0.x; + var y0 = point0.y+ barOffset + i*cellWidth+(barWidth+1)*sIndex; + + if((value<0&&this._settings.origin=="auto")||(this._settings.xAxis&&value===0&&!(this._settings.origin!="auto"&&this._settings.origin>minValue))){ + this.renderTextAt("middle", "right", x0+10,y0+barWidth/2+barOffset,this._settings.label(data[i])); + continue; + } + if(value<0&&this._settings.origin!="auto"&&this._settings.origin>minValue){ + value = 0; + } + + /*takes start value into consideration*/ + if(!yax) value += startValue/unit; + var color = gradient||this._settings.color.call(this,data[i]); + + /*drawing the gradient border of a bar*/ + if(this._settings.border){ + this._drawBarHBorder(ctx,x0,y0,barWidth,minValue,radius,unit,value,color); + } + + /*drawing bar body*/ + ctx.globalAlpha = this._settings.alpha.call(this,data[i]); + var points = this._drawBarH(ctx,point0,x0,y0,barWidth,minValue,radius,unit,value,color,gradient,inner_gradient); + if (inner_gradient!=false){ + this._drawBarHGradient(ctx,x0,y0,barWidth,minValue,radius,unit,value,color,inner_gradient); + + } + ctx.globalAlpha = 1; + + + /*sets a bar label and map area*/ + + if(points[3]==y0){ + this.renderTextAt("middle", "left", points[0]-5,points[3]+Math.floor(barWidth/2),this._settings.label(data[i])); + map.addRect(data[i].id,[points[0],points[3],points[2],points[3]+barWidth],sIndex); + + }else{ + this.renderTextAt("middle", false, points[2]+5,points[1]+Math.floor(barWidth/2),this._settings.label(data[i])); + map.addRect(data[i].id,[points[0],y0,points[2],points[3]],sIndex); + } + + } + }, + /** + * sets points for bar and returns the position of the bottom right point + * @param: ctx - canvas object + * @param: x0 - the x position of start point + * @param: y0 - the y position of start point + * @param: barWidth - bar width + * @param: radius - the rounding radius of the top + * @param: unit - the value defines the correspondence between item value and bar height + * @param: value - item value + * @param: offset - the offset from expected bar edge (necessary for drawing border) + */ + _setBarHPoints:function(ctx,x0,y0,barWidth,radius,unit,value,offset,skipLeft){ + /*correction for displaing small values (when rounding radius is bigger than bar height)*/ + var angle_corr = 0; + if(radius>unit*value){ + var sinA = (radius-unit*value)/radius; + angle_corr = -Math.asin(sinA)+Math.PI/2; + } + /*start*/ + ctx.moveTo(x0,y0+offset); + /*start of left rounding*/ + var x1 = x0 + unit*value - radius - (radius?0:offset); + if(radius0) + ctx.arc(x1,y2,radius-offset,-Math.PI/2+angle_corr,0,false); + /*start of right rounding*/ + var y3 = y0 + barWidth - radius - (radius?0:offset); + var x3 = x1 + radius - (radius?offset:0); + ctx.lineTo(x3,y3); + /*right rounding*/ + var x4 = x1; + if (radius&&radius>0) + ctx.arc(x4,y3,radius-offset,0,Math.PI/2-angle_corr,false); + /*bottom right point*/ + var y5 = y0 + barWidth-offset; + ctx.lineTo(x0,y5); + /*line to the start point*/ + if(!skipLeft){ + ctx.lineTo(x0,y0+offset); + } + // ctx.lineTo(x0,0); //IE fix! + return [x3,y5]; + }, + _drawHScales:function(ctx,data,point0,point1,start,end,cellWidth){ + var x = this._drawHXAxis(ctx,data,point0,point1,start,end); + this._drawHYAxis(ctx,data,point0,point1,cellWidth,x); + }, + _drawHYAxis:function(ctx,data,point0,point1,cellWidth,yAxisX){ + if (!this._settings.yAxis) return; + var unitPos; + var x0 = parseInt((yAxisX?yAxisX:point0.x),10)-0.5; + var y0 = point1.y+0.5; + var y1 = point0.y; + this._drawLine(ctx,x0,y0,x0,y1,this._settings.yAxis.color,1); + + + + for(var i=0; i < data.length;i ++){ + + /*scale labels*/ + var right = ((this._settings.origin!="auto")&&(this._settings.view=="barH")&&(parseFloat(this._settings.value(data[i]))minValue)){ + x += (this._settings.origin-minValue)*unit; + axisStart = x; + value = value-(this._settings.origin-minValue); + if(value < 0){ + value *= (-1); + ctx.translate(x,y+barWidth); + ctx.rotate(Math.PI); + x = 0.5; + y = 0; + } + x += 0.5; + } + + return {value:value,x0:x,y0:y,start:axisStart} + }, + _drawBarH:function(ctx,point0,x0,y0,barWidth,minValue,radius,unit,value,color,gradient,inner_gradient){ + ctx.save(); + var p = this._correctBarHParams(ctx,x0,y0,value,unit,barWidth,minValue); + ctx.fillStyle = color; + ctx.beginPath(); + var points = this._setBarHPoints(ctx,p.x0,p.y0,barWidth,radius,unit,p.value,(this._settings.border?1:0)); + if (gradient&&!inner_gradient) ctx.lineTo(point0.x+total_width,p.y0+(this._settings.border?1:0)); //fix gradient sphreading + ctx.fill(); + ctx.restore(); + var y1 = p.y0; + var y2 = (p.y0!=y0?y0:points[1]); + var x1 = (p.y0!=y0?(p.start-points[0]):p.start); + var x2 = (p.y0!=y0?p.start:points[0]); + + return [x1,y1,x2,y2]; + }, + _drawBarHBorder:function(ctx,x0,y0,barWidth,minValue,radius,unit,value,color){ + ctx.save(); + var p = this._correctBarHParams(ctx,x0,y0,value,unit,barWidth,minValue); + + ctx.beginPath(); + this._setBorderStyles(ctx,color); + ctx.globalAlpha =0.9; + this._setBarHPoints(ctx,p.x0,p.y0,barWidth,radius,unit,p.value,ctx.lineWidth/2,1); + + ctx.stroke(); + ctx.restore(); + }, + _drawBarHGradient:function(ctx,x0,y0,barWidth,minValue,radius,unit,value,color,inner_gradient){ + ctx.save(); + //y0 -= (dhx.env.isIE?0:0.5); + var p = this._correctBarHParams(ctx,x0,y0,value,unit,barWidth,minValue); + var gradParam = this._setBarGradient(ctx,p.x0,p.y0+barWidth,p.x0+unit*p.value,p.y0,inner_gradient,color,"x"); + ctx.fillStyle = gradParam.gradient; + ctx.beginPath(); + var points = this._setBarHPoints(ctx,p.x0,p.y0+gradParam.offset,barWidth-gradParam.offset*2,radius,unit,p.value,gradParam.offset); + ctx.fill(); + ctx.globalAlpha = 1; + ctx.restore(); + } +}; + + + +/* DHX DEPEND FROM FILE 'ext/chart/chart_stackedbarh.js'*/ + + +/*DHX:Depend ext/chart/chart_base.js*/ +/*DHX:Depend ext/chart/chart_barh.js*/ + +dhtmlx.assert(dhtmlx.chart.barH); +dhtmlx.chart.stackedBarH = { +/** + * renders a bar chart + * @param: ctx - canvas object + * @param: data - object those need to be displayed + * @param: x - the width of the container + * @param: y - the height of the container + * @param: sIndex - index of drawing chart + * @param: map - map object + */ + pvt_render_stackedBarH:function(ctx, data, point0, point1, sIndex, map){ + var maxValue,minValue; + /*necessary if maxValue - minValue < 0*/ + var valueFactor; + /*maxValue - minValue*/ + var relValue; + + var total_width = point1.x-point0.x; + + var yax = !!this._settings.yAxis; + + var limits = this._getStackedLimits(data); + maxValue = limits.max; + minValue = limits.min; + + /*an available width for one bar*/ + var cellWidth = Math.floor((point1.y-point0.y)/data.length); + + /*draws x and y scales*/ + if(!sIndex) + this._drawHScales(ctx,data,point0, point1,minValue,maxValue,cellWidth); + + /*necessary for automatic scale*/ + if(yax){ + maxValue = parseFloat(this._settings.xAxis.end); + minValue = parseFloat(this._settings.xAxis.start); + } + + /*unit calculation (bar_height = value*unit)*/ + var relativeValues = this._getRelativeValue(minValue,maxValue); + relValue = relativeValues[0]; + valueFactor = relativeValues[1]; + + var unit = (relValue?total_width/relValue:10); + if(!yax){ + /*defines start value for better representation of small values*/ + var startValue = 10; + unit = (relValue?(total_width-startValue)/relValue:10); + } + + /*a real bar width */ + var barWidth = parseInt(this._settings.width,10); + if((barWidth+4)>cellWidth) barWidth = cellWidth-4; + /*the half of distance between bars*/ + var barOffset = Math.floor((cellWidth - barWidth)/2); + /*the radius of rounding in the top part of each bar*/ + var radius = 0; + + var inner_gradient = false; + var gradient = this._settings.gradient; + if (gradient){ + inner_gradient = true; + } + /*draws a black line if the horizontal scale isn't defined*/ + if(!yax){ + this._drawLine(ctx,point0.x-0.5,point0.y,point0.x-0.5,point1.y,"#000000",1); //hardcoded color! + } + + for(var i=0; i < data.length;i ++){ + + if(!sIndex) + data[i].$startX = point0.x; + + var value = parseFloat(this._settings.value(data[i]||0)); + if(value>maxValue) value = maxValue; + value -= minValue; + value *= valueFactor; + + /*start point (bottom left)*/ + var x0 = point0.x; + var y0 = point0.y+ barOffset + i*cellWidth; + + if(!sIndex) + data[i].$startX = x0; + else + x0 = data[i].$startX; + + if(value<0||(this._settings.yAxis&&value===0)){ + this.renderTextAt("middle", true, x0+10,y0+barWidth/2,this._settings.label(data[i])); + continue; + } + + /*takes start value into consideration*/ + if(!yax) value += startValue/unit; + var color = this._settings.color.call(this,data[i]); + + + /*drawing bar body*/ + ctx.globalAlpha = this._settings.alpha.call(this,data[i]); + ctx.fillStyle = this._settings.color.call(this,data[i]); + ctx.beginPath(); + var points = this._setBarHPoints(ctx,x0,y0,barWidth,radius,unit,value,(this._settings.border?1:0)); + if (gradient&&!inner_gradient) ctx.lineTo(point0.x+total_width,y0+(this._settings.border?1:0)); //fix gradient sphreading + ctx.fill(); + + if (inner_gradient!=false){ + var gradParam = this._setBarGradient(ctx,x0,y0+barWidth,x0,y0,inner_gradient,color,"x"); + ctx.fillStyle = gradParam.gradient; + ctx.beginPath(); + points = this._setBarHPoints(ctx,x0,y0, barWidth,radius,unit,value,0); + ctx.fill(); + } + /*drawing the gradient border of a bar*/ + if(this._settings.border){ + this._drawBarHBorder(ctx,x0,y0,barWidth,minValue,radius,unit,value,color); + } + + ctx.globalAlpha = 1; + + /*sets a bar label*/ + this.renderTextAt("middle",true,data[i].$startX+(points[0]-data[i].$startX)/2-1, y0+(points[1]-y0)/2, this._settings.label(data[i])); + /*defines a map area for a bar*/ + map.addRect(data[i].id,[data[i].$startX,y0,points[0],points[1]],sIndex); + /*the start position for the next series*/ + data[i].$startX = points[0]; + } + } +}; + + +/* DHX DEPEND FROM FILE 'ext/chart/chart_stackedbar.js'*/ + + +/*DHX:Depend ext/chart/chart_base.js*/ +dhtmlx.chart.stackedBar = { + /** + * renders a bar chart + * @param: ctx - canvas object + * @param: data - object those need to be displayed + * @param: x - the width of the container + * @param: y - the height of the container + * @param: sIndex - index of drawing chart + */ + pvt_render_stackedBar:function(ctx, data, point0, point1, sIndex, map){ + var maxValue,minValue; + /*necessary if maxValue - minValue < 0*/ + var valueFactor; + /*maxValue - minValue*/ + var relValue; + + var total_height = point1.y-point0.y; + + var yax = !!this._settings.yAxis; + var xax = !!this._settings.xAxis; + + var limits = this._getStackedLimits(data); + maxValue = limits.max; + minValue = limits.min; + + /*an available width for one bar*/ + var cellWidth = Math.floor((point1.x-point0.x)/data.length); + + /*draws x and y scales*/ + if(!sIndex) + this._drawScales(ctx,data,point0, point1,minValue,maxValue,cellWidth); + + /*necessary for automatic scale*/ + if(yax){ + maxValue = parseFloat(this._settings.yAxis.end); + minValue = parseFloat(this._settings.yAxis.start); + } + + /*unit calculation (bar_height = value*unit)*/ + var relativeValues = this._getRelativeValue(minValue,maxValue); + relValue = relativeValues[0]; + valueFactor = relativeValues[1]; + + var unit = (relValue?total_height/relValue:10); + + /*a real bar width */ + var barWidth = parseInt(this._settings.width,10); + if(barWidth+4 > cellWidth) barWidth = cellWidth-4; + /*the half of distance between bars*/ + var barOffset = Math.floor((cellWidth - barWidth)/2); + + + var inner_gradient = (this._settings.gradient?this._settings.gradient:false); + + /*draws a black line if the horizontal scale isn't defined*/ + if(!xax){ + //scaleY = y-bottomPadding; + this._drawLine(ctx,point0.x,point1.y+0.5,point1.x,point1.y+0.5,"#000000",1); //hardcoded color! + } + + for(var i=0; i < data.length;i ++){ + var value = parseFloat(this._settings.value(data[i]||0)); + + if(!value){ + if(!sIndex||!data[i].$startY) + data[i].$startY = point1.y; + continue; + } + /*adjusts the first tab to the scale*/ + if(!sIndex) + value -= minValue; + + value *= valueFactor; + + /*start point (bottom left)*/ + var x0 = point0.x + barOffset + i*cellWidth; + var y0 = point1.y; + if(!sIndex) + data[i].$startY = y0; + else + y0 = data[i].$startY; + + /*the max height limit*/ + if(y0 < (point0.y+1)) continue; + + if(value<0||(this._settings.yAxis&&value===0)){ + this.renderTextAt(true, true, x0+Math.floor(barWidth/2),y0,this._settings.label(data[i])); + continue; + } + + var color = this._settings.color.call(this,data[i]); + + + + /*drawing bar body*/ + ctx.globalAlpha = this._settings.alpha.call(this,data[i]); + ctx.fillStyle = this._settings.color.call(this,data[i]); + ctx.beginPath(); + var points = this._setStakedBarPoints(ctx,x0-(this._settings.border?0.5:0),y0,barWidth+(this._settings.border?0.5:0),unit,value,0,point0.y); + ctx.fill(); + + /*gradient*/ + if (inner_gradient){ + ctx.save(); + var gradParam = this._setBarGradient(ctx,x0,y0,x0+barWidth,points[1],inner_gradient,color,"y"); + ctx.fillStyle = gradParam.gradient; + ctx.beginPath(); + points = this._setStakedBarPoints(ctx,x0+gradParam.offset,y0,barWidth-gradParam.offset*2,unit,value,(this._settings.border?1:0),point0.y); + ctx.fill(); + ctx.restore() + } + /*drawing the gradient border of a bar*/ + if(this._settings.border){ + ctx.save(); + this._setBorderStyles(ctx,color); + ctx.beginPath(); + + this._setStakedBarPoints(ctx,x0-0.5,y0,barWidth+1,unit,value,0,point0.y,1); + ctx.stroke(); + ctx.restore(); + } + ctx.globalAlpha = 1; + + /*sets a bar label*/ + this.renderTextAt(false, true, x0+Math.floor(barWidth/2),(points[1]+(y0-points[1])/2)-7,this._settings.label(data[i])); + /*defines a map area for a bar*/ + map.addRect(data[i].id,[x0,points[1],points[0],(data[i].$startY||y0)],sIndex); + + /*the start position for the next series*/ + data[i].$startY = (this._settings.border?(points[1]+1):points[1]); + } + }, + /** + * sets points for bar and returns the position of the bottom right point + * @param: ctx - canvas object + * @param: x0 - the x position of start point + * @param: y0 - the y position of start point + * @param: barWidth - bar width + * @param: radius - the rounding radius of the top + * @param: unit - the value defines the correspondence between item value and bar height + * @param: value - item value + * @param: offset - the offset from expected bar edge (necessary for drawing border) + * @param: minY - the minimum y position for the bars () + */ + _setStakedBarPoints:function(ctx,x0,y0,barWidth,unit,value,offset,minY,skipBottom){ + /*start*/ + ctx.moveTo(x0,y0); + /*start of left rounding*/ + var y1 = y0 - unit*value+offset; + /*maximum height limit*/ + if(y1=0;i--){ + ctx.globalAlpha = alphas[i]; + ctx.strokeStyle = "#d0d0d0"; + ctx.beginPath(); + this._strokeChartItem(ctx,x0,y0+2*R/3,R+i+1,config.type); + ctx.stroke(); + } + ctx.beginPath(); + ctx.globalAlpha = 0.3; + ctx.fillStyle = "#bdbdbd"; + this._strokeChartItem(ctx,x0,y0+2*R/3,R+1,config.type); + ctx.fill(); + } + ctx.restore(); + ctx.lineWidth = config.borderWidth; + ctx.fillStyle = config.color.call(this,obj); + ctx.strokeStyle = config.borderColor.call(this,obj); + ctx.globalAlpha = config.alpha.call(this,obj); + ctx.beginPath(); + this._strokeChartItem(ctx,x0,y0,R+1,config.type); + ctx.fill(); + ctx.stroke(); + ctx.globalAlpha = 1; + /*item label*/ + if(label) + this.renderTextAt(false, true, x0,y0-R-this._settings.labelOffset,this._settings.label.call(this,obj)); + }, + _strokeChartItem:function(ctx,x0,y0,R,type){ + if(type && (type=="square" || type=="s")){ + R *= Math.sqrt(2)/2; + ctx.moveTo(x0-R-ctx.lineWidth/2,y0-R); + ctx.lineTo(x0+R,y0-R); + ctx.lineTo(x0+R,y0+R); + ctx.lineTo(x0-R,y0+R); + ctx.lineTo(x0-R,y0-R); + } + else if(type && (type=="diamond" || type=="d")){ + var corr = (ctx.lineWidth>1?ctx.lineWidth*Math.sqrt(2)/4:0); + ctx.moveTo(x0,y0-R); + ctx.lineTo(x0+R,y0); + ctx.lineTo(x0,y0+R); + ctx.lineTo(x0-R,y0); + ctx.lineTo(x0+corr,y0-R-corr); + } + else if(type && (type=="triangle" || type=="t")){ + ctx.moveTo(x0,y0-R); + ctx.lineTo(x0+Math.sqrt(3)*R/2,y0+R/2); + ctx.lineTo(x0-Math.sqrt(3)*R/2,y0+R/2); + ctx.lineTo(x0,y0-R); + } + else + ctx.arc(x0,y0,R,0,Math.PI*2,true); + }, + /** + * gets the vertical position of the item + * @param: data - data object + * @param: y0 - the y position of chart start + * @param: y1 - the y position of chart end + * @param: params - the object with elements: minValue, maxValue, unit, valueFactor (the value multiple of 10) + */ + _getYPointOfLineChart: function(data,point0,point1,params){ + var minValue = params.minValue; + var maxValue = params.maxValue; + var unit = params.unit; + var valueFactor = params.valueFactor; + /*the real value of an object*/ + var value = this._settings.value(data); + /*a relative value*/ + var v = (parseFloat(value||0) - minValue)*valueFactor; + if(!this._settings.yAxis) + v += params.startValue/unit; + /*a vertical coordinate*/ + var y = point1.y - Math.floor(unit*v); + /*the limit of the minimum value is the minimum visible value*/ + if(v<0) + y = point1.y; + /*the limit of the maximum value*/ + if(value > maxValue) + y = point0.y; + /*the limit of the minimum value*/ + if(value < minValue) + y = point1.y; + return y; + }, + _calculateParametersOfLineChart: function(ctx,data,point0,point1,sIndex){ + var params = {}; + + /*maxValue - minValue*/ + var relValue; + + /*available height*/ + params.totalHeight = point1.y-point0.y; + + /*a space available for a single item*/ + //params.cellWidth = Math.round((point1.x-point0.x)/((!this._settings.offset&&this._settings.yAxis)?(data.length-1):data.length)); + params.cellWidth = Math.round((point1.x-point0.x)/((!this._settings.offset)?(data.length-1):data.length)); + + /*scales*/ + var yax = !!this._settings.yAxis; + + var limits = (this._settings.view.indexOf("stacked")!=-1?this._getStackedLimits(data):this._getLimits()); + params.maxValue = limits.max; + params.minValue = limits.min; + + /*draws x and y scales*/ + if(!sIndex) + this._drawScales(ctx,data, point0, point1,params.minValue,params.maxValue,params.cellWidth); + + /*necessary for automatic scale*/ + if(yax){ + params.maxValue = parseFloat(this._settings.yAxis.end); + params.minValue = parseFloat(this._settings.yAxis.start); + } + + /*unit calculation (y_position = value*unit)*/ + var relativeValues = this._getRelativeValue(params.minValue,params.maxValue); + relValue = relativeValues[0]; + params.valueFactor = relativeValues[1]; + params.unit = (relValue?params.totalHeight/relValue:10); + + params.startValue = 0; + if(!yax){ + /*defines start value for better representation of small values*/ + params.startValue = 10; + if(params.unit!=params.totalHeight) + params.unit = (relValue?(params.totalHeight - params.startValue)/relValue:10); + } + return params; + } +}; + + + +/* DHX DEPEND FROM FILE 'ext/chart/chart_bar.js'*/ + + +/*DHX:Depend ext/chart/chart_base.js*/ +dhtmlx.chart.bar = { + /** + * renders a bar chart + * @param: ctx - canvas object + * @param: data - object those need to be displayed + * @param: x - the width of the container + * @param: y - the height of the container + * @param: sIndex - index of drawing chart + */ + pvt_render_bar:function(ctx, data, point0, point1, sIndex, map){ + var maxValue,minValue; + /*necessary if maxValue - minValue < 0*/ + var valueFactor; + /*maxValue - minValue*/ + var relValue; + + var total_height = point1.y-point0.y; + + var yax = !!this._settings.yAxis; + var xax = !!this._settings.xAxis; + + var limits = this._getLimits(); + maxValue = limits.max; + minValue = limits.min; + + /*an available width for one bar*/ + var cellWidth = Math.floor((point1.x-point0.x)/data.length); + + /*draws x and y scales*/ + if(!sIndex&&!(this._settings.origin!="auto"&&!yax)){ + this._drawScales(ctx,data,point0, point1,minValue,maxValue,cellWidth); + } + + /*necessary for automatic scale*/ + if(yax){ + maxValue = parseFloat(this._settings.yAxis.end); + minValue = parseFloat(this._settings.yAxis.start); + } + + /*unit calculation (bar_height = value*unit)*/ + var relativeValues = this._getRelativeValue(minValue,maxValue); + relValue = relativeValues[0]; + valueFactor = relativeValues[1]; + + var unit = (relValue?total_height/relValue:relValue); + if(!yax&&!(this._settings.origin!="auto"&&xax)){ + /*defines start value for better representation of small values*/ + var startValue = 10; + unit = (relValue?(total_height-startValue)/relValue:startValue); + } + /*if yAxis isn't set, but with custom origin */ + if(!sIndex&&(this._settings.origin!="auto"&&!yax)&&this._settings.origin>minValue){ + this._drawXAxis(ctx,data,point0,point1,cellWidth,point1.y-unit*(this._settings.origin-minValue)); + } + + /*a real bar width */ + var barWidth = parseInt(this._settings.width,10); + if(this._series&&(barWidth*this._series.length+4)>cellWidth) barWidth = parseInt(cellWidth/this._series.length-4,10); + /*the half of distance between bars*/ + var barOffset = Math.floor((cellWidth - barWidth*this._series.length)/2); + /*the radius of rounding in the top part of each bar*/ + var radius = (typeof this._settings.radius!="undefined"?parseInt(this._settings.radius,10):Math.round(barWidth/5)); + + var inner_gradient = false; + var gradient = this._settings.gradient; + + if(gradient && typeof(gradient) != "function"){ + inner_gradient = gradient; + gradient = false; + } else if (gradient){ + gradient = ctx.createLinearGradient(0,point1.y,0,point0.y); + this._settings.gradient(gradient); + } + /*draws a black line if the horizontal scale isn't defined*/ + if(!xax){ + this._drawLine(ctx,point0.x,point1.y+0.5,point1.x,point1.y+0.5,"#000000",1); //hardcoded color! + } + + for(var i=0; i < data.length;i ++){ + + var value = parseFloat(this._settings.value(data[i]||0)); + if(value>maxValue) value = maxValue; + value -= minValue; + value *= valueFactor; + + /*start point (bottom left)*/ + var x0 = point0.x + barOffset + i*cellWidth+(barWidth+1)*sIndex; + var y0 = point1.y+0.5; + + if(value<0||(this._settings.yAxis&&value===0&&!(this._settings.origin!="auto"&&this._settings.origin>minValue))){ + this.renderTextAt(true, true, x0+Math.floor(barWidth/2),y0,this._settings.label(data[i])); + continue; + } + + /*takes start value into consideration*/ + if(!yax&&!(this._settings.origin!="auto"&&xax)) value += startValue/unit; + + var color = gradient||this._settings.color.call(this,data[i]); + + + /*drawing bar body*/ + ctx.globalAlpha = this._settings.alpha.call(this,data[i]); + var points = this._drawBar(ctx,point0,x0,y0,barWidth,minValue,radius,unit,value,color,gradient,inner_gradient); + if (inner_gradient){ + this._drawBarGradient(ctx,x0,y0,barWidth,minValue,radius,unit,value,color,inner_gradient); + } + /*drawing the gradient border of a bar*/ + if(this._settings.border) + this._drawBarBorder(ctx,x0,y0,barWidth,minValue,radius,unit,value,color); + + ctx.globalAlpha = 1; + + /*sets a bar label*/ + if(points[0]!=x0) + this.renderTextAt(false, true, x0+Math.floor(barWidth/2),points[1],this._settings.label(data[i])); + else + this.renderTextAt(true, true, x0+Math.floor(barWidth/2),points[3],this._settings.label(data[i])); + /*defines a map area for a bar*/ + map.addRect(data[i].id,[x0,points[3],points[2],points[1]],sIndex); + } + }, + _correctBarParams:function(ctx,x,y,value,unit,barWidth,minValue){ + var xax = this._settings.xAxis; + var axisStart = y; + if(!!xax&&this._settings.origin!="auto" && (this._settings.origin>minValue)){ + y -= (this._settings.origin-minValue)*unit; + axisStart = y; + value = value-(this._settings.origin-minValue); + if(value < 0){ + value *= (-1); + ctx.translate(x+barWidth,y); + ctx.rotate(Math.PI); + x = 0; + y = 0; + } + y -= 0.5; + } + + return {value:value,x0:parseInt(x,10),y0:parseInt(y,10),start:axisStart} + }, + _drawBar:function(ctx,point0,x0,y0,barWidth,minValue,radius,unit,value,color,gradient,inner_gradient){ + ctx.save(); + ctx.fillStyle = color; + var p = this._correctBarParams(ctx,x0,y0,value,unit,barWidth,minValue); + var points = this._setBarPoints(ctx,p.x0,p.y0,barWidth,radius,unit,p.value,(this._settings.border?1:0)); + if (gradient&&!inner_gradient) ctx.lineTo(p.x0+(this._settings.border?1:0),point0.y); //fix gradient sphreading + ctx.fill(); + ctx.restore(); + var x1 = p.x0; + var x2 = (p.x0!=x0?x0+points[0]:points[0]); + var y1 = (p.x0!=x0?(p.start-points[1]):y0); + var y2 = (p.x0!=x0?p.start:points[1]); + return [x1,y1,x2,y2]; + }, + _setBorderStyles:function(ctx,color){ + var hsv,rgb; + rgb = dhtmlx.math.toRgb(color); + hsv = dhtmlx.math.rgbToHsv(rgb[0],rgb[1],rgb[2]); + hsv[2] /= 2; + color = "rgb("+dhtmlx.math.hsvToRgb(hsv[0],hsv[1],hsv[2])+")"; + ctx.strokeStyle = color; + if(ctx.globalAlpha==1) + ctx.globalAlpha = 0.9; + }, + _drawBarBorder:function(ctx,x0,y0,barWidth,minValue,radius,unit,value,color){ + var p; + ctx.save(); + p = this._correctBarParams(ctx,x0,y0,value,unit,barWidth,minValue); + this._setBorderStyles(ctx,color); + this._setBarPoints(ctx,p.x0,p.y0,barWidth,radius,unit,p.value,ctx.lineWidth/2,1); + ctx.stroke(); + /*ctx.fillStyle = color; + this._setBarPoints(ctx,p.x0,p.y0,barWidth,radius,unit,p.value,0); + ctx.lineTo(p.x0,0); + ctx.fill() + + + ctx.fillStyle = "#000000"; + ctx.globalAlpha = 0.37; + + this._setBarPoints(ctx,p.x0,p.y0,barWidth,radius,unit,p.value,0); + ctx.fill() + */ + ctx.restore(); + }, + _drawBarGradient:function(ctx,x0,y0,barWidth,minValue,radius,unit,value,color,inner_gradient){ + ctx.save(); + //y0 -= (dhtmlx._isIE?0:0.5); + var p = this._correctBarParams(ctx,x0,y0,value,unit,barWidth,minValue); + var gradParam = this._setBarGradient(ctx,p.x0,p.y0,p.x0+barWidth,p.y0-unit*p.value+2,inner_gradient,color,"y"); + var borderOffset = this._settings.border?1:0; + ctx.fillStyle = gradParam.gradient; + this._setBarPoints(ctx,p.x0+gradParam.offset,p.y0,barWidth-gradParam.offset*2,radius,unit,p.value,gradParam.offset+borderOffset); + ctx.fill(); + ctx.restore(); + }, + /** + * sets points for bar and returns the position of the bottom right point + * @param: ctx - canvas object + * @param: x0 - the x position of start point + * @param: y0 - the y position of start point + * @param: barWidth - bar width + * @param: radius - the rounding radius of the top + * @param: unit - the value defines the correspondence between item value and bar height + * @param: value - item value + * @param: offset - the offset from expected bar edge (necessary for drawing border) + */ + _setBarPoints:function(ctx,x0,y0,barWidth,radius,unit,value,offset,skipBottom){ + /*correction for displaing small values (when rounding radius is bigger than bar height)*/ + ctx.beginPath(); + //y0 = 0.5; + var angle_corr = 0; + if(radius>unit*value){ + var cosA = (radius-unit*value)/radius; + if(cosA<=1&&cosA>=-1) + angle_corr = -Math.acos(cosA)+Math.PI/2; + } + /*start*/ + ctx.moveTo(x0+offset,y0); + /*start of left rounding*/ + var y1 = y0 - Math.floor(unit*value) + radius + (radius?0:offset); + if(radius0) + ctx.arc(x2,y1,radius-offset,-Math.PI+angle_corr,-Math.PI/2,false); + /*start of right rounding*/ + var x3 = x0 + barWidth - radius - (radius?0:offset); + var y3 = y1 - radius+(radius?offset:0); + ctx.lineTo(x3,y3); + /*right rounding*/ + if (radius&&radius>0) + ctx.arc(x3,y1,radius-offset,-Math.PI/2,0-angle_corr,false); + /*bottom right point*/ + var x5 = x0 + barWidth-offset; + ctx.lineTo(x5,y0); + /*line to the start point*/ + if(!skipBottom){ + ctx.lineTo(x0+offset,y0); + } + // ctx.lineTo(x0,0); //IE fix! + return [x5,y3]; + } +}; + + +/* DHX DEPEND FROM FILE 'ext/chart/chart_pie.js'*/ + + +/*DHX:Depend ext/chart/chart_base.js*/ +dhtmlx.chart.pie = { + pvt_render_pie:function(ctx,data,x,y,sIndex,map){ + this._renderPie(ctx,data,x,y,1,map); + + }, + /** + * renders a pie chart + * @param: ctx - canvas object + * @param: data - object those need to be displayed + * @param: x - the width of the container + * @param: y - the height of the container + * @param: ky - value from 0 to 1 that defines an angle of inclination (0=0)||(a1>=0 && a2<=Math.PI)||(Math.abs(a1-Math.PI)>0.003&&a1<=Math.PI && a2>=Math.PI))) return; + + if(a1<=0 && a2>=0){ + a1 = 0; + line = false; + this._drawSectorLine(ctx,x0,y0,R,a1,a2); + } + if(a1<=Math.PI && a2>=Math.PI){ + a2 = Math.PI; + line = false; + this._drawSectorLine(ctx,x0,y0,R,a1,a2); + } + /*the height of 3D pie*/ + var offset = (this._settings.height||Math.floor(R/4))/this._settings.cant; + ctx.beginPath(); + ctx.arc(x0,y0,R,a1,a2,false); + ctx.lineTo(x0+R*Math.cos(a2),y0+R*Math.sin(a2)+offset); + ctx.arc(x0,y0+offset,R,a2,a1,true); + ctx.lineTo(x0+R*Math.cos(a1),y0+R*Math.sin(a1)); + ctx.fill(); + if(line) + ctx.stroke(); + }, + /** + * draws a serctor arc + */ + _drawSectorLine:function(ctx,x0,y0,R,a1,a2){ + ctx.beginPath(); + ctx.arc(x0,y0,R,a1,a2,false); + ctx.stroke(); + }, + /** + * adds a shadow to pie + * @param: ctx - canvas object + * @param: x - the horizontal position of the pie center + * @param: y - the vertical position of the pie center + * @param: R - pie radius + */ + _addShadow:function(ctx,x,y,R){ + ctx.globalAlpha = 0.5; + var shadows = ["#c4c4c4","#c6c6c6","#cacaca","#dcdcdc","#dddddd","#e0e0e0","#eeeeee","#f5f5f5","#f8f8f8"]; + for(var i = shadows.length-1;i>-1;i--){ + ctx.beginPath(); + ctx.fillStyle = shadows[i]; + ctx.arc(x+1,y+1,R+i,0,Math.PI*2,true); + ctx.fill(); + } + ctx.globalAlpha = 1 + }, + /** + * returns a gray gradient + * @param: gradient - gradient object + */ + _getGrayGradient:function(gradient){ + gradient.addColorStop(0.0,"#ffffff"); + gradient.addColorStop(0.7,"#7a7a7a"); + gradient.addColorStop(1.0,"#000000"); + return gradient; + }, + /** + * adds gray radial gradient + * @param: ctx - canvas object + * @param: x - the horizontal position of the pie center + * @param: y - the vertical position of the pie center + * @param: radius - pie radius + * @param: x0 - the horizontal position of a gradient center + * @param: y0 - the vertical position of a gradient center + */ + _showRadialGradient:function(ctx,x,y,radius,x0,y0){ + //ctx.globalAlpha = 0.3; + ctx.beginPath(); + var gradient; + if(typeof this._settings.gradient!= "function"){ + gradient = ctx.createRadialGradient(x0,y0,radius/4,x,y,radius); + gradient = this._getGrayGradient(gradient); + } + else gradient = this._settings.gradient(gradient); + ctx.fillStyle = gradient; + ctx.arc(x,y,radius,0,Math.PI*2,true); + ctx.fill(); + //ctx.globalAlpha = 1; + ctx.globalAlpha = 0.7; + }, + /** + * returns the calculates pie parameters: center position and radius + * @param: ctx - canvas object + * @param: x0 - the horizontal position of the pie center + * @param: y0 - the vertical position of the pie center + * @param: R - pie radius + * @param: alpha1 - the angle that defines the 1st edge of a sector + * @param: alpha2 - the angle that defines the 2nd edge of a sector + * @param: ky - the value that defines an angle of inclination + * @param: text - label text + * @param: in_width (boolean) - if label needs being displayed inside a pie + */ + _drawSectorLabel:function(x0,y0,R,alpha1,alpha2,ky,text,in_width){ + var t = this.renderText(0,0,text,0,1); + if (!t) return; + + //get existing width of text + var labelWidth = t.scrollWidth; + t.style.width = labelWidth+"px"; //adjust text label to fit all text + if (labelWidth>x0) labelWidth = x0; //the text can't be greater than half of view + + //calculate expected correction based on default font metrics + var width = (alpha2-alpha1<0.2?4:8); + if (in_width) width = labelWidth/1.8; + var alpha = alpha1+(alpha2-alpha1)/2; + + //position and its correction + R = R-(width-8)/2; + var corr_x = - width; + var corr_y = -8; + var align = "right"; + + //for items in left upper and lower sector + if(alpha>=Math.PI/2 && alpha=Math.PI){ + corr_x = -labelWidth-corr_x+1;/*correction for label width*/ + align = "left"; + } + + //calculate position of text + //basically get point at center of pie sector + var offset = 0; + + if(!in_width&&ky<1&&(alpha>0&&alpha=Math.PI/2 && alpha=Math.PI)){ + x += labelWidth/3; + } + + + //we need to set position of text manually, based on above calculations + t.style.top = y+"px"; + t.style.left = x+"px"; + t.style.width = labelWidth+"px"; + t.style.textAlign = align; + t.style.whiteSpace = "nowrap"; + } +}; + +dhtmlx.chart.pie3D = { + pvt_render_pie3D:function(ctx,data,x,y,sIndex,map){ + this._renderPie(ctx,data,x,y,this._settings.cant,map); + } +}; +dhtmlx.chart.donut = { + pvt_render_donut:function(ctx,data,point0,point1,sIndex,map){ + if(!data.length) + return; + this._renderPie(ctx,data,point0,point1,1,map); + var config = this._settings; + var coord = this._getPieParameters(point0,point1); + var pieRadius = (config.radius?config.radius:coord.radius); + var innerRadius = ((config.innerRadius&&(config.innerRadius value + // {obj.attr} => named attribute or value of sub-tag in case of xml + // {obj.attr?some:other} conditional output + // {-obj => sub-template + str=(str||"").toString(); + str=str.replace(/[\r\n]+/g,"\\n"); + str=str.replace(/\{obj\.([^}?]+)\?([^:]*):([^}]*)\}/g,"\"+(obj.$1?\"$2\":\"$3\")+\""); + str=str.replace(/\{common\.([^}\(]*)\}/g,"\"+common.$1+\""); + str=str.replace(/\{common\.([^\}\(]*)\(\)\}/g,"\"+(common.$1?common.$1(obj):\"\")+\""); + str=str.replace(/\{obj\.([^}]*)\}/g,"\"+obj.$1+\""); + str=str.replace(/#([a-z0-9_]+)#/gi,"\"+obj.$1+\""); + str=str.replace(/\{obj\}/g,"\"+obj+\""); + str=str.replace(/\{-obj/g,"{obj"); + str=str.replace(/\{-common/g,"{common"); + str="return \""+str+"\";"; + return this._cache[str]= Function("obj","common",str); + } +}; + +dhtmlx.Type={ + /* + adds new template-type + obj - object to which template will be added + data - properties of template + */ + add:function(obj, data){ + //auto switch to prototype, if name of class was provided + if (!obj.types && obj.prototype.types) + obj = obj.prototype; + //if (typeof data == "string") + // data = { template:data }; + + if (dhtmlx.assert_enabled()) + this.assert_event(data); + + var name = data.name||"default"; + + //predefined templates - autoprocessing + this._template(data); + this._template(data,"edit"); + this._template(data,"loading"); + + obj.types[name]=dhtmlx.extend(dhtmlx.extend({},(obj.types[name]||this._default)),data); + return name; + }, + //default template value - basically empty box with 5px margin + _default:{ + css:"default", + template:function(){ return ""; }, + template_edit:function(){ return ""; }, + template_loading:function(){ return "..."; }, + width:150, + height:80, + margin:5, + padding:0 + }, + //template creation helper + _template:function(obj,name){ + name = "template"+(name?("_"+name):""); + var data = obj[name]; + //if template is a string - check is it plain string or reference to external content + if (data && (typeof data == "string")){ + if (data.indexOf("->")!=-1){ + data = data.split("->"); + switch(data[0]){ + case "html": //load from some container on the page + data = dhtmlx.html.getValue(data[1]).replace(/\"/g,"\\\""); + break; + case "http": //load from external file + data = new dhtmlx.ajax().sync().get(data[1],{uid:(new Date()).valueOf()}).responseText; + break; + default: + //do nothing, will use template as is + break; + } + } + obj[name] = dhtmlx.Template.fromHTML(data); + } + } +}; + + + +/* DHX DEPEND FROM FILE 'single_render.js'*/ + + +/* + REnders single item. + Can be used for elements without datastore, or with complex custom rendering logic + + @export + render +*/ + +/*DHX:Depend template.js*/ + +dhtmlx.SingleRender={ + _init:function(){ + }, + //convert item to the HTML text + _toHTML:function(obj){ + /* + this one doesn't support per-item-$template + it has not sense, because we have only single item per object + */ + return this.type._item_start(obj,this.type)+this.type.template(obj,this.type)+this.type._item_end; + }, + //render self, by templating data object + render:function(){ + if (!this.callEvent || this.callEvent("onBeforeRender",[this.data])){ + if (this.data) + this._dataobj.innerHTML = this._toHTML(this.data); + if (this.callEvent) this.callEvent("onAfterRender",[]); + } + } +}; + + +/* DHX DEPEND FROM FILE 'tooltip.js'*/ + + +/* + UI: Tooltip + + @export + show + hide +*/ + +/*DHX:Depend tooltip.css*/ +/*DHX:Depend template.js*/ +/*DHX:Depend single_render.js*/ + +dhtmlx.ui.Tooltip=function(container){ + this.name = "Tooltip"; + this.version = "3.0"; + + if (dhtmlx.assert_enabled()) this._assert(); + + if (typeof container == "string"){ + container = { template:container }; + } + + dhtmlx.extend(this, dhtmlx.Settings); + dhtmlx.extend(this, dhtmlx.SingleRender); + this._parseSettings(container,{ + type:"default", + dy:0, + dx:20 + }); + + //create container for future tooltip + this._dataobj = this._obj = document.createElement("DIV"); + this._obj.className="dhx_tooltip"; + dhtmlx.html.insertBefore(this._obj,document.body.firstChild); +}; +dhtmlx.ui.Tooltip.prototype = { + //show tooptip + //pos - object, pos.x - left, pox.y - top + show:function(data,pos){ + if (this._disabled) return; + //render sefl only if new data was provided + if (this.data!=data){ + this.data=data; + this.render(data); + } + //show at specified position + this._obj.style.top = pos.y+this._settings.dy+"px"; + this._obj.style.left = pos.x+this._settings.dx+"px"; + this._obj.style.display="block"; + }, + //hide tooltip + hide:function(){ + this.data=null; //nulify, to be sure that on next show it will be fresh-rendered + this._obj.style.display="none"; + }, + disable:function(){ + this._disabled = true; + }, + enable:function(){ + this._disabled = false; + }, + types:{ + "default":dhtmlx.Template.fromHTML("{obj.id}") + }, + template_item_start:dhtmlx.Template.empty, + template_item_end:dhtmlx.Template.empty +}; + + + +/* DHX DEPEND FROM FILE 'autotooltip.js'*/ + + +/* + Behavior: AutoTooltip - links tooltip to data driven item +*/ + +/*DHX:Depend tooltip.js*/ + +dhtmlx.AutoTooltip = { + tooltip_setter:function(value){ + var t = new dhtmlx.ui.Tooltip(value); + this.attachEvent("onMouseMove",function(id,e){ //show tooltip on mousemove + t.show(this.get(id),dhtmlx.html.pos(e)); + }); + this.attachEvent("onMouseOut",function(id,e){ //hide tooltip on mouseout + t.hide(); + }); + this.attachEvent("onMouseMoving",function(id,e){ //hide tooltip just after moving start + t.hide(); + }); + return t; + } +}; + + +/* DHX DEPEND FROM FILE 'load.js'*/ + + +/* + ajax operations + + can be used for direct loading as + dhtmlx.ajax(ulr, callback) + or + dhtmlx.ajax().item(url) + dhtmlx.ajax().post(url) + +*/ + +/*DHX:Depend dhtmlx.js*/ + +dhtmlx.ajax = function(url,call,master){ + //if parameters was provided - made fast call + if (arguments.length!==0){ + var http_request = new dhtmlx.ajax(); + if (master) http_request.master=master; + http_request.get(url,null,call); + } + if (!this.getXHR) return new dhtmlx.ajax(); //allow to create new instance without direct new declaration + + return this; +}; +dhtmlx.ajax.prototype={ + //creates xmlHTTP object + getXHR:function(){ + if (dhtmlx._isIE) + return new ActiveXObject("Microsoft.xmlHTTP"); + else + return new XMLHttpRequest(); + }, + /* + send data to the server + params - hash of properties which will be added to the url + call - callback, can be an array of functions + */ + send:function(url,params,call){ + var x=this.getXHR(); + if (typeof call == "function") + call = [call]; + //add extra params to the url + if (typeof params == "object"){ + var t=[]; + for (var a in params){ + var value = params[a]; + if (value === null || value === dhtmlx.undefined) + value = ""; + t.push(a+"="+encodeURIComponent(value));// utf-8 escaping + } + params=t.join("&"); + } + if (params && !this.post){ + url=url+(url.indexOf("?")!=-1 ? "&" : "?")+params; + params=null; + } + + x.open(this.post?"POST":"GET",url,!this._sync); + if (this.post) + x.setRequestHeader('Content-type','application/x-www-form-urlencoded'); + + //async mode, define loading callback + //if (!this._sync){ + var self=this; + x.onreadystatechange= function(){ + if (!x.readyState || x.readyState == 4){ + dhtmlx.log_full_time("data_loading"); //log rendering time + if (call && self) + for (var i=0; i < call.length; i++) //there can be multiple callbacks + if (call[i]) + call[i].call((self.master||self),x.responseText,x.responseXML,x); + self.master=null; + call=self=null; //anti-leak + } + }; + //} + + x.send(params||null); + return x; //return XHR, which can be used in case of sync. mode + }, + //GET request + get:function(url,params,call){ + this.post=false; + return this.send(url,params,call); + }, + //POST request + post:function(url,params,call){ + this.post=true; + return this.send(url,params,call); + }, + sync:function(){ + this._sync = true; + return this; + } +}; + + +dhtmlx.AtomDataLoader={ + _init:function(config){ + //prepare data store + this.data = {}; + if (config){ + this._settings.datatype = config.datatype||"json"; + this._after_init.push(this._load_when_ready); + } + }, + _load_when_ready:function(){ + this._ready_for_data = true; + + if (this._settings.url) + this.url_setter(this._settings.url); + if (this._settings.data) + this.data_setter(this._settings.data); + }, + url_setter:function(value){ + if (!this._ready_for_data) return value; + this.load(value, this._settings.datatype); + return value; + }, + data_setter:function(value){ + if (!this._ready_for_data) return value; + this.parse(value, this._settings.datatype); + return true; + }, + //loads data from external URL + load:function(url,call){ + this.callEvent("onXLS",[]); + if (typeof call == "string"){ //second parameter can be a loading type or callback + this.data.driver = dhtmlx.DataDriver[call]; + call = arguments[2]; + } + else + this.data.driver = dhtmlx.DataDriver["xml"]; + //load data by async ajax call + dhtmlx.ajax(url,[this._onLoad,call],this); + }, + //loads data from object + parse:function(data,type){ + this.callEvent("onXLS",[]); + this.data.driver = dhtmlx.DataDriver[type||"xml"]; + this._onLoad(data,null); + }, + //default after loading callback + _onLoad:function(text,xml,loader){ + var driver = this.data.driver; + var top = driver.getRecords(driver.toObject(text,xml))[0]; + this.data=(driver?driver.getDetails(top):text); + this.callEvent("onXLE",[]); + }, + _check_data_feed:function(data){ + if (!this._settings.dataFeed || this._ignore_feed || !data) return true; + var url = this._settings.dataFeed; + if (typeof url == "function") + return url.call(this, (data.id||data), data); + url = url+(url.indexOf("?")==-1?"?":"&")+"action=get&id="+encodeURIComponent(data.id||data); + this.callEvent("onXLS",[]); + dhtmlx.ajax(url, function(text,xml){ + this._ignore_feed=true; + this.setValues(dhtmlx.DataDriver.json.toObject(text)[0]); + this._ignore_feed=false; + this.callEvent("onXLE",[]); + }, this); + return false; + } +}; + +/* + Abstraction layer for different data types +*/ + +dhtmlx.DataDriver={}; +dhtmlx.DataDriver.json={ + //convert json string to json object if necessary + toObject:function(data){ + if (!data) data="[]"; + if (typeof data == "string"){ + eval ("dhtmlx.temp="+data); + return dhtmlx.temp; + } + return data; + }, + //get array of records + getRecords:function(data){ + if (data && !(data instanceof Array)) + return [data]; + return data; + }, + //get hash of properties for single record + getDetails:function(data){ + return data; + }, + //get count of data and position at which new data need to be inserted + getInfo:function(data){ + return { + _size:(data.total_count||0), + _from:(data.pos||0), + _key:(data.dhx_security) + }; + } +}; + +dhtmlx.DataDriver.json_ext={ + //convert json string to json object if necessary + toObject:function(data){ + if (!data) data="[]"; + if (typeof data == "string"){ + var temp; + eval ("temp="+data); + dhtmlx.temp = []; + var header = temp.header; + for (var i = 0; i < temp.data.length; i++) { + var item = {}; + for (var j = 0; j < header.length; j++) { + if (typeof(temp.data[i][j]) != "undefined") + item[header[j]] = temp.data[i][j]; + } + dhtmlx.temp.push(item); + } + return dhtmlx.temp; + } + return data; + }, + //get array of records + getRecords:function(data){ + if (data && !(data instanceof Array)) + return [data]; + return data; + }, + //get hash of properties for single record + getDetails:function(data){ + return data; + }, + //get count of data and position at which new data need to be inserted + getInfo:function(data){ + return { + _size:(data.total_count||0), + _from:(data.pos||0) + }; + } +}; + +dhtmlx.DataDriver.html={ + /* + incoming data can be + - collection of nodes + - ID of parent container + - HTML text + */ + toObject:function(data){ + if (typeof data == "string"){ + var t=null; + if (data.indexOf("<")==-1) //if no tags inside - probably its an ID + t = dhtmlx.toNode(data); + if (!t){ + t=document.createElement("DIV"); + t.innerHTML = data; + } + + return t.getElementsByTagName(this.tag); + } + return data; + }, + //get array of records + getRecords:function(data){ + if (data.tagName) + return data.childNodes; + return data; + }, + //get hash of properties for single record + getDetails:function(data){ + return dhtmlx.DataDriver.xml.tagToObject(data); + }, + //dyn loading is not supported by HTML data source + getInfo:function(data){ + return { + _size:0, + _from:0 + }; + }, + tag: "LI" +}; + +dhtmlx.DataDriver.jsarray={ + //eval jsarray string to jsarray object if necessary + toObject:function(data){ + if (typeof data == "string"){ + eval ("dhtmlx.temp="+data); + return dhtmlx.temp; + } + return data; + }, + //get array of records + getRecords:function(data){ + return data; + }, + //get hash of properties for single record, in case of array they will have names as "data{index}" + getDetails:function(data){ + var result = {}; + for (var i=0; i < data.length; i++) + result["data"+i]=data[i]; + + return result; + }, + //dyn loading is not supported by js-array data source + getInfo:function(data){ + return { + _size:0, + _from:0 + }; + } +}; + +dhtmlx.DataDriver.csv={ + //incoming data always a string + toObject:function(data){ + return data; + }, + //get array of records + getRecords:function(data){ + return data.split(this.row); + }, + //get hash of properties for single record, data named as "data{index}" + getDetails:function(data){ + data = this.stringToArray(data); + var result = {}; + for (var i=0; i < data.length; i++) + result["data"+i]=data[i]; + + return result; + }, + //dyn loading is not supported by csv data source + getInfo:function(data){ + return { + _size:0, + _from:0 + }; + }, + //split string in array, takes string surrounding quotes in account + stringToArray:function(data){ + data = data.split(this.cell); + for (var i=0; i < data.length; i++) + data[i] = data[i].replace(/^[ \t\n\r]*(\"|)/g,"").replace(/(\"|)[ \t\n\r]*$/g,""); + return data; + }, + row:"\n", //default row separator + cell:"," //default cell separator +}; + +dhtmlx.DataDriver.xml={ + //convert xml string to xml object if necessary + toObject:function(text,xml){ + if (xml && (xml=this.checkResponse(text,xml))) //checkResponse - fix incorrect content type and extra whitespaces errors + return xml; + if (typeof text == "string"){ + return this.fromString(text); + } + return text; + }, + //get array of records + getRecords:function(data){ + return this.xpath(data,this.records); + }, + records:"/*/item", + //get hash of properties for single record + getDetails:function(data){ + return this.tagToObject(data,{}); + }, + //get count of data and position at which new data_loading need to be inserted + getInfo:function(data){ + return { + _size:(data.documentElement.getAttribute("total_count")||0), + _from:(data.documentElement.getAttribute("pos")||0), + _key:(data.documentElement.getAttribute("dhx_security")) + }; + }, + //xpath helper + xpath:function(xml,path){ + if (window.XPathResult){ //FF, KHTML, Opera + var node=xml; + if(xml.nodeName.indexOf("document")==-1) + xml=xml.ownerDocument; + var res = []; + var col = xml.evaluate(path, node, null, XPathResult.ANY_TYPE, null); + var temp = col.iterateNext(); + while (temp){ + res.push(temp); + temp = col.iterateNext(); + } + return res; + } + else { + var test = true; + try { + if (typeof(xml.selectNodes)=="undefined") + test = false; + } catch(e){ /*IE7 and below can't operate with xml object*/ } + //IE + if (test) + return xml.selectNodes(path); + else { + //Google hate us, there is no interface to do XPath + //use naive approach + var name = path.split("/").pop(); + return xml.getElementsByTagName(name); + } + } + }, + //convert xml tag to js object, all subtags and attributes are mapped to the properties of result object + tagToObject:function(tag,z){ + z=z||{}; + var flag=false; + + //map attributes + var a=tag.attributes; + if(a && a.length){ + for (var i=0; ito){ //can be in case of backward shift-selection + var a=to; to=from; from=a; + } + + return this.getIndexRange(from,to); + }, + //converts range of indexes to array of all IDs between them + getIndexRange:function(from,to){ + to=Math.min((to||Infinity),this.dataCount()-1); + + var ret=dhtmlx.toArray(); //result of method is rich-array + for (var i=(from||0); i <= to; i++) + ret.push(this.item(this.order[i])); + return ret; + }, + //returns total count of elements + dataCount:function(){ + return this.order.length; + }, + //returns truy if item with such ID exists + exists:function(id){ + return !!(this.pull[id]); + }, + //nextmethod is not visible on component level, check DataMove.move + //moves item from source index to the target index + move:function(sindex,tindex){ + if (sindex<0 || tindex<0){ + dhtmlx.error("DataStore::move","Incorrect indexes"); + return; + } + + var id = this.idByIndex(sindex); + var obj = this.item(id); + + this.order.removeAt(sindex); //remove at old position + //if (sindex data_size){ + dhtmlx.log("Warning","DataStore:add","Index of out of bounds"); + index = Math.min(this.order.length,index); + } + if (this.callEvent("onBeforeAdd", [id, obj, index]) === false) return false; + + if (this.exists(id)) return dhtmlx.error("Not unique ID"); + + this.pull[id]=obj; + this.order.insertAt(id,index); + if (this._filter_order){ //adding during filtering + //we can't know the location of new item in full dataset, making suggestion + //put at end by default + var original_index = this._filter_order.length; + //put at start only if adding to the start and some data exists + if (!index && this.order.length) + original_index = 0; + + this._filter_order.insertAt(id,original_index); + } + this.callEvent("onafterAdd",[id,index]); + //repaint signal + this.callEvent("onStoreUpdated",[id,obj,"add"]); + return id; + }, + + //removes element from datastore + remove:function(id){ + //id can be an array of IDs - result of getSelect, for example + if (id instanceof Array){ + for (var i=0; i < id.length; i++) + this.remove(id[i]); + return; + } + if (this.callEvent("onBeforeDelete",[id]) === false) return false; + if (!this.exists(id)) return dhtmlx.error("Not existing ID",id); + var obj = this.item(id); //save for later event + //clear from collections + this.order.remove(id); + if (this._filter_order) + this._filter_order.remove(id); + + delete this.pull[id]; + this.callEvent("onafterdelete",[id]); + //repaint signal + this.callEvent("onStoreUpdated",[id,obj,"delete"]); + }, + //deletes all records in datastore + clearAll:function(){ + //instead of deleting one by one - just reset inner collections + this.pull = {}; + this.order = dhtmlx.toArray(); + this.feed = null; + this._filter_order = null; + this.callEvent("onClearAll",[]); + this.refresh(); + }, + //converts id to index + idByIndex:function(index){ + if (index>=this.order.length || index<0) + dhtmlx.log("Warning","DataStore::idByIndex Incorrect index"); + + return this.order[index]; + }, + //converts index to id + indexById:function(id){ + var res = this.order.find(id); //slower than idByIndex + + //if (!this.pull[id]) + // dhtmlx.log("Warning","DataStore::indexById Non-existing ID: "+ id); + + return res; + }, + //returns ID of next element + next:function(id,step){ + return this.order[this.indexById(id)+(step||1)]; + }, + //returns ID of first element + first:function(){ + return this.order[0]; + }, + //returns ID of last element + last:function(){ + return this.order[this.order.length-1]; + }, + //returns ID of previous element + previous:function(id,step){ + return this.order[this.indexById(id)-(step||1)]; + }, + /* + sort data in collection + by - settings of sorting + + or + + by - sorting function + dir - "asc" or "desc" + + or + + by - property + dir - "asc" or "desc" + as - type of sortings + + Sorting function will accept 2 parameters and must return 1,0,-1, based on desired order + */ + sort:function(by, dir, as){ + var sort = by; + if (typeof by == "function") + sort = {as:by, dir:dir}; + else if (typeof by == "string") + sort = {by:by, dir:dir, as:as}; + + + var parameters = [sort.by, sort.dir, sort.as]; + if (!this.callEvent("onbeforesort",parameters)) return; + + if (this.order.length){ + var sorter = dhtmlx.sort.create(sort); + //get array of IDs + var neworder = this.getRange(this.first(), this.last()); + neworder.sort(sorter); + this.order = neworder.map(function(obj){ return this.id(obj); },this); + } + + //repaint self + this.refresh(); + + this.callEvent("onaftersort",parameters); + }, + /* + Filter datasource + + text - property, by which filter + value - filter mask + + or + + text - filter method + + Filter method will receive data object and must return true or false + */ + filter:function(text,value){ + if (!this.callEvent("onBeforeFilter", [text, value])) return; + + //remove previous filtering , if any + if (this._filter_order){ + this.order = this._filter_order; + delete this._filter_order; + } + + if (!this.order.length) return; + + //if text not define -just unfilter previous state and exit + if (text){ + var filter = text; + value = value||""; + if (typeof text == "string"){ + text = dhtmlx.Template.fromHTML(text); + value = value.toString().toLowerCase(); + filter = function(obj,value){ //default filter - string start from, case in-sensitive + return text(obj).toLowerCase().indexOf(value)!=-1; + }; + } + + + var neworder = dhtmlx.toArray(); + for (var i=0; i < this.order.length; i++){ + var id = this.order[i]; + if (filter(this.item(id),value)) + neworder.push(id); + } + //set new order of items, store original + this._filter_order = this.order; + this.order = neworder; + } + //repaint self + this.refresh(); + + this.callEvent("onAfterFilter", []); + }, + /* + Iterate through collection + */ + each:function(method,master){ + for (var i=0; ib?1:(ab?1:(ab?1:(a max) max = property(obj)*1; + }); + return max; + }, + _split_data_by:function(stats){ + var any=function(property, data){ + property = dhtmlx.Template.setter(property); + return property(data[0]); + }; + var key = dhtmlx.Template.setter(stats.by); + if (!stats.map[key]) + stats.map[key] = [key, any]; + + var groups = {}; + var labels = []; + this.data.each(function(data){ + var current = key(data); + if (!groups[current]){ + labels.push({id:current}); + groups[current] = dhtmlx.toArray(); + } + groups[current].push(data); + }); + for (var prop in stats.map){ + var functor = (stats.map[prop][1]||any); + if (typeof functor != "function") + functor = this[functor]; + + for (var i=0; i < labels.length; i++) { + labels[i][prop]=functor.call(this, stats.map[prop][0], groups[labels[i].id]); + } + } +// if (this._settings.sort) +// labels.sortBy(stats.sort); + + this._not_grouped_data = this.data; + this.data = new dhtmlx.DataStore(); + this.data.provideApi(this,true); + this._init_group_data_event(this.data, this); + this.parse(labels,"json"); + }, + group:function(config,mode){ + this.ungroup(false); + this._split_data_by(config); + if (mode!==false) + this.render(); + }, + ungroup:function(mode){ + if (this._not_grouped_data){ + this.data = this._not_grouped_data; + this.data.provideApi(this, true); + } + if (mode!==false) + this.render(); + }, + group_setter:function(config){ + dhtmlx.assert(typeof config == "object", "Incorrect group value"); + dhtmlx.assert(config.by,"group.by is mandatory"); + dhtmlx.assert(config.map,"group.map is mandatory"); + return config; + }, + //need to be moved to more appropriate object + sort_setter:function(config){ + if (typeof config != "object") + config = { by:config }; + + this._mergeSettings(config,{ + as:"string", + dir:"asc" + }); + return config; + } +}; + + +/* DHX DEPEND FROM FILE 'key.js'*/ + + +/* + Behavior:KeyEvents - hears keyboard +*/ +dhtmlx.KeyEvents = { + _init:function(){ + //attach handler to the main container + dhtmlx.event(this._obj,"keypress",this._onKeyPress,this); + }, + //called on each key press , when focus is inside of related component + _onKeyPress:function(e){ + e=e||event; + var code = e.which||e.keyCode; //FIXME better solution is required + this.callEvent((this._edit_id?"onEditKeyPress":"onKeyPress"),[code,e.ctrlKey,e.shiftKey,e]); + } +}; + + +/* DHX DEPEND FROM FILE 'mouse.js'*/ + + +/* + Behavior:MouseEvents - provides inner evnets for mouse actions +*/ +dhtmlx.MouseEvents={ + _init: function(){ + //attach dom events if related collection is defined + if (this.on_click){ + dhtmlx.event(this._obj,"click",this._onClick,this); + dhtmlx.event(this._obj,"contextmenu",this._onContext,this); + } + if (this.on_dblclick) + dhtmlx.event(this._obj,"dblclick",this._onDblClick,this); + if (this.on_mouse_move){ + dhtmlx.event(this._obj,"mousemove",this._onMouse,this); + dhtmlx.event(this._obj,(dhtmlx._isIE?"mouseleave":"mouseout"),this._onMouse,this); + } + + }, + //inner onclick object handler + _onClick: function(e) { + return this._mouseEvent(e,this.on_click,"ItemClick"); + }, + //inner ondblclick object handler + _onDblClick: function(e) { + return this._mouseEvent(e,this.on_dblclick,"ItemDblClick"); + }, + //process oncontextmenu events + _onContext: function(e) { + var id = dhtmlx.html.locate(e, this._id); + if (id && !this.callEvent("onBeforeContextMenu", [id,e])) + return dhtmlx.html.preventEvent(e); + }, + /* + event throttler - ignore events which occurs too fast + during mouse moving there are a lot of event firing - we need no so much + also, mouseout can fire when moving inside the same html container - we need to ignore such fake calls + */ + _onMouse:function(e){ + if (dhtmlx._isIE) //make a copy of event, will be used in timed call + e = document.createEventObject(event); + + if (this._mouse_move_timer) //clear old event timer + window.clearTimeout(this._mouse_move_timer); + + //this event just inform about moving operation, we don't care about details + this.callEvent("onMouseMoving",[e]); + //set new event timer + this._mouse_move_timer = window.setTimeout(dhtmlx.bind(function(){ + //called only when we have at least 100ms after previous event + if (e.type == "mousemove") + this._onMouseMove(e); + else + this._onMouseOut(e); + },this),500); + }, + //inner mousemove object handler + _onMouseMove: function(e) { + if (!this._mouseEvent(e,this.on_mouse_move,"MouseMove")) + this.callEvent("onMouseOut",[e||event]); + }, + //inner mouseout object handler + _onMouseOut: function(e) { + this.callEvent("onMouseOut",[e||event]); + }, + //common logic for click and dbl-click processing + _mouseEvent:function(e,hash,name){ + e=e||event; + var trg=e.target||e.srcElement; + var css = ""; + var id = null; + var found = false; + //loop through all parents + while (trg && trg.parentNode){ + if (!found && trg.getAttribute){ //if element with ID mark is not detected yet + id = trg.getAttribute(this._id); //check id of current one + if (id){ + if (trg.getAttribute("userdata")) + this.callEvent("onLocateData",[id,trg]); + if (!this.callEvent("on"+name,[id,e,trg])) return; //it will be triggered only for first detected ID, in case of nested elements + found = true; //set found flag + } + } + css=trg.className; + if (css){ //check if pre-defined reaction for element's css name exists + css = css.split(" "); + css = css[0]||css[1]; //FIXME:bad solution, workaround css classes which are starting from whitespace + if (hash[css]) + return hash[css].call(this,e,id,trg); + } + trg=trg.parentNode; + } + return found; //returns true if item was located and event was triggered + } +}; + + +/* DHX DEPEND FROM FILE 'config.js'*/ + + +/* + Behavior:Settings + + @export + customize + config +*/ + +/*DHX:Depend template.js*/ +/*DHX:Depend dhtmlx.js*/ + +dhtmlx.Settings={ + _init:function(){ + /* + property can be accessed as this.config.some + in same time for inner call it have sense to use _settings + because it will be minified in final version + */ + this._settings = this.config= {}; + }, + define:function(property, value){ + if (typeof property == "object") + return this._parseSeetingColl(property); + return this._define(property, value); + }, + _define:function(property,value){ + dhtmlx.assert_settings.call(this,property,value); + + //method with name {prop}_setter will be used as property setter + //setter is optional + var setter = this[property+"_setter"]; + return this._settings[property]=setter?setter.call(this,value):value; + }, + //process configuration object + _parseSeetingColl:function(coll){ + if (coll){ + for (var a in coll) //for each setting + this._define(a,coll[a]); //set value through config + } + }, + //helper for object initialization + _parseSettings:function(obj,initial){ + //initial - set of default values + var settings = dhtmlx.extend({},initial); + //code below will copy all properties over default one + if (typeof obj == "object" && !obj.tagName) + dhtmlx.extend(settings,obj); + //call config for each setting + this._parseSeetingColl(settings); + }, + _mergeSettings:function(config, defaults){ + for (var key in defaults) + switch(typeof config[key]){ + case "object": + config[key] = this._mergeSettings((config[key]||{}), defaults[key]); + break; + case "undefined": + config[key] = defaults[key]; + break; + default: //do nothing + break; + } + return config; + }, + //helper for html container init + _parseContainer:function(obj,name,fallback){ + /* + parameter can be a config object, in such case real container will be obj.container + or it can be html object or ID of html object + */ + if (typeof obj == "object" && !obj.tagName) + obj=obj.container; + this._obj = dhtmlx.toNode(obj); + if (!this._obj && fallback) + this._obj = fallback(obj); + + dhtmlx.assert(this._obj, "Incorrect html container"); + + this._obj.className+=" "+name; + this._obj.onselectstart=function(){return false;}; //block selection by default + this._dataobj = this._obj;//separate reference for rendering modules + }, + //apply template-type + _set_type:function(name){ + //parameter can be a hash of settings + if (typeof name == "object") + return this.type_setter(name); + + dhtmlx.assert(this.types, "RenderStack :: Types are not defined"); + dhtmlx.assert(this.types[name],"RenderStack :: Inccorect type name",name); + //or parameter can be a name of existing template-type + this.type=dhtmlx.extend({},this.types[name]); + this.customize(); //init configs + }, + customize:function(obj){ + //apply new properties + if (obj) dhtmlx.extend(this.type,obj); + + //init tempaltes for item start and item end + this.type._item_start = dhtmlx.Template.fromHTML(this.template_item_start(this.type)); + this.type._item_end = this.template_item_end(this.type); + + //repaint self + this.render(); + }, + //config.type - creates new template-type, based on configuration object + type_setter:function(value){ + this._set_type(typeof value == "object"?dhtmlx.Type.add(this,value):value); + return value; + }, + //config.template - creates new template-type with defined template string + template_setter:function(value){ + return this.type_setter({template:value}); + }, + //config.css - css name for top level container + css_setter:function(value){ + this._obj.className += " "+value; + return value; + } +}; + + +/* DHX DEPEND FROM FILE 'compatibility.js'*/ + + +/* + Collection of compatibility hacks +*/ + +/*DHX:Depend dhtmlx.js*/ + +dhtmlx.compat=function(name, obj){ + //check if name hash present, and applies it when necessary + if (dhtmlx.compat[name]) + dhtmlx.compat[name](obj); +}; + + +(function(){ + if (!window.dhtmlxError){ + //dhtmlxcommon is not included + + //create fake error tracker for connectors + var dummy = function(){}; + window.dhtmlxError={ catchError:dummy, throwError:dummy }; + //helpers instead of ones from dhtmlxcommon + window.convertStringToBoolean=function(value){ + return !!value; + }; + window.dhtmlxEventable = function(node){ + dhtmlx.extend(node,dhtmlx.EventSystem); + }; + //imitate ajax layer of dhtmlxcommon + var loader = { + getXMLTopNode:function(name){ + + }, + doXPath:function(path){ + return dhtmlx.DataDriver.xml.xpath(this.xml,path); + }, + xmlDoc:{ + responseXML:true + } + }; + //wrap ajax methods of dataprocessor + dhtmlx.compat.dataProcessor=function(obj){ + //FIXME + //this is pretty ugly solution - we replace whole method , so changes in dataprocessor need to be reflected here + + var sendData = "_sendData"; + var in_progress = "_in_progress"; + var tMode = "_tMode"; + var waitMode = "_waitMode"; + + obj[sendData]=function(a1,rowId){ + if (!a1) return; //nothing to send + if (rowId) + this[in_progress][rowId]=(new Date()).valueOf(); + + if (!this.callEvent("onBeforeDataSending",rowId?[rowId,this.getState(rowId)]:[])) return false; + + var a2 = this; + var a3=this.serverProcessor; + if (this[tMode]!="POST") + //use dhtmlx.ajax instead of old ajax layer + dhtmlx.ajax().get(a3+((a3.indexOf("?")!=-1)?"&":"?")+this.serialize(a1,rowId),"",function(t,x,xml){ + loader.xml = dhtmlx.DataDriver.xml.checkResponse(t,x); + a2.afterUpdate(a2, null, null, null, loader); + }); + else + dhtmlx.ajax().post(a3,this.serialize(a1,rowId),function(t,x,xml){ + loader.xml = dhtmlx.DataDriver.xml.checkResponse(t,x); + a2.afterUpdate(a2, null, null, null, loader); + }); + + this[waitMode]++; + }; + }; + } + +})(); + + +/* DHX DEPEND FROM FILE 'compatibility_layout.js'*/ + + +/*DHX:Depend dhtmlx.js*/ +/*DHX:Depend compatibility.js*/ + +if (!dhtmlx.attaches) + dhtmlx.attaches = {}; + +dhtmlx.attaches.attachAbstract=function(name, conf){ + var obj = document.createElement("DIV"); + obj.id = "CustomObject_"+dhtmlx.uid(); + obj.style.width = "100%"; + obj.style.height = "100%"; + obj.cmp = "grid"; + document.body.appendChild(obj); + this.attachObject(obj.id); + + conf.container = obj.id; + + var that = this.vs[this.av]; + that.grid = new window[name](conf); + + that.gridId = obj.id; + that.gridObj = obj; + + + that.grid.setSizes = function(){ + if (this.resize) this.resize(); + else this.render(); + }; + + var method_name="_viewRestore"; + return this.vs[this[method_name]()].grid; +}; +dhtmlx.attaches.attachDataView = function(conf){ + return this.attachAbstract("dhtmlXDataView",conf); +}; +dhtmlx.attaches.attachChart = function(conf){ + return this.attachAbstract("dhtmlXChart",conf); +}; + +dhtmlx.compat.layout = function(){}; + + + +/* DHX DEPEND FROM FILE 'compatibility_grid.js'*/ + + +/* + Compatibility hack for loading data from the grid. + Provides new type of datasource - dhtmlxgrid + +*/ + +/*DHX:Depend load.js*/ + +dhtmlx.DataDriver.dhtmlxgrid={ + _grid_getter:"_get_cell_value", + toObject:function(data){ + this._grid = data; + return data; + }, + getRecords:function(data){ + return data.rowsBuffer; + }, + getDetails:function(data){ + var result = {}; + for (var i=0; i < this._grid.getColumnsNum(); i++) + result["data"+i]=this._grid[this._grid_getter](data,i); + + return result; + }, + getInfo:function(data){ + return { + _size:0, + _from:0 + }; + } +}; + + +/* DHX DEPEND FROM FILE 'canvas.js'*/ + + +/*DHX:Depend thirdparty\excanvas*/ +/*DHX:Depend dhtmlx.js*/ + +dhtmlx.Canvas = { + _init:function(){ + this._canvas_labels = []; + }, + _prepareCanvas:function(container){ + //canvas has the same size as master object + this._canvas = dhtmlx.html.create("canvas",{ width:container.offsetWidth, height:container.offsetHeight }); + container.appendChild(this._canvas); + //use excanvas in IE + if (!this._canvas.getContext){ + if (dhtmlx._isIE){ + dhtmlx.require("thirdparty/excanvas/excanvas.js"); //sync loading + G_vmlCanvasManager.init_(document); + G_vmlCanvasManager.initElement(this._canvas); + } else //some other not supported browser + dhtmlx.error("Canvas is not supported in the current browser"); + } + return this._canvas; + }, + getCanvas:function(context){ + return (this._canvas||this._prepareCanvas(this._obj)).getContext(context||"2d"); + }, + _resizeCanvas:function(){ + if (this._canvas){ + this._canvas.setAttribute("width", this._canvas.parentNode.offsetWidth); + this._canvas.setAttribute("height", this._canvas.parentNode.offsetHeight); + } + }, + renderText:function(x,y,text,css,w){ + if (!text) return; //ignore empty text + + var t = dhtmlx.html.create("DIV",{ + "class":"dhx_canvas_text"+(css?(" "+css):""), + "style":"left:"+x+"px; top:"+y+"px;" + },text); + this._obj.appendChild(t); + this._canvas_labels.push(t); //destructor? + if (w) + t.style.width = w+"px"; + return t; + }, + renderTextAt:function(valign,align, x,y,t,c,w){ + var text=this.renderText.call(this,x,y,t,c,w); + if (text){ + if (valign){ + if(valign == "middle") + text.style.top = parseInt(y-text.offsetHeight/2,10) + "px"; + else + text.style.top = y-text.offsetHeight + "px"; + } + if (align){ + if(align == "left") + text.style.left = x-text.offsetWidth + "px"; + else + text.style.left = parseInt(x-text.offsetWidth/2,10) + "px"; + } + } + return text; + }, + clearCanvas:function(){ + for(var i=0; i < this._canvas_labels.length;i++) + this._obj.removeChild(this._canvas_labels[i]); + this._canvas_labels = []; + if (this._obj._htmlmap){ + this._obj._htmlmap.parentNode.removeChild(this._obj._htmlmap); + this._obj._htmlmap = null; + } + //FF breaks, when we are using clear canvas and call clearRect without parameters + this.getCanvas().clearRect(0,0,this._canvas.offsetWidth, this._canvas.offsetHeight); + } +}; + + +/* DHX INITIAL FILE 'G:\dhtmlx.out\Standard\dhtmlxCore/sources//chart.js'*/ + + +/*DHX:Depend chart.css*/ +/*DHX:Depend canvas.js*/ +/*DHX:Depend load.js*/ + +/*DHX:Depend compatibility_grid.js*/ +/*DHX:Depend compatibility_layout.js*/ + +/*DHX:Depend config.js*/ +/*DHX:Depend destructor.js*/ +/*DHX:Depend mouse.js*/ +/*DHX:Depend key.js*/ +/*DHX:Depend group.js*/ +/*DHX:Depend autotooltip.js*/ + +/*DHX:Depend ext/chart/chart_base.js*/ +/*DHX:Depend ext/chart/chart_pie.js*/ //+pie3d +/*DHX:Depend ext/chart/chart_bar.js*/ +/*DHX:Depend ext/chart/chart_line.js*/ +/*DHX:Depend ext/chart/chart_barh.js*/ +/*DHX:Depend ext/chart/chart_stackedbar.js*/ +/*DHX:Depend ext/chart/chart_stackedbarh.js*/ +/*DHX:Depend ext/chart/chart_spline.js*/ +/*DHX:Depend ext/chart/chart_area.js*/ //+stackedArea +/*DHX:Depend ext/chart/chart_radar.js*/ +/*DHX:Depend ext/chart/chart_scatter.js*/ +/*DHX:Depend ext/chart/presets.js*/ +/*DHX:Depend math.js*/ +/*DHX:Depend destructor.js*/ +/*DHX:Depend dhtmlx.js*/ + + +dhtmlXChart = function(container){ + this.name = "Chart"; + this.version = "3.0"; + + if (dhtmlx.assert_enabled()) this._assert(); + + dhtmlx.extend(this, dhtmlx.Settings); + + this._parseContainer(container,"dhx_chart"); + + dhtmlx.extend(this, dhtmlx.AtomDataLoader); + dhtmlx.extend(this, dhtmlx.DataLoader); + this.data.provideApi(this,true); + + dhtmlx.extend(this, dhtmlx.EventSystem); + dhtmlx.extend(this, dhtmlx.MouseEvents); + dhtmlx.extend(this, dhtmlx.Destruction); + dhtmlx.extend(this, dhtmlx.Canvas); + dhtmlx.extend(this, dhtmlx.Group); + dhtmlx.extend(this, dhtmlx.AutoTooltip); + + for (var key in dhtmlx.chart) + dhtmlx.extend(this, dhtmlx.chart[key]); + + + if(container.preset){ + this.definePreset(container); + } + this._parseSettings(container,this.defaults); + this._series = [this._settings]; + this.data.attachEvent("onStoreUpdated",dhtmlx.bind(function(){ + this.render(); + },this)); + this.attachEvent("onLocateData", this._switchSerie); +}; +dhtmlXChart.prototype={ + _id:"dhx_area_id", + on_click:{ + }, + on_dblclick:{ + }, + on_mouse_move:{ + }, + bind:function(){ + dhx.BaseBind.legacyBind.apply(this, arguments); + }, + sync:function(){ + dhx.BaseBind.legacySync.apply(this, arguments); + }, + resize:function(){ + this._resizeCanvas(); + this.render(); + }, + view_setter:function( val){ + if (!dhtmlx.chart[val]) + dhtmlx.error("Chart type extension is not loaded: "+val); + //if you will need to add more such settings - move them ( and this one ) in a separate methods + + if (typeof this._settings.offset == "undefined"){ + this._settings.offset = !(val == "area" || val == "stackedArea"); + } + + if(val=="radar"&&!this._settings.yAxis) + this.define("yAxis",{}); + if(val=="scatter"){ + if(!this._settings.yAxis) + this.define("yAxis",{}); + if(!this._settings.xAxis) + this.define("xAxis",{}); + } + + return val; + }, + render:function(){ + if (!this.callEvent("onBeforeRender",[this.data])) + return; + + this.clearCanvas(); + if(this._settings.legend){ + this._drawLegend(this.getCanvas(), + this.data.getRange(), + this._obj.offsetWidth + ); + } + var bounds = this._getChartBounds(this._obj.offsetWidth,this._obj.offsetHeight); + var map = new dhtmlx.ui.Map(this._id); + + var temp = this._settings; + for(var i=0; i < this._series.length;i++){ + this._settings = this._series[i]; + this["pvt_render_"+this._settings.view]( + this.getCanvas(), + this.data.getRange(), + bounds.start, + bounds.end, + i, + map + ); + } + map.render(this._obj); + this._settings = temp; + }, + value_setter:dhtmlx.Template.obj_setter, + xValue_setter:dhtmlx.Template.obj_setter, + yValue_setter:function(config){ + this.define("value",config); + }, + alpha_setter:dhtmlx.Template.obj_setter, + label_setter:dhtmlx.Template.obj_setter, + lineColor_setter:dhtmlx.Template.obj_setter, + pieInnerText_setter:dhtmlx.Template.obj_setter, + gradient_setter:function(config){ + if((typeof(config)!="function")&&config&&(config === true)) + config = "light"; + return config; + }, + colormap:{ + "RAINBOW":function(obj){ + var pos = Math.floor(this.indexById(obj.id)/this.dataCount()*1536); + if (pos==1536) pos-=1; + return this._rainbow[Math.floor(pos/256)](pos%256); + } + }, + color_setter:function(value){ + return this.colormap[value]||dhtmlx.Template.obj_setter( value); + }, + fill_setter:function(value){ + return ((!value||value==0)?false:dhtmlx.Template.obj_setter( value)); + }, + definePreset:function(obj){ + this.define("preset",obj.preset); + delete obj.preset; + }, + preset_setter:function(value){ + var a, b, preset; + this.defaults = dhtmlx.extend({},this.defaults); + if(typeof dhtmlx.presets.chart[value]=="object"){ + + preset = dhtmlx.presets.chart[value]; + for(a in preset){ + + if(typeof preset[a]=="object"){ + if(!this.defaults[a]||typeof this.defaults[a]!="object"){ + this.defaults[a] = dhtmlx.extend({},preset[a]); + } + else{ + this.defaults[a] = dhtmlx.extend({},this.defaults[a]); + for(b in preset[a]){ + this.defaults[a][b] = preset[a][b]; + } + } + }else{ + this.defaults[a] = preset[a]; + } + } + return value; + } + return false; + }, + legend_setter:function( config){ + if(!config){ + if(this.legendObj){ + this.legendObj.innerHTML = ""; + this.legendObj = null; + } + return false; + } + if(typeof(config)!="object") //allow to use template string instead of object + config={template:config}; + + this._mergeSettings(config,{ + width:150, + height:18, + layout:"y", + align:"left", + valign:"bottom", + template:"", + marker:{ + type:"square", + width:15, + height:15, + radius:3 + }, + margin: 4, + padding: 3 + }); + + config.template = dhtmlx.Template.setter(config.template); + return config; + }, + defaults:{ + color:"RAINBOW", + alpha:"1", + label:false, + value:"{obj.value}", + padding:{}, + view:"pie", + lineColor:"#ffffff", + cant:0.5, + width: 30, + labelWidth:100, + line:{ + width:2, + color:"#1293f8" + }, + item:{ + radius:3, + borderColor:"#636363", + borderWidth:1, + color: "#ffffff", + alpha:1, + type:"r", + shadow:false + }, + shadow:true, + gradient:false, + border:true, + labelOffset: 20, + origin:"auto" + }, + item_setter:function( config){ + if(typeof(config)!="object") + config={color:config, borderColor:config}; + this._mergeSettings(config,dhtmlx.extend({},this.defaults.item)); + config.alpha = dhtmlx.Template.setter(config.alpha); + config.borderColor = dhtmlx.Template.setter(config.borderColor); + config.color = dhtmlx.Template.setter(config.color); + config.radius = dhtmlx.Template.setter(config.radius); + return config; + }, + line_setter:function( config){ + if(typeof(config)!="object") + config={color:config}; + dhtmlx.extend(this.defaults.line,config); + config = dhtmlx.extend({},this.defaults.line); + config.color = dhtmlx.Template.setter(config.color); + return config; + }, + padding_setter:function( config){ + if(typeof(config)!="object") + config={left:config, right:config, top:config, bottom:config}; + this._mergeSettings(config,{ + left:50, + right:20, + top:35, + bottom:40 + }); + return config; + }, + xAxis_setter:function( config){ + if(!config) return false; + if(typeof(config)!="object") + config={ template:config }; + + this._mergeSettings(config,{ + title:"", + color:"#000000", + lineColor:"#cfcfcf", + template:"{obj}", + lines:true + }); + var templates = ["lineColor","template","lines"]; + this._converToTemplate(templates,config); + this._settings.configXAxis = dhtmlx.extend({},config); + return config; + }, + yAxis_setter:function( config){ + this._mergeSettings(config,{ + title:"", + color:"#000000", + lineColor:"#cfcfcf", + template:"{obj}", + lines:true, + bg:"#ffffff" + }); + var templates = ["lineColor","template","lines","bg"]; + this._converToTemplate(templates,config); + this._settings.configYAxis = dhtmlx.extend({},config); + return config; + }, + _converToTemplate:function(arr,config){ + for(var i=0;i< arr.length;i++){ + config[arr[i]] = dhtmlx.Template.setter(config[arr[i]]); + } + }, + _drawScales:function(ctx,data,point0,point1,start,end,cellWidth){ + var y = this._drawYAxis(ctx,data,point0,point1,start,end); + this._drawXAxis(ctx,data,point0,point1,cellWidth,y); + return y; + }, + _drawXAxis:function(ctx,data,point0,point1,cellWidth,y){ + if (!this._settings.xAxis) return; + + var x0 = point0.x-0.5; + var y0 = parseInt((y?y:point1.y),10)+0.5; + var x1 = point1.x; + var unit_pos; + var center = true; + + this._drawLine(ctx,x0,y0,x1,y0,this._settings.xAxis.color,1); + for(var i=0; i < data.length;i ++){ + if(this._settings.offset === true) + unit_pos = x0+cellWidth/2+i*cellWidth; + else{ + unit_pos = (i==data.length-1)?point1.x:x0+i*cellWidth; + center = !!i; + } + unit_pos = parseInt(unit_pos,10)-0.5; + /*scale labels*/ + var top = ((this._settings.origin!="auto")&&(this._settings.view=="bar")&&(parseFloat(this._settings.value(data[i]))5?10:5); + step = parseInt(stepVal,10)*calculStep; + + if(step>Math.abs(nmin)) + start = (nmin<0?-step:0); + else{ + var absNmin = Math.abs(nmin); + var powerStart = Math.floor(this._log10(absNmin)); + var nminVal = absNmin/Math.pow(10,powerStart); + start = Math.ceil(nminVal*10)/10*Math.pow(10,powerStart)-step; + if(absNmin>1&&step>0.1){ + start = Math.ceil(start); + } + while(nmin<0?start<=nmin:start>=nmin) + start -= step; + if(nmin<0) start =-start-2*step; + + } + end = start; + while(end1) + for(var i=1; i < this._series.length;i++){ + var maxI = this.max(this._series[i][value||"value"]); + var minI = this.min(this._series[i][value||"value"]); + if (maxI > maxValue) maxValue = maxI; + if (minI < minValue) minValue = minI; + } + } + return {max:maxValue,min:minValue}; + }, + _log10:function(n){ + var method_name="log"; + return Math.floor((Math[method_name](n)/Math.LN10)); + }, + _drawXAxisLabel:function(x,y,obj,center,top){ + if (!this._settings.xAxis) return; + var elem = this.renderTextAt(top, center, x,y-(top?2:0),this._settings.xAxis.template(obj)); + if (elem) + elem.className += " dhx_axis_item_x"; + }, + _drawXAxisLine:function(ctx,x,y1,y2,obj){ + if (!this._settings.xAxis||!this._settings.xAxis.lines) return; + this._drawLine(ctx,x,y1,x,y2,this._settings.xAxis.lineColor.call(this,obj),1); + }, + _drawLine:function(ctx,x1,y1,x2,y2,color,width){ + ctx.strokeStyle = color; + ctx.lineWidth = width; + ctx.beginPath(); + ctx.moveTo(x1,y1); + ctx.lineTo(x2,y2); + ctx.stroke(); + ctx.lineWidth = 1; + }, + _getRelativeValue:function(minValue,maxValue){ + var relValue, origRelValue; + var valueFactor = 1; + if(maxValue != minValue){ + origRelValue = maxValue - minValue; + if(Math.abs(relValue) < 1){ + while(Math.abs(relValue)<1){ + valueFactor *= 10; + origRelValue = relValue* valueFactor; + } + + } + relValue = origRelValue; + } + else relValue = minValue; + return [relValue,valueFactor]; + }, + _rainbow : [ + function(pos){ return "#FF"+dhtmlx.math.toHex(pos/2,2)+"00";}, + function(pos){ return "#FF"+dhtmlx.math.toHex(pos/2+128,2)+"00";}, + function(pos){ return "#"+dhtmlx.math.toHex(255-pos,2)+"FF00";}, + function(pos){ return "#00FF"+dhtmlx.math.toHex(pos,2);}, + function(pos){ return "#00"+dhtmlx.math.toHex(255-pos,2)+"FF";}, + function(pos){ return "#"+dhtmlx.math.toHex(pos,2)+"00FF";} + ], + /** + * adds series to the chart (value and color properties) + * @param: obj - obj with configuration properties + */ + addSeries:function(obj){ + var temp = this._settings; this._settings = dhtmlx.extend({},temp); + this._parseSettings(obj,{}); + this._series.push(this._settings); + this._settings = temp; + }, + /*switch global settings to serit in question*/ + _switchSerie:function(id, tag){ + var tip; + this._active_serie = tag.getAttribute("userdata"); + if (!this._series[this._active_serie]) return; + for (var i=0; i < this._series.length; i++) { + tip = this._series[i].tooltip; + if (tip) + tip.disable(); + } + tip = this._series[this._active_serie].tooltip; + if (tip) + tip.enable(); + }, + /** + * renders legend block + * @param: ctx - canvas object + * @param: data - object those need to be displayed + * @param: width - the width of the container + * @param: height - the height of the container + */ + _drawLegend:function(ctx,data,width){ + var i,legend,legendContainer,legendHeight,legendItems,legendWidth, style, x=0,y=0; + /*legend config*/ + legend = this._settings.legend; + + style = (this._settings.legend.layout!="x"?"width:"+legend.width+"px":""); + /*creation of legend container*/ + if(this.legendObj) + this.legendObj.innerHTML = ""; + legendContainer = dhtmlx.html.create("DIV",{ + "class":"dhx_chart_legend", + "style":"left:"+x+"px; top:"+y+"px;"+style + },""); + if(legend.padding){ + legendContainer.style.padding = legend.padding+"px"; + } + this.legendObj = legendContainer; + this._obj.appendChild(legendContainer); + /*rendering legend text items*/ + legendItems = []; + if(!legend.values) + for(i = 0; i < data.length; i++){ + legendItems.push(this._drawLegendText(legendContainer,legend.template(data[i]))); + } + else + for(i = 0; i < legend.values.length; i++){ + legendItems.push(this._drawLegendText(legendContainer,legend.values[i].text)); + } + legendWidth = legendContainer.offsetWidth; + legendHeight = legendContainer.offsetHeight; + /*this._settings.legend.width = legendWidth; + this._settings.legend.height = legendHeight;*/ + + /*setting legend position*/ + if(legendWidth maxValue) maxValue = data[i].$sum ; + if (data[i].$min < minValue) minValue = data[i].$min ; + } + if(minValue>0) minValue =0; + } + return {max:maxValue,min:minValue}; + }, + /*adds colors to the gradient object*/ + _setBarGradient:function(ctx,x1,y1,x2,y2,type,color,axis){ + var gradient,offset,rgb,hsv,color0; + if(type == "light"){ + if(axis == "x") + gradient = ctx.createLinearGradient(x1,y1,x2,y1); + else + gradient = ctx.createLinearGradient(x1,y1,x1,y2); + gradient.addColorStop(0,"#FFFFFF"); + gradient.addColorStop(0.9,color); + gradient.addColorStop(1,color); + offset = 2; + } + else if(type == "falling"||type == "rising"){ + if(axis == "x") + gradient = ctx.createLinearGradient(x1,y1,x2,y1); + else + gradient = ctx.createLinearGradient(x1,y1,x1,y2); + rgb = dhtmlx.math.toRgb(color); + hsv = dhtmlx.math.rgbToHsv(rgb[0],rgb[1],rgb[2]); + hsv[1] *= 1/2; + color0 = "rgb("+dhtmlx.math.hsvToRgb(hsv[0],hsv[1],hsv[2])+")"; + if(type == "falling"){ + gradient.addColorStop(0,color0); + gradient.addColorStop(0.7,color); + gradient.addColorStop(1,color); + } + else if(type == "rising"){ + gradient.addColorStop(0,color); + gradient.addColorStop(0.3,color); + gradient.addColorStop(1,color0); + } + offset = 0; + } + else{ + ctx.globalAlpha = 0.37; + offset = 0; + if(axis == "x") + gradient = ctx.createLinearGradient(x1,y2,x1,y1); + else + gradient = ctx.createLinearGradient(x1,y1,x2,y1); + /*gradient.addColorStop(0,"#9d9d9d"); + gradient.addColorStop(0.4,"#FFFFFF"); + gradient.addColorStop(0.6,"#FFFFFF"); + gradient.addColorStop(1,"#9d9d9d");*/ + gradient.addColorStop(0,"#9d9d9d"); + gradient.addColorStop(0.3,"#e8e8e8"); + gradient.addColorStop(0.45,"#ffffff"); + gradient.addColorStop(0.55,"#ffffff"); + gradient.addColorStop(0.7,"#e8e8e8"); + gradient.addColorStop(1,"#9d9d9d"); + } + return {gradient:gradient,offset:offset}; + }, + /** + * returns the x and y position + * @param: a - angle + * @param: x - start x position + * @param: y - start y position + * @param: r - destination to the point + */ + _getPositionByAngle:function(a,x,y,r){ + a *= (-1); + x = x+Math.cos(a)*r; + y = y-Math.sin(a)*r; + return {x:x,y:y}; + } +}; + +dhtmlx.compat("layout"); diff --git a/public_html/dhtmlxchart/thirdparty/excanvas/AUTHORS b/public_html/dhtmlxchart/thirdparty/excanvas/AUTHORS new file mode 100644 index 0000000..f3348aa --- /dev/null +++ b/public_html/dhtmlxchart/thirdparty/excanvas/AUTHORS @@ -0,0 +1,10 @@ +ExplorerCanvas + +Google Open Source: + + + +Developers: + Emil A Eklund + Erik Arvidsson + Glen Murphy \ No newline at end of file diff --git a/public_html/dhtmlxchart/thirdparty/excanvas/COPYING b/public_html/dhtmlxchart/thirdparty/excanvas/COPYING new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/public_html/dhtmlxchart/thirdparty/excanvas/COPYING @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/public_html/dhtmlxchart/thirdparty/excanvas/README b/public_html/dhtmlxchart/thirdparty/excanvas/README new file mode 100644 index 0000000..9e8268b --- /dev/null +++ b/public_html/dhtmlxchart/thirdparty/excanvas/README @@ -0,0 +1,22 @@ +ExplorerCanvas +Copyright 2006 Google Inc. + +------------------------------------------------------------------------------- +DESCRIPTION + +Firefox, Safari and Opera 9 support the canvas tag to allow 2D command-based +drawing operations. ExplorerCanvas brings the same functionality to Internet +Explorer; web developers only need to include a single script tag in their +existing canvas webpages to enable this support. + + +------------------------------------------------------------------------------- +INSTALLATION + +Include the ExplorerCanvas tag in the same directory as your HTML files, and +add the following code to your page, preferably in the tag. + + + +If you run into trouble, please look at the included example code to see how +to best implement this \ No newline at end of file diff --git a/public_html/dhtmlxchart/thirdparty/excanvas/excanvas.js b/public_html/dhtmlxchart/thirdparty/excanvas/excanvas.js new file mode 100644 index 0000000..3fe46d3 --- /dev/null +++ b/public_html/dhtmlxchart/thirdparty/excanvas/excanvas.js @@ -0,0 +1,927 @@ +// Copyright 2006 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +// Known Issues: +// +// * Patterns are not implemented. +// * Radial gradient are not implemented. The VML version of these look very +// different from the canvas one. +// * Clipping paths are not implemented. +// * Coordsize. The width and height attribute have higher priority than the +// width and height style values which isn't correct. +// * Painting mode isn't implemented. +// * Canvas width/height should is using content-box by default. IE in +// Quirks mode will draw the canvas using border-box. Either change your +// doctype to HTML5 +// (http://www.whatwg.org/specs/web-apps/current-work/#the-doctype) +// or use Box Sizing Behavior from WebFX +// (http://webfx.eae.net/dhtml/boxsizing/boxsizing.html) +// * Non uniform scaling does not correctly scale strokes. +// * Optimize. There is always room for speed improvements. + +// Only add this code if we do not already have a canvas implementation +if (!document.createElement('canvas').getContext) { + +(function() { + + // alias some functions to make (compiled) code shorter + var m = Math; + var mr = m.round; + var ms = m.sin; + var mc = m.cos; + var abs = m.abs; + var sqrt = m.sqrt; + + // this is used for sub pixel precision + var Z = 10; + var Z2 = Z / 2; + + /** + * This funtion is assigned to the elements as element.getContext(). + * @this {HTMLElement} + * @return {CanvasRenderingContext2D_} + */ + function getContext() { + return this.context_ || + (this.context_ = new CanvasRenderingContext2D_(this)); + } + + var slice = Array.prototype.slice; + + /** + * Binds a function to an object. The returned function will always use the + * passed in {@code obj} as {@code this}. + * + * Example: + * + * g = bind(f, obj, a, b) + * g(c, d) // will do f.call(obj, a, b, c, d) + * + * @param {Function} f The function to bind the object to + * @param {Object} obj The object that should act as this when the function + * is called + * @param {*} var_args Rest arguments that will be used as the initial + * arguments when the function is called + * @return {Function} A new function that has bound this + */ + function bind(f, obj, var_args) { + var a = slice.call(arguments, 2); + return function() { + return f.apply(obj, a.concat(slice.call(arguments))); + }; + } + + var G_vmlCanvasManager_ = { + init: function(opt_doc) { + if (/MSIE/.test(navigator.userAgent) && !window.opera) { + var doc = opt_doc || document; + // Create a dummy element so that IE will allow canvas elements to be + // recognized. + doc.createElement('canvas'); + doc.attachEvent('onreadystatechange', bind(this.init_, this, doc)); + } + }, + + init_: function(doc) { + // create xmlns + if (!doc.namespaces['g_vml_']) { + doc.namespaces.add('g_vml_', 'urn:schemas-microsoft-com:vml', + '#default#VML'); + + } + if (!doc.namespaces['g_o_']) { + doc.namespaces.add('g_o_', 'urn:schemas-microsoft-com:office:office', + '#default#VML'); + } + + // Setup default CSS. Only add one style sheet per document + if (!doc.styleSheets['ex_canvas_']) { + var ss = doc.createStyleSheet(); + ss.owningElement.id = 'ex_canvas_'; + ss.cssText = 'canvas{display:inline-block;overflow:hidden;' + + // default size is 300x150 in Gecko and Opera + 'text-align:left;width:300px;height:150px}' + + 'g_vml_\\:*{behavior:url(#default#VML)}' + + 'g_o_\\:*{behavior:url(#default#VML)}'; + + } + + // find all canvas elements + var els = doc.getElementsByTagName('canvas'); + for (var i = 0; i < els.length; i++) { + this.initElement(els[i]); + } + }, + + /** + * Public initializes a canvas element so that it can be used as canvas + * element from now on. This is called automatically before the page is + * loaded but if you are creating elements using createElement you need to + * make sure this is called on the element. + * @param {HTMLElement} el The canvas element to initialize. + * @return {HTMLElement} the element that was created. + */ + initElement: function(el) { + if (!el.getContext) { + + el.getContext = getContext; + + // Remove fallback content. There is no way to hide text nodes so we + // just remove all childNodes. We could hide all elements and remove + // text nodes but who really cares about the fallback content. + el.innerHTML = ''; + + // do not use inline function because that will leak memory + el.attachEvent('onpropertychange', onPropertyChange); + el.attachEvent('onresize', onResize); + + var attrs = el.attributes; + if (attrs.width && attrs.width.specified) { + // TODO: use runtimeStyle and coordsize + // el.getContext().setWidth_(attrs.width.nodeValue); + el.style.width = attrs.width.nodeValue + 'px'; + } else { + el.width = el.clientWidth; + } + if (attrs.height && attrs.height.specified) { + // TODO: use runtimeStyle and coordsize + // el.getContext().setHeight_(attrs.height.nodeValue); + el.style.height = attrs.height.nodeValue + 'px'; + } else { + el.height = el.clientHeight; + } + //el.getContext().setCoordsize_() + } + return el; + } + }; + + function onPropertyChange(e) { + var el = e.srcElement; + + switch (e.propertyName) { + case 'width': + el.style.width = el.attributes.width.nodeValue + 'px'; + el.getContext().clearRect(); + break; + case 'height': + el.style.height = el.attributes.height.nodeValue + 'px'; + el.getContext().clearRect(); + break; + } + } + + function onResize(e) { + var el = e.srcElement; + if (el.firstChild) { + el.firstChild.style.width = el.clientWidth + 'px'; + el.firstChild.style.height = el.clientHeight + 'px'; + } + } + + G_vmlCanvasManager_.init(); + + // precompute "00" to "FF" + var dec2hex = []; + for (var i = 0; i < 16; i++) { + for (var j = 0; j < 16; j++) { + dec2hex[i * 16 + j] = i.toString(16) + j.toString(16); + } + } + + function createMatrixIdentity() { + return [ + [1, 0, 0], + [0, 1, 0], + [0, 0, 1] + ]; + } + + function matrixMultiply(m1, m2) { + var result = createMatrixIdentity(); + + for (var x = 0; x < 3; x++) { + for (var y = 0; y < 3; y++) { + var sum = 0; + + for (var z = 0; z < 3; z++) { + sum += m1[x][z] * m2[z][y]; + } + + result[x][y] = sum; + } + } + return result; + } + + function copyState(o1, o2) { + o2.fillStyle = o1.fillStyle; + o2.lineCap = o1.lineCap; + o2.lineJoin = o1.lineJoin; + o2.lineWidth = o1.lineWidth; + o2.miterLimit = o1.miterLimit; + o2.shadowBlur = o1.shadowBlur; + o2.shadowColor = o1.shadowColor; + o2.shadowOffsetX = o1.shadowOffsetX; + o2.shadowOffsetY = o1.shadowOffsetY; + o2.strokeStyle = o1.strokeStyle; + o2.globalAlpha = o1.globalAlpha; + o2.arcScaleX_ = o1.arcScaleX_; + o2.arcScaleY_ = o1.arcScaleY_; + o2.lineScale_ = o1.lineScale_; + } + + function processStyle(styleString) { + var str, alpha = 1; + + styleString = String(styleString); + if (styleString.substring(0, 3) == 'rgb') { + var start = styleString.indexOf('(', 3); + var end = styleString.indexOf(')', start + 1); + var guts = styleString.substring(start + 1, end).split(','); + + str = '#'; + for (var i = 0; i < 3; i++) { + str += dec2hex[Number(guts[i])]; + } + + if (guts.length == 4 && styleString.substr(3, 1) == 'a') { + alpha = guts[3]; + } + } else { + str = styleString; + } + + return {color: str, alpha: alpha}; + } + + function processLineCap(lineCap) { + switch (lineCap) { + case 'butt': + return 'flat'; + case 'round': + return 'round'; + case 'square': + default: + return 'square'; + } + } + + /** + * This class implements CanvasRenderingContext2D interface as described by + * the WHATWG. + * @param {HTMLElement} surfaceElement The element that the 2D context should + * be associated with + */ + function CanvasRenderingContext2D_(surfaceElement) { + this.m_ = createMatrixIdentity(); + + this.mStack_ = []; + this.aStack_ = []; + this.currentPath_ = []; + + // Canvas context properties + this.strokeStyle = '#000'; + this.fillStyle = '#000'; + + this.lineWidth = 1; + this.lineJoin = 'miter'; + this.lineCap = 'butt'; + this.miterLimit = Z * 1; + this.globalAlpha = 1; + this.canvas = surfaceElement; + + var el = surfaceElement.ownerDocument.createElement('div'); + el.style.width = surfaceElement.clientWidth + 'px'; + el.style.height = surfaceElement.clientHeight + 'px'; + el.style.overflow = 'hidden'; + el.style.position = 'absolute'; + surfaceElement.appendChild(el); + + this.element_ = el; + this.arcScaleX_ = 1; + this.arcScaleY_ = 1; + this.lineScale_ = 1; + } + + var contextPrototype = CanvasRenderingContext2D_.prototype; + contextPrototype.clearRect = function() { + this.element_.innerHTML = ''; + }; + + contextPrototype.beginPath = function() { + // TODO: Branch current matrix so that save/restore has no effect + // as per safari docs. + this.currentPath_ = []; + }; + + contextPrototype.moveTo = function(aX, aY) { + var p = this.getCoords_(aX, aY); + this.currentPath_.push({type: 'moveTo', x: p.x, y: p.y}); + this.currentX_ = p.x; + this.currentY_ = p.y; + }; + + contextPrototype.lineTo = function(aX, aY) { + var p = this.getCoords_(aX, aY); + this.currentPath_.push({type: 'lineTo', x: p.x, y: p.y}); + + this.currentX_ = p.x; + this.currentY_ = p.y; + }; + + contextPrototype.bezierCurveTo = function(aCP1x, aCP1y, + aCP2x, aCP2y, + aX, aY) { + var p = this.getCoords_(aX, aY); + var cp1 = this.getCoords_(aCP1x, aCP1y); + var cp2 = this.getCoords_(aCP2x, aCP2y); + bezierCurveTo(this, cp1, cp2, p); + }; + + // Helper function that takes the already fixed cordinates. + function bezierCurveTo(self, cp1, cp2, p) { + self.currentPath_.push({ + type: 'bezierCurveTo', + cp1x: cp1.x, + cp1y: cp1.y, + cp2x: cp2.x, + cp2y: cp2.y, + x: p.x, + y: p.y + }); + self.currentX_ = p.x; + self.currentY_ = p.y; + } + + contextPrototype.quadraticCurveTo = function(aCPx, aCPy, aX, aY) { + // the following is lifted almost directly from + // http://developer.mozilla.org/en/docs/Canvas_tutorial:Drawing_shapes + + var cp = this.getCoords_(aCPx, aCPy); + var p = this.getCoords_(aX, aY); + + var cp1 = { + x: this.currentX_ + 2.0 / 3.0 * (cp.x - this.currentX_), + y: this.currentY_ + 2.0 / 3.0 * (cp.y - this.currentY_) + }; + var cp2 = { + x: cp1.x + (p.x - this.currentX_) / 3.0, + y: cp1.y + (p.y - this.currentY_) / 3.0 + }; + + bezierCurveTo(this, cp1, cp2, p); + }; + + contextPrototype.arc = function(aX, aY, aRadius, + aStartAngle, aEndAngle, aClockwise) { + aRadius *= Z; + var arcType = aClockwise ? 'at' : 'wa'; + + var xStart = aX + mc(aStartAngle) * aRadius - Z2; + var yStart = aY + ms(aStartAngle) * aRadius - Z2; + + var xEnd = aX + mc(aEndAngle) * aRadius - Z2; + var yEnd = aY + ms(aEndAngle) * aRadius - Z2; + + // IE won't render arches drawn counter clockwise if xStart == xEnd. + if (xStart == xEnd && !aClockwise) { + xStart += 0.125; // Offset xStart by 1/80 of a pixel. Use something + // that can be represented in binary + } + + var p = this.getCoords_(aX, aY); + var pStart = this.getCoords_(xStart, yStart); + var pEnd = this.getCoords_(xEnd, yEnd); + + this.currentPath_.push({type: arcType, + x: p.x, + y: p.y, + radius: aRadius, + xStart: pStart.x, + yStart: pStart.y, + xEnd: pEnd.x, + yEnd: pEnd.y}); + + }; + + contextPrototype.rect = function(aX, aY, aWidth, aHeight) { + this.moveTo(aX, aY); + this.lineTo(aX + aWidth, aY); + this.lineTo(aX + aWidth, aY + aHeight); + this.lineTo(aX, aY + aHeight); + this.closePath(); + }; + + contextPrototype.strokeRect = function(aX, aY, aWidth, aHeight) { + var oldPath = this.currentPath_; + this.beginPath(); + + this.moveTo(aX, aY); + this.lineTo(aX + aWidth, aY); + this.lineTo(aX + aWidth, aY + aHeight); + this.lineTo(aX, aY + aHeight); + this.closePath(); + this.stroke(); + + this.currentPath_ = oldPath; + }; + + contextPrototype.fillRect = function(aX, aY, aWidth, aHeight) { + var oldPath = this.currentPath_; + this.beginPath(); + + this.moveTo(aX, aY); + this.lineTo(aX + aWidth, aY); + this.lineTo(aX + aWidth, aY + aHeight); + this.lineTo(aX, aY + aHeight); + this.closePath(); + this.fill(); + + this.currentPath_ = oldPath; + }; + + contextPrototype.createLinearGradient = function(aX0, aY0, aX1, aY1) { + var gradient = new CanvasGradient_('gradient'); + gradient.x0_ = aX0; + gradient.y0_ = aY0; + gradient.x1_ = aX1; + gradient.y1_ = aY1; + return gradient; + }; + + contextPrototype.createRadialGradient = function(aX0, aY0, aR0, + aX1, aY1, aR1) { + var gradient = new CanvasGradient_('gradientradial'); + gradient.x0_ = aX0; + gradient.y0_ = aY0; + gradient.r0_ = aR0; + gradient.x1_ = aX1; + gradient.y1_ = aY1; + gradient.r1_ = aR1; + return gradient; + }; + + contextPrototype.drawImage = function(image, var_args) { + var dx, dy, dw, dh, sx, sy, sw, sh; + + // to find the original width we overide the width and height + var oldRuntimeWidth = image.runtimeStyle.width; + var oldRuntimeHeight = image.runtimeStyle.height; + image.runtimeStyle.width = 'auto'; + image.runtimeStyle.height = 'auto'; + + // get the original size + var w = image.width; + var h = image.height; + + // and remove overides + image.runtimeStyle.width = oldRuntimeWidth; + image.runtimeStyle.height = oldRuntimeHeight; + + if (arguments.length == 3) { + dx = arguments[1]; + dy = arguments[2]; + sx = sy = 0; + sw = dw = w; + sh = dh = h; + } else if (arguments.length == 5) { + dx = arguments[1]; + dy = arguments[2]; + dw = arguments[3]; + dh = arguments[4]; + sx = sy = 0; + sw = w; + sh = h; + } else if (arguments.length == 9) { + sx = arguments[1]; + sy = arguments[2]; + sw = arguments[3]; + sh = arguments[4]; + dx = arguments[5]; + dy = arguments[6]; + dw = arguments[7]; + dh = arguments[8]; + } else { + throw Error('Invalid number of arguments'); + } + + var d = this.getCoords_(dx, dy); + + var w2 = sw / 2; + var h2 = sh / 2; + + var vmlStr = []; + + var W = 10; + var H = 10; + + // For some reason that I've now forgotten, using divs didn't work + vmlStr.push(' ' , + '', + ''); + + this.element_.insertAdjacentHTML('BeforeEnd', + vmlStr.join('')); + }; + + contextPrototype.stroke = function(aFill) { + var lineStr = []; + var lineOpen = false; + var a = processStyle(aFill ? this.fillStyle : this.strokeStyle); + var color = a.color; + var opacity = a.alpha * this.globalAlpha; + + var W = 10; + var H = 10; + + lineStr.push(''); + + if (!aFill) { + var lineWidth = this.lineScale_ * this.lineWidth; + + // VML cannot correctly render a line if the width is less than 1px. + // In that case, we dilute the color to make the line look thinner. + if (lineWidth < 1) { + opacity *= lineWidth; + } + + lineStr.push( + '' + ); + } else if (typeof this.fillStyle == 'object') { + var fillStyle = this.fillStyle; + var angle = 0; + var focus = {x: 0, y: 0}; + + // additional offset + var shift = 0; + // scale factor for offset + var expansion = 1; + + if (fillStyle.type_ == 'gradient') { + var x0 = fillStyle.x0_ / this.arcScaleX_; + var y0 = fillStyle.y0_ / this.arcScaleY_; + var x1 = fillStyle.x1_ / this.arcScaleX_; + var y1 = fillStyle.y1_ / this.arcScaleY_; + var p0 = this.getCoords_(x0, y0); + var p1 = this.getCoords_(x1, y1); + var dx = p1.x - p0.x; + var dy = p1.y - p0.y; + angle = Math.atan2(dx, dy) * 180 / Math.PI; + + // The angle should be a non-negative number. + if (angle < 0) { + angle += 360; + } + + // Very small angles produce an unexpected result because they are + // converted to a scientific notation string. + if (angle < 1e-6) { + angle = 0; + } + } else { + var p0 = this.getCoords_(fillStyle.x0_, fillStyle.y0_); + var width = max.x - min.x; + var height = max.y - min.y; + focus = { + x: (p0.x - min.x) / width, + y: (p0.y - min.y) / height + }; + + width /= this.arcScaleX_ * Z; + height /= this.arcScaleY_ * Z; + var dimension = m.max(width, height); + shift = 2 * fillStyle.r0_ / dimension; + expansion = 2 * fillStyle.r1_ / dimension - shift; + } + + // We need to sort the color stops in ascending order by offset, + // otherwise IE won't interpret it correctly. + var stops = fillStyle.colors_; + stops.sort(function(cs1, cs2) { + return cs1.offset - cs2.offset; + }); + + var length = stops.length; + var color1 = stops[0].color; + var color2 = stops[length - 1].color; + var opacity1 = stops[0].alpha * this.globalAlpha; + var opacity2 = stops[length - 1].alpha * this.globalAlpha; + + var colors = []; + for (var i = 0; i < length; i++) { + var stop = stops[i]; + colors.push(stop.offset * expansion + shift + ' ' + stop.color); + } + + // When colors attribute is used, the meanings of opacity and o:opacity2 + // are reversed. + lineStr.push(''); + } else { + lineStr.push(''); + } + + lineStr.push(''); + + this.element_.insertAdjacentHTML('beforeEnd', lineStr.join('')); + }; + + contextPrototype.fill = function() { + this.stroke(true); + } + + contextPrototype.closePath = function() { + this.currentPath_.push({type: 'close'}); + }; + + /** + * @private + */ + contextPrototype.getCoords_ = function(aX, aY) { + var m = this.m_; + return { + x: Z * (aX * m[0][0] + aY * m[1][0] + m[2][0]) - Z2, + y: Z * (aX * m[0][1] + aY * m[1][1] + m[2][1]) - Z2 + } + }; + + contextPrototype.save = function() { + var o = {}; + copyState(this, o); + this.aStack_.push(o); + this.mStack_.push(this.m_); + this.m_ = matrixMultiply(createMatrixIdentity(), this.m_); + }; + + contextPrototype.restore = function() { + copyState(this.aStack_.pop(), this); + this.m_ = this.mStack_.pop(); + }; + + function matrixIsFinite(m) { + for (var j = 0; j < 3; j++) { + for (var k = 0; k < 2; k++) { + if (!isFinite(m[j][k]) || isNaN(m[j][k])) { + return false; + } + } + } + return true; + } + + function setM(ctx, m, updateLineScale) { + if (!matrixIsFinite(m)) { + return; + } + ctx.m_ = m; + + if (updateLineScale) { + // Get the line scale. + // Determinant of this.m_ means how much the area is enlarged by the + // transformation. So its square root can be used as a scale factor + // for width. + var det = m[0][0] * m[1][1] - m[0][1] * m[1][0]; + ctx.lineScale_ = sqrt(abs(det)); + } + } + + contextPrototype.translate = function(aX, aY) { + var m1 = [ + [1, 0, 0], + [0, 1, 0], + [aX, aY, 1] + ]; + + setM(this, matrixMultiply(m1, this.m_), false); + }; + + contextPrototype.rotate = function(aRot) { + var c = mc(aRot); + var s = ms(aRot); + + var m1 = [ + [c, s, 0], + [-s, c, 0], + [0, 0, 1] + ]; + + setM(this, matrixMultiply(m1, this.m_), false); + }; + + contextPrototype.scale = function(aX, aY) { + this.arcScaleX_ *= aX; + this.arcScaleY_ *= aY; + var m1 = [ + [aX, 0, 0], + [0, aY, 0], + [0, 0, 1] + ]; + + setM(this, matrixMultiply(m1, this.m_), true); + }; + + contextPrototype.transform = function(m11, m12, m21, m22, dx, dy) { + var m1 = [ + [m11, m12, 0], + [m21, m22, 0], + [dx, dy, 1] + ]; + + setM(this, matrixMultiply(m1, this.m_), true); + }; + + contextPrototype.setTransform = function(m11, m12, m21, m22, dx, dy) { + var m = [ + [m11, m12, 0], + [m21, m22, 0], + [dx, dy, 1] + ]; + + setM(this, m, true); + }; + + /******** STUBS ********/ + contextPrototype.clip = function() { + // TODO: Implement + }; + + contextPrototype.arcTo = function() { + // TODO: Implement + }; + + contextPrototype.createPattern = function() { + return new CanvasPattern_; + }; + + // Gradient / Pattern Stubs + function CanvasGradient_(aType) { + this.type_ = aType; + this.x0_ = 0; + this.y0_ = 0; + this.r0_ = 0; + this.x1_ = 0; + this.y1_ = 0; + this.r1_ = 0; + this.colors_ = []; + } + + CanvasGradient_.prototype.addColorStop = function(aOffset, aColor) { + aColor = processStyle(aColor); + this.colors_.push({offset: aOffset, + color: aColor.color, + alpha: aColor.alpha}); + }; + + function CanvasPattern_() {} + + // set up externs + G_vmlCanvasManager = G_vmlCanvasManager_; + CanvasRenderingContext2D = CanvasRenderingContext2D_; + CanvasGradient = CanvasGradient_; + CanvasPattern = CanvasPattern_; + +})(); + +} // if + +if (dhtmlx && dhtmlx._modules) + dhtmlx._modules["thirdparty/excanvas/excanvas.js"] = true; \ No newline at end of file diff --git a/public_html/editar.php b/public_html/editar.php new file mode 100644 index 0000000..7064444 --- /dev/null +++ b/public_html/editar.php @@ -0,0 +1,102 @@ + + + + + + + + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Cuenta:
Nombre:
Apellido Paterno
Apellido Materno
Generación
Telefono de Casa
Telefono Celular
Correo
Mesa
+ +
+
+ +
+ + + + +
+ + + + + + + + + + +
+

+
+
+

Recomendación

+

Internet Explorer no soporta las caracteristicas del cuestionario.
Ingresa con Firefox o con Chrome.

+
+
+
+

+
+ div { + margin-bottom: 40px; +} +.tsc_ribbon_wrap > div:last-of-type { + margin-bottom: 0; +} +.tsc_ribbon_wrap:before, .tsc_ribbon_wrap:after { + content: ""; + display: table; +} +.tsc_ribbon_wrap:after { + clear: both; +} +.tsc_ribbon_wrap { +} +.tsc_ribbon_wrap .ribbon-wrap { + color: #FFFFFF; + position: absolute; + text-align: center; + z-index: 0; +} +.tsc_ribbon_wrap .ribbon-wrap > span { + display: block; + height: 100%; + position: relative; +} +.tsc_ribbon_wrap .ribbon-wrap > span:before, .tsc_ribbon_wrap .ribbon-wrap > span:after { + content: ""; + position: absolute; + z-index: -1; +} +.tsc_ribbon_wrap .ribbon-wrap:before, .tsc_ribbon_wrap .ribbon-wrap:after { + content: ""; + position: absolute; + z-index: -2; +} +.tsc_ribbon_wrap.edge { + position: relative; +} +.tsc_ribbon_wrap .left-edge.point { + border-radius: 5px 0 0 0; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); + height: 40px; + left: -5px; + line-height: 40px; + top: 20px; + width: 120px; +} +.tsc_ribbon_wrap.ie8 .left-edge.point { + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); + left: 0; +} +.tsc_ribbon_wrap .left-edge.point > span { + border-radius: 5px 0 0 0; +} +.tsc_ribbon_wrap.ie .left-edge.point > span { +} +.tsc_ribbon_wrap .left-edge.point:before { + border-color: transparent; + border-radius: 5px 5px 5px 5px; + border-style: solid; + border-width: 5px; + bottom: -5px; + left: 0; + transform: rotate(-45deg); +} +.tsc_ribbon_wrap .left-edge.point:after { + box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5); + height: 28px; + margin-top: -14px; + right: -14px; + top: 50%; + transform: rotate(45deg); + transform-origin: center center 0; + width: 28px; +} +.tsc_ribbon_wrap.ie8 .left-edge.point:before, .tsc_ribbon_wrap.ie8 .left-edge.point:after { + border-radius: 0 0 0 0; + display: none; +} +.tsc_ribbon_wrap .right-edge.point { + border-radius: 0 5px 0 0; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); + height: 40px; + line-height: 40px; + right: -5px; + top: 20px; + width: 120px; +} +.tsc_ribbon_wrap.ie8 .right-edge.point { + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); + right: 0; +} +.tsc_ribbon_wrap .right-edge.point > span { + border-radius: 0 5px 0 0; +} +.tsc_ribbon_wrap.ie .right-edge.point > span { +} +.tsc_ribbon_wrap .right-edge.point:before { + border-color: transparent; + border-radius: 5px 5px 5px 5px; + border-style: solid; + border-width: 4px; + bottom: -5px; + right: 0; + transform: rotate(45deg); +} +.tsc_ribbon_wrap .right-edge.point:after { + box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5); + height: 28px; + left: -14px; + margin-top: -14px; + top: 50%; + transform: rotate(45deg); + transform-origin: center center 0; + width: 28px; +} +.tsc_ribbon_wrap.ie8 .right-edge.point:before, .tsc_ribbon_wrap.ie8 .right-edge.point:after { + border-radius: 0 0 0 0; + display: none; +} +.tsc_ribbon_wrap .left-edge.fork { + border-radius: 5px 0 0 0; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); + height: 40px; + left: -5px; + line-height: 40px; + top: 20px; + width: 120px; +} +.tsc_ribbon_wrap.ie8 .left-edge.fork { + border-radius: 0 0 0 0; + box-shadow: none !important; + left: 0; +} +.tsc_ribbon_wrap .left-edge.fork > span { + border-radius: 5px 0 0 0; +} +.tsc_ribbon_wrap .left-edge.fork > span:before { + border-color: transparent; + border-radius: 5px 5px 5px 5px; + border-style: solid; + border-width: 5px; + bottom: -5px; + left: 0; + transform: rotate(-45deg); +} +.tsc_ribbon_wrap.ie8 .left-edge.fork > span:before { + display: none; +} +.tsc_ribbon_wrap .left-edge.fork > span:after { + border-style: solid; + border-width: 20px; + right: -20px; + top: 0; +} +.tsc_ribbon_wrap .left-edge.fork:before { + background: none repeat scroll 0 0 #666666; + bottom: 5px; + box-shadow: 25px 8px 4px rgba(0, 0, 0, 0.5); + height: 20px; + right: 22px; + transform: rotate(-22deg) skew(18deg, 28deg); + width: 80px; +} +.tsc_ribbon_wrap .left-edge.fork:after { + background: none repeat scroll 0 0 #666666; + box-shadow: 20px -5px 4px rgba(0, 0, 0, 0.5); + height: 20px; + right: 22px; + top: 5px; + transform: rotate(32deg) skew(-18deg, -28deg); + width: 80px; +} +.tsc_ribbon_wrap.ie8 .left-edge.fork:before, .tsc_ribbon_wrap.ie8 .left-edge.fork:after { + display: none; +} +.tsc_ribbon_wrap .right-edge.fork { + border-radius: 0 5px 0 0; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); + height: 40px; + line-height: 40px; + right: -5px; + top: 20px; + width: 120px; +} +.tsc_ribbon_wrap.ie8 .right-edge.fork { + border-radius: 0 0 0 0; + box-shadow: none !important; + right: 0; +} +.tsc_ribbon_wrap .right-edge.fork > span { + border-radius: 0 5px 0 0; +} +.tsc_ribbon_wrap .right-edge.fork > span:before { + border-color: transparent; + border-radius: 5px 5px 5px 5px; + border-style: solid; + border-width: 5px; + bottom: -5px; + right: 0; + transform: rotate(45deg); +} +.tsc_ribbon_wrap.ie8 .right-edge.fork > span:before { + display: none; +} +.tsc_ribbon_wrap .right-edge.fork > span:after { + border-style: solid; + border-width: 20px; + left: -20px; + top: 0; +} +.tsc_ribbon_wrap .right-edge.fork:before { + background: none repeat scroll 0 0 #666666; + bottom: 5px; + box-shadow: -25px 8px 4px rgba(0, 0, 0, 0.5); + height: 20px; + left: 22px; + transform: rotate(22deg) skew(-18deg, -28deg); + width: 80px; +} +.tsc_ribbon_wrap .right-edge.fork:after { + background: none repeat scroll 0 0 #666666; + box-shadow: -20px -5px 4px rgba(0, 0, 0, 0.5); + height: 20px; + left: 22px; + top: 5px; + transform: rotate(-32deg) skew(18deg, 28deg); + width: 80px; +} +.tsc_ribbon_wrap.ie8 .right-edge.fork:before, .tsc_ribbon_wrap.ie8 .right-edge.fork:after { + display: none; +} +.tsc_ribbon_wrap.ie8 .lblue, .tsc_ribbon_wrap .lblue > span, .tsc_ribbon_wrap .lblue.left-corner > span:before, .tsc_ribbon_wrap .lblue.left-corner > span:after, .tsc_ribbon_wrap .lblue.right-corner > span, .tsc_ribbon_wrap .lblue.right-corner > span:before, .tsc_ribbon_wrap .lblue.right-corner > span:after { + background-color: #42A5D4; + background-image: -moz-linear-gradient(center top , #42A5D4, #24769D); +} +.tsc_ribbon_wrap .lblue.left-corner:before { + border-bottom-color: #174C66; + border-left-color: #174C66; +} +.tsc_ribbon_wrap .lblue.left-corner:after { + border-right-color: #174C66; + border-top-color: #174C66; +} +.tsc_ribbon_wrap .lblue.right-corner:before { + border-left-color: #174C66; + border-top-color: #174C66; +} +.tsc_ribbon_wrap .lblue.right-corner:after { + border-bottom-color: #174C66; + border-right-color: #174C66; +} +.tsc_ribbon_wrap .lblue.left-edge.point:after, .tsc_ribbon_wrap .lblue.right-edge.point:after { + background-color: #42A5D4; + background-image: linear-gradient(-45deg, #42A5D4, #24769D); +} +.tsc_ribbon_wrap .lblue.left-edge:before { + border-left-color: #174C66; + border-top-color: #174C66; +} +.tsc_ribbon_wrap .lblue.right-edge:before { + border-right-color: #174C66; + border-top-color: #174C66; +} +.tsc_ribbon_wrap .lblue.left-edge.fork > span { + background-color: #42A5D4; + background-image: -moz-linear-gradient(left center , #42A5D4 0px, #42A5D4 5px, #24769D 15%, #24769D 65%, #42A5D4 100%); +} +.tsc_ribbon_wrap.ie8 .lblue.left-edge.fork > span { +} +.tsc_ribbon_wrap .lblue.left-edge.fork > span:after { + border-color: #42A5D4 transparent #42A5D4 #42A5D4; +} +.tsc_ribbon_wrap .lblue.left-edge.fork > span:before { + border-left-color: #174C66; + border-top-color: #174C66; +} +.tsc_ribbon_wrap .lblue.right-edge.fork > span { + background-color: #42A5D4; + background-image: -moz-linear-gradient(right center , #42A5D4 0px, #42A5D4 5px, #24769D 15%, #24769D 65%, #42A5D4 100%); +} +.tsc_ribbon_wrap.ie8 .lblue.right-edge.fork > span { +} +.tsc_ribbon_wrap .lblue.right-edge.fork > span:after { + border-color: #42A5D4 #42A5D4 #42A5D4 transparent; +} +.tsc_ribbon_wrap .lblue.right-edge.fork > span:before { + border-right-color: #174C66; + border-top-color: #174C66; +} +.tsc_ribbon_wrap.ie8 .lred, .tsc_ribbon_wrap .lred > span, .tsc_ribbon_wrap .lred.left-corner > span:before, .tsc_ribbon_wrap .lred.left-corner > span:after, .tsc_ribbon_wrap .lred.right-corner > span, .tsc_ribbon_wrap .lred.right-corner > span:before, .tsc_ribbon_wrap .lred.right-corner > span:after { + background-color: #F80000; + background-image: -moz-linear-gradient(center top , #F80000, #A30000); +} +.tsc_ribbon_wrap .lred.left-corner:before { + border-bottom-color: #5F0000; + border-left-color: #5F0000; +} +.tsc_ribbon_wrap .lred.left-corner:after { + border-right-color: #5F0000; + border-top-color: #5F0000; +} +.tsc_ribbon_wrap .lred.right-corner:before { + border-left-color: #5F0000; + border-top-color: #5F0000; +} +.tsc_ribbon_wrap .lred.right-corner:after { + border-bottom-color: #5F0000; + border-right-color: #5F0000; +} +.tsc_ribbon_wrap .lred.left-edge.point:after, .tsc_ribbon_wrap .lred.right-edge.point:after { + background-color: #F80000; + background-image: linear-gradient(-45deg, #F80000, #A30000); +} +.tsc_ribbon_wrap .lred.left-edge:before { + border-left-color: #5F0000; + border-top-color: #5F0000; +} +.tsc_ribbon_wrap .lred.right-edge:before { + border-right-color: #5F0000; + border-top-color: #5F0000; +} +.tsc_ribbon_wrap .lred.left-edge.fork > span { + background-color: #F80000; + background-image: -moz-linear-gradient(left center , #F80000 0px, #F80000 5px, #A30000 15%, #A30000 65%, #F80000 100%); +} +.tsc_ribbon_wrap.ie8 .lred.left-edge.fork > span { +} +.tsc_ribbon_wrap .lred.left-edge.fork > span:after { + border-color: #F80000 transparent #F80000 #F80000; +} +.tsc_ribbon_wrap .lred.left-edge.fork > span:before { + border-left-color: #5F0000; + border-top-color: #5F0000; +} +.tsc_ribbon_wrap .lred.right-edge.fork > span { + background-color: #F80000; + background-image: -moz-linear-gradient(right center , #F80000 0px, #F80000 5px, #A30000 15%, #A30000 65%, #F80000 100%); +} +.tsc_ribbon_wrap.ie8 .lred.right-edge.fork > span { +} +.tsc_ribbon_wrap .lred.right-edge.fork > span:after { + border-color: #F80000 #F80000 #F80000 transparent; +} +.tsc_ribbon_wrap .lred.right-edge.fork > span:before { + border-right-color: #5F0000; + border-top-color: #5F0000; +} +.tsc_ribbon_hang { + margin-bottom: 60px; +} +.tsc_ribbon_hang:last-child { + margin-bottom: 0; +} +.tsc_ribbon_hang > div { + display: inline-block; + margin: 0 40px 40px 0; +} +.tsc_ribbon_hang > div:last-of-type { + margin-right: 0; +} +.tsc_ribbon_hang .ribbon-bookmark { + border-radius: 3px 3px 0 0; + box-shadow: 0 2px 2px rgba(0, 0, 0, 0.5); + color: #FFFFFF; + margin: 20px auto; + position: relative; + text-align: center; + z-index: 0; +} +.tsc_ribbon_hang.ie8 .ribbon-bookmark { + box-shadow: none; +} +.tsc_ribbon_hang .ribbon-bookmark > span { + border-radius: 3px 3px 0 0; + display: block; + position: relative; +} +.tsc_ribbon_hang .ribbon-bookmark.small > span { + height: 82px; + line-height: 82px; + width: 50px; +} +.tsc_ribbon_hang .ribbon-bookmark.medium > span { + height: 124px; + line-height: 124px; + width: 80px; +} +.tsc_ribbon_hang .ribbon-bookmark.large > span { + height: 166px; + line-height: 166px; + width: 120px; +} +.tsc_ribbon_hang .ribbon-bookmark > span:before, .tsc_ribbon_hang.ie8 .ribbon-bookmark .fork { + border-style: solid; + content: ""; + left: 0; + position: absolute; + top: 100%; + z-index: -1; +} +.tsc_ribbon_hang.ie8 .ribbon-bookmark > span:before { + display: none; +} +.tsc_ribbon_hang .small > span:before, .tsc_ribbon_hang.ie8 .small .fork { + border-width: 25px; + margin-top: -25px; +} +.tsc_ribbon_hang .medium > span:before, .tsc_ribbon_hang.ie8 .medium .fork { + border-width: 40px; + margin-top: -40px; +} +.tsc_ribbon_hang .large > span:before, .tsc_ribbon_hang.ie8 .large .fork { + border-width: 60px; + margin-top: -60px; +} +.tsc_ribbon_hang .ribbon-bookmark:before { + background: none repeat scroll 0 0 #666666; + box-shadow: 0 6px 2px rgba(0, 0, 0, 0.5), -1px -1px 2px rgba(0, 0, 0, 0.5); + content: ""; + left: 1px; + position: absolute; + transform: skew(-20deg, -38deg) rotate(-20deg); + transform-origin: 0 0 0; + z-index: -2; +} +.tsc_ribbon_hang .ribbon-bookmark:after { + background: none repeat scroll 0 0 #666666; + box-shadow: 0 7px 2px rgba(0, 0, 0, 0.5), 1px -1px 2px rgba(0, 0, 0, 0.5); + content: ""; + position: absolute; + right: 1px; + transform: skew(20deg, 38deg) rotate(20deg); + transform-origin: right 0 0; + z-index: -2; +} +.tsc_ribbon_hang.ie8 .ribbon-bookmark:before, .tsc_ribbon_hang.ie8 .ribbon-bookmark:after { + display: none; +} +.tsc_ribbon_hang .ribbon-bookmark.small:before, .tsc_ribbon_hang .ribbon-bookmark.small:after { + bottom: -35px; + height: 35px; + width: 25px; +} +.tsc_ribbon_hang .ribbon-bookmark.medium:before, .tsc_ribbon_hang .ribbon-bookmark.medium:after { + bottom: -55px; + height: 55px; + width: 40px; +} +.tsc_ribbon_hang .ribbon-bookmark.large:before, .tsc_ribbon_hang .ribbon-bookmark.large:after { + bottom: -85px; + height: 85px; + width: 60px; +} +.tsc_ribbon_hang .ribbon-bookmark.small:before { + box-shadow: 0 3px 2px rgba(0, 0, 0, 0.5), -1px -1px 2px rgba(0, 0, 0, 0.5); +} +.tsc_ribbon_hang .ribbon-bookmark.small:after { + box-shadow: 0 5px 2px rgba(0, 0, 0, 0.5), 1px -1px 2px rgba(0, 0, 0, 0.5); +} +.tsc_ribbon_hang .ie8 .ribbon-bookmark.small { + box-shadow: none; +} +.tsc_ribbon_hang .lblue { + background: none repeat scroll 0 0 #42A5D4; +} +.tsc_ribbon_hang .lblue > span { + background-color: #42A5D4; + background-image: -moz-linear-gradient(center top , #42A5D4, #24769D); +} +.tsc_ribbon_hang .lblue > span:before, .tsc_ribbon_hang.ie8 .lblue .fork { + border-color: #24769D #24769D transparent; +} +.tsc_ribbon_hang .lred { + background: none repeat scroll 0 0 #F80000; +} +.tsc_ribbon_hang .lred > span { + background-color: #F80000; + background-image: -moz-linear-gradient(center top , #F80000, #A30000); +} +.tsc_ribbon_hang .lred > span:before, .tsc_ribbon_hang.ie8 .lred .fork { + border-color: #A30000 #A30000 transparent; +} +.tsc_ribbon_hang .lgreen { + background: none repeat scroll 0 0 #80B73D; +} +.tsc_ribbon_hang .lgreen > span { + background-color: #80B73D; + background-image: -moz-linear-gradient(center top , #80B73D, #547728); +} +.tsc_ribbon_hang .lgreen > span:before, .tsc_ribbon_hang.ie8 .lgreen .fork { + border-color: #547728 #547728 transparent; +} +.tsc_ribbon_hang .lyellow { + background: none repeat scroll 0 0 #FFC037; +} +.tsc_ribbon_hang .lyellow > span { + background-color: #FFC037; + background-image: -moz-linear-gradient(center top , #FFC037, #E19A00); +} +.tsc_ribbon_hang .lyellow > span:before, .tsc_ribbon_hang.ie8 .lyellow .fork { + border-color: #E19A00 #E19A00 transparent; +} +.tsc_ribbon_banner { + margin: 30px 0; + position: relative; + z-index: 0; +} +.tsc_ribbon_banner > div { + margin-bottom: 40px; +} +.tsc_ribbon_banner > div:last-of-type { + margin-bottom: 0; +} +.tsc_ribbon_banner .ribbon-banner { + color: #FFFFFF; + height: 40px; + line-height: 40px; + margin: 0 auto; + position: relative; + text-align: center; + width: 320px; +} +.tsc_ribbon_banner .ribbon-banner > span { + display: block; + height: 100%; + position: relative; +} +.tsc_ribbon_banner .ribbon-banner > span:before, .tsc_ribbon_banner .ribbon-banner > span:after { + border-color: transparent; + border-style: solid; + border-width: 14px; + content: ""; + position: absolute; + z-index: -1; +} +.tsc_ribbon_banner.ie8 .ribbon-banner > span:before, .ie8 .ribbon-banner > span:after { + display: none; +} +.tsc_ribbon_banner .ribbon-banner > span:before { + left: -14px; +} +.tsc_ribbon_banner .ribbon-banner > span:after { + right: -14px; +} +.tsc_ribbon_banner .ribbon-banner:before { + border-style: solid; + border-width: 20px 25px 20px 20px; + content: ""; + left: -31px; + position: absolute; + z-index: -2; +} +.tsc_ribbon_banner .ribbon-banner:after { + border-style: solid; + border-width: 20px 20px 20px 25px; + content: ""; + position: absolute; + right: -31px; + z-index: -2; +} +.tsc_ribbon_banner .fold-down > span { + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); +} +.tsc_ribbon_banner .fold-down > span:before, .tsc_ribbon_banner .fold-down > span:after { + bottom: -14px; +} +.tsc_ribbon_banner .fold-down:before { + top: 14px; +} +.tsc_ribbon_banner .fold-down:after { + top: 14px; +} +.tsc_ribbon_banner .fold-straight > span { + box-shadow: 0 0 2px rgba(0, 0, 0, 0.5), -1px 0 1px rgba(0, 0, 0, 0.1), 1px 0 1px rgba(0, 0, 0, 0.1); +} +.tsc_ribbon_banner .fold-straight > span:before, .tsc_ribbon_banner .fold-straight > span:after { + display: none; +} +.tsc_ribbon_banner .fold-straight:before { + border-width: 18px 23px 18px 18px; + top: 2px; +} +.tsc_ribbon_banner .fold-straight:after { + border-width: 18px 18px 18px 23px; + top: 2px; +} +.tsc_ribbon_banner .curve.fold-up { + border-radius: 0 0 50% 50%; +} +.tsc_ribbon_banner .curve > span { + box-shadow: none; +} +.tsc_ribbon_banner .curve.fold-up > span:after { + border: 0 none; + border-radius: 0 0 50% 50%; + height: 100%; + left: 0; + top: -40px; + width: 100%; +} +.tsc_ribbon_banner .curve.fold-up > span:before { + background-image: -moz-linear-gradient(left center , rgba(0, 0, 0, 0.35) 0%, rgba(0, 0, 0, 0.35) 100%), -moz-linear-gradient(right center , rgba(0, 0, 0, 0.35) 0%, rgba(0, 0, 0, 0.35) 100%); + background-position: left top, right top; + background-repeat: no-repeat, no-repeat; + background-size: 10px 40px, 10px 40px; + border: 0 none; + border-radius: 50% 50% 50% 50%; + height: 100%; + left: 0; + top: -40px; + width: 100%; +} +.tsc_ribbon_banner.ie .curve.fold-up > span:before { + display: none; +} +.tsc_ribbon_banner.ie .curve.fold-up > span .before { + border-left: 10px solid rgba(0, 0, 0, 0.35); + border-radius: 10px 10px 10px 10px; + border-right: 10px solid rgba(0, 0, 0, 0.35); + height: 100%; + left: 0; + position: absolute; + right: 0; + top: -27px; + z-index: -1; +} +.tsc_ribbon_banner .curve.fold-up:before { + left: -34px; + top: -27px; +} +.tsc_ribbon_banner.ie8 .curve.fold-up:before { + left: -31px; + top: -14px; +} +.tsc_ribbon_banner .curve.fold-up:after { + right: -34px; + top: -27px; +} +.tsc_ribbon_banner.ie8 .curve.fold-up:after { + right: -31px; + top: -14px; +} +.tsc_ribbon_banner .lblue, .tsc_ribbon_banner.ie8 .lblue > span { + background-color: #42A5D4; + background-image: -moz-linear-gradient(center top , #42A5D4, #24769D); +} +.tsc_ribbon_banner .lblue > span:before { + border-right-color: #174C66; +} +.tsc_ribbon_banner .lblue > span:after { + border-left-color: #174C66; +} +.tsc_ribbon_banner .lblue:before { + border-color: #24769D #24769D #24769D transparent; +} +.tsc_ribbon_banner .lblue:after { + border-color: #24769D transparent #24769D #24769D; +} +.tsc_ribbon_banner .lblue.curve.fold-up > span:after { + box-shadow: 0 19px 0 #42A5D4; +} +.tsc_ribbon_banner .lred, .tsc_ribbon_banner.ie8 .lred > span { + background-color: #F80000; + background-image: -moz-linear-gradient(center top , #F80000, #A30000); +} +.tsc_ribbon_banner .lred > span:before { + border-right-color: #5F0000; +} +.tsc_ribbon_banner .lred > span:after { + border-left-color: #5F0000; +} +.tsc_ribbon_banner .lred:before { + border-color: #A30000 #A30000 #A30000 transparent; +} +.tsc_ribbon_banner .lred:after { + border-color: #A30000 transparent #A30000 #A30000; +} +.tsc_ribbon_banner .lred.curve.fold-up > span:after { + box-shadow: 0 19px 0 #F80000; +} +.tsc_ribbon_banner .lgreen, .tsc_ribbon_banner.ie8 .lgreen > span { + background-color: #80B73D; + background-image: -moz-linear-gradient(center top , #80B73D, #547728); +} +.tsc_ribbon_banner .lgreen > span:before { + border-right-color: #304417; +} +.tsc_ribbon_banner .lgreen > span:after { + border-left-color: #304417; +} +.tsc_ribbon_banner .lgreen:before { + border-color: #547728 #547728 #547728 transparent; +} +.tsc_ribbon_banner .lgreen:after { + border-color: #547728 transparent #547728 #547728; +} +.tsc_ribbon_banner .lgreen.curve.fold-up > span:after { + box-shadow: 0 19px 0 #80B73D; +} +.tsc_ribbon_banner .lyellow, .tsc_ribbon_banner.ie8 .lyellow > span { + background-color: #FFC037; + background-image: -moz-linear-gradient(center top , #FFC037, #E19A00); +} +.tsc_ribbon_banner .lyellow > span:before { + border-right-color: #9D6C00; +} +.tsc_ribbon_banner .lyellow > span:after { + border-left-color: #9D6C00; +} +.tsc_ribbon_banner .lyellow:before { + border-color: #E19A00 #E19A00 #E19A00 transparent; +} +.tsc_ribbon_banner .lyellow:after { + border-color: #E19A00 transparent #E19A00 #E19A00; +} +.tsc_ribbon_banner .lyellow.curve.fold-up > span:after { + box-shadow: 0 19px 0 #FFC037; +} \ No newline at end of file diff --git a/public_html/estilos/abel.css b/public_html/estilos/abel.css new file mode 100644 index 0000000..d18cfe4 --- /dev/null +++ b/public_html/estilos/abel.css @@ -0,0 +1,41 @@ +/* + Created on : 22/08/2014, 05:01:00 PM + Author : Abel +*/ + +table.listados{ + width: 100%; +} +table.listados th{ + background: #2F5BB7; + color: white; + padding-top: 5px; + padding-bottom: 5px; +} +div.izquierda{ + float: left; + width: 50%; +} +div.derecha{ + float: right; + width: 50%; +} +ul.carreras li{ + text-align: left; + margin: 0px; + margin-top: 15px; + padding: 0px; + font-size: 13px; +} +div.parteDerecha{ + align:center; + width: 35%; + background: white; + float: right; + /* padding-top: 130px; */ + padding-left: 3%; + padding-right: 2% +} +p.azul{ + background: #E5EBFD; +} diff --git a/public_html/estilos/acatlan.css b/public_html/estilos/acatlan.css new file mode 100644 index 0000000..bed578e --- /dev/null +++ b/public_html/estilos/acatlan.css @@ -0,0 +1,1215 @@ +.handcursor{ +cursor:hand; +cursor:pointer; +} + +.mensaje +{ + text-align: center; + padding-bottom: 10px; + margin: auto; + padding-top: 10px; + margin-top: 50px; + margin-bottom: 100px; + width: 500px; + border-style: solid; + border-radius: 5px; + border-width: 1px; + text-shadow: 0 1px rgba(0,0,0,4); + background-image: -moz-linear-gradient(rgba(255,255,255,.3), rgba(255,255,255,0)); + background-image: -webkit-linear-gradient(rgba(255,255,255,.3), rgba(255,255,255,0)); + background-image: -o-linear-gradient(rgba(255,255,255,.3), rgba(255,255,255,0)); + background-image: -ms-linear-gradient(rgba(255,255,255,.3), rgba(255,255,255,0)); + background-image: linear-gradient(rgba(255,255,255,.3), rgba(255,255,255,0)); + -moz-box-shadow: 0 2px 0 rgba(0,0,0,.3); + -webkit-box-shadow: 0 2px 0 rgba(0,0,0,.3); + box-shadow: 0 2px 0 rgba(0,0,0,.3); + clear: both; + +} +#user +{ + /*background: url("../images/user.ico") no-repeat scroll 0 50% transparent ;*/ + height: 100%; + position: absolute; + right: 55px; + top: 0; + width: 155px; + +} + +.enlaceboton { font-family: verdana, arial, sans-serif; + font-size: 10pt; + font-weight: bold; + padding: 4px; + color: #666666; + text-decoration: none; +} +.enlaceboton:link, +.enlaceboton:visited { + border-top: 1px solid #cccccc; + border-bottom: 2px solid #666666; + border-left: 1px solid #cccccc; + border-right: 2px solid #666666; +} +.enlaceboton:hover { + border-bottom: 1px solid #cccccc; + + border-top: 2px solid #666666; + border-right: 1px solid #cccccc; + border-left: 2px solid #666666; +} + + + + +.programa{ + +width:49.9%; +margin:20px auto 80px; + + +} + +.programa-contenido{ +border:1px solid; +border-color: black; + + +} + +#ampliar img{ +-webkit-transform:scale(1); /*Webkit: Scale down image to 0.8x original size*/ +-moz-transform:scale(1); /*Mozilla scale version*/ +-o-transform:scale(1); /*Opera scale version*/ +-webkit-transition-duration: 0.5s; /*Webkit: Animation duration*/ +-moz-transition-duration: 0.5s; /*Mozilla duration version*/ +-o-transition-duration: 0.5s; /*Opera duration version*/ + +} +/* al pasar el cursor por encima SE AMPLIA*/ +#ampliar img:hover{ +-webkit-transform:scale(2); /*Webkit:Modificamos tamaño a escala*/ +-moz-transform:scale(2); /*Mozilla:Modificamos tamaño a escala*/ +-o-transform:scale(2); /*Opera:Modificamos tamaño a escala*/ +-webkit-transition-duration: 0.5s; /*Webkit:Duración de la animación*/ +-moz-transition-duration: 0.5s; /*Mozilla:Duración de la animació*/ +-o-transition-duration: 0.5s; /*Opera:Duración de la animació*/ +} + + + +.contenido +{ + width:300%; + height: 300%; + top:10%; + left: 10%; + position:relative; + + } + + + + +/* Congratulation message */ +.MsgSent { + Display: none; + padding: 10px; + margin: 40px auto; + width: 400px; + text-align: center; + border: 1px solid green; + background-color: white; +} + +.MsgSent h1 { + /* background: url(../images/MsgSent.gif) no-repeat 0 0; */ + padding-left: 20px; + height: 85px; + line-height: 85px; +} + + + +.derechos { + + text-align: center; + width: 100%; +} +.administrado { + + + margin-top: 9px; + text-align: center; + width: 100%; + color: rgb(255, 255, 255); +} + + +.pie-derechos { + background-color: rgb(27, 61, 112); + color: rgb(255, 255, 255); + padding: 30px; +} + + + + +.navegadores +{ + + display:none; + text-align: center; + font-weight: bolder; + border-style: dashed; + border-color: red; + width: 520px; + margin-left: auto; + margin-right: auto; + +} + + + + + + + + + + + + + + + +/*INVISIBLES*/ +h1 span,h2 span,#buscar-p label,.division span{ +display:none; +} +/*AUXILIARES*/ +.division{ +height:1px; +clear:both; +} + +#contenido +{ + background-color: #fff; + background-image: url("../images/bg-feat.jpg"); + background-position: right top; + background-repeat: no-repeat; + height: auto; + +} + +.page +{ + width:960px; + background-color: #fff; + margin: 10px auto ; +} + +.pregunta { + font-family: Arial, Helvetica, sans-serif; + font-size: 12px; + font-style: normal; + font-weight: bold; + color: #003366; + text-decoration: none; + border: thin outset #FFFFFF; +} +/*ESTRUCTURAS PRINCIPALES*/ +body{ + background: #E9E9E9; + font: 12px/150% Verdana,"DejaVu Sans","Bitstream Vera Sans",sans-serif; +line-height:150%; +margin-left: 30px; +/*background: url(../images/fondo.gif) repeat-x;*/ +color: #333; + +} + +#cabeza{ +position:relative; +} + +#cabecera{ +position:relative; +height:115px; +background-color: #1B3D70; +} +#imagen-cab{ +position:absolute; +top:0; +right:0; +width:560px; +height:103px; +} + +.logo-derecha{ + position: absolute; + left: 0px; + margin: 15px; +} +.logo-izquierda{ + max-width: 100%; + right: 0px; + position: absolute; + margin: 15px; + top: 11px; +} + + + +#busqueda{ +position:relative; +background-color:rgb(187, 136, 0) !important; +font:11px Verdana,"DejaVu Sans","Bitstream Vera Sans",sans-serif; +overflow:hidden; +} +#pie-barra{ +position:relative; +height:59px; +background:url(pie2.png) repeat-x; +color:#B5D7FF; +border-bottom:2px solid #cfcfcf; +} +#pie-barra-sombras,.instancia-tit{ +position:relative; +} +.instancia-tit{ + background-color: rgb(27, 61, 112); +} +#pie-inf{ +color:#333; +font:90% Verdana,"DejaVu Sans","Bitstream Vera Sans",sans-serif; +margin:10px 0; +padding:1px 1em; +background:#d9e7ea url(fondopie.gif) repeat-x; +border:1px solid #d4d8db; +text-align:center; +} +#vertical-nav .col-trip,#vertical-nav-alt .col-trip{ +padding:0; +margin:0 1.5em; +position:relative; /*JQUERY FIX*/ +} +#vertical-nav{ +width:25%; +float:left; +} +#vertical-nav-alt{ +float:right; +width:25%; +} +#contenido-a{ +width:80.7%; +font:15px Verdana,"DejaVu Sans","Bitstream Vera Sans",sans-serif; +float:center; +text-align:justify; +} +#contenido-b{ +width:74.7%; +float:right; +text-align:justify; +} +.menu-shooter{ +color:#373E4D; +padding:.35em .35em .35em 26px; +font-size:105%; +cursor:pointer; +background-repeat:no-repeat; +background-position:5px 50%; +background-image:url(bullet.png); +} +.menu-shooter:hover{ +background-color:#eee; +} +.menu-shooter-active,.menu-shooter-active:hover{ +background-color:#D9DCE0; +color:#000; +} +#acatlan-logo { + background: url("../images/acatlan.png") no-repeat scroll 0 50% transparent; + height: 100%; + position: absolute; + right: 15px; + top: 0; + width: 143px; +} +#barra-relleno{ +color:#FFFFFF; +font-size:91.6%; +position:relative; +} +.relleno-barra-relleno{ +background:#262E3E url(noticia-back.png) repeat-x scroll 0 0; +border-bottom:2px solid #CFCFCF; +padding:0.3em 1em 0.5em; +} +#logo-tit{ +background:#262E3E url(noticia-back.png) repeat-x scroll 0 -2em; +border-bottom:2px solid #cfcfcf; +margin-top:-2px; +position:relative; +} +#logo-tit .sombra-izq,#logo-tit .sombra-der{ +top:2px; +} +.bread{ +font-size:90%; +border-bottom:1px solid #ddd; +text-align:left; +} +.bread-relleno{ +border:none; +font-size:100%; +color:#fff; +text-align:right; +} +.col-trip{ +padding:0 1.5em; +} +.col-in{ + +padding:0 .8em; +} +.col-bi{ +float:left; +width:49.9%; +} +.col-tri{ +float:left; +width:33.3%; +} +.col-dtri{ +float:left; +width:66.6%; +} +.col-aurea{ +float:left; +width:38.2%; +} +.controles{ +font-weight:bold; +margin:0; +padding:1em; +text-align:center; +font-size:110%; +} +#menu-oferta{ +background-image:url(icon-oferta16.png); +} +#menu-vida{ +background-image:url(icon-vida16.png); +} +#menu-nuestro{ +background-image:url(icon-nuestro16.png); +} +#menu-medios{ +background-image:url(icon-medios16.png); +} +#menu-servicios{ +background-image:url(icon-servicios16.png); +} +#menu-investigacion{ +background-image:url(icon-investigacion16.png); +} +#texto-pie{ +position:absolute; +top:50%; +right:.5%; +margin:-.7em 0; +} +#texto-pie-portada{ +position:absolute; +top:50%; +left:.5%; +margin:-.7em 0; +} +.contacto-box{ +border-top:1px solid #D1D6DE; +border-bottom:1px solid #D1D6DE; +font-size:100%; +padding-right: 10px; +margin-left: 5px; +color:#566073; +text-align: right; +} + + +.login-box{ + +font-size:100%; +padding-right: 10px; +margin-left: 5px; +color:#566073; +text-align: right; +} + + + +.acceso +{ +margin: 10px; + margin-left: 600px; + -moz-border-radius: 11px 11px 11px 11px; + width: 340px; + height: 30px; + background-image: url("../images/negro-trans.png"); + text-align:center; + font-size: 10px; + background-repeat: repeat; + color: white; + +} + + + +.info-box{ + + width: 600px; + height: 100px; +border:2px solid #FAB22E; +margin:1em 0; +font-size:90%; +margin-right: auto; + margin-left: auto; + +} +.menu-info{ +font-size:115%; +} +.nice-menu-hori{ +text-align:center; +font-size:105%; +font-weight:bold; +padding:1em 0; +} + + +.menu-in{ +background:#e9e9e9; +text-align:left; +border:1px solid #999; +} +.info-box .noti-cata{ +margin-bottom:.5em; +border-bottom:1px dashed #c5cfd8; +} +.acordeon{ +position:relative; +width:100%; +} +/*TITULOS*/ +#cabecera h1{ +position:absolute; +top:0; +left:0; +margin:0; +padding:0; +width:420px; +height:103px; +background:url(titulo.gif) no-repeat; +} +#instancia{ +font:215% Arial,A030,"Nimbus Sans L",FreeSans,"Liberation Sans",sans-serif; +font-weight:normal; +color:#fff; +margin:0; +padding:.3em .8em .4em .8em; +} +#logo-tit h2{ +background:url(logo-noticias.png) no-repeat 50% 0; +margin:0; +color:#fff; +height:75px; +} + +h2 { + + height:5px; + text-align: center; +} + +h3{ +font:170% Arial,A030,"Nimbus Sans L",FreeSans,"Liberation Sans",sans-serif; +margin:0; +color:#000; + +font-weight:normal; +text-shadow:2px 2px 2px #cfcfcf; +} +#vertical-nav h3,#vertical-nav-alt h3{ +background:transparent url(menu-tit-back.png) repeat-x 0 100%; +font:105% Verdana,"DejaVu Sans","Bitstream Vera Sans",sans-serif; +color:#000; +font-weight:bold; +padding:0.3em; +margin:.5em 0 0 0; +border-bottom:1px solid #DEE1E6; +text-shadow:2px 2px 2px #ccc; +} +h4,h5,h6{ +font-family:Arial,A030,"Nimbus Sans L",FreeSans,"Liberation Sans",sans-serif; +margin:1em 0; +text-align:left; +padding:0 0 .1em 0; +line-height:115%; +} +h4{ +font-size:145%; +} +h5{ +font-size:130%; +} +h6{ + font-family:Arial,A030,"Nimbus Sans L",FreeSans,"Liberation Sans",sans-serif; + width: 700px; + font-size: 130%; + line-height:55%; + background-color: #E5EBFD; + background-position: -136px -33px; + border-color: #A0B1DE; + border-radius: 3px 3px 3px 3px; + border-style: solid; + border-width: 1px; + padding: 8px 8px 8px 8px; +} +h6.desarrollador{ +font-family:Arial,A030,"Nimbus Sans L",FreeSans,"Liberation Sans",sans-serif; +text-align: center; +width: 40%; +font-size: 15px; +line-height:20px; +background-color: #E5EBFD; +border-color: #A0B1DE; +border-radius: 3px 3px 3px 3px; +border-style: solid; +border-width: 1px; +padding: 6px 0px 6px 0px; +} +.tit-nice,.tit-cool{ +border-bottom:1px solid #ccc; +} +.tit-cool{ +padding:.2em 0; +margin:.5em 0; +text-shadow:none; +} +.tit-color{ +padding:.2em 0; +margin:1em 0 2em 0; +} +.tit-color span{ +background:#B04141; +color:#fff; +font-weight:normal; +padding:.2em .4em; +font-size:130%; +border:2px solid #8C3333; +-moz-border-radius:9px; +-webkit-border-radius:9px; +border-radius:9px; +-moz-box-shadow:2px 2px 2px rgba(0,0,0,.5); +-webkit-box-shadow:2px 2px 2px rgba(0,0,0,.5); +box-shadow:2px 2px 2px rgba(0,0,0,.5); +} + + +.tab-resultados{ +border-style: groove; +border-width: 1px; +border-color: #669; +font-size:120%; +margin:1em 0 0 0; +padding:.6em .5em .55em .5em; +color: #039; +text-shadow:0 0 5px #ccc; + +-moz-border-radius-topleft:7px; +-moz-border-radius-topright:7px; +-webkit-border-top-left-radius:7px; +-webkit-border-top-right-radius:7px; +border-top-left-radius:7px; +} + + +.tab-header{ +border:none; +font-size:128%; +margin:1em 0 0 0; +padding:.6em .5em .55em .5em; +background-color: #34637F; +/*background:#333;*/ +/*background: url("../images/bt.png") repeat-x scroll 0 10% transparent;*/ +color:#fff; +text-shadow:0 0 5px #ccc; +-moz-border-radius-topleft:7px; +-moz-border-radius-topright:7px; +-webkit-border-top-left-radius:7px; +-webkit-border-top-right-radius:7px; +border-top-left-radius:7px; +} +.info-box h3{ +font-size:125%; +text-align:center; +background:#FBE888; +text-shadow:none; +font-weight:bold; +padding:.3em 0; +border-bottom:1px solid #FAB22E; +-moz-border-radius-topleft:5px; +-moz-border-radius-topright:5px; +-webkit-border-top-left-radius:5px; +-webkit-border-top-right-radius:5px; +border-top-left-radius:5px; +border-top-right-radius:5px; +color:#4D360E; +} +.noti-cata h3{ +font:110% Verdana, "DejaVu Sans", "Bitstream Vera Sans", sans-serif; +font-weight:bold; +line-height:normal; +margin:0.3em 0; +padding:0; +border:none; +background:none; +text-align:left; +} +/*LISTAS*/ +ul,ol{ +margin:1.4em 0 1.4em 3em; +padding:0; +} +li{ +margin:1em 0; +padding:0; +} +#vertical-nav ul,#vertical-nav-alt ul{ +list-style-type:none; +margin:0; +padding:0 0 .4em 0; +background:transparent url(menu-back.gif) repeat-x; +border-top:1px solid #CBCDD1; +} +#vertical-nav li,#vertical-nav-alt li{ +padding:0; +margin:0; +border-bottom:1px solid #ddd; +} +#vertical-nav .menu-subt,#vertcial-nav-alt .menu-subt{ +background:#eee; +} +.menu-mediario{ +font-weight:bold; +} +.menu-linea{ +line-height:2.1em; +list-style-type:none; +margin:1em 0; +padding:0; +text-align:center; +} +.menu-linea li{ +display:inline; +} +.menu-in ul{ +list-style-type:none; +margin:0; +} +.menu-in li{ +border-top:2px solid #fff; +margin:0; +padding:.3em 1em; +} +.menu-in .in-icon{ +background-color:#fff; +font-weight:bold; +text-align:center; +} +.tabulado ul, .tabulado ol{ +margin:1em 0 1em 1em; +} +.rsx-page-num-list{ +display:inline; + +} +.rsx-page-num-list li{ +display:inline; +} +table li{ +text-align:left; +} +.indice li{ +margin:0; +} +.menu-in ul{ +list-style-type:none; +margin:0; +} +.menu-in li{ +margin:0; +border-top:2px solid #fff; +padding:.3em 1em; +} +.menu-in .in-icon{ +text-align:center; +background:#fff; +font-weight:bold; +} +.convo-chico{ +list-style-image:url(icon-ok16.png); +} +/*TEXTO*/ +.arroba{ +vertical-align:middle; +margin:0 .1em; +} + + +#busqueda p{ + margin: 0px; + padding: 1rem; + color: rgb(255, 255, 255); +} +#pie-inf p{ +margin:0; +padding:.2em; +} +#legal{ +border-bottom:1px solid #d4d8db; +} +#administrado{ +color:#1B5799; +} +p{ +margin:1.5em 0; +} +.info-box p{ +margin:.9em 0; +} +blockquote{ +margin:1em 3.5em; +padding:0; +} +q,cite,blockquote{ +color:#6C4406; +font-style:italic; +} +q:before,cite:before,q:after,cite:after{ +content:'"'; +} +.ipie{ +color:#6C4406; +font-size:95%; +text-align:center; +} +.epie{ +font-size:80%; +margin-top:4em; +text-align:right; +} +.nota{ +color:#933; +} +.bread-in{ +font-weight:bold; +} +.unlinked{ +font-weight:normal; +} +.tit-cool span{ +background-color:#333; +color:#fff; +padding:.2em .5em; +-moz-border-radius-topleft:7px; +-moz-border-radius-topright:7px; +-webkit-border-top-left-radius:7px; +-webkit-border-top-right-radius:7px; +border-top-left-radius:7px; +} +#texto-pie a,#texto-pie-portada a{ +margin:0 .5em; +} +#barra-relleno p{ +margin:0; +} +.invita-sugerencia{ +text-align:right; +color:#2f4e91; +} +.invita-sugerencia span{ +cursor:pointer; +} +.file-down{ +font-size:90%; +} +.opcion-icon{ +font-size:130%; +} +.convoca-info{ +font-size:115%; +font-weight:bold; +text-align:left; +} +.menu-in-tit{ +font-weight:bold; +text-align:center; +padding:.3em 0; +margin:0; +text-transform:uppercase; +background:#ddd; +} +.pform{ +margin:1em 0; +} +.info-box .noti-cata p{ +line-height:135%; +margin:.75em 0; +} +.info-box .noti-cata h3 span{ +font-weight:normal; +} +.footnote{ +font-size:90%; +font-style:italic; +} +/*VÍNCULOS*/ +h1 a{ +display:block; +width:100%; +height:100%; +} +#busqueda a{ +text-decoration:none; +padding:.6em .4em .8em .4em; +border:none; +text-shadow:1px 1px 1px #B39217; +} +#busqueda a:link{ +color:#fff; +} +#busqueda a:visited{ +color:#fff; +} +/*#busqueda a:hover{ +background:#fff url(../images/barra-amarilla-hover.png) repeat-x 0 50%; +text-shadow:1px 1px 1px #aaa; +}*/ +#pie-barra a{ +text-decoration:none; +} +#pie-barra a:link,#pie-barra a:visited,#pie-barra a:hover{ +color:#B5D7FF; +} +a:link,.ui-widget .ui-widget-content a:link{ +color:#2f4e91; +} +a:visited,.ui-widget .ui-widget-content a:visited{ +color:#213664; +} +a:hover,.ui-widget .ui-widget-content a:hover{ +color:#B34040; +} +#vertical-nav a,#vertical-nav-alt a,.bread a{ +text-decoration:none; +} +#vertical-nav a,#vertical-nav-alt a{ +display:block; +padding:.3em; +} +#vertical-nav a:hover,#vertical-nav-alt a:hover{ +background-color:#eee; +color:#2f4e91; +} +#vertical-nav li:first-child a:hover,#vertical-nav-alt li:first-child a:hover{ +background:#eee url(entry-back.gif) repeat-x; +} +.bread-relleno a:link{ +color:#B0CFFF;; +} +.bread-relleno a:visited{ +color:#B0CFFF; +} +.bread-relleno a:hover{ +color:#FFBB52; +} +.menu-linea a{ +text-decoration:none; +background:#585D75; +border-bottom:2px solid #3A3D4D; +border-right:2px solid #3A3D4D; +padding:0.3em 0.5em; +-moz-box-shadow:2px 2px 2px #999; +-webkit-box-shadow:2px 2px 2px #999; +box-shadow:2px 2px 2px #999; +-moz-border-radius:5px; +-webkit-border-radius:5px; +border-radius:5px; +} +.menu-linea a:link,.menu-linea a:visited{ +color:#fff; +} +.menu-linea a:hover{ +background:#CED0D7; +color:#3C4152; +} +.opcion-icon a:link,.opcion-icon a:visited{ +text-decoration:none; +padding:.3em .6em .3em 0; +background:#3D4A66; +color:#fff; +border-bottom:2px solid #ccc; +border-right:2px solid #ccc; +} +.opcion-icon a:hover{ +color:#fff; +background:#B34040; +border-bottom:2px solid #ccc; +border-right:2px solid #ccc; +} +.nice-menu-hori a{ +text-decoration:none; +} +.menu-in a{ +text-decoration:none; +} +/*FORMULARIO*/ +#buscar-p{ +position:absolute; +top:0; +right:1em; +font:12px Verdana,"DejaVu Sans","Bitstream Vera Sans",sans-serif; +margin:0; +line-height:1em; +} +.inp-buscar-p{ +font:12px Verdana,"DejaVu Sans","Bitstream Vera Sans",sans-serif; +background-color:#fff; +border:1px solid #BCCDF0; +padding:.2em; +margin:0 1px; +width:14em; +} +.congoogle{ +background-image:url(google_custom.gif); +background-repeat:no-repeat; +background-position:0 50%; +} +.btn-buscar-p{ +margin:0 0 0 .5em; +padding-top:0; +padding-bottom:0; +font:12px Verdana,"DejaVu Sans","Bitstream Vera Sans",sans-serif; +} +input,button,textarea{ +font:100% Verdana,"DejaVu Sans","Bitstream Vera Sans",sans-serif; +} + +legend{ +font-weight:bold; +font-size:107%; +} +fieldset{ +border:1px solid #cfcfcf; +margin:1em 0; +padding:0 1em; +} +#sug_texto{ +width:95%; +} +/*TABLAS*/ + +caption{ +text-align:center; +font-weight:bold; +font-size:110%; +} + + +/*MAQUETADO*/ +.recuadro{ +margin:1em 0; +padding:0 1em; +border:1px dashed #aaa; +} +.izq{ +float:left; +margin:1.5em 1em 0.5em 0; +} +.der{ +float:right; +margin:1.5em 0 0.5em 1em; +} +hr{ +background-color:#ccc; +color:#ccc; +height:1px; +margin:auto; +text-align:center; +width:75%; +} +.centro{ +display:block; +margin:1em auto; +text-align:center; +} +.big_square{ +overflow:auto; +} +/*IMAGENES*/ +/*#cabecera a img{ +border:none; +margin:0; +padding:0; +}*/ +.img-text{ +vertical-align:middle; +padding:0 .5em; +} +.img-pestana{ +vertical-align:middle; +padding:0 .5em 0 0; +} +a img{ +border:none; +} +.foto{ +background-color:#fff; +border-color:#aaa; +border-style:ridge groove groove ridge; +border-width:2px; +padding:5px; +-moz-box-shadow:0 0 4px rgba(0,0,0,.3); +-webkit-box-shadow:0 0 4px rgba(0,0,0,.3); +box-shadow:0 0 4px rgba(0,0,0,.3); +} +.info-box .noti-cata .der{ +margin-top:0; +} +/*JQUERY FIX*/ +.ui-datepicker table,.ui-datepicker tr,.ui-datepicker th,.ui-datepicker td{ +background:none; +} + +.sombra-izq{ +position:absolute; +width:13px; +height:100%; +top:0; +left:-13px; +background:transparent url(../images/sombra-i.png) repeat-y; +} +.sombra-der{ +position:absolute; +width:13px; +height:100%; +top:0; +right:-13px; +background:transparent url(../images/sombra-d.png) repeat-y; +} + + + +.sombra-izq{ +position:absolute; +width:13px; +height:100%; +top:0; +left:-13px; +background:transparent url(../images/sombra-i.png) repeat-y; +} +.sombra-der{ +position:absolute; +width:13px; +height:100%; +top:0; +right:-13px; +background:transparent url(../images/sombra-d.png) repeat-y; +} + +.datos_monitor { + font-family: Tahoma; + border-collapse: collapse; + font-size: 100%; + line-height: 1.1; + margin-bottom: 3em; + margin-top: 20px; + border: 1px solid #A4BED4; + + +} + +.datos_monitor tr:hover, td.start:hover, td.end:hover { + background: none repeat scroll 0 0 #FBF7BD; +} + +.datos_monitor th { + padding: 0.3em 0.5em; + border: 1px solid #A4BED4; + text-align: left; +} +.datos_monitor td { + padding: 0.3em 0.5em; + border: 1px solid #A4BED4; + text-align: left; +} + +.datos_monitor th { + font-weight: bold; + padding-left: 15px; + text-align: left; +} +.datos_monitor th.name { + width: 12em; +} +.datos_monitor th.location { + width: 12em; +} +.datos_monitor th.color { + width: 10em; +} +.datos_monitor thead th { + background: none repeat scroll 0 0 #C6CEDA; + border-color: #FFFFFF #FFFFFF #888888; + border-style: solid; + border-width: 1px 1px 2px; + padding-left: 0.5em; +} +.datos_monitor tbody th.start { + padding-left: 26px; +} +.datos_monitor tbody th.end { + padding-left: 26px; +} + +.datos_encuesta +{ +margin-left:150px; +width:400px; +margin-bottom:10px; +margin-top:20px; +border-style: solid; +border-width: 1px; +border-color: #A4BED4; +font-weight: bold; + border-radius: 3px; + background-image: -moz-linear-gradient(rgba(255,255,255,.3), rgba(255,255,255,0)); + background-image: -webkit-linear-gradient(rgba(255,255,255,.3), rgba(255,255,255,0)); + background-image: -o-linear-gradient(rgba(255,255,255,.3), rgba(255,255,255,0)); + background-image: -ms-linear-gradient(rgba(255,255,255,.3), rgba(255,255,255,0)); + background-image: linear-gradient(rgba(255,255,255,.3), rgba(255,255,255,0)); + -moz-box-shadow: 0 2px 0 rgba(0,0,0,.3); + -webkit-box-shadow: 0 2px 0 rgba(0,0,0,.3); + box-shadow: 0 2px 0 rgba(0,0,0,.3); +} + +.cierre +{ + position: absolute; + left: 950px; + +} \ No newline at end of file diff --git a/public_html/estilos/barra.css b/public_html/estilos/barra.css new file mode 100644 index 0000000..ca1e0e1 --- /dev/null +++ b/public_html/estilos/barra.css @@ -0,0 +1,79 @@ +#loadingProgressG{ +width:128px; +height:10px; +overflow:hidden; +background-color:#A6B3AE; +-webkit-border-radius:5px; +-moz-border-radius:5px; +-o-border-radius:5px; +-ms-border-radius:5px; +border-radius:5px; +} + +.loadingProgressG{ +background-color:#FAFAFA; +margin-top:0; +margin-left:-128px; +-webkit-animation-name:bounce_loadingProgressG; +-webkit-animation-duration:1.7s; +-webkit-animation-iteration-count:infinite; +-webkit-animation-timing-function:linear; +-moz-animation-name:bounce_loadingProgressG; +-moz-animation-duration:1.7s; +-moz-animation-iteration-count:infinite; +-moz-animation-timing-function:linear; +-o-animation-name:bounce_loadingProgressG; +-o-animation-duration:1.7s; +-o-animation-iteration-count:infinite; +-o-animation-timing-function:linear; +-ms-animation-name:bounce_loadingProgressG; +-ms-animation-duration:1.7s; +-ms-animation-iteration-count:infinite; +-ms-animation-timing-function:linear; +width:128px; +height:10px; +} + +@-webkit-keyframes bounce_loadingProgressG{ +0%{ +margin-left:-128px; +} + +100%{ +margin-left:128px; +} + +} + +@-moz-keyframes bounce_loadingProgressG{ +0%{ +margin-left:-128px; +} + +100%{ +margin-left:128px; +} + +} + +@-o-keyframes bounce_loadingProgressG{ +0%{ +margin-left:-128px; +} + +100%{ +margin-left:128px; +} + +} + +@-ms-keyframesbounce_loadingProgressG{ +0%{ +left:-128px; +} + +100%{ +left:128px; +} + +} \ No newline at end of file diff --git a/public_html/estilos/botones.css b/public_html/estilos/botones.css new file mode 100644 index 0000000..9492b5f --- /dev/null +++ b/public_html/estilos/botones.css @@ -0,0 +1,47 @@ +.button { + background: -moz-linear-gradient(center top , #F5F5F5, #F1F1F1) repeat scroll 0 0 #F1F1F1; + border: 1px solid rgba(0, 0, 0, 0.1); + border-radius: 2px 2px 2px 2px; + color: #666666; + font-family: Arial,sans-serif; + font-size: 12px; + font-weight: bold; + margin: 0 3px; + padding: 7px 12px; + text-decoration: none; + text-transform: uppercase; + transition: border-color 0.218s ease 0s; + margin-bottom: 10px; +} + +.button.blue { + background: -moz-linear-gradient(center top , #4D90FE, #4787ED) repeat scroll 0 0 #4787ED; + border-color: #427EDE; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); + color: #FFFFFF; +} +.button.blue:hover { + background: -moz-linear-gradient(center top , #4D90FE, #357AE8) repeat scroll 0 0 #357AE8; + border-color: #2F5BB7; +} +.button.blue:active { + background: none repeat scroll 0 0 #4D90FE; +} + + +:optional.button.red { + background: -moz-linear-gradient(center top , #DD4B39, #D14836) repeat scroll 0 0 #D14836; + border: 1px solid transparent; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); + color: #FFFFFF; + text-shadow: 0 1px rgba(0, 0, 0, 0.1); +} +.button.red:hover { + background: -moz-linear-gradient(center top , #DD4B39, #C53727) repeat scroll 0 0 #C53727; + border-bottom: 1px solid #AF301F; + border-color: #B0281A #B0281A #AF301F; +} +.button.red:active { + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3) inset; +} + diff --git a/public_html/estilos/cuestionario.css b/public_html/estilos/cuestionario.css new file mode 100644 index 0000000..8b06a16 --- /dev/null +++ b/public_html/estilos/cuestionario.css @@ -0,0 +1,221 @@ + + + + +body{ + color: #000000; + /*font-family: Helvetica,Verdana,Tahoma; + font-size: 13px; */ + background: none repeat scroll 0 0 #E9E9E9; + font: 12px/150% Verdana,"DejaVu Sans","Bitstream Vera Sans",sans-serif; + + } + #liga + { + margin-left: 20px; + font-size: 15px; + font-style: bold; + + } + #escudo + { + width: 100px; + margin-left: 50px; + margin-top: 10px; + + } + + .alinear +{ + margin-left: 50px; +} + .tipo3 { + width:800px; + height:80px; + border: 1px solid activecaption; + margin-left: 50px; +} + + .tipo4 { + width:40px; + border: 1px solid activecaption; + margin-left: 50px; +} + +.nota_mostrada + { + background-color: #E5EBFD; + background-position: -136px -33px; + border-color: #A0B1DE; + + width:800px; + border-radius: 3px 3px 3px 3px; + border-style: solid; + border-width: 1px; + margin: auto; + margin-bottom: 10px; + margin-top: 10px; + padding: 8px 8px 8px 34px; + } + + h3{ + color: #000000; + font: 100% Arial,A030,"Nimbus Sans L",FreeSans,"Liberation Sans",sans-serif; + margin: 0; + font-weight:bold; + padding-left: 30px; + padding-right: 30px; + padding-top: 10px; + margin-bottom: 10px; + +} + + h2{ + color: #000000; + + line-height: normal; + font: Arial,A030,"Nimbus Sans L",FreeSans,"Liberation Sans",sans-serif; + font-size: 140%; + margin: 0; + font-weight:bold; + padding-left: 30px; + padding-right: 30px; + padding-top: 10px; + text-shadow: 2px 2px 2px #CFCFCF; +} + + + +#page { + background-color: #FFFFFF; + border: 1px solid #496077; + margin: auto; + /*margin-left: 200px;*/ + width: 960px; +} + +#titulo +{ + + font: 100% Arial,A030,"Nimbus Sans L",FreeSans,"Liberation Sans",sans-serif; + font-size: 20px; + color: #4787ED ; + margin-top: 20px; + padding-left: 200px; + padding-right: 50px; + padding-bottom: 10px; + + +} + +.respuesta_dependiente +{ + width: 400px; + margin-left: 50px; + + + +} + + +#cuestionario +{ + padding-left: 20px; + padding-right: 20px; +} + + + + +.requerido { + color: red; + padding-left: 10px; + margin-left: 60px; + width: 300px; + border-style:solid; + border-width: 1px; + margin-bottom: 10px; +} + +.numeric +{ + width: 30px; +} + +.error{ + width: 180px; + margin-bottom: 1px; + margin-left: 80px; + margin-top: 10px; + background:#890000; + padding:5px 10px; + font-size:12px; + color:#fff; + text-shadow:#500 0 1px 0; + text-align:left; + white-space:nowrap; + border:1px solid #500; + -moz-border-radius:3px; + -webkit-border-radius:3px; + border-radius:3px; + -moz-box-shadow:0 0 5px #700; + -webkit-box-shadow:0 0 5px #700; + box-shadow:0 0 5px #700; + } + + + + + .avance_con { + + text-shadow: 0.1em 0.1em 0.05em #333; + color:whitesmoke; + background-color: #333C4D; + border-style: solid; + border-width: 1px; + border-color: #333C4D; + padding-left: 20px; + padding-right: 20px; + padding-top: 2px; + padding-bottom: 2px; + border-bottom-color: #E1B715; + border-bottom-width: 3px; + + +} + .avance_sin + { + color:black; + border-style: solid; + border-width: 1px; + border-color: #333C4D; + padding-left: 20px; + padding-right: 20px; + padding-top: 2px; + padding-bottom: 2px; + + } + + #mostrar_avance + + { + margin-left: 50px; + width: 900px; + margin-bottom: 10px; + } + + .marco + { + background-color:#fff; +border-color:#aaa; +border-style:ridge groove groove ridge; +border-width:3px; +padding:5px; +-moz-box-shadow:0 0 4px rgba(0,0,0,.3); +-webkit-box-shadow:0 0 4px rgba(0,0,0,.3); +box-shadow:0 0 6px rgba(0,0,0,.6); + + } + + + \ No newline at end of file diff --git a/public_html/estilos/datatables.css b/public_html/estilos/datatables.css new file mode 100644 index 0000000..2c57969 --- /dev/null +++ b/public_html/estilos/datatables.css @@ -0,0 +1,462 @@ +/* + * This combined file was created by the DataTables downloader builder: + * https://datatables.net/download + * + * To rebuild or modify this file with the latest versions of the included + * software please visit: + * https://datatables.net/download/#dt/dt-1.10.18 + * + * Included libraries: + * DataTables 1.10.18 + */ + +/* + * Table styles + */ +table.dataTable { + width: 100%; + margin: 0 auto; + clear: both; + border-collapse: separate; + border-spacing: 0; + /* + * Header and footer styles + */ + /* + * Body styles + */ +} +table.dataTable thead th, +table.dataTable tfoot th { + font-weight: bold; +} +table.dataTable thead th, +table.dataTable thead td { + padding: 10px 18px; + border-bottom: 1px solid #111; +} +table.dataTable thead th:active, +table.dataTable thead td:active { + outline: none; +} +table.dataTable tfoot th, +table.dataTable tfoot td { + padding: 10px 18px 6px 18px; + border-top: 1px solid #111; +} +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting_asc_disabled, +table.dataTable thead .sorting_desc_disabled { + cursor: pointer; + *cursor: hand; + background-repeat: no-repeat; + background-position: center right; +} +table.dataTable thead .sorting { + /*background-image: url("DataTables-1.10.18/images/sort_both.png");*/ +} +table.dataTable thead .sorting_asc { + /*background-image: url("DataTables-1.10.18/images/sort_asc.png");*/ +} +table.dataTable thead .sorting_desc { + background-image: url("DataTables-1.10.18/images/sort_desc.png"); +} +table.dataTable thead .sorting_asc_disabled { + background-image: url("DataTables-1.10.18/images/sort_asc_disabled.png"); +} +table.dataTable thead .sorting_desc_disabled { + background-image: url("DataTables-1.10.18/images/sort_desc_disabled.png"); +} +table.dataTable tbody tr { + background-color: #ffffff; +} +table.dataTable tbody tr.selected { + background-color: #B0BED9; +} +table.dataTable tbody th, +table.dataTable tbody td { + padding: 8px 10px; +} +table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td { + border-top: 1px solid #ddd; +} +table.dataTable.row-border tbody tr:first-child th, +table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th, +table.dataTable.display tbody tr:first-child td { + border-top: none; +} +table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td { + border-top: 1px solid #ddd; + border-right: 1px solid #ddd; +} +table.dataTable.cell-border tbody tr th:first-child, +table.dataTable.cell-border tbody tr td:first-child { + border-left: 1px solid #ddd; +} +table.dataTable.cell-border tbody tr:first-child th, +table.dataTable.cell-border tbody tr:first-child td { + border-top: none; +} +table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd { + background-color: #f9f9f9; +} +table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected { + background-color: #acbad4; +} +table.dataTable.hover tbody tr:hover, table.dataTable.display tbody tr:hover { + background-color: #f6f6f6; +} +table.dataTable.hover tbody tr:hover.selected, table.dataTable.display tbody tr:hover.selected { + background-color: #aab7d1; +} +table.dataTable.order-column tbody tr > .sorting_1, +table.dataTable.order-column tbody tr > .sorting_2, +table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1, +table.dataTable.display tbody tr > .sorting_2, +table.dataTable.display tbody tr > .sorting_3 { + background-color: #fafafa; +} +table.dataTable.order-column tbody tr.selected > .sorting_1, +table.dataTable.order-column tbody tr.selected > .sorting_2, +table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1, +table.dataTable.display tbody tr.selected > .sorting_2, +table.dataTable.display tbody tr.selected > .sorting_3 { + background-color: #acbad5; +} +table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 { + background-color: #f1f1f1; +} +table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 { + background-color: #f3f3f3; +} +table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 { + background-color: whitesmoke; +} +table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 { + background-color: #a6b4cd; +} +table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 { + background-color: #a8b5cf; +} +table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 { + background-color: #a9b7d1; +} +table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 { + background-color: #fafafa; +} +table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 { + background-color: #fcfcfc; +} +table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 { + background-color: #fefefe; +} +table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 { + background-color: #acbad5; +} +table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 { + background-color: #aebcd6; +} +table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 { + background-color: #afbdd8; +} +table.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1 { + background-color: #eaeaea; +} +table.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 { + background-color: #ececec; +} +table.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 { + background-color: #efefef; +} +table.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 { + background-color: #a2aec7; +} +table.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 { + background-color: #a3b0c9; +} +table.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 { + background-color: #a5b2cb; +} +table.dataTable.no-footer { + border-bottom: 1px solid #111; +} +table.dataTable.nowrap th, table.dataTable.nowrap td { + white-space: nowrap; +} +table.dataTable.compact thead th, +table.dataTable.compact thead td { + padding: 4px 17px 4px 4px; +} +table.dataTable.compact tfoot th, +table.dataTable.compact tfoot td { + padding: 4px; +} +table.dataTable.compact tbody th, +table.dataTable.compact tbody td { + padding: 4px; +} +table.dataTable th.dt-left, +table.dataTable td.dt-left { + text-align: left; +} +table.dataTable th.dt-center, +table.dataTable td.dt-center, +table.dataTable td.dataTables_empty { + text-align: center; +} +table.dataTable th.dt-right, +table.dataTable td.dt-right { + text-align: right; +} +table.dataTable th.dt-justify, +table.dataTable td.dt-justify { + text-align: justify; +} +table.dataTable th.dt-nowrap, +table.dataTable td.dt-nowrap { + white-space: nowrap; +} +table.dataTable thead th.dt-head-left, +table.dataTable thead td.dt-head-left, +table.dataTable tfoot th.dt-head-left, +table.dataTable tfoot td.dt-head-left { + text-align: left; +} +table.dataTable thead th.dt-head-center, +table.dataTable thead td.dt-head-center, +table.dataTable tfoot th.dt-head-center, +table.dataTable tfoot td.dt-head-center { + text-align: center; +} +table.dataTable thead th.dt-head-right, +table.dataTable thead td.dt-head-right, +table.dataTable tfoot th.dt-head-right, +table.dataTable tfoot td.dt-head-right { + text-align: right; +} +table.dataTable thead th.dt-head-justify, +table.dataTable thead td.dt-head-justify, +table.dataTable tfoot th.dt-head-justify, +table.dataTable tfoot td.dt-head-justify { + text-align: justify; +} +table.dataTable thead th.dt-head-nowrap, +table.dataTable thead td.dt-head-nowrap, +table.dataTable tfoot th.dt-head-nowrap, +table.dataTable tfoot td.dt-head-nowrap { + white-space: nowrap; +} +table.dataTable tbody th.dt-body-left, +table.dataTable tbody td.dt-body-left { + text-align: left; +} +table.dataTable tbody th.dt-body-center, +table.dataTable tbody td.dt-body-center { + text-align: center; +} +table.dataTable tbody th.dt-body-right, +table.dataTable tbody td.dt-body-right { + text-align: right; +} +table.dataTable tbody th.dt-body-justify, +table.dataTable tbody td.dt-body-justify { + text-align: justify; +} +table.dataTable tbody th.dt-body-nowrap, +table.dataTable tbody td.dt-body-nowrap { + white-space: nowrap; +} + +table.dataTable, +table.dataTable th, +table.dataTable td { + box-sizing: content-box; +} + +/* + * Control feature layout + */ +.dataTables_wrapper { + position: relative; + clear: both; + *zoom: 1; + zoom: 1; +} +.dataTables_wrapper .dataTables_length { + float: left; +} +.dataTables_wrapper .dataTables_filter { + float: right; + text-align: right; +} +.dataTables_wrapper .dataTables_filter input { + margin-left: 0.5em; +} +.dataTables_wrapper .dataTables_info { + clear: both; + float: left; + padding-top: 0.755em; +} +.dataTables_wrapper .dataTables_paginate { + float: right; + text-align: right; + padding-top: 0.25em; +} +.dataTables_wrapper .dataTables_paginate .paginate_button { + box-sizing: border-box; + display: inline-block; + min-width: 1.5em; + padding: 0.5em 1em; + margin-left: 2px; + text-align: center; + text-decoration: none !important; + cursor: pointer; + *cursor: hand; + color: #333 !important; + border: 1px solid transparent; + border-radius: 2px; +} +.dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover { + color: #333 !important; + border: 1px solid #979797; + background-color: white; + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, #dcdcdc)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, white 0%, #dcdcdc 100%); + /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, white 0%, #dcdcdc 100%); + /* FF3.6+ */ + background: -ms-linear-gradient(top, white 0%, #dcdcdc 100%); + /* IE10+ */ + background: -o-linear-gradient(top, white 0%, #dcdcdc 100%); + /* Opera 11.10+ */ + background: linear-gradient(to bottom, white 0%, #dcdcdc 100%); + /* W3C */ +} +.dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active { + cursor: default; + color: #666 !important; + border: 1px solid transparent; + background: transparent; + box-shadow: none; +} +.dataTables_wrapper .dataTables_paginate .paginate_button:hover { + color: white !important; + border: 1px solid #111; + background-color: #585858; + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #585858 0%, #111 100%); + /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, #585858 0%, #111 100%); + /* FF3.6+ */ + background: -ms-linear-gradient(top, #585858 0%, #111 100%); + /* IE10+ */ + background: -o-linear-gradient(top, #585858 0%, #111 100%); + /* Opera 11.10+ */ + background: linear-gradient(to bottom, #585858 0%, #111 100%); + /* W3C */ +} +.dataTables_wrapper .dataTables_paginate .paginate_button:active { + outline: none; + background-color: #2b2b2b; + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); + /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); + /* FF3.6+ */ + background: -ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); + /* IE10+ */ + background: -o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); + /* Opera 11.10+ */ + background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%); + /* W3C */ + box-shadow: inset 0 0 3px #111; +} +.dataTables_wrapper .dataTables_paginate .ellipsis { + padding: 0 1em; +} +.dataTables_wrapper .dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 100%; + height: 40px; + margin-left: -50%; + margin-top: -25px; + padding-top: 20px; + text-align: center; + font-size: 1.2em; + background-color: white; + background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0))); + background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); +} +.dataTables_wrapper .dataTables_length, +.dataTables_wrapper .dataTables_filter, +.dataTables_wrapper .dataTables_info, +.dataTables_wrapper .dataTables_processing, +.dataTables_wrapper .dataTables_paginate { + color: #333; +} +.dataTables_wrapper .dataTables_scroll { + clear: both; +} +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody { + *margin-top: -1px; + -webkit-overflow-scrolling: touch; +} +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td { + vertical-align: middle; +} +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th > div.dataTables_sizing, +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td > div.dataTables_sizing, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th > div.dataTables_sizing, +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td > div.dataTables_sizing { + height: 0; + overflow: hidden; + margin: 0 !important; + padding: 0 !important; +} +.dataTables_wrapper.no-footer .dataTables_scrollBody { + border-bottom: 1px solid #111; +} +.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable, +.dataTables_wrapper.no-footer div.dataTables_scrollBody > table { + border-bottom: none; +} +.dataTables_wrapper:after { + visibility: hidden; + display: block; + content: ""; + clear: both; + height: 0; +} + +@media screen and (max-width: 767px) { + .dataTables_wrapper .dataTables_info, + .dataTables_wrapper .dataTables_paginate { + float: none; + text-align: center; + } + .dataTables_wrapper .dataTables_paginate { + margin-top: 0.5em; + } +} +@media screen and (max-width: 640px) { + .dataTables_wrapper .dataTables_length, + .dataTables_wrapper .dataTables_filter { + float: none; + text-align: center; + } + .dataTables_wrapper .dataTables_filter { + margin-top: 0.5em; + } +} + + diff --git a/public_html/estilos/datatables.min.css b/public_html/estilos/datatables.min.css new file mode 100644 index 0000000..c71c5ac --- /dev/null +++ b/public_html/estilos/datatables.min.css @@ -0,0 +1,15 @@ +/* + * This combined file was created by the DataTables downloader builder: + * https://datatables.net/download + * + * To rebuild or modify this file with the latest versions of the included + * software please visit: + * https://datatables.net/download/#dt/dt-1.10.18 + * + * Included libraries: + * DataTables 1.10.18 + */ + +table.dataTable{width:100%;margin:0 auto;clear:both;border-collapse:separate;border-spacing:0}table.dataTable thead th,table.dataTable tfoot th{font-weight:bold}table.dataTable thead th,table.dataTable thead td{padding:10px 18px;border-bottom:1px solid #111}table.dataTable thead th:active,table.dataTable thead td:active{outline:none}table.dataTable tfoot th,table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;*cursor:hand;background-repeat:no-repeat;background-position:center right}table.dataTable thead .sorting_desc{background-image:url("DataTables-1.10.18/images/sort_desc.png")}table.dataTable thead .sorting_asc_disabled{background-image:url("DataTables-1.10.18/images/sort_asc_disabled.png")}table.dataTable thead .sorting_desc_disabled{background-image:url("DataTables-1.10.18/images/sort_desc_disabled.png")}table.dataTable tbody tr{background-color:#ffffff}table.dataTable tbody tr.selected{background-color:#B0BED9}table.dataTable tbody th,table.dataTable tbody td{padding:8px 10px}table.dataTable.row-border tbody th,table.dataTable.row-border tbody td,table.dataTable.display tbody th,table.dataTable.display tbody td{border-top:1px solid #ddd}table.dataTable.row-border tbody tr:first-child th,table.dataTable.row-border tbody tr:first-child td,table.dataTable.display tbody tr:first-child th,table.dataTable.display tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th,table.dataTable.cell-border tbody td{border-top:1px solid #ddd;border-right:1px solid #ddd}table.dataTable.cell-border tbody tr th:first-child,table.dataTable.cell-border tbody tr td:first-child{border-left:1px solid #ddd}table.dataTable.cell-border tbody tr:first-child th,table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.stripe tbody tr.odd,table.dataTable.display tbody tr.odd{background-color:#f9f9f9}table.dataTable.stripe tbody tr.odd.selected,table.dataTable.display tbody tr.odd.selected{background-color:#acbad4}table.dataTable.hover tbody tr:hover,table.dataTable.display tbody tr:hover{background-color:#f6f6f6}table.dataTable.hover tbody tr:hover.selected,table.dataTable.display tbody tr:hover.selected{background-color:#aab7d1}table.dataTable.order-column tbody tr>.sorting_1,table.dataTable.order-column tbody tr>.sorting_2,table.dataTable.order-column tbody tr>.sorting_3,table.dataTable.display tbody tr>.sorting_1,table.dataTable.display tbody tr>.sorting_2,table.dataTable.display tbody tr>.sorting_3{background-color:#fafafa}table.dataTable.order-column tbody tr.selected>.sorting_1,table.dataTable.order-column tbody tr.selected>.sorting_2,table.dataTable.order-column tbody tr.selected>.sorting_3,table.dataTable.display tbody tr.selected>.sorting_1,table.dataTable.display tbody tr.selected>.sorting_2,table.dataTable.display tbody tr.selected>.sorting_3{background-color:#acbad5}table.dataTable.display tbody tr.odd>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.display tbody tr.odd>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.display tbody tr.odd>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:whitesmoke}table.dataTable.display tbody tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.dataTable.display tbody tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.dataTable.display tbody tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.dataTable.display tbody tr.even>.sorting_1,table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#fafafa}table.dataTable.display tbody tr.even>.sorting_2,table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fcfcfc}table.dataTable.display tbody tr.even>.sorting_3,table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fefefe}table.dataTable.display tbody tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad5}table.dataTable.display tbody tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#aebcd6}table.dataTable.display tbody tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ececec}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#efefef}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a2aec7}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a3b0c9}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a5b2cb}table.dataTable.no-footer{border-bottom:1px solid #111}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th,table.dataTable.compact thead td{padding:4px 17px 4px 4px}table.dataTable.compact tfoot th,table.dataTable.compact tfoot td{padding:4px}table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center,table.dataTable td.dataTables_empty{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable,table.dataTable th,table.dataTable td{box-sizing:content-box}.dataTables_wrapper{position:relative;clear:both;*zoom:1;zoom:1}.dataTables_wrapper .dataTables_length{float:left}.dataTables_wrapper .dataTables_filter{float:right;text-align:right}.dataTables_wrapper .dataTables_filter input{margin-left:0.5em}.dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:0.755em}.dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:0.25em}.dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;color:#333 !important;border:1px solid transparent;border-radius:2px}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333 !important;border:1px solid #979797;background-color:white;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(100%, #dcdcdc));background:-webkit-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-moz-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-ms-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-o-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:linear-gradient(to bottom, #fff 0%, #dcdcdc 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{cursor:default;color:#666 !important;border:1px solid transparent;background:transparent;box-shadow:none}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:white !important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%, #111 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:none;background-color:#2b2b2b;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);box-shadow:inset 0 0 3px #111}.dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:white;background:-webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0)));background:-webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:#333}.dataTables_wrapper .dataTables_scroll{clear:both}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{*margin-top:-1px;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td{vertical-align:middle}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable,.dataTables_wrapper.no-footer div.dataTables_scrollBody>table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width: 767px){.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.dataTables_wrapper .dataTables_paginate{margin-top:0.5em}}@media screen and (max-width: 640px){.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter{float:none;text-align:center}.dataTables_wrapper .dataTables_filter{margin-top:0.5em}} + + diff --git a/public_html/estilos/dhtmlxtabbar.css b/public_html/estilos/dhtmlxtabbar.css new file mode 100644 index 0000000..090b70d --- /dev/null +++ b/public_html/estilos/dhtmlxtabbar.css @@ -0,0 +1,324 @@ +.dhx_tabbar_zone_top{ + position:relative; +} +.dhx_tabbar_zone, .dhx_tabbar_zoneB, .dhx_tabbar_zoneV, .dhx_tabbar_zoneVB{ + position:relative; + width:100%; + height:100%; + overflow:hidden; + z-index:1; +} +.dhx_tablist_line{ + height:1px; + width:1px; + background-color:#91A7B4; + position:absolute; + overflow:hidden; +} +.dhx_tabbar_row, .dhx_tablist_zone, .dhx_tabcontent_zone, .dhx_tab_element{ + width:100%; + height:100%; + overflow:hidden; + position:absolute; +} +.dhx_tablist_zone{ + z-index:3; + overflow:hidden; +} +.dhx_tabcontent_zone{ + border:1px solid #91A7B4; + z-index:2; +} +.dhx_tabbar_zone_top .dhx_tab_element{ + padding-top:3px; +} +.dhx_tab_element span{ + white-space: nowrap; +} +.dhx_tab_element{ + cursor:pointer; + text-align:center; + font-family:Tahoma; + font-size:8pt; + background-color:white; +} +.dhx_tabbar_zoneV .dhx_tab_element{ + padding:0px 0px 0px 3px; + text-align:left; +} +.dhx_tabbar_zoneVB .dhx_tab_element{ + padding:0px 3px 0px 0px; + text-align:right; +} +.dhx_tab_element div{ + height:40px; + width:40px; + position:absolute; + overflow:hidden; +} +.dhx_tab_element span{ + position:relative; + z-index:10; +} + +.dhx_tabbar_zone_dhx_blue .dhx_tablist_line{ + background-color:#C2D5DC; +} +.dhx_tabbar_zone_dhx_blue .dhx_tabcontent_zone{ + border-color:#D2E3EA; +} + + +.dhx_tabbar_zone_dhx_blue .dhx_tab_element{ + color:#006699; +} +.dhx_tab_element_active{ + font-weight:bold; +} +.dhx_tabbar_zone_dark_blue .dhx_tab_element,.dhx_tabbar_zone_dhx_black .dhx_tab_element{ + color:white; +} +.dhx_tabbar_zone_dhx_black .dhx_tablist_line{ + background-color:#626262; +} +.dhx_tabbar_zone_dhx_black .dhx_tabcontent_zone{ + border-color:#333333; +} + +.dhx_tabbar_zone_dhx_web .dhx_tabbar_row{ + background-color:#646464; +} +.dhx_tabbar_zone_dhx_web .dhx_tab_element span{ + top:4px; + font-weight:normal !important; + font-size:12px; +} +.dhx_tabbar_zone_dhx_web .dhx_tablist_line{ + display:none; +} +.dhx_tabbar_zone_dhx_web .dhx_tabcontent_zone{ + + border-width:0px 1px 1px 1px; + border-color:#646464;; + + background-color:#646464!important; + border:none!important; +} + +.dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_row{ + background-image:url(./imgs/dhx_skyblue/bg_top.png); + border-right:1px solid #B6CBDD; + border-left:1px solid #B6CBDD; +} +.dhx_tabbar_zone_dhx_blue .dhx_tabbar_row{ + background-color: #D2E3EA; +} +.dhx_tabbar_zone_dhx_black .dhx_tabbar_row{ + background-color: black; +} +.dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_lineA{ + position:absolute; + left:0px; width:1px; height:3px; + background-color:white; + z-index:999; + border-left:1px solid #A4BED4; + border-right:1px solid #A4BED4; + overflow:hidden; +} +.dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_lineB{ + position:absolute; left:2px; width:100px; height:3px; + background-color: #D0E5FF; + z-index:999; overflow:hidden; +} +.dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_lineC{ + position:absolute; right:0px; width:1px; height:21px; + background-color: white; + z-index:999; overflow:hidden; + border-right:1px solid #A4BED4; +} +.dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_lineD{ + position:absolute; left:1px; width:1px; height:21px; + background-color: white; + z-index:999; overflow:hidden; +} +.dhx_tabbar_zone_top .dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_lineD{ + top:1px; +} +.dhx_tabbar_zone_top .dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_lineC{ + top:1px; +} + + + +.dhx_tabbar_zone_bottom .dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_lineD{ + bottom:1px; +} +.dhx_tabbar_zone_bottom .dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_lineC{ + bottom:1px; +} +.dhx_tabbar_zone_bottom .dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_row{ + background-image:url(./imgs/dhx_skyblue/bg_bottom.png); + background-position:bottom; +} +.dhx_tabbar_zone_bottom .dhx_tabbar_zone_dhx_skyblue .dhx_tablist_line { + border-width:0px 1px 1px 0px; +} +.dhx_tabbar_zone_bottom .dhx_tab_element span{ + padding-top:5px; + display:block; +} + + + +.dhx_tabbar_zone_left .dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_lineB{ + width:3px;left:auto; top:2px; +} +.dhx_tabbar_zone_left .dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_lineA{ + width:3px; + border:1px solid #A4BED4; + border-width:1px 0px 1px 0px; +} +.dhx_tabbar_zone_left .dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_lineD{ + height:1px; width:21px; right:auto; bottom:0px; left:1px; + border:1px solid #A4BED4; + border-width:0px 0px 1px 0px; +} +.dhx_tabbar_zone_left .dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_lineC{ + height:1px; width:21px; right:auto; top:1px; left:1px; +} +.dhx_tabbar_zone_left .dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_row{ + background-image:url(./imgs/dhx_skyblue/bg_left.png); + border:1px solid #B6CBDD; + border-width:1px 0px 1px 0px; +} +.dhx_tabbar_zone_left .dhx_tabbar_zone_dhx_skyblue .dhx_tablist_line { + border-width:0px 0px 1px 1px; + width:2px !ie; +} +.dhx_tabbar_zone_left .dhx_tabbar_zone_dhx_skyblue .dhx_tab_element{ + padding-top:0px; +} +.dhx_tabbar_zone_left .dhx_tabbar_zone_dhx_skyblue .dhx_tab_element span{ + padding-top:5px; + display:block; +} + + +.dhx_tabbar_zone_right .dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_lineA{ + left:auto; width:3px; + border:1px solid #A4BED4; + border-width:1px 0px 1px 0px; +} +.dhx_tabbar_zone_right .dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_lineB{ + width:3px;left:auto; top:2px; +} +.dhx_tabbar_zone_right .dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_lineD{ + height:1px; width:21px; left:auto; bottom:0px; right:1px; + border:1px solid #A4BED4; + border-width:0px 0px 1px 0px; +} +.dhx_tabbar_zone_right .dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_lineC{ + height:1px; width:21px; left:auto; top:1px; right:0px; +} +.dhx_tabbar_zone_right .dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_row{ + background-image:url(imgs/dhx_skyblue/bg_right.png); + background-position:right; + border:1px solid #B6CBDD; + border-width:1px 0px 1px 0px; +} +.dhx_tabbar_zone_right .dhx_tabbar_zone_dhx_skyblue .dhx_tablist_line { + border-width:0px 1px 1px 0px; + width:2px !ie; +} +.dhx_tabbar_zone_right .dhx_tabbar_zone_dhx_skyblue .dhx_tab_element{ + padding-top:0px; +} +.dhx_tabbar_zone_right .dhx_tabbar_zone_dhx_skyblue .dhx_tab_element span{ + padding-top:5px; + display:block; +} + + + +.dhx_tabbar_zone_dhx_skyblue .dhx_tablist_line{ + height:3px; border:1px solid #A4BED4; background-color:white; border-width:1px 1px 0px 0px; +} +.dhx_tabbar_zone_dhx_skyblue .dhx_tabcontent_zone{ + border-color:#A4BED4; +} + +/* common */ +div.dhxcont_main_content { + position: relative; + left: 0px; + top: 0px; + overflow: hidden; +} +div.dhxcont_content_blocker { + position: absolute; + left: 0px; + top: 0px; + width: 101%; + height: 101%; + filter: alpha(opacity=0); + -moz-opacity: 0; + opacity: 0; + background: #FFFFFF; + z-index: 1; + -moz-user-select: none; +} + +div.dhx_tabbar_zone_dhx_skyblue div.dhxcont_sb_container { + position: relative; + height: 24px; +} +div.dhx_tabbar_zone_dhx_skyblue div.dhxcont_sb_container div.dhxcont_statusbar { + background-image: url("./imgs/dhx_skyblue/dhxlayout_bg_sb.gif"); + position: relative; + top: 2px; + height: 22px; + line-height: 22px; + background-repeat: repeat-x; + width: auto; + padding: 0px 4px; + overflow: hidden; + white-space: nowrap; + border-top: none; + border-bottom: none; + border-left: #a4bed4 0px solid; + border-right: #a4bed4 0px solid; + font-family: Tahoma; + font-size: 11px; + vertical-align: middle; + color: #000000; +} + +div.dhx_tabbar_zone_dhx_web div.dhxcont_sb_container { + position: relative; + height: 41px; +} +div.dhx_tabbar_zone_dhx_web div.dhxcont_sb_container div.dhxcont_statusbar { + position: relative; + top: 9px; + height: 32px; + line-height: 32px; + background-color: #ececec; + width: auto; + padding: 0px 12px; + overflow: hidden; + white-space: nowrap; + font-family: "Trebuchet MS"; + font-size: 14px; + vertical-align: middle; + color: #666666; +} + +/* dhxcont cells in layout */ +.dhx_tabbar_zone_dhx_web div.dhxcont_global_content_area { + position: absolute; + overflow: hidden; /* important for IE */ + background-color: #FFFFFF; +} +.dhx_tabbar_zone_dhx_web div.dhxcont_global_content_area.dhxcont_tabbar_dhx_web { + border: white 8px solid; /* change to white */ +} \ No newline at end of file diff --git a/public_html/estilos/entrada.css b/public_html/estilos/entrada.css new file mode 100644 index 0000000..78fdd4a --- /dev/null +++ b/public_html/estilos/entrada.css @@ -0,0 +1,122 @@ +#colaboradores_block{ +width:600px; +margin: auto; + +display: none; +height:270px; +background-color:transparent; +position:absolute; +left:400px; +top:255px; +} + +.indent{ + padding-right: 15.5em; +} + +#form { + -moz-border-radius: 10px; + -webkit-border-radius: 10px; + border:0.5px solid ; + /*border-color: blue;*/ + + width:500px; + margin:20px auto 80px; + + color: #999999; +} +#form legend{ + font-weight:bold; + font-size:12px; +} +#form ol{ + list-style:none; +} +#form ol li{ + padding-bottom:1px; +} +#form ol li label{ + width:120px; + float:left; + text-align:left; +} +#form input[type=text] { + border:1px solid #CCCCCC; +} +#form input.btn { + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + padding:3px; + color:#FFFFFF; + background-color:blue; + border:1px solid #000000; +} + + +#form_consulta { + + border:0.5px solid ; + border-color: gray; + width:800px; + margin:20px auto 80px; + +} +#form_consulta legend{ + font-weight:bold; + font-size:12px; +} +#form_consulta ol{ + list-style:none; +} +#form_consulta ol li{ + padding-bottom:1px; +} +#form_consulta ol li label{ + width:120px; + float:left; + text-align:left; +} +#form_consulta input[type=text] { + border:1px solid #CCCCCC; +} +#form_consulta input.btn { + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + padding:3px; + color:#FFFFFF; + background-color:blue; + + border:1px solid #000000; +} + + +fieldset { + width:580px; + margin:auto; +} +#contacto ol{ + list-style:none; +} +#contacto ol li{ + padding-bottom:10px; +} +#contacto ol li label{ + float:left; + width:90px; +} +#result { + width:280px; + padding:10px; + border:1px solid #bfcddb; + margin:auto; + margin-top:10px; + text-align:center; + display:none; +} +#loading { + background-image:url(../images/ajax-loader.gif); + width:31px; + height:31px; + margin:auto; + display:none; +} \ No newline at end of file diff --git a/public_html/estilos/imgs/blank1.html b/public_html/estilos/imgs/blank1.html new file mode 100644 index 0000000..0519ecb --- /dev/null +++ b/public_html/estilos/imgs/blank1.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public_html/estilos/imgs/dhx_blue/close.png b/public_html/estilos/imgs/dhx_blue/close.png new file mode 100644 index 0000000..0fe3f49 Binary files /dev/null and b/public_html/estilos/imgs/dhx_blue/close.png differ diff --git a/public_html/estilos/imgs/dhx_blue/dhx_blue_bottom.gif b/public_html/estilos/imgs/dhx_blue/dhx_blue_bottom.gif new file mode 100644 index 0000000..952a3ab Binary files /dev/null and b/public_html/estilos/imgs/dhx_blue/dhx_blue_bottom.gif differ diff --git a/public_html/estilos/imgs/dhx_blue/dhx_blue_left.gif b/public_html/estilos/imgs/dhx_blue/dhx_blue_left.gif new file mode 100644 index 0000000..5b48f81 Binary files /dev/null and b/public_html/estilos/imgs/dhx_blue/dhx_blue_left.gif differ diff --git a/public_html/estilos/imgs/dhx_blue/dhx_blue_right.gif b/public_html/estilos/imgs/dhx_blue/dhx_blue_right.gif new file mode 100644 index 0000000..8652f04 Binary files /dev/null and b/public_html/estilos/imgs/dhx_blue/dhx_blue_right.gif differ diff --git a/public_html/estilos/imgs/dhx_blue/dhx_blue_scroll_left.gif b/public_html/estilos/imgs/dhx_blue/dhx_blue_scroll_left.gif new file mode 100644 index 0000000..dcf6bb1 Binary files /dev/null and b/public_html/estilos/imgs/dhx_blue/dhx_blue_scroll_left.gif differ diff --git a/public_html/estilos/imgs/dhx_blue/dhx_blue_scroll_right.gif b/public_html/estilos/imgs/dhx_blue/dhx_blue_scroll_right.gif new file mode 100644 index 0000000..dd40fc6 Binary files /dev/null and b/public_html/estilos/imgs/dhx_blue/dhx_blue_scroll_right.gif differ diff --git a/public_html/estilos/imgs/dhx_blue/dhx_blue_top.gif b/public_html/estilos/imgs/dhx_blue/dhx_blue_top.gif new file mode 100644 index 0000000..dcbe2db Binary files /dev/null and b/public_html/estilos/imgs/dhx_blue/dhx_blue_top.gif differ diff --git a/public_html/estilos/imgs/glassy_blue/glassy_blue_bottom.gif b/public_html/estilos/imgs/glassy_blue/glassy_blue_bottom.gif new file mode 100644 index 0000000..7da4a6c Binary files /dev/null and b/public_html/estilos/imgs/glassy_blue/glassy_blue_bottom.gif differ diff --git a/public_html/estilos/imgs/glassy_blue/glassy_blue_left.gif b/public_html/estilos/imgs/glassy_blue/glassy_blue_left.gif new file mode 100644 index 0000000..d65c184 Binary files /dev/null and b/public_html/estilos/imgs/glassy_blue/glassy_blue_left.gif differ diff --git a/public_html/estilos/imgs/glassy_blue/glassy_blue_right.gif b/public_html/estilos/imgs/glassy_blue/glassy_blue_right.gif new file mode 100644 index 0000000..bf0a0fe Binary files /dev/null and b/public_html/estilos/imgs/glassy_blue/glassy_blue_right.gif differ diff --git a/public_html/estilos/imgs/glassy_blue/glassy_blue_top.gif b/public_html/estilos/imgs/glassy_blue/glassy_blue_top.gif new file mode 100644 index 0000000..a5aef08 Binary files /dev/null and b/public_html/estilos/imgs/glassy_blue/glassy_blue_top.gif differ diff --git a/public_html/estilos/imgs/silver/silver_bottom.gif b/public_html/estilos/imgs/silver/silver_bottom.gif new file mode 100644 index 0000000..20f4ae8 Binary files /dev/null and b/public_html/estilos/imgs/silver/silver_bottom.gif differ diff --git a/public_html/estilos/imgs/silver/silver_left.gif b/public_html/estilos/imgs/silver/silver_left.gif new file mode 100644 index 0000000..a82bc61 Binary files /dev/null and b/public_html/estilos/imgs/silver/silver_left.gif differ diff --git a/public_html/estilos/imgs/silver/silver_right.gif b/public_html/estilos/imgs/silver/silver_right.gif new file mode 100644 index 0000000..4eda2c4 Binary files /dev/null and b/public_html/estilos/imgs/silver/silver_right.gif differ diff --git a/public_html/estilos/imgs/silver/silver_top.gif b/public_html/estilos/imgs/silver/silver_top.gif new file mode 100644 index 0000000..388b145 Binary files /dev/null and b/public_html/estilos/imgs/silver/silver_top.gif differ diff --git a/public_html/estilos/imgs/winbiscarf/winbiscarf_bottom.gif b/public_html/estilos/imgs/winbiscarf/winbiscarf_bottom.gif new file mode 100644 index 0000000..68e2be6 Binary files /dev/null and b/public_html/estilos/imgs/winbiscarf/winbiscarf_bottom.gif differ diff --git a/public_html/estilos/imgs/winbiscarf/winbiscarf_right.gif b/public_html/estilos/imgs/winbiscarf/winbiscarf_right.gif new file mode 100644 index 0000000..a68675a Binary files /dev/null and b/public_html/estilos/imgs/winbiscarf/winbiscarf_right.gif differ diff --git a/public_html/estilos/imgs/winbiscarf/winbiscarf_scroll_left.gif b/public_html/estilos/imgs/winbiscarf/winbiscarf_scroll_left.gif new file mode 100644 index 0000000..ea2c94d Binary files /dev/null and b/public_html/estilos/imgs/winbiscarf/winbiscarf_scroll_left.gif differ diff --git a/public_html/estilos/imgs/winbiscarf/winbiscarf_top.gif b/public_html/estilos/imgs/winbiscarf/winbiscarf_top.gif new file mode 100644 index 0000000..505b0e9 Binary files /dev/null and b/public_html/estilos/imgs/winbiscarf/winbiscarf_top.gif differ diff --git a/public_html/estilos/imgs/winscarf/winscarf_bottom.gif b/public_html/estilos/imgs/winscarf/winscarf_bottom.gif new file mode 100644 index 0000000..e69de29 diff --git a/public_html/estilos/imgs/winscarf/winscarf_left.gif b/public_html/estilos/imgs/winscarf/winscarf_left.gif new file mode 100644 index 0000000..e69de29 diff --git a/public_html/estilos/imgs/winscarf/winscarf_right.gif b/public_html/estilos/imgs/winscarf/winscarf_right.gif new file mode 100644 index 0000000..e69de29 diff --git a/public_html/estilos/imgs/winscarf/winscarf_scroll_left.gif b/public_html/estilos/imgs/winscarf/winscarf_scroll_left.gif new file mode 100644 index 0000000..e69de29 diff --git a/public_html/estilos/imgs/winscarf/winscarf_scroll_right.gif b/public_html/estilos/imgs/winscarf/winscarf_scroll_right.gif new file mode 100644 index 0000000..e69de29 diff --git a/public_html/estilos/imgs/winscarf/winscarf_top.gif b/public_html/estilos/imgs/winscarf/winscarf_top.gif new file mode 100644 index 0000000..e69de29 diff --git a/public_html/estilos/login.css b/public_html/estilos/login.css new file mode 100644 index 0000000..82ffd55 --- /dev/null +++ b/public_html/estilos/login.css @@ -0,0 +1,401 @@ +/* login form */ +#login_alumno , textarea, li{ + font:1em "Lucida Sans Unicode", "Lucida Grande", sans-serif; + line-height:1.5em; + color:#444; + font-size:12px; + text-align:center; +} +#login_alumno input{ + font:1em "Lucida Sans Unicode", "Lucida Grande", sans-serif; + line-height:1.5em; + color:#444; + font-size:12px; + +} +#login_alumno{ + margin:auto; + background:#fff; + border:8px solid #eee; + width:350px; + -moz-border-radius:5px; + -webkit-border-radius:5px; + border-radius:5px; + -moz-box-shadow:0 0 10px #4e707c; + -webkit-box-shadow:0 0 10px #4e707c; + box-shadow:0 0 10px #4e707c; + text-align:left; + position:relative; + } +#login_alumno a, #login_alumno a:visited{color:#0283b2;} +#login_alumno a:hover{color:#111;} +#login_alumno h1{ + background:#333333; + color:#fff; + font-size:14px; + padding:5px 10px; + margin:0 0 1.5em 0; + } +#login_alumno .register{ + position:absolute; + float:left; + margin:0; + line-height:30px; + top:-40px; + right:0; + font-size:11px; + } +#login_alumno p{margin:.5em 25px;} +#login_alumno div{ + margin:.5em 15px; + background:#eee; + padding:1px; + -moz-border-radius:3px; + -webkit-border-radius:3px; + border-radius:3px; + text-align:right; + position:relative; + } +#login_alumno label{ + float:left; + font-size: 13px; + line-height:20px; + padding-left:10px; + } +#login_alumno .field{ + border:1px solid #ccc; + font:1em "Lucida Sans Unicode", "Lucida Grande", sans-serif; + width:200px; + font-size:13px; + padding:4px; + -moz-box-shadow:inset 0 0 5px #ccc; + -webkit-box-shadow:inset 0 0 5px #ccc; + box-shadow:inset 0 0 5px #ccc; + } +#login_alumno div.submit{background:none;margin:1em 25px;text-align:left;} +#login_alumno div.submit label{float:none;display:inline;font-size:11px;} + +#login_alumno .forgot{text-align:right;font-size:11px;} +#login_alumno .error{ + float:left; + position:absolute; + left:100%; + top:-5px; + background:#890000; + padding:5px 10px; + font-size:11px; + color:#fff; + text-shadow:#500 0 1px 0; + text-align:left; + white-space:nowrap; + border:1px solid #500; + -moz-border-radius:3px; + -webkit-border-radius:3px; + border-radius:3px; + -moz-box-shadow:0 0 5px #700; + -webkit-box-shadow:0 0 5px #700; + box-shadow:0 0 5px #700; + } + + + + + /* --------------*/ + + #login_profesor , table, textarea, li{ + font:1em "Lucida Sans Unicode", "Lucida Grande", sans-serif; + line-height:1.5em; + color:#444; + font-size:12px; + text-align:center; +} +#login_profesor input{ + font:1em "Lucida Sans Unicode", "Lucida Grande", sans-serif; + line-height:1.5em; + color:#444; + font-size:12px; + +} +#login_profesor{ + margin:auto; + background:#fff; + border:8px solid #eee; + width:350px; + -moz-border-radius:5px; + -webkit-border-radius:5px; + border-radius:5px; + -moz-box-shadow:0 0 10px #4e707c; + -webkit-box-shadow:0 0 10px #4e707c; + box-shadow:0 0 10px #4e707c; + text-align:left; + position:relative; + } +#login_profesor a, #login_profesor a:visited{color:#0283b2;} +#login_profesor a:hover{color:#111;} +#login_profesor h1{ + background:#333C4D; + color:#fff; + font-size:14px; + padding:5px 10px; + margin:0 0 1.5em 0; + } +#login_profesor .register{ + position:absolute; + float:left; + margin:0; + line-height:30px; + top:-40px; + right:0; + font-size:11px; + } +#login_profesor p{margin:.5em 25px;} +#login_profesor div{ + margin:.5em 15px; + background:#eee; + padding:1px; + -moz-border-radius:3px; + -webkit-border-radius:3px; + border-radius:3px; + text-align:right; + position:relative; + } +#login_profesor label{ + float:left; + font-size: 13px; + line-height:20px; + padding-left:10px; + } +#login_profesor .field{ + border:1px solid #ccc; + font:1em "Lucida Sans Unicode", "Lucida Grande", sans-serif; + width:200px; + font-size:13px; + padding:4px; + -moz-box-shadow:inset 0 0 5px #ccc; + -webkit-box-shadow:inset 0 0 5px #ccc; + box-shadow:inset 0 0 5px #ccc; + } +#login_profesor div.submit{background:none;margin:1em 25px;text-align:left;} +#login_profesor div.submit label{float:none;display:inline;font-size:11px;} + +#login_profesor .forgot{text-align:right;font-size:11px;} +#login_profesor .error{ + float:left; + position:absolute; + left:100%; + top:-5px; + background:#890000; + padding:5px 10px; + font-size:11px; + color:#fff; + text-shadow:#500 0 1px 0; + text-align:left; + white-space:nowrap; + border:1px solid #500; + -moz-border-radius:3px; + -webkit-border-radius:3px; + border-radius:3px; + -moz-box-shadow:0 0 5px #700; + -webkit-box-shadow:0 0 5px #700; + box-shadow:0 0 5px #700; + } + + + + + + + + + + + /*--*----------------------------------*/ + + /* --------------*/ + + #login_idioma , table, textarea, li{ + font:1em "Lucida Sans Unicode", "Lucida Grande", sans-serif; + line-height:1.5em; + color:#444; + font-size:12px; + text-align:center; +} +#login_idioma input{ + font:1em "Lucida Sans Unicode", "Lucida Grande", sans-serif; + line-height:1.5em; + color:#444; + font-size:12px; + +} +#login_idioma{ + margin:auto; + background:#fff; + border:8px solid #eee; + width:420px; + -moz-border-radius:5px; + -webkit-border-radius:5px; + border-radius:5px; + -moz-box-shadow:0 0 10px #4e707c; + -webkit-box-shadow:0 0 10px #4e707c; + box-shadow:0 0 10px #4e707c; + text-align:left; + position:relative; + } +#login_idioma a, #login_idioma a:visited{color:#0283b2;} +#login_idioma a:hover{color:#111;} +#login_idioma h1{ + background:#08298A; + color:#fff; + font-size:14px; + padding:5px 10px; + margin:0 0 1.5em 0; + } +#login_idioma .register{ + position:absolute; + float:left; + margin:0; + line-height:30px; + top:-40px; + right:0; + font-size:11px; + } +#login_idioma p{margin:.5em 25px;} +#login_idioma div{ + margin:.5em 15px; + background:#eee; + padding:1px; + -moz-border-radius:3px; + -webkit-border-radius:3px; + border-radius:3px; + text-align:right; + position:relative; + } +#login_idioma label{ + float:left; + font-size: 13px; + line-height:20px; + padding-left:10px; + } +#login_idioma .field{ + border:1px solid #ccc; + font:1em "Lucida Sans Unicode", "Lucida Grande", sans-serif; + width:200px; + font-size:13px; + padding:4px; + -moz-box-shadow:inset 0 0 5px #ccc; + -webkit-box-shadow:inset 0 0 5px #ccc; + box-shadow:inset 0 0 5px #ccc; + } +#login_idioma div.submit{background:none;margin:1em 25px;text-align:left;} +#login_idioma div.submit label{float:none;display:inline;font-size:11px;} + +#login_idioma .forgot{text-align:right;font-size:11px;} +#login_idioma .error{ + float:left; + position:absolute; + left:100%; + top:-5px; + background:#890000; + padding:5px 10px; + font-size:11px; + color:#fff; + text-shadow:#500 0 1px 0; + text-align:left; + white-space:nowrap; + border:1px solid #500; + -moz-border-radius:3px; + -webkit-border-radius:3px; + border-radius:3px; + -moz-box-shadow:0 0 5px #700; + -webkit-box-shadow:0 0 5px #700; + box-shadow:0 0 5px #700; + } + + + + + /*-------------------------------------*/ + + + + + .response{ + background:#890000; + display: none; + padding:5px 10px; + font-size:11px; + color:#fff; + text-shadow:#500 0 1px 0; + white-space:nowrap; + border:1px solid #500; + -moz-border-radius:3px; + -webkit-border-radius:3px; + border-radius:3px; + -moz-box-shadow:0 0 5px #700; + -webkit-box-shadow:0 0 5px #700; + box-shadow:0 0 5px #700; + } + + .requerido, .requerido_correo{ + margin-bottom: 10px; + margin-top: 10px; + background:#890000; + width: 200px; + padding:3px 10px; + font-size:11px; + color:#fff; + text-shadow:#500 0 1px 0; + white-space:nowrap; + border:1px solid #500; + -moz-border-radius:3px; + -webkit-border-radius:3px; + border-radius:3px; + -moz-box-shadow:0 0 5px #700; + -webkit-box-shadow:0 0 5px #700; + box-shadow:0 0 5px #700; + } + + .mensaje_verde{ + margin-bottom: 10px; + margin-top: 10px; + background-color: rgb(81, 163, 81); + width: 200px; + padding:3px 10px; + font-size:11px; + color: rgb(255, 255, 255); + border-style: none; + font-weight: normal; + -moz-border-radius:3px; + -webkit-border-radius:3px; + border-radius:3px; + -moz-box-shadow:0 0 5px white; + -webkit-box-shadow:0 0 5px white; + box-shadow:0 0 5px white; + } + +/* // login form */ + +#enviar, #download_ticket, #enviar_1, .boton-verde{ + border-style: none; + font-weight: normal; + padding: 10px 10px 10px 10px; + width: auto; + background-color: rgb(81,163,81); + color: rgb(255,255,255); +} + +#descargar_comprobante, #generar_reporte{ + border-style: none; + font-weight: bold; + /*margin-left: 400px;*/ + padding: 10px 10px 10px 10px; + margin-bottom: 10px; + margin-top: 0px; + width: auto; + background-color: #2790B0; + color: rgb(255, 255, 255); +} + +#generar_reporte{ + padding-left: 500px; +} \ No newline at end of file diff --git a/public_html/estilos/modal.css b/public_html/estilos/modal.css new file mode 100644 index 0000000..f968f0a --- /dev/null +++ b/public_html/estilos/modal.css @@ -0,0 +1,152 @@ +.modal +{ + display: none; + position: fixed; + z-index: 1; + left: 0; + top: 0; + width: 100%; + height: 100%; + overflow: auto; + background-color: rgb(0,0,0); + background-color: rgba(0,0,0,0.4); +} +.modal-content { + background-color: #fefefe; + margin: 15% auto; /* 15% from the top and centered */ + padding: 20px; + border: 1px solid #888; + border-radius: 10px; + width: 50%; /* Could be more or less, depending on screen size */ +} +.modal-footer +{ + position: relative; + left: 90%; +} +.close { + cursor: pointer; + color: #aaa; + float: right; + font-size: 28px; + font-weight: bold; +} + +.input-seccion > label +{ + display: inline-block; + max-width: 100%; + margin-bottom: 5px; + font-weight: 700; +} + +.input-seccion > input +{ + display: block; + width: 100%; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; +} +.warning +{ + background: #ffa7a7; + font-style: italic; + padding: 3px; + border-radius: 5px; +} +.send-btn +{ + padding: 10px; + margin-top: 20px; + background: #BB8800; + border: none; + border-radius: 3px; + color: white; +} + +/****SPINER***/ +.spin +{ + display: none; + position: fixed; + z-index: 1; + left: 0; + top: 0; + width: 100%; + height: 100%; + overflow: auto; + background-color: rgb(0,0,0); + background-color: rgba(0,0,0,0.4); +} +.spin-content +{ + margin: 15% auto; + width: 60px; +} +.spin .spiner{ + width: 20px; + position: relative; + float: left; + color: black; + font-size:35px; + -webkit-animation: slideIn 1s linear infinite; /* Safari */ + animation: slideIn 1s linear infinite; +} +.spin1.slideIn +{ + + animation-delay: 0.3s; + -moz-animation-delay: 0.3s; + -webkit-animation-delay: 0.3s; + -o-animation-delay: 0.3s; +} + +.spin2.slideIn { + + animation-delay: 0.6s; + -moz-animation-delay: 0.6s; + -webkit-animation-delay: 0.6s; + -o-animation-delay: 0.6s; +} +.spin3.slideIn { + + animation-delay: 0.9s; + -moz-animation-delay: 0.9s; + -webkit-animation-delay: 0.9s; + -o-animation-delay: 0.9s; +} + +@-webkit-keyframes slideIn { + 0% { font-size:35px; } + 100% { font-size:80px; } +} + +@keyframes slideIn +{ + 0%{ + font-size:35px; + } + 50% + { + color: white; + font-size:80px; + } + 100% + { + color: black; + font-size:35px; + } + +} + + +.white +{ + color:white; + text-align: center; +} \ No newline at end of file diff --git a/public_html/estilos/reportes.css b/public_html/estilos/reportes.css new file mode 100644 index 0000000..9e1bf02 --- /dev/null +++ b/public_html/estilos/reportes.css @@ -0,0 +1,105 @@ +body{ + color: #000000; + font-family: verdana,arial,sans-serif; + font-size:13px; + background: none repeat scroll 0 0 #E9E9E9; + } + + + #page { + background-color: #FFFFFF; + border: 1px solid #496077; + margin: auto; + padding-left: 20px; + + padding-top: 20px; + padding-bottom: 20px; + width: 960px; +} + + +table.respuestas { + font-family: verdana,arial,sans-serif; + font-size:11px; + color:#333333; + border-width: 1px; + border-color: #666666; + border-collapse: collapse; + margin-left: 100px; +} +/*table.gridtable th { + border-width: 1px; + padding: 8px; + border-style: solid; + border-color: #666666; + background-color: #dedede; +}*/ +table.respuestas td { + border-width: 1px; + padding: 4px; + border-style: solid; + border-color: #666666; + background-color: #ffffff; +} +.total +{ + margin-left: 100px; + width: 200px; +} + +.pregunta +{ + margin-left: 20px; +} + +.seccion +{ + margin-left: 10px; + width: 800px; + font-weight:bold; + font-size: 110%; + +} + #escudo + { + width: 300px; + margin-left: 20px; + margin-top: 10px; + margin-bottom: 50px; + + } + + + #titulo +{ + font: 100% Arial,A030,"Nimbus Sans L",FreeSans,"Liberation Sans",sans-serif; + font-size: 20px; + color: #4787ED ; + margin-top: 20px; + padding-left: 200px; + padding-right: 50px; + padding-bottom: 10px; +} +#datos +{ + + width: 800px; + margin-left: 50px; + +} + +.nota_mostrada + { + background-color: #E5EBFD; + background-position: -136px -33px; + border-color: #A0B1DE; + + width:800px; + border-radius: 3px 3px 3px 3px; + border-style: solid; + border-width: 1px; + margin: auto; + margin-bottom: 10px; + margin-top: 10px; + padding: 8px 8px 8px 34px; + } \ No newline at end of file diff --git a/public_html/estilos/ribbon.css b/public_html/estilos/ribbon.css new file mode 100644 index 0000000..f1df573 --- /dev/null +++ b/public_html/estilos/ribbon.css @@ -0,0 +1,94 @@ +html { + + + + } + + #cabecera + { + margin: 0px auto; + padding: 20px; + width: 80%; + height: 70px;; + background: #fff; + font-family: 'trebuchet MS', Arial, helvetica; + -moz-border-radius: 10px; + border-radius: 20px; + -moz-box-shadow: 0 0 10px #555; + -webkit-box-shadow: 0 0 10px #555; + box-shadow: 0 0 10px #555; + } + .ribbon:after, .ribbon:before, + h2:after, h2:before, + #twitter-follow:after, #twitter-follow:before + { + content: ''; + position: absolute; + } + + /* ---------------------------------------------- */ + + .ribbon{ + + position: relative; + color: #fff; + margin: 0 -30px 30px -30px; + padding: 10px 0; + text-shadow: 0 1px rgba(0,0,0,.8); + background: #333C4D; + background-image: -moz-linear-gradient(rgba(255,255,255,.3), rgba(255,255,255,0)); + background-image: -webkit-linear-gradient(rgba(255,255,255,.3), rgba(255,255,255,0)); + background-image: -o-linear-gradient(rgba(255,255,255,.3), rgba(255,255,255,0)); + background-image: -ms-linear-gradient(rgba(255,255,255,.3), rgba(255,255,255,0)); + background-image: linear-gradient(rgba(255,255,255,.3), rgba(255,255,255,0)); + -moz-box-shadow: 0 2px 0 rgba(0,0,0,.3); + -webkit-box-shadow: 0 2px 0 rgba(0,0,0,.3); + box-shadow: 0 2px 0 rgba(0,0,0,.3); + clear: both; + } + + .ribbon:before, .ribbon:after + { + border-style: solid; + border-color: transparent; + bottom: -10px; + } + + .ribbon:before + { + border-width: 0 10px 10px 0; + border-right-color: #222; + left: 0; + } + + .ribbon:after + { + border-width: 0 0 10px 10px; + border-left-color: #222; + right: 0; + } + + .nota_mostrada + { + background-color: #E5EBFD; + background-position: -136px -33px; + border-color: #A0B1DE; + margin-left:-10px; + margin-bottom:20px; + width:auto; + border-radius: 3px 3px 3px 3px; + border-style: solid; + border-width: 1px; + margin: 10px 0 5px; + padding: 8px 8px 8px 34px; + + + } + + /* ---------------------------------------------- */ + + + + /* ---------------------------------------------- */ + + \ No newline at end of file diff --git a/public_html/estilos/style.css b/public_html/estilos/style.css new file mode 100644 index 0000000..e038505 --- /dev/null +++ b/public_html/estilos/style.css @@ -0,0 +1,644 @@ + +/* ------------------ + styling for the tables + ------------------ */ +ul.lista-b { + margin-left:30px; + margin-right:50px; + margin-bottom: 25px; + text-align: justify; +} +ul.lista-a li{ + height: 10px; +} +ul.lista-a, ul.lista-b {list-style-type: none;} +#nombre, #app, #apm{width: 200px;} +#star{color:red;} + +body +{ + line-height: 1.6em; +} + +#hor-minimalist-a +{ + font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; + font-size: 12px; + background: #fff; + margin: 45px; + width: 480px; + border-collapse: collapse; + text-align: left; + padding-top: 100px; +} +#hor-minimalist-a th +{ + font-size: 14px; + font-weight: normal; + color: #039; + padding: 10px 8px; + border-bottom: 2px solid #6678b1; +} +#hor-minimalist-a td +{ + color: #669; + padding: 9px 8px 0px 8px; +} +#hor-minimalist-a tbody tr:hover td +{ + + color: #009; +} + + +#hor-minimalist-b +{ + font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; + font-size: 12px; + background: #fff; + margin: 45px; + width: 480px; + border-collapse: collapse; + text-align: left; +} +#hor-minimalist-b th +{ + font-size: 14px; + font-weight: normal; + color: #039; + padding: 10px 8px; + border-bottom: 2px solid #6678b1; +} +#hor-minimalist-b td +{ + border-bottom: 1px solid #ccc; + color: #669; + padding: 6px 8px; +} +#hor-minimalist-b tbody tr:hover td +{ + color: #009; +} + + +#ver-minimalist +{ + font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; + font-size: 12px; + margin: 45px; + width: 480px; + text-align: left; + border-collapse: collapse; +} +#ver-minimalist th +{ + padding: 8px 2px; + font-weight: normal; + font-size: 14px; + border-bottom: 2px solid #6678b1; + border-right: 30px solid #fff; + border-left: 30px solid #fff; + color: #039; +} +#ver-minimalist td +{ + padding: 12px 2px 0px 2px; + border-right: 30px solid #fff; + border-left: 30px solid #fff; + color: #669; +} + + +#box-table-a +{ + font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; + font-size: 12px; + margin: 45px; + width: 480px; + text-align: left; + border-collapse: collapse; +} +#box-table-a th +{ + font-size: 13px; + font-weight: normal; + padding: 8px; + background: #b9c9fe; + border-top: 4px solid #aabcfe; + border-bottom: 1px solid #fff; + color: #039; +} +#box-table-a td +{ + padding: 8px; + background: #e8edff; + border-bottom: 1px solid #fff; + color: #669; + border-top: 1px solid transparent; +} +#box-table-a tr:hover td +{ + background: #d0dafd; + color: #339; +} + + +#box-table-b +{ + font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; + font-size: 12px; + margin: 45px; + width: 480px; + text-align: left; + border-collapse: collapse; + border-top: 7px solid #9baff1; + border-bottom: 7px solid #9baff1; +} +#box-table-b th +{ + font-size: 13px; + font-weight: normal; + padding: 8px; + background: #e8edff; + border-right: 1px solid #9baff1; + border-left: 1px solid #9baff1; + color: #039; +} +#box-table-b td +{ + padding: 8px; + background: #e8edff; + border-right: 1px solid #aabcfe; + border-left: 1px solid #aabcfe; + color: #669; +} + + +#hor-zebra +{ + font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; + font-size: 12px; + margin: 45px; + width: 480px; + text-align: left; + border-collapse: collapse; +} +#hor-zebra th +{ + font-size: 14px; + font-weight: normal; + padding: 10px 8px; + color: #039; +} +#hor-zebra td +{ + padding: 8px; + color: #669; +} +#hor-zebra .odd +{ + background: #e8edff; +} + + +#ver-zebra +{ + font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; + font-size: 12px; + margin: 45px; + width: 480px; + text-align: left; + border-collapse: collapse; +} +#ver-zebra th +{ + font-size: 14px; + font-weight: normal; + padding: 12px 15px; + border-right: 1px solid #fff; + border-left: 1px solid #fff; + color: #039; +} +#ver-zebra td +{ + padding: 8px 15px; + border-right: 1px solid #fff; + border-left: 1px solid #fff; + color: #669; +} +.vzebra-odd +{ + background: #eff2ff; +} +.vzebra-even +{ + background: #e8edff; +} +#ver-zebra #vzebra-adventure, #ver-zebra #vzebra-children +{ + background: #d0dafd; + border-bottom: 1px solid #c8d4fd; +} +#ver-zebra #vzebra-comedy, #ver-zebra #vzebra-action +{ + background: #dce4ff; + border-bottom: 1px solid #d6dfff; +} + + +#one-column-emphasis +{ + font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; + font-size: 12px; + margin: 45px; + width: 480px; + text-align: left; + border-collapse: collapse; +} +#one-column-emphasis th +{ + font-size: 14px; + font-weight: normal; + padding: 12px 15px; + color: #039; +} +#one-column-emphasis td +{ + padding: 10px 15px; + color: #669; + border-top: 1px solid #e8edff; +} +.oce-first +{ + background: #d0dafd; + border-right: 10px solid transparent; + border-left: 10px solid transparent; +} +#one-column-emphasis tr:hover td +{ + color: #339; + background: #eff2ff; +} + + +#newspaper-a +{ + font-family:Verdana,Geneva,Arial,Helvetica,sans-serif; +/* font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif;*/ + font-size: 12px; + margin: 45px; + width: 850px; + text-align: left; + border-collapse: collapse; + border: 1px solid #69c; +} +#newspaper-a th +{ + padding: 12px 17px 12px 17px; + font-weight: normal; + font-size: 14px; + color: #039; + border-bottom: 1px dashed #69c; +} +#newspaper-a td +{ + padding: 7px 17px 7px 17px; +/* color: #669;*/ +} +#newspaper-a tbody tr:hover td +{ + +/* color: #669;*/ + background:#D7E8EA; + /*background: #d0dafd;*/ +} + + +#newspaper-b +{ + font-family:Verdana,Geneva,Arial,Helvetica,sans-serif; + /*font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif;*/ + font-size: 12px; + margin: 45px; + width: 480px; + text-align: left; + border-collapse: collapse; + border: 1px solid #69c; +} +#newspaper-b th +{ + padding: 15px 10px 10px 10px; + font-weight: normal; + font-size: 14px; + color: #039; +} +#newspaper-b tbody +{ + background: #e8edff; +} +#newspaper-b td +{ + padding: 10px; + color: #669; + border-top: 1px dashed #fff; +} +#newspaper-b tbody tr:hover td +{ + color: #339; + background: #d0dafd; +} + + +#newspaper-c +{ + font-family:Verdana,Geneva,Arial,Helvetica,sans-serif; + /*font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif;*/ + font-size: 12px; + margin: 45px; + width: 480px; + text-align: left; + border-collapse: collapse; + border: 1px solid #6cf; +} +#newspaper-c th +{ + padding: 20px; + font-weight: normal; + font-size: 13px; + color: #039; + text-transform: uppercase; + border-right: 1px solid #0865c2; + border-top: 1px solid #0865c2; + border-left: 1px solid #0865c2; + border-bottom: 1px solid #fff; +} +#newspaper-c td +{ + padding: 10px 20px; + color: #669; + border-right: 1px dashed #6cf; +} + + +#rounded-corner +{ + font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; + font-size: 12px; + margin: 45px; + width: 480px; + text-align: left; + border-collapse: collapse; +} +#rounded-corner thead th.rounded-company +{ + background: #b9c9fe url('table-images/left.png') left -1px no-repeat; +} +#rounded-corner thead th.rounded-q4 +{ + background: #b9c9fe url('table-images/right.png') right -1px no-repeat; +} +#rounded-corner th +{ + padding: 8px; + font-weight: normal; + font-size: 13px; + color: #039; + background: #b9c9fe; +} +#rounded-corner td +{ + padding: 8px; + background: #e8edff; + border-top: 1px solid #fff; + color: #669; +} +#rounded-corner tfoot td.rounded-foot-left +{ + background: #e8edff url('table-images/botleft.png') left bottom no-repeat; +} +#rounded-corner tfoot td.rounded-foot-right +{ + background: #e8edff url('table-images/botright.png') right bottom no-repeat; +} +#rounded-corner tbody tr:hover td +{ + background: #d0dafd; +} + + +#background-image +{ + font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; + font-size: 12px; + margin: 45px; + width: 480px; + text-align: left; + border-collapse: collapse; + background: url('table-images/blurry.jpg') 330px 59px no-repeat; +} +#background-image th +{ + padding: 12px; + font-weight: normal; + font-size: 14px; + color: #339; +} +#background-image td +{ + padding: 9px 12px; + color: #669; + border-top: 1px solid #fff; +} +#background-image tfoot td +{ + font-size: 11px; +} +#background-image tbody td +{ + background: url('table-images/back.png'); +} +* html #background-image tbody td +{ + /* + ---------------------------- + PUT THIS ON IE6 ONLY STYLE + AS THE RULE INVALIDATES + YOUR STYLESHEET + ---------------------------- + */ + filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='table-images/back.png',sizingMethod='crop'); + background: none; +} +#background-image tbody tr:hover td +{ + color: #339; + background: none; +} + + +#gradient-style +{ + font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; + font-size: 12px; + margin: 45px; + width: 480px; + text-align: left; + border-collapse: collapse; +} +#gradient-style th +{ + font-size: 13px; + font-weight: normal; + padding: 8px; + background: #b9c9fe url('table-images/gradhead.png') repeat-x; + border-top: 2px solid #d3ddff; + border-bottom: 1px solid #fff; + color: #039; +} +#gradient-style td +{ + padding: 8px; + border-bottom: 1px solid #fff; + color: #669; + border-top: 1px solid #fff; + background: #e8edff url('table-images/gradback.png') repeat-x; +} +#gradient-style tfoot tr td +{ + background: #e8edff; + font-size: 12px; + color: #99c; +} +#gradient-style tbody tr:hover td +{ + background: #d0dafd url('table-images/gradhover.png') repeat-x; + color: #339; +} + + +#pattern-style-a +{ + font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; + font-size: 12px; + margin: 45px; + width: 480px; + text-align: left; + border-collapse: collapse; + background: url('table-images/pattern.png'); +} +#pattern-style-a thead tr +{ + background: url('table-images/pattern-head.png'); +} +#pattern-style-a th +{ + font-size: 13px; + font-weight: normal; + padding: 8px; + border-bottom: 1px solid #fff; + color: #039; +} +#pattern-style-a td +{ + padding: 8px; + border-bottom: 1px solid #fff; + color: #669; + border-top: 1px solid transparent; +} +#pattern-style-a tbody tr:hover td +{ + color: #339; + background: #fff; +} + + +#pattern-style-b +{ + font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; + font-size: 12px; + margin: 45px; + width: 480px; + text-align: left; + border-collapse: collapse; + background: url('table-images/patternb.png'); +} +#pattern-style-b thead tr +{ + background: url('table-images/patternb-head.png'); +} +#pattern-style-b th +{ + font-size: 13px; + font-weight: normal; + padding: 8px; + border-bottom: 1px solid #fff; + color: #039; +} +#pattern-style-b td +{ + padding: 8px; + border-bottom: 1px solid #fff; + color: #669; + border-top: 1px solid transparent; +} +#pattern-style-b tbody tr:hover td +{ + color: #339; + background: #cdcdee; +} + +.varela +{ + margin-left: auto; + margin-right: auto; + border-collapse: collapse; + margin-bottom: 3em; + font-size: 90%; + line-height: 1.1; + text-align: left; +} + +.varela tr:hover, td.start:hover, td.end:hover +{ + /*background: #FF9;*/ + background: #FBF7BD; + +} + +.varela th, td +{ + padding: .3em .5em; +} + +.varela th +{ + font-weight: normal; + text-align: left; + + padding-left: 15px; +} + +.varela th.name { width: 12em; } +.varela th.location { width: 12em; } +.varela th.color { width: 10em; } + +.varela thead th +{ + background: #c6ceda; + border-color: #fff #fff #888 #fff; + border-style: solid; + border-width: 1px 1px 2px 1px; + padding-left: .5em; +} + +.varela tbody th.start +{ + + padding-left: 26px; +} + +.varela tbody th.end +{ + + padding-left: 26px; +} \ No newline at end of file diff --git a/public_html/estilos/table-images/back.png b/public_html/estilos/table-images/back.png new file mode 100644 index 0000000..a0dd842 Binary files /dev/null and b/public_html/estilos/table-images/back.png differ diff --git a/public_html/estilos/table-images/blurry.jpg b/public_html/estilos/table-images/blurry.jpg new file mode 100644 index 0000000..3740fa4 Binary files /dev/null and b/public_html/estilos/table-images/blurry.jpg differ diff --git a/public_html/estilos/table-images/botleft.png b/public_html/estilos/table-images/botleft.png new file mode 100644 index 0000000..1761a8a Binary files /dev/null and b/public_html/estilos/table-images/botleft.png differ diff --git a/public_html/estilos/table-images/botright.png b/public_html/estilos/table-images/botright.png new file mode 100644 index 0000000..76d248c Binary files /dev/null and b/public_html/estilos/table-images/botright.png differ diff --git a/public_html/estilos/table-images/gradback.png b/public_html/estilos/table-images/gradback.png new file mode 100644 index 0000000..7f42889 Binary files /dev/null and b/public_html/estilos/table-images/gradback.png differ diff --git a/public_html/estilos/table-images/gradhead.png b/public_html/estilos/table-images/gradhead.png new file mode 100644 index 0000000..5d9b14d Binary files /dev/null and b/public_html/estilos/table-images/gradhead.png differ diff --git a/public_html/estilos/table-images/gradhover.png b/public_html/estilos/table-images/gradhover.png new file mode 100644 index 0000000..957fd7f Binary files /dev/null and b/public_html/estilos/table-images/gradhover.png differ diff --git a/public_html/estilos/table-images/header.jpg b/public_html/estilos/table-images/header.jpg new file mode 100644 index 0000000..75d3e3a Binary files /dev/null and b/public_html/estilos/table-images/header.jpg differ diff --git a/public_html/estilos/table-images/left.png b/public_html/estilos/table-images/left.png new file mode 100644 index 0000000..b3733ee Binary files /dev/null and b/public_html/estilos/table-images/left.png differ diff --git a/public_html/estilos/table-images/pattern-head.png b/public_html/estilos/table-images/pattern-head.png new file mode 100644 index 0000000..37d6072 Binary files /dev/null and b/public_html/estilos/table-images/pattern-head.png differ diff --git a/public_html/estilos/table-images/pattern.gif b/public_html/estilos/table-images/pattern.gif new file mode 100644 index 0000000..e76d77c Binary files /dev/null and b/public_html/estilos/table-images/pattern.gif differ diff --git a/public_html/estilos/table-images/pattern.png b/public_html/estilos/table-images/pattern.png new file mode 100644 index 0000000..5159b3b Binary files /dev/null and b/public_html/estilos/table-images/pattern.png differ diff --git a/public_html/estilos/table-images/patternb-head.png b/public_html/estilos/table-images/patternb-head.png new file mode 100644 index 0000000..7d197a3 Binary files /dev/null and b/public_html/estilos/table-images/patternb-head.png differ diff --git a/public_html/estilos/table-images/patternb.png b/public_html/estilos/table-images/patternb.png new file mode 100644 index 0000000..724363f Binary files /dev/null and b/public_html/estilos/table-images/patternb.png differ diff --git a/public_html/estilos/table-images/right.png b/public_html/estilos/table-images/right.png new file mode 100644 index 0000000..2f84569 Binary files /dev/null and b/public_html/estilos/table-images/right.png differ diff --git a/public_html/expira_cupo.php b/public_html/expira_cupo.php new file mode 100644 index 0000000..ead8076 --- /dev/null +++ b/public_html/expira_cupo.php @@ -0,0 +1,32 @@ +

¡Lo sentimos!, el cupo de registro por este medio se ha agotado.

"; +?> +
+
+ + + + + + + +
Datos de contacto
+ +
    +
  • +
  • Facultad de Estudios Superiores Acatlán
  • +
  • Universidad Nacional Autónoma de México
  • +
  • Número de contacto: 5623-1665
  • +
  • Correo electrónico: vegresados@apolo.acatlan.unam.mx
  • +
+
+
+
+ +
+

+
+
+

Gracias por su colaboración.

+

Se enviará la referencia bancaria al correo registrado.

+

Una vez hecho el pago, podrá descargar su boleto a partir del 15 de octubre del presente año.

+
+
+
+

+
+ 220) + header("Location: expira_cupo.php"); + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: " . gmdate("D,d M Y H:i:s") . " GMT"); +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Pragma: no-cache"); +//header("Location:timeout.php"); //Descomentar para dejar la página fuera de servicio... +session_start(); +session_unset(); +session_destroy(); +?> +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Registro de datos


+ + + + +
+
+ + + + + + + + + + + +
+
+

+ + + +
+ + + + +
+ + + + + + + + + + + + +
+
+
+ + + + +
+ + + + +
+ + + +
+
+
+ + +
+
Datos de contacto
+ +
    +
  • +
  • Facultad de Estudios Superiores Acatlán
  • +
  • Universidad Nacional Autónoma de México
  • +
  • Número de contacto: 5623-1665
  • +
  • Correo electrónico: vegresados@apolo.acatlan.unam.mx
  • +
+
+
+
+
+ + *
  • 1D array of data - add a single row with the data provided
  • + *
  • 2D array of arrays - add multiple rows in a single call
  • + *
  • object - data object when using mData
  • + *
  • array of objects - multiple data objects when using mData
  • + * + * @param {bool} [redraw=true] redraw the table or not + * @returns {array} An array of integers, representing the list of indexes in + * aoData ({@link DataTable.models.oSettings}) that have been added to + * the table. + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * // Global var for counter + * var giCount = 2; + * + * $(document).ready(function() { + * $('#example').dataTable(); + * } ); + * + * function fnClickAddRow() { + * $('#example').dataTable().fnAddData( [ + * giCount+".1", + * giCount+".2", + * giCount+".3", + * giCount+".4" ] + * ); + * + * giCount++; + * } + */ + this.fnAddData = function( data, redraw ) + { + var api = this.api( true ); + + /* Check if we want to add multiple rows or not */ + var rows = $.isArray(data) && ( $.isArray(data[0]) || $.isPlainObject(data[0]) ) ? + api.rows.add( data ) : + api.row.add( data ); + + if ( redraw === undefined || redraw ) { + api.draw(); + } + + return rows.flatten().toArray(); + }; + + + /** + * This function will make DataTables recalculate the column sizes, based on the data + * contained in the table and the sizes applied to the columns (in the DOM, CSS or + * through the sWidth parameter). This can be useful when the width of the table's + * parent element changes (for example a window resize). + * @param {boolean} [bRedraw=true] Redraw the table or not, you will typically want to + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable( { + * "sScrollY": "200px", + * "bPaginate": false + * } ); + * + * $(window).on('resize', function () { + * oTable.fnAdjustColumnSizing(); + * } ); + * } ); + */ + this.fnAdjustColumnSizing = function ( bRedraw ) + { + var api = this.api( true ).columns.adjust(); + var settings = api.settings()[0]; + var scroll = settings.oScroll; + + if ( bRedraw === undefined || bRedraw ) { + api.draw( false ); + } + else if ( scroll.sX !== "" || scroll.sY !== "" ) { + /* If not redrawing, but scrolling, we want to apply the new column sizes anyway */ + _fnScrollDraw( settings ); + } + }; + + + /** + * Quickly and simply clear a table + * @param {bool} [bRedraw=true] redraw the table or not + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Immediately 'nuke' the current rows (perhaps waiting for an Ajax callback...) + * oTable.fnClearTable(); + * } ); + */ + this.fnClearTable = function( bRedraw ) + { + var api = this.api( true ).clear(); + + if ( bRedraw === undefined || bRedraw ) { + api.draw(); + } + }; + + + /** + * The exact opposite of 'opening' a row, this function will close any rows which + * are currently 'open'. + * @param {node} nTr the table row to 'close' + * @returns {int} 0 on success, or 1 if failed (can't find the row) + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable; + * + * // 'open' an information row when a row is clicked on + * $('#example tbody tr').click( function () { + * if ( oTable.fnIsOpen(this) ) { + * oTable.fnClose( this ); + * } else { + * oTable.fnOpen( this, "Temporary row opened", "info_row" ); + * } + * } ); + * + * oTable = $('#example').dataTable(); + * } ); + */ + this.fnClose = function( nTr ) + { + this.api( true ).row( nTr ).child.hide(); + }; + + + /** + * Remove a row for the table + * @param {mixed} target The index of the row from aoData to be deleted, or + * the TR element you want to delete + * @param {function|null} [callBack] Callback function + * @param {bool} [redraw=true] Redraw the table or not + * @returns {array} The row that was deleted + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Immediately remove the first row + * oTable.fnDeleteRow( 0 ); + * } ); + */ + this.fnDeleteRow = function( target, callback, redraw ) + { + var api = this.api( true ); + var rows = api.rows( target ); + var settings = rows.settings()[0]; + var data = settings.aoData[ rows[0][0] ]; + + rows.remove(); + + if ( callback ) { + callback.call( this, settings, data ); + } + + if ( redraw === undefined || redraw ) { + api.draw(); + } + + return data; + }; + + + /** + * Restore the table to it's original state in the DOM by removing all of DataTables + * enhancements, alterations to the DOM structure of the table and event listeners. + * @param {boolean} [remove=false] Completely remove the table from the DOM + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * // This example is fairly pointless in reality, but shows how fnDestroy can be used + * var oTable = $('#example').dataTable(); + * oTable.fnDestroy(); + * } ); + */ + this.fnDestroy = function ( remove ) + { + this.api( true ).destroy( remove ); + }; + + + /** + * Redraw the table + * @param {bool} [complete=true] Re-filter and resort (if enabled) the table before the draw. + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Re-draw the table - you wouldn't want to do it here, but it's an example :-) + * oTable.fnDraw(); + * } ); + */ + this.fnDraw = function( complete ) + { + // Note that this isn't an exact match to the old call to _fnDraw - it takes + // into account the new data, but can hold position. + this.api( true ).draw( complete ); + }; + + + /** + * Filter the input based on data + * @param {string} sInput String to filter the table on + * @param {int|null} [iColumn] Column to limit filtering to + * @param {bool} [bRegex=false] Treat as regular expression or not + * @param {bool} [bSmart=true] Perform smart filtering or not + * @param {bool} [bShowGlobal=true] Show the input global filter in it's input box(es) + * @param {bool} [bCaseInsensitive=true] Do case-insensitive matching (true) or not (false) + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Sometime later - filter... + * oTable.fnFilter( 'test string' ); + * } ); + */ + this.fnFilter = function( sInput, iColumn, bRegex, bSmart, bShowGlobal, bCaseInsensitive ) + { + var api = this.api( true ); + + if ( iColumn === null || iColumn === undefined ) { + api.search( sInput, bRegex, bSmart, bCaseInsensitive ); + } + else { + api.column( iColumn ).search( sInput, bRegex, bSmart, bCaseInsensitive ); + } + + api.draw(); + }; + + + /** + * Get the data for the whole table, an individual row or an individual cell based on the + * provided parameters. + * @param {int|node} [src] A TR row node, TD/TH cell node or an integer. If given as + * a TR node then the data source for the whole row will be returned. If given as a + * TD/TH cell node then iCol will be automatically calculated and the data for the + * cell returned. If given as an integer, then this is treated as the aoData internal + * data index for the row (see fnGetPosition) and the data for that row used. + * @param {int} [col] Optional column index that you want the data of. + * @returns {array|object|string} If mRow is undefined, then the data for all rows is + * returned. If mRow is defined, just data for that row, and is iCol is + * defined, only data for the designated cell is returned. + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * // Row data + * $(document).ready(function() { + * oTable = $('#example').dataTable(); + * + * oTable.$('tr').click( function () { + * var data = oTable.fnGetData( this ); + * // ... do something with the array / object of data for the row + * } ); + * } ); + * + * @example + * // Individual cell data + * $(document).ready(function() { + * oTable = $('#example').dataTable(); + * + * oTable.$('td').click( function () { + * var sData = oTable.fnGetData( this ); + * alert( 'The cell clicked on had the value of '+sData ); + * } ); + * } ); + */ + this.fnGetData = function( src, col ) + { + var api = this.api( true ); + + if ( src !== undefined ) { + var type = src.nodeName ? src.nodeName.toLowerCase() : ''; + + return col !== undefined || type == 'td' || type == 'th' ? + api.cell( src, col ).data() : + api.row( src ).data() || null; + } + + return api.data().toArray(); + }; + + + /** + * Get an array of the TR nodes that are used in the table's body. Note that you will + * typically want to use the '$' API method in preference to this as it is more + * flexible. + * @param {int} [iRow] Optional row index for the TR element you want + * @returns {array|node} If iRow is undefined, returns an array of all TR elements + * in the table's body, or iRow is defined, just the TR element requested. + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Get the nodes from the table + * var nNodes = oTable.fnGetNodes( ); + * } ); + */ + this.fnGetNodes = function( iRow ) + { + var api = this.api( true ); + + return iRow !== undefined ? + api.row( iRow ).node() : + api.rows().nodes().flatten().toArray(); + }; + + + /** + * Get the array indexes of a particular cell from it's DOM element + * and column index including hidden columns + * @param {node} node this can either be a TR, TD or TH in the table's body + * @returns {int} If nNode is given as a TR, then a single index is returned, or + * if given as a cell, an array of [row index, column index (visible), + * column index (all)] is given. + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * $('#example tbody td').click( function () { + * // Get the position of the current data from the node + * var aPos = oTable.fnGetPosition( this ); + * + * // Get the data array for this row + * var aData = oTable.fnGetData( aPos[0] ); + * + * // Update the data array and return the value + * aData[ aPos[1] ] = 'clicked'; + * this.innerHTML = 'clicked'; + * } ); + * + * // Init DataTables + * oTable = $('#example').dataTable(); + * } ); + */ + this.fnGetPosition = function( node ) + { + var api = this.api( true ); + var nodeName = node.nodeName.toUpperCase(); + + if ( nodeName == 'TR' ) { + return api.row( node ).index(); + } + else if ( nodeName == 'TD' || nodeName == 'TH' ) { + var cell = api.cell( node ).index(); + + return [ + cell.row, + cell.columnVisible, + cell.column + ]; + } + return null; + }; + + + /** + * Check to see if a row is 'open' or not. + * @param {node} nTr the table row to check + * @returns {boolean} true if the row is currently open, false otherwise + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable; + * + * // 'open' an information row when a row is clicked on + * $('#example tbody tr').click( function () { + * if ( oTable.fnIsOpen(this) ) { + * oTable.fnClose( this ); + * } else { + * oTable.fnOpen( this, "Temporary row opened", "info_row" ); + * } + * } ); + * + * oTable = $('#example').dataTable(); + * } ); + */ + this.fnIsOpen = function( nTr ) + { + return this.api( true ).row( nTr ).child.isShown(); + }; + + + /** + * This function will place a new row directly after a row which is currently + * on display on the page, with the HTML contents that is passed into the + * function. This can be used, for example, to ask for confirmation that a + * particular record should be deleted. + * @param {node} nTr The table row to 'open' + * @param {string|node|jQuery} mHtml The HTML to put into the row + * @param {string} sClass Class to give the new TD cell + * @returns {node} The row opened. Note that if the table row passed in as the + * first parameter, is not found in the table, this method will silently + * return. + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable; + * + * // 'open' an information row when a row is clicked on + * $('#example tbody tr').click( function () { + * if ( oTable.fnIsOpen(this) ) { + * oTable.fnClose( this ); + * } else { + * oTable.fnOpen( this, "Temporary row opened", "info_row" ); + * } + * } ); + * + * oTable = $('#example').dataTable(); + * } ); + */ + this.fnOpen = function( nTr, mHtml, sClass ) + { + return this.api( true ) + .row( nTr ) + .child( mHtml, sClass ) + .show() + .child()[0]; + }; + + + /** + * Change the pagination - provides the internal logic for pagination in a simple API + * function. With this function you can have a DataTables table go to the next, + * previous, first or last pages. + * @param {string|int} mAction Paging action to take: "first", "previous", "next" or "last" + * or page number to jump to (integer), note that page 0 is the first page. + * @param {bool} [bRedraw=true] Redraw the table or not + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * oTable.fnPageChange( 'next' ); + * } ); + */ + this.fnPageChange = function ( mAction, bRedraw ) + { + var api = this.api( true ).page( mAction ); + + if ( bRedraw === undefined || bRedraw ) { + api.draw(false); + } + }; + + + /** + * Show a particular column + * @param {int} iCol The column whose display should be changed + * @param {bool} bShow Show (true) or hide (false) the column + * @param {bool} [bRedraw=true] Redraw the table or not + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Hide the second column after initialisation + * oTable.fnSetColumnVis( 1, false ); + * } ); + */ + this.fnSetColumnVis = function ( iCol, bShow, bRedraw ) + { + var api = this.api( true ).column( iCol ).visible( bShow ); + + if ( bRedraw === undefined || bRedraw ) { + api.columns.adjust().draw(); + } + }; + + + /** + * Get the settings for a particular table for external manipulation + * @returns {object} DataTables settings object. See + * {@link DataTable.models.oSettings} + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * var oSettings = oTable.fnSettings(); + * + * // Show an example parameter from the settings + * alert( oSettings._iDisplayStart ); + * } ); + */ + this.fnSettings = function() + { + return _fnSettingsFromNode( this[_ext.iApiIndex] ); + }; + + + /** + * Sort the table by a particular column + * @param {int} iCol the data index to sort on. Note that this will not match the + * 'display index' if you have hidden data entries + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Sort immediately with columns 0 and 1 + * oTable.fnSort( [ [0,'asc'], [1,'asc'] ] ); + * } ); + */ + this.fnSort = function( aaSort ) + { + this.api( true ).order( aaSort ).draw(); + }; + + + /** + * Attach a sort listener to an element for a given column + * @param {node} nNode the element to attach the sort listener to + * @param {int} iColumn the column that a click on this node will sort on + * @param {function} [fnCallback] callback function when sort is run + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Sort on column 1, when 'sorter' is clicked on + * oTable.fnSortListener( document.getElementById('sorter'), 1 ); + * } ); + */ + this.fnSortListener = function( nNode, iColumn, fnCallback ) + { + this.api( true ).order.listener( nNode, iColumn, fnCallback ); + }; + + + /** + * Update a table cell or row - this method will accept either a single value to + * update the cell with, an array of values with one element for each column or + * an object in the same format as the original data source. The function is + * self-referencing in order to make the multi column updates easier. + * @param {object|array|string} mData Data to update the cell/row with + * @param {node|int} mRow TR element you want to update or the aoData index + * @param {int} [iColumn] The column to update, give as null or undefined to + * update a whole row. + * @param {bool} [bRedraw=true] Redraw the table or not + * @param {bool} [bAction=true] Perform pre-draw actions or not + * @returns {int} 0 on success, 1 on error + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell + * oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], $('tbody tr')[0] ); // Row + * } ); + */ + this.fnUpdate = function( mData, mRow, iColumn, bRedraw, bAction ) + { + var api = this.api( true ); + + if ( iColumn === undefined || iColumn === null ) { + api.row( mRow ).data( mData ); + } + else { + api.cell( mRow, iColumn ).data( mData ); + } + + if ( bAction === undefined || bAction ) { + api.columns.adjust(); + } + + if ( bRedraw === undefined || bRedraw ) { + api.draw(); + } + return 0; + }; + + + /** + * Provide a common method for plug-ins to check the version of DataTables being used, in order + * to ensure compatibility. + * @param {string} sVersion Version string to check for, in the format "X.Y.Z". Note that the + * formats "X" and "X.Y" are also acceptable. + * @returns {boolean} true if this version of DataTables is greater or equal to the required + * version, or false if this version of DataTales is not suitable + * @method + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * alert( oTable.fnVersionCheck( '1.9.0' ) ); + * } ); + */ + this.fnVersionCheck = _ext.fnVersionCheck; + + + var _that = this; + var emptyInit = options === undefined; + var len = this.length; + + if ( emptyInit ) { + options = {}; + } + + this.oApi = this.internal = _ext.internal; + + // Extend with old style plug-in API methods + for ( var fn in DataTable.ext.internal ) { + if ( fn ) { + this[fn] = _fnExternApiFunc(fn); + } + } + + this.each(function() { + // For each initialisation we want to give it a clean initialisation + // object that can be bashed around + var o = {}; + var oInit = len > 1 ? // optimisation for single table case + _fnExtend( o, options, true ) : + options; + + /*global oInit,_that,emptyInit*/ + var i=0, iLen, j, jLen, k, kLen; + var sId = this.getAttribute( 'id' ); + var bInitHandedOff = false; + var defaults = DataTable.defaults; + var $this = $(this); + + + /* Sanity check */ + if ( this.nodeName.toLowerCase() != 'table' ) + { + _fnLog( null, 0, 'Non-table node initialisation ('+this.nodeName+')', 2 ); + return; + } + + /* Backwards compatibility for the defaults */ + _fnCompatOpts( defaults ); + _fnCompatCols( defaults.column ); + + /* Convert the camel-case defaults to Hungarian */ + _fnCamelToHungarian( defaults, defaults, true ); + _fnCamelToHungarian( defaults.column, defaults.column, true ); + + /* Setting up the initialisation object */ + _fnCamelToHungarian( defaults, $.extend( oInit, $this.data() ) ); + + + + /* Check to see if we are re-initialising a table */ + var allSettings = DataTable.settings; + for ( i=0, iLen=allSettings.length ; i').appendTo($this); + } + oSettings.nTHead = thead[0]; + + var tbody = $this.children('tbody'); + if ( tbody.length === 0 ) { + tbody = $('').appendTo($this); + } + oSettings.nTBody = tbody[0]; + + var tfoot = $this.children('tfoot'); + if ( tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "") ) { + // If we are a scrolling table, and no footer has been given, then we need to create + // a tfoot element for the caption element to be appended to + tfoot = $('').appendTo($this); + } + + if ( tfoot.length === 0 || tfoot.children().length === 0 ) { + $this.addClass( oClasses.sNoFooter ); + } + else if ( tfoot.length > 0 ) { + oSettings.nTFoot = tfoot[0]; + _fnDetectHeader( oSettings.aoFooter, oSettings.nTFoot ); + } + + /* Check if there is data passing into the constructor */ + if ( oInit.aaData ) { + for ( i=0 ; i/g; + + // This is not strict ISO8601 - Date.parse() is quite lax, although + // implementations differ between browsers. + var _re_date = /^\d{2,4}[\.\/\-]\d{1,2}[\.\/\-]\d{1,2}([T ]{1}\d{1,2}[:\.]\d{2}([\.:]\d{2})?)?$/; + + // Escape regular expression special characters + var _re_escape_regex = new RegExp( '(\\' + [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\', '$', '^', '-' ].join('|\\') + ')', 'g' ); + + // http://en.wikipedia.org/wiki/Foreign_exchange_market + // - \u20BD - Russian ruble. + // - \u20a9 - South Korean Won + // - \u20BA - Turkish Lira + // - \u20B9 - Indian Rupee + // - R - Brazil (R$) and South Africa + // - fr - Swiss Franc + // - kr - Swedish krona, Norwegian krone and Danish krone + // - \u2009 is thin space and \u202F is narrow no-break space, both used in many + // - Ƀ - Bitcoin + // - Ξ - Ethereum + // standards as thousands separators. + var _re_formatted_numeric = /[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfkɃΞ]/gi; + + + var _empty = function ( d ) { + return !d || d === true || d === '-' ? true : false; + }; + + + var _intVal = function ( s ) { + var integer = parseInt( s, 10 ); + return !isNaN(integer) && isFinite(s) ? integer : null; + }; + + // Convert from a formatted number with characters other than `.` as the + // decimal place, to a Javascript number + var _numToDecimal = function ( num, decimalPoint ) { + // Cache created regular expressions for speed as this function is called often + if ( ! _re_dic[ decimalPoint ] ) { + _re_dic[ decimalPoint ] = new RegExp( _fnEscapeRegex( decimalPoint ), 'g' ); + } + return typeof num === 'string' && decimalPoint !== '.' ? + num.replace( /\./g, '' ).replace( _re_dic[ decimalPoint ], '.' ) : + num; + }; + + + var _isNumber = function ( d, decimalPoint, formatted ) { + var strType = typeof d === 'string'; + + // If empty return immediately so there must be a number if it is a + // formatted string (this stops the string "k", or "kr", etc being detected + // as a formatted number for currency + if ( _empty( d ) ) { + return true; + } + + if ( decimalPoint && strType ) { + d = _numToDecimal( d, decimalPoint ); + } + + if ( formatted && strType ) { + d = d.replace( _re_formatted_numeric, '' ); + } + + return !isNaN( parseFloat(d) ) && isFinite( d ); + }; + + + // A string without HTML in it can be considered to be HTML still + var _isHtml = function ( d ) { + return _empty( d ) || typeof d === 'string'; + }; + + + var _htmlNumeric = function ( d, decimalPoint, formatted ) { + if ( _empty( d ) ) { + return true; + } + + var html = _isHtml( d ); + return ! html ? + null : + _isNumber( _stripHtml( d ), decimalPoint, formatted ) ? + true : + null; + }; + + + var _pluck = function ( a, prop, prop2 ) { + var out = []; + var i=0, ien=a.length; + + // Could have the test in the loop for slightly smaller code, but speed + // is essential here + if ( prop2 !== undefined ) { + for ( ; i') + .css( { + position: 'fixed', + top: 0, + left: $(window).scrollLeft()*-1, // allow for scrolling + height: 1, + width: 1, + overflow: 'hidden' + } ) + .append( + $('
    ') + .css( { + position: 'absolute', + top: 1, + left: 1, + width: 100, + overflow: 'scroll' + } ) + .append( + $('
    ') + .css( { + width: '100%', + height: 10 + } ) + ) + ) + .appendTo( 'body' ); + + var outer = n.children(); + var inner = outer.children(); + + // Numbers below, in order, are: + // inner.offsetWidth, inner.clientWidth, outer.offsetWidth, outer.clientWidth + // + // IE6 XP: 100 100 100 83 + // IE7 Vista: 100 100 100 83 + // IE 8+ Windows: 83 83 100 83 + // Evergreen Windows: 83 83 100 83 + // Evergreen Mac with scrollbars: 85 85 100 85 + // Evergreen Mac without scrollbars: 100 100 100 100 + + // Get scrollbar width + browser.barWidth = outer[0].offsetWidth - outer[0].clientWidth; + + // IE6/7 will oversize a width 100% element inside a scrolling element, to + // include the width of the scrollbar, while other browsers ensure the inner + // element is contained without forcing scrolling + browser.bScrollOversize = inner[0].offsetWidth === 100 && outer[0].clientWidth !== 100; + + // In rtl text layout, some browsers (most, but not all) will place the + // scrollbar on the left, rather than the right. + browser.bScrollbarLeft = Math.round( inner.offset().left ) !== 1; + + // IE8- don't provide height and width for getBoundingClientRect + browser.bBounding = n[0].getBoundingClientRect().width ? true : false; + + n.remove(); + } + + $.extend( settings.oBrowser, DataTable.__browser ); + settings.oScroll.iBarWidth = DataTable.__browser.barWidth; + } + + + /** + * Array.prototype reduce[Right] method, used for browsers which don't support + * JS 1.6. Done this way to reduce code size, since we iterate either way + * @param {object} settings dataTables settings object + * @memberof DataTable#oApi + */ + function _fnReduce ( that, fn, init, start, end, inc ) + { + var + i = start, + value, + isSet = false; + + if ( init !== undefined ) { + value = init; + isSet = true; + } + + while ( i !== end ) { + if ( ! that.hasOwnProperty(i) ) { + continue; + } + + value = isSet ? + fn( value, that[i], i, that ) : + that[i]; + + isSet = true; + i += inc; + } + + return value; + } + + /** + * Add a column to the list used for the table with default values + * @param {object} oSettings dataTables settings object + * @param {node} nTh The th element for this column + * @memberof DataTable#oApi + */ + function _fnAddColumn( oSettings, nTh ) + { + // Add column to aoColumns array + var oDefaults = DataTable.defaults.column; + var iCol = oSettings.aoColumns.length; + var oCol = $.extend( {}, DataTable.models.oColumn, oDefaults, { + "nTh": nTh ? nTh : document.createElement('th'), + "sTitle": oDefaults.sTitle ? oDefaults.sTitle : nTh ? nTh.innerHTML : '', + "aDataSort": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol], + "mData": oDefaults.mData ? oDefaults.mData : iCol, + idx: iCol + } ); + oSettings.aoColumns.push( oCol ); + + // Add search object for column specific search. Note that the `searchCols[ iCol ]` + // passed into extend can be undefined. This allows the user to give a default + // with only some of the parameters defined, and also not give a default + var searchCols = oSettings.aoPreSearchCols; + searchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch, searchCols[ iCol ] ); + + // Use the default column options function to initialise classes etc + _fnColumnOptions( oSettings, iCol, $(nTh).data() ); + } + + + /** + * Apply options for a column + * @param {object} oSettings dataTables settings object + * @param {int} iCol column index to consider + * @param {object} oOptions object with sType, bVisible and bSearchable etc + * @memberof DataTable#oApi + */ + function _fnColumnOptions( oSettings, iCol, oOptions ) + { + var oCol = oSettings.aoColumns[ iCol ]; + var oClasses = oSettings.oClasses; + var th = $(oCol.nTh); + + // Try to get width information from the DOM. We can't get it from CSS + // as we'd need to parse the CSS stylesheet. `width` option can override + if ( ! oCol.sWidthOrig ) { + // Width attribute + oCol.sWidthOrig = th.attr('width') || null; + + // Style attribute + var t = (th.attr('style') || '').match(/width:\s*(\d+[pxem%]+)/); + if ( t ) { + oCol.sWidthOrig = t[1]; + } + } + + /* User specified column options */ + if ( oOptions !== undefined && oOptions !== null ) + { + // Backwards compatibility + _fnCompatCols( oOptions ); + + // Map camel case parameters to their Hungarian counterparts + _fnCamelToHungarian( DataTable.defaults.column, oOptions ); + + /* Backwards compatibility for mDataProp */ + if ( oOptions.mDataProp !== undefined && !oOptions.mData ) + { + oOptions.mData = oOptions.mDataProp; + } + + if ( oOptions.sType ) + { + oCol._sManualType = oOptions.sType; + } + + // `class` is a reserved word in Javascript, so we need to provide + // the ability to use a valid name for the camel case input + if ( oOptions.className && ! oOptions.sClass ) + { + oOptions.sClass = oOptions.className; + } + if ( oOptions.sClass ) { + th.addClass( oOptions.sClass ); + } + + $.extend( oCol, oOptions ); + _fnMap( oCol, oOptions, "sWidth", "sWidthOrig" ); + + /* iDataSort to be applied (backwards compatibility), but aDataSort will take + * priority if defined + */ + if ( oOptions.iDataSort !== undefined ) + { + oCol.aDataSort = [ oOptions.iDataSort ]; + } + _fnMap( oCol, oOptions, "aDataSort" ); + } + + /* Cache the data get and set functions for speed */ + var mDataSrc = oCol.mData; + var mData = _fnGetObjectDataFn( mDataSrc ); + var mRender = oCol.mRender ? _fnGetObjectDataFn( oCol.mRender ) : null; + + var attrTest = function( src ) { + return typeof src === 'string' && src.indexOf('@') !== -1; + }; + oCol._bAttrSrc = $.isPlainObject( mDataSrc ) && ( + attrTest(mDataSrc.sort) || attrTest(mDataSrc.type) || attrTest(mDataSrc.filter) + ); + oCol._setter = null; + + oCol.fnGetData = function (rowData, type, meta) { + var innerData = mData( rowData, type, undefined, meta ); + + return mRender && type ? + mRender( innerData, type, rowData, meta ) : + innerData; + }; + oCol.fnSetData = function ( rowData, val, meta ) { + return _fnSetObjectDataFn( mDataSrc )( rowData, val, meta ); + }; + + // Indicate if DataTables should read DOM data as an object or array + // Used in _fnGetRowElements + if ( typeof mDataSrc !== 'number' ) { + oSettings._rowReadObject = true; + } + + /* Feature sorting overrides column specific when off */ + if ( !oSettings.oFeatures.bSort ) + { + oCol.bSortable = false; + th.addClass( oClasses.sSortableNone ); // Have to add class here as order event isn't called + } + + /* Check that the class assignment is correct for sorting */ + var bAsc = $.inArray('asc', oCol.asSorting) !== -1; + var bDesc = $.inArray('desc', oCol.asSorting) !== -1; + if ( !oCol.bSortable || (!bAsc && !bDesc) ) + { + oCol.sSortingClass = oClasses.sSortableNone; + oCol.sSortingClassJUI = ""; + } + else if ( bAsc && !bDesc ) + { + oCol.sSortingClass = oClasses.sSortableAsc; + oCol.sSortingClassJUI = oClasses.sSortJUIAscAllowed; + } + else if ( !bAsc && bDesc ) + { + oCol.sSortingClass = oClasses.sSortableDesc; + oCol.sSortingClassJUI = oClasses.sSortJUIDescAllowed; + } + else + { + oCol.sSortingClass = oClasses.sSortable; + oCol.sSortingClassJUI = oClasses.sSortJUI; + } + } + + + /** + * Adjust the table column widths for new data. Note: you would probably want to + * do a redraw after calling this function! + * @param {object} settings dataTables settings object + * @memberof DataTable#oApi + */ + function _fnAdjustColumnSizing ( settings ) + { + /* Not interested in doing column width calculation if auto-width is disabled */ + if ( settings.oFeatures.bAutoWidth !== false ) + { + var columns = settings.aoColumns; + + _fnCalculateColumnWidths( settings ); + for ( var i=0 , iLen=columns.length ; i