//  Javascript to be used with Standard_ and compatible styles
//  (c) 2006 Cogix Corporation
//  May only be used as a component of a licensed Cogix product

function ahah(url, target, waitingMsg, delay) {
	var req;
	document.getElementById(target).innerHTML = 'waiting...';
	if(waitingMsg.length > 0)
	document.getElementById(target).innerHTML = waitingMsg;
	
	if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	if (req != undefined) {
		req.onreadystatechange = function() {ahahDone(req, url, target, delay);};
		req.open("GET", url, true);
		req.send("");
	}
}  

function ahahDone(req, url, target, delay) {
	if (req.readyState == 4) { // only if req is "loaded"
		if (req.status == 200) { // only if "OK"
			document.getElementById(target).innerHTML = req.responseText;
		} else {
			document.getElementById(target).innerHTML="ahah error:\n"+req.statusText;
		}
		if (delay != undefined) {
			setTimeout("ahah(url,target,delay)", delay); // resubmit after delay
			//server should ALSO delay before responding
		}
	}
	if(typeof sIFR == "function"){
		sIFR.replaceElement("h3", named({sFlashSrc : "img/tikisland.swf", sSelector: ".celeb_h3", sWmode: "transparent", sColor : "#67422E", sCase : "upper"}));
	};
}

var ValidatorArray = new Array (); // holds validation statements to be evaluated in OnSubmit
var ValidatorArrayProperties = new Array();
ValidatorArrayProperties.ValidatorSuppress = false;  // if true, skip onSubmit validation

var i18nArray = new Array ();   //  hold translated strings; addressed as i18nArray('msgid');
i18nArray['requiredanswer'] = "Please answer the question. If not sure of what question this refers to, press the space bar.";
i18nArray['entervaluebetween'] = "Enter a value between %1 and %2";
i18nArray['entervaluenogreater'] = "Enter a value of %2 or below";
i18nArray['entervaluenoless'] = "Enter a value of %1 or above";
i18nArray['checknumbermsg'] = "Use 0 through 9, plus and minus, in format 1234";

// initial load for the iFrame.. The Cogix form is submiting to this.
var initialLoad = false;

function onSubmitoscars2008() {
	initialLoad = true;
	vwfOnSubmit();
}

function updatePoll() {
	if(initialLoad) {
		ahah('/shows/events/oscars/2008/includes/poll_results.jhtml','poll',waitingPoll);
	}
}


function vwfOnSubmit() {
if ( ValidatorArrayProperties == null
        || ValidatorArrayProperties.ValidatorSuppress == true
        || ValidatorArray == null ) // if broken, don't crash
    return true;
for ( var k = 0 ; k < ValidatorArray.length ; k ++ ) {
    var validatorstring = ValidatorArray [k] ;
    var chk = eval ( validatorstring );
    if ( chk == false )
        return false;
}
return true;
}

function checkQuestionAnswered (group,empty,valuelow,valuehigh,valuetype) {
    if ( group == null || empty == null || valuelow == null || valuehigh == null || valuetype == null )
        return true;
    var emptyCheck = empty != " ";
    var rangeCheck = valuelow != "" || valuehigh != "" ;
    var numericCheck = valuetype == "2";

    var bgroup = false;
    if ( group.type == "select-one") {
        if ( ! emptyCheck || group.value != "" )
            return true;
    }
    else if ( group.type == "textarea") {
        if ( ! emptyCheck || group.value != "" )
            return true;
    }
    else if ( group.type == "text") {
        if ( ! emptyCheck ) {
            if ( group.value == "" ) {
                return true;
            }
            return checkQuestionAnswerInRange ( group, valuelow, valuehigh, valuetype );
        }

        if ( group.value != "" ) {
            return checkQuestionAnswerInRange ( group, valuelow, valuehigh, valuetype );
        }

    }
    else if ( group.type == "oldtext") {
        if ( ! emptyCheck || group.value != "" )
            return true;
    }
    else if ( group.type == null ) { // radio and checkbox groups
        if ( ! emptyCheck )
            return true;
        bgroup = true;
        for ( var k = 0 ; k < group.length; k ++ )
            if ( group[k].checked )
                return true;
    }
    else
        return true;
    alert (i18nArray['requiredanswer']);
    window.focus();
    if ( bgroup )
        group[0].focus();
    else
        group.focus();
    return false;
}


