/*
	vittal.js
	2008, icograma.com
	requires: prototype.js
*/
function icgInit(){
	if( icgGlobals.inited ){ return false; }

	icgGlobals.inited = true; dynLayoutEv();
	
	initSIFR();

	for( var f=0; f<document.forms.length; f++){

		var fs = document.forms[f].elements;
	
		for ( var j=0; j<fs.length; j++ ){
			if( $(fs[j]).type == "text" || $(fs[j]).type == "textarea" ){
				addHint( $(fs[j]) );
				
				Event.observe( $(fs[j]), "blur", addHintEv )
				Event.observe( $(fs[j]), "focus", rmHintEv )

			}//end type==text
		}//end j
	}//end f
	
// 	new Control.ColorPicker("colorfield4", { "swatch" : "colorbox4" , IMAGE_BASE : "../rsrc/pickers/colorpicker/img/" });

	Event.observe( window, "resize", dynLayoutEv )
	
}//end icgInit

document.observe("dom:loaded", icgInit);


function initSIFR(){

/*
H1, H2, H3, H4 { 
	font-family: Futura, "Trebuchet MS", Arial, Helvetica, sans-serif;
	font-weight: bold;
}


H1 {
	font-size:24pt; line-height:24pt; 
	color: #0F269B;
	margin:10pt 0 4pt;
	}

H2 {
	font-size:18pt; line-height:18pt;
	color: #0F269B;
	margin:4pt 0 16pt;
	font-weight: normal;
	}

.home H2{
	color:#fff; font-size:24pt;
	font-weight:bold;
	font-style:italic;
	line-height:22pt;
}

H3 {
	font-size:13pt; line-height:13pt;
	color:#0C98A5;
	margin:18pt 0 6pt; 
	}

.box.slogan .item H3 {
	font-size:12pt;
}


H4{ 
	font-size:12pt; 
	margin:8pt 0 4pt; 
	color:#000;
	font-weight: normal;
	}


.box.widget H3{
	margin:2pt 0;
	font-weight:normal;
	font-size:12pt;
	color:#333;
	color:#333;
}


.box.widget H4{
	margin:2pt 0;
	font-weight:normal;
	font-size:10pt;
	color:#333;
}
*/

	if(typeof sIFR == "function"){

// This is the preferred "named argument" syntax
	sIFR.replaceElement(named({
		sSelector:".colCtnt h1", 
		sFlashSrc:"../rsrc/sifr/futuraB.swf",
		sColor:"#0F269B" , 
		sWmode:"transparent",
		nPaddingTop:0, 
		nPaddingBottom:0,
		sFlashVars:"offsetTop=-2"
		 /*,
		sLinkColor:"#0F269B", 
		sBgColor:"#FFFFFF", 
		sHoverColor:"#CCCCCC", 
		sFlashVars:"textalign=center&offsetTop=6"
		*/
		})
		);

	sIFR.replaceElement(named({
		sSelector:".home h2", 
		sFlashSrc:"../rsrc/sifr/futuraBI.swf",
		sColor:"#ffffff" , 
		sWmode:"transparent"
		})
		);

// 	sIFR.replaceElement(named({
// 		sSelector:".colCtnt h3", 
// 		sFlashSrc:"../rsrc/sifr/futuraB.swf",
// 		sColor:"#0C98A5" , 
// 		sWmode:"transparent"
// 		})
// 		);

// 	sIFR.replaceElement(named({
// 		sSelector:".colCtnt h4", 
// 		sFlashSrc:"../rsrc/sifr/futuraB.swf",
// 		sColor:"#000000" , 
// 		sWmode:"transparent"
// 		})
// 		);

	/*
	sIFR.replaceElement(named({
		sSelector:".widget h3", 
		sFlashSrc:"../rsrc/sifr/futura.swf",
		sColor:"#333333" , 
		sWmode:"transparent"
		})
		);

	sIFR.replaceElement(named({
		sSelector:".widget h3", 
		sFlashSrc:"../rsrc/sifr/futura.swf",
		sColor:"#333333" , 
		sWmode:"transparent"
		})
		);
		
	sIFR.replaceElement(named({
		sSelector:".dark h3", 
		sFlashSrc:"../rsrc/sifr/futura.swf",
		sColor:"#ffffff" , 
		sWmode:"transparent"
		})
		);
	
	sIFR.replaceElement(named({
		sSelector:".dark h4", 
		sFlashSrc:"../rsrc/sifr/futura.swf",
		sColor:"#ffffff" , 
		sWmode:"transparent"
		})
		);
	*/

	};

}









/* debug functions */
var annoy=true;function debug(msg){if(annoy){annoy=confirm(msg);};};
function spot(obj){ $(obj).addClassName("spot");};