function checkQuestionAnswerInRange ( valuelement, valuelow, valuehigh, valuetype ) {
    if ( valuelow == "" && valuehigh == "" )
        return true;
    var valued = valuelement.value;
    var intcompare = valuetype == "2";
    var intvaluelow = 0;
    var intvaluehigh = 0;
    var intvalued = 0;
    var msg = i18nArray['entervaluebetween'];
    if ( valuelow == "" )
        msg = i18nArray['entervaluenogreater'];
    if ( valuehigh == "" )
        msg = i18nArray['entervaluenoless'];
    msg = msg.replace (/%1/, valuelow );
    msg = msg.replace (/%2/, valuehigh );
    if ( intcompare ) {
        intvalued = parseInt ( valued, 10);
        if ( isNaN (intvalued) ) {
            alert ( msg ); valuelement.focus();
            if ( window != null && window.event != null )
                window.event.returnValue = false;
            return false;
        }
        intvaluelow = parseInt ( valuelow, 10 );
        intvaluehigh = parseInt ( valuehigh, 10 );
    }
    var bOk = true;
    if ( valuelow != null && valuehigh != null ) {
        if ( ! intcompare ) {
            if ( valuelow != "" && valued < valuelow )
                bOk = false;
            if ( valuehigh != "" && valued > valuehigh )
                bOk = false;
        }
        else {
            if ( valuelow != "" && intvalued < intvaluelow )
                bOk = false;
            if ( valuehigh != "" && intvalued > intvaluehigh )
                bOk = false;
        }
    }
    if ( bOk )
        return true;
    vwfAlertAndFocus(msg,valuelement);
    return false;
}

function vwfAlertAndFocus ( msg, element ) {
    if ( msg != null )
        alert (msg);
    if ( window != null )
        window.focus();
    element.focus();
/*
    if ( window != null && window.event != null )
        window.event.returnValue = false;
*/
}

function vwfQhelper(d) {
	var h = document.getElementById ( d );
	if ( h == null )
		return;
	var v = h.style.display;
	var flip = v == 'none' ? 'block' : 'none';
	h.style.display = flip;
}

function vwfQlengthchecker(txt,slimit) {
	if ( slimit == null || ''==slimit )
		return;
	var limit = 0 + slimit;
	var nulength = txt.value.length;
	if ( nulength > limit )
		txt.value = txt.value.substring (0,limit);
}


function vwfTxtAdjustHeight (elemt) {
    if ( elemt == null || elemt.cols == null )
        return;
	var TxtMinCols = 10;
	var TxtMinRows = 2;
    var cols = elemt.cols;
    if ( cols < TxtMinCols )
        return;
    var lines = elemt.value.split('\n');
    var nlines = 0;
    for ( var k=0; k < lines.length; k++ ) {
        var thisline = lines [k];
        var linesinthisline = Math.floor ( ( thisline.length + cols - 1 ) / cols ) ;
        if ( linesinthisline == 0 )
            linesinthisline = 1;
        nlines += linesinthisline;
    }
    if ( nlines < TxtMinRows )
        nlines = TxtMinRows ;
    if ( nlines != elemt.rows ) {
        elemt.rows = nlines;
    }
}

function vfRadio (f,elname,bOther,skipTo) { return; }
function vfRadioOther (f,elname,bOther,skipTo) {
   for ( var k = 0 ; k < f.elements.length; k++ ) {
      var e = f.elements[k];
      if ( ! bOther) {
         if ( e != null && e.name==elname && e.type == "text" ) {
            e.value = "";
            break;
            }
         }
      else {
         if ( e != null && e.name==elname && e.type == "radio" && e.value == "") {
            e.checked = true;
            break;
         }
      }
   }
}