function ensure(what){
	var question = "Are you sure?"
	if( what.title ){ question = what.title; }
	return ( confirm( question ) );
}


icgGlobals = new Object;


function hatch(what,how,eggtag){ //how: 0 close, 1 open, 2 toggle (default)
	if(typeof(how)=="undefined"){ how = 2; }
	if(typeof(eggtag)=="undefined"){ eggtag = '.hatch'; }
	
	var egg = what = $(what);
	if(what.nodeName == 'A'){
		egg = what.parentNode;
		}
	var egg = $ ( FindTagClassUp (egg, eggtag) );  //$( egg.getParent(eggtag) );
	//what holds trigger (A?), egg is hatcher obj.
	
	if( how == 0 || ( how == 2 && egg.hasClassName('hatched') ) ){
		egg.removeClassName('hatched'); egg.addClassName('unhatched');
		what.removeClassName('close'); what.addClassName('open');
	}else{
		egg.removeClassName('unhatched'); egg.addClassName('hatched');
		what.removeClassName('open'); what.addClassName('close');
	}
	
	//TBD: buscar todos los OPEN y CLOSE q dependen de este hatch, y cambiarles el class
	
	return false;

}

function rmHintEv(){ rmHint(this); }
function rmHint(what){
	if( !($(what)) ){ what=this; }
	if( what.hasClassName('hint') ){
		what.value="";
		what.removeClassName('hint');
	}
}

function addHintEv(){ addHint(this); }
function addHint(what){
	if( !($(what)) ){ what=this; }
	if(what.title && what.title.indexOf("*")==0){
		var t = what.title.substring(1);
		if(what.value=="" || what.value == t){
			what.value = t;
			what.addClassName("hint");
		}
	}
}

function dynLayoutEv(){
	if(icgGlobals.inited){
		dynLayout( document.viewport.getWidth() );
		};
	}
function dynLayout(w){
	if( w ){
		var b=document.getElementsByTagName("HTML")[0];
		// var sizes=new Array( 320, "w320", 580, "w640", 760, "w800", 960, "w1024" );
	var sizes=new Array( /* 320, "narrow",*/ 720, "medium", 960, "wide" );
	
      var sizeClass = sizes[1];
      for(var i=sizes.length-2;i>=0;i-=2){ if(w >= sizes[i] ){ sizeClass = sizes[i+1]; break;  } }
      b.className = sizeClass;

   //   createCookie( "browserWidth",w );
		
		}
	}



/* --- FORMS & DOM ---- */

function checkForm(f){ /* for mootools - 2007, icograma.com */

if(!document.getElementById){ return true; }
var oktosend=true; var fs=f.elements;

for(var i=0;i<fs.length;i++){
	if(fs[i].type&&fs[i].name){
	
	//get field value
	var ftype=fs[i].type; var efilter=false;
	if(ftype=="text"||ftype=="textarea"||ftype=="password"){
			v=fs[i].value && !$(fs[i]).hasClassName("hint");
		}else if(ftype=="select-one"||ftype=="select-multiple"){
			v=fs[i][fs[i].selectedIndex].value;
		}else if(ftype=="checkbox"){
			v=fs[i].checked;
		}else{
			v="!";//other types, don't check
		}
		var isfilled = isvalid = (v!="");
	
	//special fields:
		if(fs[i].name&&fs[i].name.indexOf("mail")>-1){ ftype="email";efilter=true; }
		if(efilter){ isvalid=isValidField(fs[i].value,ftype); }
	
	//is required, or need to check if filled?
	var reqelm = FindTagClassUp(fs[i],".required","form");

	if( reqelm && fs[i].offsetWidth == 0 ){ //hidden elements can't be required
		reqelm = false;
	}else if(!reqelm&&efilter&&isfilled){
		reqelm=FindTagClassUp(fs[i],".field","form");
		if(!reqelm){reqelm=fs[i];}
	};
	
	if(!isvalid&&reqelm){
		if(oktosend&&(ftype.indexOf("mail")>-1||ftype.indexOf("text")>-1||ftype.indexOf("select")>-1) ){ fs[i].select(); }
		oktosend=false;
		fs[i].onclick=rmErrorClass; fs[i].onkeydown=rmErrorClass;
		reqelm.addClassName("error");
	}
	
	}//end filter fs
}//end for i in fs

return oktosend;
}


function FindTagClassUp(elm,tcsearch,tclimit){
var elm= $(elm);

var tc=( tcsearch+"." ).split("."); tc[0]=tc[0].toUpperCase();
if(!tclimit){tclimit="BODY";};
var tz=( tclimit+"." ).split("."); tz[0]=tz[0].toUpperCase();
	while( n = elm.nodeName ){
		
		if(tc[0]==""||n==tc[0]){
			if( tc[1]=="" || $(elm).hasClassName(tc[1]) ){ return elm; }; };
		if(tz[0]==""||n==tz[0]){
			if( tz[1]=="" || $(elm).hasClassName(tz[1]) ){ return false; }; };
		elm=elm.parentNode;
	};
	debug("No se pudo obtener NODENAME para: ",elm);
	return false;
};



function rmErrorClass(event){
var elm=this;var etag=FindTagClassUp(elm,".error","form");if(!etag){etag=FindTagClassUp(elm,".field","form");};if(!etag){etag=elm}
if(etag){etag.removeClassName("error");elm.onclick=null;elm.onfocus=null;elm.onkeyup=null}
}

function isValidField(t,k){
if(k=="email"){
	if( t.indexOf("@example.com")>-1){return false;};
	var emailFilter=/^.+@.+\..{2,}$/;
	var illegalChars= /[\(\)\<\>\,\;\:\\\/\"\[\]]/
	if(!(emailFilter.test(t))||t.match(illegalChars)){return(false);}else{return (true);}
	return false
	}//end email
}

function rmHelpValue(t){var v=t.value;if(v.indexOf("@example.com")>-1){t.value="";};}



function cloneField(what){
	var what = $(what);
	var theField = $( FindTagClassUp( what, ".field") );
	
	var newField = DOMclone( theField );
	// appear field effect
	Effect.Appear( newField )
	
//	$(newField).fade('hide');
// $(newField).fade('in');
		
	return false;
}


function rmField(what,question){
	var what = $(what); var oktogo = true;
	if( question ){
		oktogo = confirm ( question );
	}
	if(oktogo){
		var theField = $( FindTagClassUp ( what, ".field") );
		
		Effect.Fade( theField );
		setTimeout( function(){ DOMrm( theField ); }, 1010 ); //fixme: use chaining of events instead
	}
		
	return false;
}




function DOMrm(elm){
	if( elm.parentNode ){ 
		return elm.parentNode.removeChild(elm);
		}
	}

function DOMclone(molde){

var parentobj = molde.parentNode;
var copia=molde.cloneNode(true);
var mid=molde.id;
var mida = mid.replace(/(\d+)/gi, "|$1|").split("|");
//loop until we find an unused ID
var midaz= Number(mida[mida.length-2]);var newid;
while(true){
	mida[mida.length-2] = midaz++;
	newid = mida.join("");
	if(!document.getElementById(newid)){
	break;
	};
	}
//assign new IDs to clone's ID & children elements
grepIDs(copia,new RegExp(mid, "gi"),newid);
		function grepIDs(e,oldid,newid){
		if(e.id){ e.id = e.id.replace(oldid,newid); };
		if(e.name){ e.name = e.name.replace(oldid,newid); };
		//gonna find childnodes
		var kids=e.childNodes;
		if(kids){//recursion for child nodes
				for(var i=0;i<kids.length;i++){
				grepIDs(kids[i],oldid,newid);
				};//end for
			};//end if kids
		};//end grepIDs
//add element to document
parentobj.appendChild(copia);
$(copia).removeClassName('first');

return $(copia);
};



function $path(e,c){
var e=$(e);
c=c.split(" ");

for(var i=0;i<c.length;i++){
	var cis = c[i].split(":")
	var num = cis[1]?cis[1]:"0"
	var ci=cis[0]

	if(ci=="<"){
		e=e.parentNode;
	}else if(ci.charAt(0)=="#"){
		e=document.getElementById( ci.substring(1) );
		if(!e){return false;};
	}else if(ci.charAt(0)=="."){
	var a=e.childNodes;var t=ci.substring(1);var d=false;
		for(var b=0;b<a.length;b++){
		if(a[b].nodeType == 1 && a[b].hasClassName(t)){d=a[b];break;};
		};
		if(d){e=d;}else{return false;};
	}else if(ci.charAt(0)=="<"){
		e=FindTagClassUp(e.parentNode,ci.substring(1),"BODY");
		if(!e){return false;};
	}else{
	var a = e.getElementsByTagName( ci.toLowerCase() );
		if(a.length>0){
			if(num=="0"){e=a[0];
			}else if(num=="last"||num>a.length){
			e=a[a.length-1]
			}else{
			e=a[num]
			}
		}else{
			var a = document.getElementsByName(ci);
			if( a[0] ){ e=a[0]; }else{return false;};
		};
	};
	};
	return e;
};


//from http://www.quirksmode.org/js/cookies.html

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}





